Last active
May 21, 2019 22:41
-
-
Save vegegoku/76bceb8273033e9c41a8054f258a735b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
webpackJsonp([11],{ | |
/***/ 340: | |
/***/ (function(module, exports, __webpack_require__) { | |
"use strict"; | |
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | |
function app() { | |
var $wnd_0 = window, | |
$doc_0 = document, | |
gwtOnLoad_0, | |
bodyDone, | |
base = '', | |
metaProps = {}, | |
values = [], | |
providers = [], | |
answers = [], | |
softPermutationId = 0, | |
onLoadErrorFunc, | |
propertyErrorFunc; | |
if (!$wnd_0.__gwt_stylesLoaded) { | |
$wnd_0.__gwt_stylesLoaded = {}; | |
} | |
if (!$wnd_0.__gwt_scriptsLoaded) { | |
$wnd_0.__gwt_scriptsLoaded = {}; | |
} | |
function isHostedMode() { | |
var result = false; | |
try { | |
var query = $wnd_0.location.search; | |
return (query.indexOf('gwt.codesvr=') != -1 || query.indexOf('gwt.hosted=') != -1 || $wnd_0.external && $wnd_0.external.gwtOnLoad) && query.indexOf('gwt.hybrid') == -1; | |
} catch (e) {} | |
isHostedMode = function isHostedMode() { | |
return result; | |
}; | |
return result; | |
} | |
function maybeStartModule() { | |
if (gwtOnLoad_0 && bodyDone) { | |
gwtOnLoad_0(onLoadErrorFunc, 'app', base, softPermutationId); | |
} | |
} | |
function computeScriptBase() { | |
var thisScript, | |
markerId = '__gwt_marker_app', | |
markerScript; | |
$doc_0.write('<script id="' + markerId + '"><\/script>'); | |
markerScript = $doc_0.getElementById(markerId); | |
thisScript = markerScript && markerScript.previousSibling; | |
while (thisScript && thisScript.tagName != 'SCRIPT') { | |
thisScript = thisScript.previousSibling; | |
} | |
function getDirectoryOfFile(path) { | |
var hashIndex = path.lastIndexOf('#'); | |
if (hashIndex == -1) { | |
hashIndex = path.length; | |
} | |
var queryIndex = path.indexOf('?'); | |
if (queryIndex == -1) { | |
queryIndex = path.length; | |
} | |
var slashIndex = path.lastIndexOf('/', Math.min(queryIndex, hashIndex)); | |
return slashIndex >= 0 ? path.substring(0, slashIndex + 1) : ''; | |
} | |
; | |
if (thisScript && thisScript.src) { | |
base = getDirectoryOfFile(thisScript.src); | |
} | |
if (base == '') { | |
var baseElements = $doc_0.getElementsByTagName('base'); | |
if (baseElements.length > 0) { | |
base = baseElements[baseElements.length - 1].href; | |
} else { | |
base = getDirectoryOfFile($doc_0.location.href); | |
} | |
} else if (base.match(/^\w+:\/\//)) {} else { | |
var img = $doc_0.createElement('img'); | |
img.src = base + 'clear.cache.gif'; | |
base = getDirectoryOfFile(img.src); | |
} | |
if (markerScript) { | |
markerScript.parentNode.removeChild(markerScript); | |
} | |
} | |
function processMetas() { | |
var metas = document.getElementsByTagName('meta'); | |
for (var i = 0, n = metas.length; i < n; ++i) { | |
var meta = metas[i], | |
name_0 = meta.getAttribute('name'), | |
content_0; | |
if (name_0) { | |
if (name_0 == 'gwt:property') { | |
content_0 = meta.getAttribute('content'); | |
if (content_0) { | |
var value_0, | |
eq = content_0.indexOf('='); | |
if (eq >= 0) { | |
name_0 = content_0.substring(0, eq); | |
value_0 = content_0.substring(eq + 1); | |
} else { | |
name_0 = content_0; | |
value_0 = ''; | |
} | |
metaProps[name_0] = value_0; | |
} | |
} else if (name_0 == 'gwt:onPropertyErrorFn') { | |
content_0 = meta.getAttribute('content'); | |
if (content_0) { | |
try { | |
propertyErrorFunc = eval(content_0); | |
} catch (e) { | |
alert('Bad handler "' + content_0 + '" for "gwt:onPropertyErrorFn"'); | |
} | |
} | |
} else if (name_0 == 'gwt:onLoadErrorFn') { | |
content_0 = meta.getAttribute('content'); | |
if (content_0) { | |
try { | |
onLoadErrorFunc = eval(content_0); | |
} catch (e) { | |
alert('Bad handler "' + content_0 + '" for "gwt:onLoadErrorFn"'); | |
} | |
} | |
} | |
} | |
} | |
} | |
__gwt_isKnownPropertyValue = function __gwt_isKnownPropertyValue(propName, propValue) { | |
return propValue in values[propName]; | |
}; | |
__gwt_getMetaProperty = function __gwt_getMetaProperty(name_0) { | |
var value_0 = metaProps[name_0]; | |
return value_0 == null ? null : value_0; | |
}; | |
function unflattenKeylistIntoAnswers(propValArray, value_0) { | |
var answer = answers; | |
for (var i = 0, n = propValArray.length - 1; i < n; ++i) { | |
answer = answer[propValArray[i]] || (answer[propValArray[i]] = []); | |
} | |
answer[propValArray[n]] = value_0; | |
} | |
function computePropValue(propName) { | |
var value_0 = providers[propName](), | |
allowedValuesMap = values[propName]; | |
if (value_0 in allowedValuesMap) { | |
return value_0; | |
} | |
var allowedValuesList = []; | |
for (var k in allowedValuesMap) { | |
allowedValuesList[allowedValuesMap[k]] = k; | |
} | |
if (propertyErrorFunc) { | |
propertyErrorFunc(propName, allowedValuesList, value_0); | |
} | |
throw null; | |
} | |
providers['user.agent'] = function () { | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc_0.documentMode; | |
if (function () { | |
return ua.indexOf('webkit') != -1; | |
}()) return 'safari'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
}()) return 'ie10'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
}()) return 'ie9'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
}()) return 'ie8'; | |
if (function () { | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
}()) return 'gecko1_8'; | |
return ''; | |
}; | |
values['user.agent'] = { 'gecko1_8': 0, 'ie10': 1, 'ie8': 2, 'ie9': 3, 'safari': 4 }; | |
app.onScriptLoad = function (gwtOnLoadFunc) { | |
app = null; | |
gwtOnLoad_0 = gwtOnLoadFunc; | |
maybeStartModule(); | |
}; | |
if (isHostedMode()) { | |
alert('Single-script hosted mode not yet implemented. See issue ' + 'http://code.google.com/p/google-web-toolkit/issues/detail?id=2079'); | |
return; | |
} | |
computeScriptBase(); | |
processMetas(); | |
try { | |
var strongName; | |
unflattenKeylistIntoAnswers(['gecko1_8'], '48EDC8347B78D506E191A51CA0160B78'); | |
unflattenKeylistIntoAnswers(['ie10'], '48EDC8347B78D506E191A51CA0160B78' + ':1'); | |
unflattenKeylistIntoAnswers(['ie8'], '48EDC8347B78D506E191A51CA0160B78' + ':2'); | |
unflattenKeylistIntoAnswers(['ie9'], '48EDC8347B78D506E191A51CA0160B78' + ':3'); | |
unflattenKeylistIntoAnswers(['safari'], '48EDC8347B78D506E191A51CA0160B78' + ':4'); | |
strongName = answers[computePropValue('user.agent')]; | |
var idx = strongName.indexOf(':'); | |
if (idx != -1) { | |
softPermutationId = Number(strongName.substring(idx + 1)); | |
} | |
} catch (e) { | |
return; | |
} | |
var onBodyDoneTimerId; | |
function onBodyDone() { | |
if (!bodyDone) { | |
bodyDone = true; | |
if (!__gwt_stylesLoaded['gwt/clean/clean.css']) { | |
var l = $doc_0.createElement('link'); | |
__gwt_stylesLoaded['gwt/clean/clean.css'] = l; | |
l.setAttribute('rel', 'stylesheet'); | |
l.setAttribute('href', base + 'gwt/clean/clean.css'); | |
$doc_0.getElementsByTagName('head')[0].appendChild(l); | |
} | |
maybeStartModule(); | |
if ($doc_0.removeEventListener) { | |
$doc_0.removeEventListener('DOMContentLoaded', onBodyDone, false); | |
} | |
if (onBodyDoneTimerId) { | |
clearInterval(onBodyDoneTimerId); | |
} | |
} | |
} | |
if ($doc_0.addEventListener) { | |
$doc_0.addEventListener('DOMContentLoaded', function () { | |
onBodyDone(); | |
}, false); | |
} | |
var onBodyDoneTimerId = setInterval(function () { | |
if (/loaded|complete/.test($doc_0.readyState)) { | |
onBodyDone(); | |
} | |
}, 50); | |
} | |
app(); | |
(function () { | |
var $gwt_version = "2.8.2";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function (a) { | |
$wnd.__gwtStatsEvent(a); | |
} : null;var $strongName = '48EDC8347B78D506E191A51CA0160B78';var $intern_0 = { 3: 1, 4: 1 }, | |
$intern_1 = { 11: 1 }; | |
var _, | |
prototypesByTypeId_0, | |
initFnList_0, | |
permutationId = -1; | |
function create_com_google_gwt_useragent_client_UserAgent() { | |
switch (permutationId) { | |
case 1: | |
return new UserAgentImplIe10(); | |
case 4: | |
return new UserAgentImplSafari(); | |
case 0: | |
return new UserAgentImplGecko1_8(); | |
case 2: | |
return new UserAgentImplIe8(); | |
} | |
return new UserAgentImplIe9(); | |
} | |
function setGwtProperty(propertyName, propertyValue) { | |
(typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && _typeof(window['$gwt']) === 'object' && (window['$gwt'][propertyName] = propertyValue); | |
} | |
function gwtOnLoad_0(errFn, modName, modBase, softPermutationId) { | |
ensureModuleInit(); | |
var initFnList = initFnList_0; | |
$moduleName = modName; | |
$moduleBase = modBase; | |
permutationId = softPermutationId; | |
function initializeModules() { | |
for (var i = 0; i < initFnList.length; i++) { | |
initFnList[i](); | |
} | |
} | |
if (errFn) { | |
try { | |
$entry(initializeModules)(); | |
} catch (e) { | |
errFn(modName, e); | |
} | |
} else { | |
$entry(initializeModules)(); | |
} | |
} | |
function ensureModuleInit() { | |
initFnList_0 == null && (initFnList_0 = []); | |
} | |
function addInitFunctions() { | |
ensureModuleInit(); | |
var initFnList = initFnList_0; | |
for (var i = 0; i < arguments.length; i++) { | |
initFnList.push(arguments[i]); | |
} | |
} | |
function typeMarkerFn() {} | |
function toString_0(object) { | |
var number; | |
if (Array.isArray(object) && object.typeMarker === typeMarkerFn) { | |
return $getName(instanceOfString(object) ? Ljava_lang_String_2_classLit : instanceOfDouble(object) ? Ljava_lang_Double_2_classLit : instanceOfBoolean(object) ? Ljava_lang_Boolean_2_classLit : hasJavaObjectVirtualDispatch(object) ? object.___clazz : isJavaArray(object) ? object.___clazz : object.___clazz || Array.isArray(object) && getClassLiteralForArray(Lcom_google_gwt_core_client_JavaScriptObject_2_classLit, 1) || Lcom_google_gwt_core_client_JavaScriptObject_2_classLit) + '@' + (number = (instanceOfString(object) ? getHashCode_0(object) : instanceOfDouble(object) ? round_int((checkCriticalNotNull(object), object)) : instanceOfBoolean(object) ? (checkCriticalNotNull(object), object) ? 1231 : 1237 : hasJavaObjectVirtualDispatch(object) ? object.hashCode_0() : isJavaArray(object) ? getHashCode(object) : !!object && !!object.hashCode ? object.hashCode() : getHashCode(object)) >>> 0, number.toString(16)); | |
} | |
return object.toString(); | |
} | |
function portableObjCreate(obj) { | |
function F() {} | |
; | |
F.prototype = obj || {}; | |
return new F(); | |
} | |
function emptyMethod() {} | |
function defineClass(typeId, superTypeIdOrPrototype, castableTypeMap) { | |
var prototypesByTypeId = prototypesByTypeId_0, | |
superPrototype; | |
var prototype_0 = prototypesByTypeId[typeId]; | |
var clazz = prototype_0 instanceof Array ? prototype_0[0] : null; | |
if (prototype_0 && !clazz) { | |
_ = prototype_0; | |
} else { | |
_ = (superPrototype = superTypeIdOrPrototype && superTypeIdOrPrototype.prototype, !superPrototype && (superPrototype = prototypesByTypeId_0[superTypeIdOrPrototype]), portableObjCreate(superPrototype)); | |
_.castableTypeMap = castableTypeMap; | |
!superTypeIdOrPrototype && (_.typeMarker = typeMarkerFn); | |
prototypesByTypeId[typeId] = _; | |
} | |
for (var i = 3; i < arguments.length; ++i) { | |
arguments[i].prototype = _; | |
} | |
clazz && (_.___clazz = clazz); | |
} | |
function bootstrap() { | |
prototypesByTypeId_0 = {}; | |
!Array.isArray && (Array.isArray = function (vArg) { | |
return Object.prototype.toString.call(vArg) === '[object Array]'; | |
}); | |
function now_0() { | |
return new Date().getTime(); | |
} | |
!Date.now && (Date.now = now_0); | |
} | |
bootstrap(); | |
function Object_0() {} | |
defineClass(1, null, {}, Object_0); | |
_.getClass_0 = function getClass_0() { | |
return this.___clazz; | |
}; | |
_.hashCode_0 = function hashCode_0() { | |
return getHashCode(this); | |
}; | |
_.hashCode = function () { | |
return this.hashCode_0(); | |
}; | |
function $ensureNamesAreInitialized(this$static) { | |
if (this$static.typeName != null) { | |
return; | |
} | |
initializeNames(this$static); | |
} | |
function $getName(this$static) { | |
$ensureNamesAreInitialized(this$static); | |
return this$static.typeName; | |
} | |
function Class() { | |
++nextSequentialId; | |
this.typeName = null; | |
this.simpleName = null; | |
this.packageName = null; | |
this.compoundName = null; | |
this.canonicalName = null; | |
this.typeId = null; | |
this.arrayLiterals = null; | |
} | |
function createForClass(packageName, compoundClassName, typeId) { | |
var clazz, clazz_0; | |
clazz = (clazz_0 = new Class(), clazz_0.packageName = packageName, clazz_0.compoundName = compoundClassName, clazz_0); | |
maybeSetClassLiteral(typeId, clazz); | |
return clazz; | |
} | |
function getClassLiteralForArray_0(leafClass, dimensions) { | |
var arrayLiterals = leafClass.arrayLiterals = leafClass.arrayLiterals || []; | |
return arrayLiterals[dimensions] || (arrayLiterals[dimensions] = leafClass.createClassLiteralForArray(dimensions)); | |
} | |
function getPrototypeForClass(clazz) { | |
if (clazz.isPrimitive()) { | |
return null; | |
} | |
var typeId = clazz.typeId; | |
return prototypesByTypeId_0[typeId]; | |
} | |
function initializeNames(clazz) { | |
if (clazz.isArray_0()) { | |
var componentType = clazz.componentType; | |
componentType.isPrimitive() ? clazz.typeName = '[' + componentType.typeId : !componentType.isArray_0() ? clazz.typeName = '[L' + componentType.getName() + ';' : clazz.typeName = '[' + componentType.getName(); | |
clazz.canonicalName = componentType.getCanonicalName() + '[]'; | |
clazz.simpleName = componentType.getSimpleName() + '[]'; | |
return; | |
} | |
var packageName = clazz.packageName; | |
var compoundName = clazz.compoundName; | |
compoundName = compoundName.split('/'); | |
clazz.typeName = join_0('.', [packageName, join_0('$', compoundName)]); | |
clazz.canonicalName = join_0('.', [packageName, join_0('.', compoundName)]); | |
clazz.simpleName = compoundName[compoundName.length - 1]; | |
} | |
function join_0(separator, strings) { | |
var i = 0; | |
while (!strings[i] || strings[i] == '') { | |
i++; | |
} | |
var result = strings[i++]; | |
for (; i < strings.length; i++) { | |
if (!strings[i] || strings[i] == '') { | |
continue; | |
} | |
result += separator + strings[i]; | |
} | |
return result; | |
} | |
function maybeSetClassLiteral(typeId, clazz) { | |
var proto; | |
if (!typeId) { | |
return; | |
} | |
clazz.typeId = typeId; | |
var prototype_0 = getPrototypeForClass(clazz); | |
if (!prototype_0) { | |
prototypesByTypeId_0[typeId] = [clazz]; | |
return; | |
} | |
prototype_0.___clazz = clazz; | |
} | |
defineClass(14, 1, {}, Class); | |
_.createClassLiteralForArray = function createClassLiteralForArray(dimensions) { | |
var clazz; | |
clazz = new Class(); | |
clazz.modifiers = 4; | |
dimensions > 1 ? clazz.componentType = getClassLiteralForArray_0(this, dimensions - 1) : clazz.componentType = this; | |
return clazz; | |
}; | |
_.getCanonicalName = function getCanonicalName() { | |
$ensureNamesAreInitialized(this); | |
return this.canonicalName; | |
}; | |
_.getName = function getName() { | |
return $getName(this); | |
}; | |
_.getSimpleName = function getSimpleName() { | |
$ensureNamesAreInitialized(this); | |
return this.simpleName; | |
}; | |
_.isArray_0 = function isArray() { | |
return (this.modifiers & 4) != 0; | |
}; | |
_.isPrimitive = function isPrimitive() { | |
return (this.modifiers & 1) != 0; | |
}; | |
_.modifiers = 0; | |
var nextSequentialId = 1; | |
var Ljava_lang_Object_2_classLit = createForClass('java.lang', 'Object', 1); | |
var Ljava_lang_Class_2_classLit = createForClass('java.lang', 'Class', 14); | |
function $fillInStackTrace(this$static) { | |
this$static.writetableStackTrace && this$static.backingJsObject !== '__noinit__' && this$static.initializeBackingError(); | |
return this$static; | |
} | |
function $setBackingJsObject(this$static, backingJsObject) { | |
this$static.backingJsObject = backingJsObject; | |
backingJsObject != null && setPropertySafe(backingJsObject, '__java$exception', this$static); | |
} | |
function fixIE(e) { | |
if (!('stack' in e)) { | |
try { | |
throw e; | |
} catch (ignored) {} | |
} | |
return e; | |
} | |
defineClass(4, 1, $intern_0); | |
_.createError = function createError(msg) { | |
return new Error(msg); | |
}; | |
_.initializeBackingError = function initializeBackingError() { | |
var className, errorMessage, message; | |
message = this.detailMessage == null ? null : this.detailMessage.replace(new RegExp('\n', 'g'), ' '); | |
errorMessage = (className = $getName(this.___clazz), message == null ? className : className + ': ' + message); | |
$setBackingJsObject(this, fixIE(this.createError(errorMessage))); | |
captureStackTrace(this); | |
}; | |
_.backingJsObject = '__noinit__'; | |
_.writetableStackTrace = true; | |
var Ljava_lang_Throwable_2_classLit = createForClass('java.lang', 'Throwable', 4); | |
defineClass(13, 4, $intern_0); | |
var Ljava_lang_Exception_2_classLit = createForClass('java.lang', 'Exception', 13); | |
function RuntimeException(message) { | |
this.detailMessage = message; | |
$fillInStackTrace(this); | |
this.initializeBackingError(); | |
} | |
defineClass(7, 13, $intern_0); | |
var Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang', 'RuntimeException', 7); | |
defineClass(15, 7, $intern_0); | |
var Ljava_lang_JsException_2_classLit = createForClass('java.lang', 'JsException', 15); | |
defineClass(19, 15, $intern_0); | |
var Lcom_google_gwt_core_client_impl_JavaScriptExceptionBase_2_classLit = createForClass('com.google.gwt.core.client.impl', 'JavaScriptExceptionBase', 19); | |
function $clinit_JavaScriptException() { | |
$clinit_JavaScriptException = emptyMethod; | |
NOT_SET = new Object_0(); | |
} | |
function JavaScriptException(e) { | |
$clinit_JavaScriptException(); | |
$fillInStackTrace(this); | |
this.backingJsObject = e; | |
e != null && setPropertySafe(e, '__java$exception', this); | |
this.detailMessage = e == null ? 'null' : toString_0(e); | |
this.e = e; | |
} | |
defineClass(9, 19, { 9: 1, 3: 1, 4: 1 }, JavaScriptException); | |
_.getThrown = function getThrown() { | |
return maskUndefined(this.e) === maskUndefined(NOT_SET) ? null : this.e; | |
}; | |
var NOT_SET; | |
var Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptException', 9); | |
var Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptObject$', 0); | |
function now_1() { | |
if (Date.now) { | |
return Date.now(); | |
} | |
return new Date().getTime(); | |
} | |
defineClass(34, 1, {}); | |
var Lcom_google_gwt_core_client_Scheduler_2_classLit = createForClass('com.google.gwt.core.client', 'Scheduler', 34); | |
function $clinit_Impl() { | |
$clinit_Impl = emptyMethod; | |
!!($clinit_StackTraceCreator(), collector); | |
} | |
function apply_0(jsFunction, thisObj, args) { | |
return jsFunction.apply(thisObj, args); | |
var __0; | |
} | |
function enter() { | |
var now_0; | |
if (entryDepth != 0) { | |
now_0 = now_1(); | |
if (now_0 - watchdogEntryDepthLastScheduled > 2000) { | |
watchdogEntryDepthLastScheduled = now_0; | |
watchdogEntryDepthTimerId = $wnd.setTimeout(watchdogEntryDepthRun, 10); | |
} | |
} | |
if (entryDepth++ == 0) { | |
$flushEntryCommands(($clinit_SchedulerImpl(), INSTANCE)); | |
return true; | |
} | |
return false; | |
} | |
function entry(jsFunction) { | |
$clinit_Impl(); | |
return function () { | |
return entry0(jsFunction, this, arguments); | |
var __0; | |
}; | |
} | |
function entry0(jsFunction, thisObj, args) { | |
var initialEntry; | |
initialEntry = enter(); | |
try { | |
return apply_0(jsFunction, thisObj, args); | |
} finally { | |
exit(initialEntry); | |
} | |
} | |
function exit(initialEntry) { | |
initialEntry && $flushFinallyCommands(($clinit_SchedulerImpl(), INSTANCE)); | |
--entryDepth; | |
if (initialEntry) { | |
if (watchdogEntryDepthTimerId != -1) { | |
watchdogEntryDepthCancel(watchdogEntryDepthTimerId); | |
watchdogEntryDepthTimerId = -1; | |
} | |
} | |
} | |
function reportToBrowser(e) { | |
$clinit_Impl(); | |
$wnd.setTimeout(function () { | |
throw e; | |
}, 0); | |
} | |
function watchdogEntryDepthCancel(timerId) { | |
$wnd.clearTimeout(timerId); | |
} | |
function watchdogEntryDepthRun() { | |
entryDepth != 0 && (entryDepth = 0); | |
watchdogEntryDepthTimerId = -1; | |
} | |
var entryDepth = 0, | |
watchdogEntryDepthLastScheduled = 0, | |
watchdogEntryDepthTimerId = -1; | |
function $clinit_SchedulerImpl() { | |
$clinit_SchedulerImpl = emptyMethod; | |
INSTANCE = new SchedulerImpl(); | |
} | |
function $flushEntryCommands(this$static) { | |
var oldQueue, rescheduled; | |
if (this$static.entryCommands) { | |
rescheduled = null; | |
do { | |
oldQueue = this$static.entryCommands; | |
this$static.entryCommands = null; | |
rescheduled = runScheduledTasks(oldQueue, rescheduled); | |
} while (this$static.entryCommands); | |
this$static.entryCommands = rescheduled; | |
} | |
} | |
function $flushFinallyCommands(this$static) { | |
var oldQueue, rescheduled; | |
if (this$static.finallyCommands) { | |
rescheduled = null; | |
do { | |
oldQueue = this$static.finallyCommands; | |
this$static.finallyCommands = null; | |
rescheduled = runScheduledTasks(oldQueue, rescheduled); | |
} while (this$static.finallyCommands); | |
this$static.finallyCommands = rescheduled; | |
} | |
} | |
function SchedulerImpl() {} | |
function push_0(queue, task) { | |
!queue && (queue = []); | |
queue[queue.length] = task; | |
return queue; | |
} | |
function runScheduledTasks(tasks, rescheduled) { | |
var e, i, j, t; | |
for (i = 0, j = tasks.length; i < j; i++) { | |
t = tasks[i]; | |
try { | |
t[1] ? t[0].$_nullMethod() && (rescheduled = push_0(rescheduled, t)) : t[0].$_nullMethod(); | |
} catch ($e0) { | |
$e0 = toJava($e0); | |
if (instanceOf($e0, 4)) { | |
e = $e0; | |
$clinit_Impl(); | |
reportToBrowser(instanceOf(e, 9) ? castTo(e, 9).getThrown() : e); | |
} else throw toJs($e0); | |
} | |
} | |
return rescheduled; | |
} | |
defineClass(27, 34, {}, SchedulerImpl); | |
var INSTANCE; | |
var Lcom_google_gwt_core_client_impl_SchedulerImpl_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl', 27); | |
function $clinit_StackTraceCreator() { | |
$clinit_StackTraceCreator = emptyMethod; | |
var c, enforceLegacy; | |
enforceLegacy = !supportsErrorStack(); | |
c = new StackTraceCreator$CollectorModernNoSourceMap(); | |
collector = enforceLegacy ? new StackTraceCreator$CollectorLegacy() : c; | |
} | |
function captureStackTrace(error) { | |
$clinit_StackTraceCreator(); | |
collector.collect(error); | |
} | |
function extractFunctionName(fnName) { | |
var fnRE = /function(?:\s+([\w$]+))?\s*\(/; | |
var match_0 = fnRE.exec(fnName); | |
return match_0 && match_0[1] || 'anonymous'; | |
} | |
function supportsErrorStack() { | |
if (Error.stackTraceLimit > 0) { | |
$wnd.Error.stackTraceLimit = Error.stackTraceLimit = 64; | |
return true; | |
} | |
return 'stack' in new Error(); | |
} | |
var collector; | |
defineClass(47, 1, {}); | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/Collector', 47); | |
function StackTraceCreator$CollectorLegacy() {} | |
defineClass(20, 47, {}, StackTraceCreator$CollectorLegacy); | |
_.collect = function collect(error) { | |
var seen = {}, | |
name_1; | |
var fnStack = []; | |
error['fnStack'] = fnStack; | |
var callee = arguments.callee.caller; | |
while (callee) { | |
var name_0 = ($clinit_StackTraceCreator(), callee.name || (callee.name = extractFunctionName(callee.toString()))); | |
fnStack.push(name_0); | |
var keyName = ':' + name_0; | |
var withThisName = seen[keyName]; | |
if (withThisName) { | |
var i, j; | |
for (i = 0, j = withThisName.length; i < j; i++) { | |
if (withThisName[i] === callee) { | |
return; | |
} | |
} | |
} | |
(withThisName || (seen[keyName] = [])).push(callee); | |
callee = callee.caller; | |
} | |
}; | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorLegacy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorLegacy', 20); | |
defineClass(48, 47, {}); | |
_.collect = function collect_0(error) {}; | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModern_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModern', 48); | |
function StackTraceCreator$CollectorModernNoSourceMap() {} | |
defineClass(21, 48, {}, StackTraceCreator$CollectorModernNoSourceMap); | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModernNoSourceMap_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModernNoSourceMap', 21); | |
function getClassLiteralForArray(clazz, dimensions) { | |
return getClassLiteralForArray_0(clazz, dimensions); | |
} | |
function isJavaArray(src_0) { | |
return Array.isArray(src_0) && src_0.typeMarker === typeMarkerFn; | |
} | |
function stampJavaTypeInfo(arrayClass, castableTypeMap, elementTypeId, elementTypeCategory, array) { | |
array.___clazz = arrayClass; | |
array.castableTypeMap = castableTypeMap; | |
array.typeMarker = typeMarkerFn; | |
array.__elementTypeId$ = elementTypeId; | |
array.__elementTypeCategory$ = elementTypeCategory; | |
return array; | |
} | |
function canCast(src_0, dstId) { | |
if (instanceOfString(src_0)) { | |
return !!stringCastMap[dstId]; | |
} else if (src_0.castableTypeMap) { | |
return !!src_0.castableTypeMap[dstId]; | |
} else if (instanceOfDouble(src_0)) { | |
return !!doubleCastMap[dstId]; | |
} else if (instanceOfBoolean(src_0)) { | |
return !!booleanCastMap[dstId]; | |
} | |
return false; | |
} | |
function castTo(src_0, dstId) { | |
checkCriticalType(src_0 == null || canCast(src_0, dstId)); | |
return src_0; | |
} | |
function hasJavaObjectVirtualDispatch(src_0) { | |
return !Array.isArray(src_0) && src_0.typeMarker === typeMarkerFn; | |
} | |
function instanceOf(src_0, dstId) { | |
return src_0 != null && canCast(src_0, dstId); | |
} | |
function instanceOfBoolean(src_0) { | |
return typeof src_0 === 'boolean'; | |
} | |
function instanceOfDouble(src_0) { | |
return typeof src_0 === 'number'; | |
} | |
function instanceOfString(src_0) { | |
return typeof src_0 === 'string'; | |
} | |
function maskUndefined(src_0) { | |
return src_0 == null ? null : src_0; | |
} | |
function round_int(x_0) { | |
return Math.max(Math.min(x_0, 2147483647), -2147483648) | 0; | |
} | |
var booleanCastMap, doubleCastMap, stringCastMap; | |
function toJava(e) { | |
var javaException; | |
if (instanceOf(e, 4)) { | |
return e; | |
} | |
javaException = e && e['__java$exception']; | |
if (!javaException) { | |
javaException = new JavaScriptException(e); | |
captureStackTrace(javaException); | |
} | |
return javaException; | |
} | |
function toJs(t) { | |
return t.backingJsObject; | |
} | |
function init() { | |
var div; | |
$wnd.setTimeout($entry(assertCompileTimeUserAgent)); | |
$onModuleLoad(); | |
div = ($clinit_DomGlobal(), document_0).createElement('div'); | |
div.textContent = 'helllooooooooooooooooooooo'; | |
document_0.getElementById('gwt-div').appendChild(div); | |
} | |
function $onModuleLoad() { | |
var allowedModes, currentMode, i; | |
currentMode = $doc.compatMode; | |
allowedModes = stampJavaTypeInfo(getClassLiteralForArray(Ljava_lang_String_2_classLit, 1), { 3: 1 }, 2, 6, ['CSS1Compat']); | |
for (i = 0; i < allowedModes.length; i++) { | |
if ($equals(allowedModes[i], currentMode)) { | |
return; | |
} | |
} | |
allowedModes.length == 1 && $equals('CSS1Compat', allowedModes[0]) && $equals('BackCompat', currentMode) ? "GWT no longer supports Quirks Mode (document.compatMode=' BackCompat').<br>Make sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,<br>e.g. by using <!doctype html> at the start of your application's HTML page.<br><br>To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding<br>the following line to your*.gwt.xml module file:<br> <extend-configuration-property name=\"document.compatMode\" value=\"" + currentMode + '"/>' : "Your *.gwt.xml module configuration prohibits the use of the current document rendering mode (document.compatMode=' " + currentMode + "').<br>Modify your application's host HTML page doctype, or update your custom " + "'document.compatMode' configuration property settings."; | |
} | |
function assertCompileTimeUserAgent() { | |
var compileTimeValue, impl, runtimeValue; | |
impl = castTo(create_com_google_gwt_useragent_client_UserAgent(), 11); | |
compileTimeValue = impl.getCompileTimeValue(); | |
runtimeValue = impl.getRuntimeValue(); | |
if (!$equals(compileTimeValue, runtimeValue)) { | |
throw toJs(new UserAgentAsserter$UserAgentAssertionError(compileTimeValue, runtimeValue)); | |
} | |
} | |
function Error_0(message) { | |
this.detailMessage = message; | |
$fillInStackTrace(this); | |
this.initializeBackingError(); | |
} | |
defineClass(12, 4, $intern_0); | |
var Ljava_lang_Error_2_classLit = createForClass('java.lang', 'Error', 12); | |
defineClass(5, 12, $intern_0); | |
var Ljava_lang_AssertionError_2_classLit = createForClass('java.lang', 'AssertionError', 5); | |
function UserAgentAsserter$UserAgentAssertionError(compileTimeValue, runtimeValue) { | |
var lastArg; | |
Error_0.call(this, (lastArg = 'Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.' == null ? 'null' : toString_0('Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.'), instanceOf('Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.', 4) ? castTo('Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.', 4) : null, lastArg)); | |
} | |
defineClass(16, 5, $intern_0, UserAgentAsserter$UserAgentAssertionError); | |
var Lcom_google_gwt_useragent_client_UserAgentAsserter$UserAgentAssertionError_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter/UserAgentAssertionError', 16); | |
function UserAgentImplGecko1_8() {} | |
defineClass(31, 1, $intern_1, UserAgentImplGecko1_8); | |
_.getCompileTimeValue = function getCompileTimeValue() { | |
return 'gecko1_8'; | |
}; | |
_.getRuntimeValue = function getRuntimeValue() { | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function () { | |
return ua.indexOf('webkit') != -1; | |
}()) return 'safari'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
}()) return 'ie10'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
}()) return 'ie9'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
}()) return 'ie8'; | |
if (function () { | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
}()) return 'gecko1_8'; | |
return 'unknown'; | |
}; | |
var Lcom_google_gwt_useragent_client_UserAgentImplGecko1_18_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplGecko1_8', 31); | |
function UserAgentImplIe10() {} | |
defineClass(29, 1, $intern_1, UserAgentImplIe10); | |
_.getCompileTimeValue = function getCompileTimeValue_0() { | |
return 'ie10'; | |
}; | |
_.getRuntimeValue = function getRuntimeValue_0() { | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function () { | |
return ua.indexOf('webkit') != -1; | |
}()) return 'safari'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
}()) return 'ie10'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
}()) return 'ie9'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
}()) return 'ie8'; | |
if (function () { | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
}()) return 'gecko1_8'; | |
return 'unknown'; | |
}; | |
var Lcom_google_gwt_useragent_client_UserAgentImplIe10_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplIe10', 29); | |
function UserAgentImplIe8() {} | |
defineClass(32, 1, $intern_1, UserAgentImplIe8); | |
_.getCompileTimeValue = function getCompileTimeValue_1() { | |
return 'ie8'; | |
}; | |
_.getRuntimeValue = function getRuntimeValue_1() { | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function () { | |
return ua.indexOf('webkit') != -1; | |
}()) return 'safari'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
}()) return 'ie10'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
}()) return 'ie9'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
}()) return 'ie8'; | |
if (function () { | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
}()) return 'gecko1_8'; | |
return 'unknown'; | |
}; | |
var Lcom_google_gwt_useragent_client_UserAgentImplIe8_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplIe8', 32); | |
function UserAgentImplIe9() {} | |
defineClass(28, 1, $intern_1, UserAgentImplIe9); | |
_.getCompileTimeValue = function getCompileTimeValue_2() { | |
return 'ie9'; | |
}; | |
_.getRuntimeValue = function getRuntimeValue_2() { | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function () { | |
return ua.indexOf('webkit') != -1; | |
}()) return 'safari'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
}()) return 'ie10'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
}()) return 'ie9'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
}()) return 'ie8'; | |
if (function () { | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
}()) return 'gecko1_8'; | |
return 'unknown'; | |
}; | |
var Lcom_google_gwt_useragent_client_UserAgentImplIe9_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplIe9', 28); | |
function UserAgentImplSafari() {} | |
defineClass(30, 1, $intern_1, UserAgentImplSafari); | |
_.getCompileTimeValue = function getCompileTimeValue_3() { | |
return 'safari'; | |
}; | |
_.getRuntimeValue = function getRuntimeValue_3() { | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function () { | |
return ua.indexOf('webkit') != -1; | |
}()) return 'safari'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
}()) return 'ie10'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
}()) return 'ie9'; | |
if (function () { | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
}()) return 'ie8'; | |
if (function () { | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
}()) return 'gecko1_8'; | |
return 'unknown'; | |
}; | |
var Lcom_google_gwt_useragent_client_UserAgentImplSafari_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplSafari', 30); | |
function $clinit_DomGlobal() { | |
$clinit_DomGlobal = emptyMethod; | |
document_0 = $wnd.window.document; | |
} | |
var document_0; | |
function $clinit_Boolean() { | |
$clinit_Boolean = emptyMethod; | |
} | |
booleanCastMap = { 3: 1, 17: 1 }; | |
var Ljava_lang_Boolean_2_classLit = createForClass('java.lang', 'Boolean', 44); | |
function ClassCastException() { | |
RuntimeException.call(this, null); | |
} | |
defineClass(18, 7, $intern_0, ClassCastException); | |
var Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang', 'ClassCastException', 18); | |
defineClass(45, 1, { 3: 1 }); | |
var Ljava_lang_Number_2_classLit = createForClass('java.lang', 'Number', 45); | |
doubleCastMap = { 3: 1, 17: 1 }; | |
var Ljava_lang_Double_2_classLit = createForClass('java.lang', 'Double', 46); | |
defineClass(22, 7, $intern_0); | |
var Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'IndexOutOfBoundsException', 22); | |
defineClass(71, 1, {}); | |
function NullPointerException() { | |
$fillInStackTrace(this); | |
this.initializeBackingError(); | |
} | |
defineClass(24, 15, $intern_0, NullPointerException); | |
_.createError = function createError_0(msg) { | |
return new TypeError(msg); | |
}; | |
var Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang', 'NullPointerException', 24); | |
function $charAt(this$static, index_0) { | |
checkCriticalStringElementIndex(index_0, this$static.length); | |
return this$static.charCodeAt(index_0); | |
} | |
function $equals(this$static, other) { | |
return checkCriticalNotNull(this$static), this$static === other; | |
} | |
stringCastMap = { 3: 1, 52: 1, 17: 1, 2: 1 }; | |
var Ljava_lang_String_2_classLit = createForClass('java.lang', 'String', 2); | |
function StringIndexOutOfBoundsException(message) { | |
RuntimeException.call(this, message); | |
} | |
defineClass(23, 22, $intern_0, StringIndexOutOfBoundsException); | |
var Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'StringIndexOutOfBoundsException', 23); | |
defineClass(74, 1, {}); | |
function checkCriticalNotNull(reference) { | |
if (reference == null) { | |
throw toJs(new NullPointerException()); | |
} | |
return reference; | |
} | |
function checkCriticalStringElementIndex(index_0, size_0) { | |
if (index_0 < 0 || index_0 >= size_0) { | |
throw toJs(new StringIndexOutOfBoundsException('Index: ' + index_0 + ', Size: ' + size_0)); | |
} | |
} | |
function checkCriticalType(expression) { | |
if (!expression) { | |
throw toJs(new ClassCastException()); | |
} | |
} | |
function setPropertySafe(map_0, key, value_0) { | |
try { | |
map_0[key] = value_0; | |
} catch (ignored) {} | |
} | |
defineClass(70, 1, {}); | |
function getHashCode(o) { | |
return o.$H || (o.$H = ++nextHashId); | |
} | |
var nextHashId = 0; | |
function $clinit_StringHashCache() { | |
$clinit_StringHashCache = emptyMethod; | |
back_0 = new Object_0(); | |
front = new Object_0(); | |
} | |
function compute(str) { | |
var hashCode, i, n, nBatch; | |
hashCode = 0; | |
n = str.length; | |
nBatch = n - 4; | |
i = 0; | |
while (i < nBatch) { | |
hashCode = (checkCriticalStringElementIndex(i + 3, str.length), str.charCodeAt(i + 3) + (checkCriticalStringElementIndex(i + 2, str.length), 31 * (str.charCodeAt(i + 2) + (checkCriticalStringElementIndex(i + 1, str.length), 31 * (str.charCodeAt(i + 1) + (checkCriticalStringElementIndex(i, str.length), 31 * (str.charCodeAt(i) + 31 * hashCode))))))); | |
hashCode = hashCode | 0; | |
i += 4; | |
} | |
while (i < n) { | |
hashCode = hashCode * 31 + $charAt(str, i++); | |
} | |
hashCode = hashCode | 0; | |
return hashCode; | |
} | |
function getHashCode_0(str) { | |
$clinit_StringHashCache(); | |
var hashCode, key, result; | |
key = ':' + str; | |
result = front[key]; | |
if (result != null) { | |
return round_int((checkCriticalNotNull(result), result)); | |
} | |
result = back_0[key]; | |
hashCode = result == null ? compute(str) : round_int((checkCriticalNotNull(result), result)); | |
increment(); | |
front[key] = hashCode; | |
return hashCode; | |
} | |
function increment() { | |
if (count == 256) { | |
back_0 = front; | |
front = new Object_0(); | |
count = 0; | |
} | |
++count; | |
} | |
var back_0, | |
count = 0, | |
front; | |
defineClass(450, 1, {}); | |
var $entry = ($clinit_Impl(), entry); | |
var gwtOnLoad = gwtOnLoad = gwtOnLoad_0; | |
addInitFunctions(init); | |
setGwtProperty('permProps', [[['locale', 'default'], ['user.agent', 'gecko1_8']], [['locale', 'default'], ['user.agent', 'ie10']], [['locale', 'default'], ['user.agent', 'ie8']], [['locale', 'default'], ['user.agent', 'ie9']], [['locale', 'default'], ['user.agent', 'safari']]]); | |
if (app) app.onScriptLoad(gwtOnLoad); | |
})(); | |
/***/ }) | |
}); | |
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZ3d0L2FwcC9hcHAubm9jYWNoZS5qcyJdLCJuYW1lcyI6WyJhcHAiLCIkd25kXzAiLCJ3aW5kb3ciLCIkZG9jXzAiLCJkb2N1bWVudCIsImd3dE9uTG9hZF8wIiwiYm9keURvbmUiLCJiYXNlIiwibWV0YVByb3BzIiwidmFsdWVzIiwicHJvdmlkZXJzIiwiYW5zd2VycyIsInNvZnRQZXJtdXRhdGlvbklkIiwib25Mb2FkRXJyb3JGdW5jIiwicHJvcGVydHlFcnJvckZ1bmMiLCJfX2d3dF9zdHlsZXNMb2FkZWQiLCJfX2d3dF9zY3JpcHRzTG9hZGVkIiwiaXNIb3N0ZWRNb2RlIiwicmVzdWx0IiwicXVlcnkiLCJsb2NhdGlvbiIsInNlYXJjaCIsImluZGV4T2YiLCJleHRlcm5hbCIsImd3dE9uTG9hZCIsImUiLCJtYXliZVN0YXJ0TW9kdWxlIiwiY29tcHV0ZVNjcmlwdEJhc2UiLCJ0aGlzU2NyaXB0IiwibWFya2VySWQiLCJtYXJrZXJTY3JpcHQiLCJ3cml0ZSIsImdldEVsZW1lbnRCeUlkIiwicHJldmlvdXNTaWJsaW5nIiwidGFnTmFtZSIsImdldERpcmVjdG9yeU9mRmlsZSIsInBhdGgiLCJoYXNoSW5kZXgiLCJsYXN0SW5kZXhPZiIsImxlbmd0aCIsInF1ZXJ5SW5kZXgiLCJzbGFzaEluZGV4IiwiTWF0aCIsIm1pbiIsInN1YnN0cmluZyIsInNyYyIsImJhc2VFbGVtZW50cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaHJlZiIsIm1hdGNoIiwiaW1nIiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInByb2Nlc3NNZXRhcyIsIm1ldGFzIiwiaSIsIm4iLCJtZXRhIiwibmFtZV8wIiwiZ2V0QXR0cmlidXRlIiwiY29udGVudF8wIiwidmFsdWVfMCIsImVxIiwiZXZhbCIsImFsZXJ0IiwiX19nd3RfaXNLbm93blByb3BlcnR5VmFsdWUiLCJwcm9wTmFtZSIsInByb3BWYWx1ZSIsIl9fZ3d0X2dldE1ldGFQcm9wZXJ0eSIsInVuZmxhdHRlbktleWxpc3RJbnRvQW5zd2VycyIsInByb3BWYWxBcnJheSIsImFuc3dlciIsImNvbXB1dGVQcm9wVmFsdWUiLCJhbGxvd2VkVmFsdWVzTWFwIiwiYWxsb3dlZFZhbHVlc0xpc3QiLCJrIiwidWEiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJ0b0xvd2VyQ2FzZSIsImRvY01vZGUiLCJkb2N1bWVudE1vZGUiLCJvblNjcmlwdExvYWQiLCJnd3RPbkxvYWRGdW5jIiwic3Ryb25nTmFtZSIsImlkeCIsIk51bWJlciIsIm9uQm9keURvbmVUaW1lcklkIiwib25Cb2R5RG9uZSIsImwiLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjbGVhckludGVydmFsIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldEludGVydmFsIiwidGVzdCIsInJlYWR5U3RhdGUiLCIkZ3d0X3ZlcnNpb24iLCIkd25kIiwiJGRvYyIsIiRtb2R1bGVOYW1lIiwiJG1vZHVsZUJhc2UiLCIkc3RhdHMiLCJfX2d3dFN0YXRzRXZlbnQiLCJhIiwiJHN0cm9uZ05hbWUiLCIkaW50ZXJuXzAiLCIkaW50ZXJuXzEiLCJfIiwicHJvdG90eXBlc0J5VHlwZUlkXzAiLCJpbml0Rm5MaXN0XzAiLCJwZXJtdXRhdGlvbklkIiwiY3JlYXRlX2NvbV9nb29nbGVfZ3d0X3VzZXJhZ2VudF9jbGllbnRfVXNlckFnZW50IiwiVXNlckFnZW50SW1wbEllMTAiLCJVc2VyQWdlbnRJbXBsU2FmYXJpIiwiVXNlckFnZW50SW1wbEdlY2tvMV84IiwiVXNlckFnZW50SW1wbEllOCIsIlVzZXJBZ2VudEltcGxJZTkiLCJzZXRHd3RQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5VmFsdWUiLCJlcnJGbiIsIm1vZE5hbWUiLCJtb2RCYXNlIiwiZW5zdXJlTW9kdWxlSW5pdCIsImluaXRGbkxpc3QiLCJpbml0aWFsaXplTW9kdWxlcyIsIiRlbnRyeSIsImFkZEluaXRGdW5jdGlvbnMiLCJhcmd1bWVudHMiLCJwdXNoIiwidHlwZU1hcmtlckZuIiwidG9TdHJpbmdfMCIsIm9iamVjdCIsIm51bWJlciIsIkFycmF5IiwiaXNBcnJheSIsInR5cGVNYXJrZXIiLCIkZ2V0TmFtZSIsImluc3RhbmNlT2ZTdHJpbmciLCJMamF2YV9sYW5nX1N0cmluZ18yX2NsYXNzTGl0IiwiaW5zdGFuY2VPZkRvdWJsZSIsIkxqYXZhX2xhbmdfRG91YmxlXzJfY2xhc3NMaXQiLCJpbnN0YW5jZU9mQm9vbGVhbiIsIkxqYXZhX2xhbmdfQm9vbGVhbl8yX2NsYXNzTGl0IiwiaGFzSmF2YU9iamVjdFZpcnR1YWxEaXNwYXRjaCIsIl9fX2NsYXp6IiwiaXNKYXZhQXJyYXkiLCJnZXRDbGFzc0xpdGVyYWxGb3JBcnJheSIsIkxjb21fZ29vZ2xlX2d3dF9jb3JlX2NsaWVudF9KYXZhU2NyaXB0T2JqZWN0XzJfY2xhc3NMaXQiLCJnZXRIYXNoQ29kZV8wIiwicm91bmRfaW50IiwiY2hlY2tDcml0aWNhbE5vdE51bGwiLCJoYXNoQ29kZV8wIiwiZ2V0SGFzaENvZGUiLCJoYXNoQ29kZSIsInRvU3RyaW5nIiwicG9ydGFibGVPYmpDcmVhdGUiLCJvYmoiLCJGIiwicHJvdG90eXBlIiwiZW1wdHlNZXRob2QiLCJkZWZpbmVDbGFzcyIsInR5cGVJZCIsInN1cGVyVHlwZUlkT3JQcm90b3R5cGUiLCJjYXN0YWJsZVR5cGVNYXAiLCJwcm90b3R5cGVzQnlUeXBlSWQiLCJzdXBlclByb3RvdHlwZSIsInByb3RvdHlwZV8wIiwiY2xhenoiLCJib290c3RyYXAiLCJ2QXJnIiwiT2JqZWN0IiwiY2FsbCIsIm5vd18wIiwiRGF0ZSIsImdldFRpbWUiLCJub3ciLCJPYmplY3RfMCIsImdldENsYXNzXzAiLCIkZW5zdXJlTmFtZXNBcmVJbml0aWFsaXplZCIsInRoaXMkc3RhdGljIiwidHlwZU5hbWUiLCJpbml0aWFsaXplTmFtZXMiLCJDbGFzcyIsIm5leHRTZXF1ZW50aWFsSWQiLCJzaW1wbGVOYW1lIiwicGFja2FnZU5hbWUiLCJjb21wb3VuZE5hbWUiLCJjYW5vbmljYWxOYW1lIiwiYXJyYXlMaXRlcmFscyIsImNyZWF0ZUZvckNsYXNzIiwiY29tcG91bmRDbGFzc05hbWUiLCJjbGF6el8wIiwibWF5YmVTZXRDbGFzc0xpdGVyYWwiLCJnZXRDbGFzc0xpdGVyYWxGb3JBcnJheV8wIiwibGVhZkNsYXNzIiwiZGltZW5zaW9ucyIsImNyZWF0ZUNsYXNzTGl0ZXJhbEZvckFycmF5IiwiZ2V0UHJvdG90eXBlRm9yQ2xhc3MiLCJpc1ByaW1pdGl2ZSIsImlzQXJyYXlfMCIsImNvbXBvbmVudFR5cGUiLCJnZXROYW1lIiwiZ2V0Q2Fub25pY2FsTmFtZSIsImdldFNpbXBsZU5hbWUiLCJzcGxpdCIsImpvaW5fMCIsInNlcGFyYXRvciIsInN0cmluZ3MiLCJwcm90byIsIm1vZGlmaWVycyIsIkxqYXZhX2xhbmdfT2JqZWN0XzJfY2xhc3NMaXQiLCJMamF2YV9sYW5nX0NsYXNzXzJfY2xhc3NMaXQiLCIkZmlsbEluU3RhY2tUcmFjZSIsIndyaXRldGFibGVTdGFja1RyYWNlIiwiYmFja2luZ0pzT2JqZWN0IiwiaW5pdGlhbGl6ZUJhY2tpbmdFcnJvciIsIiRzZXRCYWNraW5nSnNPYmplY3QiLCJzZXRQcm9wZXJ0eVNhZmUiLCJmaXhJRSIsImlnbm9yZWQiLCJjcmVhdGVFcnJvciIsIm1zZyIsIkVycm9yIiwiY2xhc3NOYW1lIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImRldGFpbE1lc3NhZ2UiLCJyZXBsYWNlIiwiUmVnRXhwIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJMamF2YV9sYW5nX1Rocm93YWJsZV8yX2NsYXNzTGl0IiwiTGphdmFfbGFuZ19FeGNlcHRpb25fMl9jbGFzc0xpdCIsIlJ1bnRpbWVFeGNlcHRpb24iLCJMamF2YV9sYW5nX1J1bnRpbWVFeGNlcHRpb25fMl9jbGFzc0xpdCIsIkxqYXZhX2xhbmdfSnNFeGNlcHRpb25fMl9jbGFzc0xpdCIsIkxjb21fZ29vZ2xlX2d3dF9jb3JlX2NsaWVudF9pbXBsX0phdmFTY3JpcHRFeGNlcHRpb25CYXNlXzJfY2xhc3NMaXQiLCIkY2xpbml0X0phdmFTY3JpcHRFeGNlcHRpb24iLCJOT1RfU0VUIiwiSmF2YVNjcmlwdEV4Y2VwdGlvbiIsImdldFRocm93biIsIm1hc2tVbmRlZmluZWQiLCJMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfSmF2YVNjcmlwdEV4Y2VwdGlvbl8yX2NsYXNzTGl0Iiwibm93XzEiLCJMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfU2NoZWR1bGVyXzJfY2xhc3NMaXQiLCIkY2xpbml0X0ltcGwiLCIkY2xpbml0X1N0YWNrVHJhY2VDcmVhdG9yIiwiY29sbGVjdG9yIiwiYXBwbHlfMCIsImpzRnVuY3Rpb24iLCJ0aGlzT2JqIiwiYXJncyIsImFwcGx5IiwiX18wIiwiZW50ZXIiLCJlbnRyeURlcHRoIiwid2F0Y2hkb2dFbnRyeURlcHRoTGFzdFNjaGVkdWxlZCIsIndhdGNoZG9nRW50cnlEZXB0aFRpbWVySWQiLCJzZXRUaW1lb3V0Iiwid2F0Y2hkb2dFbnRyeURlcHRoUnVuIiwiJGZsdXNoRW50cnlDb21tYW5kcyIsIiRjbGluaXRfU2NoZWR1bGVySW1wbCIsIklOU1RBTkNFIiwiZW50cnkiLCJlbnRyeTAiLCJpbml0aWFsRW50cnkiLCJleGl0IiwiJGZsdXNoRmluYWxseUNvbW1hbmRzIiwid2F0Y2hkb2dFbnRyeURlcHRoQ2FuY2VsIiwicmVwb3J0VG9Ccm93c2VyIiwidGltZXJJZCIsImNsZWFyVGltZW91dCIsIlNjaGVkdWxlckltcGwiLCJvbGRRdWV1ZSIsInJlc2NoZWR1bGVkIiwiZW50cnlDb21tYW5kcyIsInJ1blNjaGVkdWxlZFRhc2tzIiwiZmluYWxseUNvbW1hbmRzIiwicHVzaF8wIiwicXVldWUiLCJ0YXNrIiwidGFza3MiLCJqIiwidCIsIiRfbnVsbE1ldGhvZCIsIiRlMCIsInRvSmF2YSIsImluc3RhbmNlT2YiLCJjYXN0VG8iLCJ0b0pzIiwiTGNvbV9nb29nbGVfZ3d0X2NvcmVfY2xpZW50X2ltcGxfU2NoZWR1bGVySW1wbF8yX2NsYXNzTGl0IiwiYyIsImVuZm9yY2VMZWdhY3kiLCJzdXBwb3J0c0Vycm9yU3RhY2siLCJTdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JNb2Rlcm5Ob1NvdXJjZU1hcCIsIlN0YWNrVHJhY2VDcmVhdG9yJENvbGxlY3RvckxlZ2FjeSIsImVycm9yIiwiY29sbGVjdCIsImV4dHJhY3RGdW5jdGlvbk5hbWUiLCJmbk5hbWUiLCJmblJFIiwibWF0Y2hfMCIsImV4ZWMiLCJzdGFja1RyYWNlTGltaXQiLCJMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9TdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JfMl9jbGFzc0xpdCIsInNlZW4iLCJuYW1lXzEiLCJmblN0YWNrIiwiY2FsbGVlIiwiY2FsbGVyIiwibmFtZSIsImtleU5hbWUiLCJ3aXRoVGhpc05hbWUiLCJMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9TdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JMZWdhY3lfMl9jbGFzc0xpdCIsImNvbGxlY3RfMCIsIkxjb21fZ29vZ2xlX2d3dF9jb3JlX2NsaWVudF9pbXBsX1N0YWNrVHJhY2VDcmVhdG9yJENvbGxlY3Rvck1vZGVybl8yX2NsYXNzTGl0IiwiTGNvbV9nb29nbGVfZ3d0X2NvcmVfY2xpZW50X2ltcGxfU3RhY2tUcmFjZUNyZWF0b3IkQ29sbGVjdG9yTW9kZXJuTm9Tb3VyY2VNYXBfMl9jbGFzc0xpdCIsInNyY18wIiwic3RhbXBKYXZhVHlwZUluZm8iLCJhcnJheUNsYXNzIiwiZWxlbWVudFR5cGVJZCIsImVsZW1lbnRUeXBlQ2F0ZWdvcnkiLCJhcnJheSIsIl9fZWxlbWVudFR5cGVJZCQiLCJfX2VsZW1lbnRUeXBlQ2F0ZWdvcnkkIiwiY2FuQ2FzdCIsImRzdElkIiwic3RyaW5nQ2FzdE1hcCIsImRvdWJsZUNhc3RNYXAiLCJib29sZWFuQ2FzdE1hcCIsImNoZWNrQ3JpdGljYWxUeXBlIiwieF8wIiwibWF4IiwiamF2YUV4Y2VwdGlvbiIsImluaXQiLCJkaXYiLCJhc3NlcnRDb21waWxlVGltZVVzZXJBZ2VudCIsIiRvbk1vZHVsZUxvYWQiLCIkY2xpbml0X0RvbUdsb2JhbCIsImRvY3VtZW50XzAiLCJ0ZXh0Q29udGVudCIsImFsbG93ZWRNb2RlcyIsImN1cnJlbnRNb2RlIiwiY29tcGF0TW9kZSIsIiRlcXVhbHMiLCJjb21waWxlVGltZVZhbHVlIiwiaW1wbCIsInJ1bnRpbWVWYWx1ZSIsImdldENvbXBpbGVUaW1lVmFsdWUiLCJnZXRSdW50aW1lVmFsdWUiLCJVc2VyQWdlbnRBc3NlcnRlciRVc2VyQWdlbnRBc3NlcnRpb25FcnJvciIsIkVycm9yXzAiLCJMamF2YV9sYW5nX0Vycm9yXzJfY2xhc3NMaXQiLCJMamF2YV9sYW5nX0Fzc2VydGlvbkVycm9yXzJfY2xhc3NMaXQiLCJsYXN0QXJnIiwiTGNvbV9nb29nbGVfZ3d0X3VzZXJhZ2VudF9jbGllbnRfVXNlckFnZW50QXNzZXJ0ZXIkVXNlckFnZW50QXNzZXJ0aW9uRXJyb3JfMl9jbGFzc0xpdCIsIkxjb21fZ29vZ2xlX2d3dF91c2VyYWdlbnRfY2xpZW50X1VzZXJBZ2VudEltcGxHZWNrbzFfMThfMl9jbGFzc0xpdCIsImdldENvbXBpbGVUaW1lVmFsdWVfMCIsImdldFJ1bnRpbWVWYWx1ZV8wIiwiTGNvbV9nb29nbGVfZ3d0X3VzZXJhZ2VudF9jbGllbnRfVXNlckFnZW50SW1wbEllMTBfMl9jbGFzc0xpdCIsImdldENvbXBpbGVUaW1lVmFsdWVfMSIsImdldFJ1bnRpbWVWYWx1ZV8xIiwiTGNvbV9nb29nbGVfZ3d0X3VzZXJhZ2VudF9jbGllbnRfVXNlckFnZW50SW1wbEllOF8yX2NsYXNzTGl0IiwiZ2V0Q29tcGlsZVRpbWVWYWx1ZV8yIiwiZ2V0UnVudGltZVZhbHVlXzIiLCJMY29tX2dvb2dsZV9nd3RfdXNlcmFnZW50X2NsaWVudF9Vc2VyQWdlbnRJbXBsSWU5XzJfY2xhc3NMaXQiLCJnZXRDb21waWxlVGltZVZhbHVlXzMiLCJnZXRSdW50aW1lVmFsdWVfMyIsIkxjb21fZ29vZ2xlX2d3dF91c2VyYWdlbnRfY2xpZW50X1VzZXJBZ2VudEltcGxTYWZhcmlfMl9jbGFzc0xpdCIsIiRjbGluaXRfQm9vbGVhbiIsIkNsYXNzQ2FzdEV4Y2VwdGlvbiIsIkxqYXZhX2xhbmdfQ2xhc3NDYXN0RXhjZXB0aW9uXzJfY2xhc3NMaXQiLCJMamF2YV9sYW5nX051bWJlcl8yX2NsYXNzTGl0IiwiTGphdmFfbGFuZ19JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzJfY2xhc3NMaXQiLCJOdWxsUG9pbnRlckV4Y2VwdGlvbiIsImNyZWF0ZUVycm9yXzAiLCJUeXBlRXJyb3IiLCJMamF2YV9sYW5nX051bGxQb2ludGVyRXhjZXB0aW9uXzJfY2xhc3NMaXQiLCIkY2hhckF0IiwiaW5kZXhfMCIsImNoZWNrQ3JpdGljYWxTdHJpbmdFbGVtZW50SW5kZXgiLCJjaGFyQ29kZUF0Iiwib3RoZXIiLCJTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiwiTGphdmFfbGFuZ19TdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzJfY2xhc3NMaXQiLCJyZWZlcmVuY2UiLCJzaXplXzAiLCJleHByZXNzaW9uIiwibWFwXzAiLCJrZXkiLCJvIiwiJEgiLCJuZXh0SGFzaElkIiwiJGNsaW5pdF9TdHJpbmdIYXNoQ2FjaGUiLCJiYWNrXzAiLCJmcm9udCIsImNvbXB1dGUiLCJzdHIiLCJuQmF0Y2giLCJpbmNyZW1lbnQiLCJjb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFNBQVNBLEdBQVQsR0FBYztBQUNaLE1BQUlDLFNBQVNDLE1BQWI7QUFBQSxNQUFxQkMsU0FBU0MsUUFBOUI7QUFBQSxNQUF3Q0MsV0FBeEM7QUFBQSxNQUFxREMsUUFBckQ7QUFBQSxNQUErREMsT0FBTyxFQUF0RTtBQUFBLE1BQTBFQyxZQUFZLEVBQXRGO0FBQUEsTUFBMEZDLFNBQVMsRUFBbkc7QUFBQSxNQUF1R0MsWUFBWSxFQUFuSDtBQUFBLE1BQXVIQyxVQUFVLEVBQWpJO0FBQUEsTUFBcUlDLG9CQUFvQixDQUF6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RUFBVyxTQUFYLENBQUQsRUFBd0IsQ0FBQyxZQUFELEVBQWUsS0FBZixDQUF4QixDQUF2RyxFQUF1SixDQUFDLENBQUMsUUFBRCxFQUFXLFNBQVgsQ0FBRCxFQUF3QixDQUFDLFlBQUQsRUFBZSxLQUFmLENBQXhCLENBQXZKLEVBQXVNLENBQUMsQ0FBQyxRQUFELEVBQVcsU0FBWCxDQUFELEVBQXdCLENBQUMsWUFBRCxFQUFlLFFBQWYsQ0FBeEIsQ0FBdk0sQ0FBNUI7QUFDQSxNQUFJeEgsR0FBSixFQUFTQSxJQUFJbUYsWUFBSixDQUFpQjNELFNBQWpCO0FBQTZCLENBeC9CdEMsSSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGFwcCgpe1xuICB2YXIgJHduZF8wID0gd2luZG93LCAkZG9jXzAgPSBkb2N1bWVudCwgZ3d0T25Mb2FkXzAsIGJvZHlEb25lLCBiYXNlID0gJycsIG1ldGFQcm9wcyA9IHt9LCB2YWx1ZXMgPSBbXSwgcHJvdmlkZXJzID0gW10sIGFuc3dlcnMgPSBbXSwgc29mdFBlcm11dGF0aW9uSWQgPSAwLCBvbkxvYWRFcnJvckZ1bmMsIHByb3BlcnR5RXJyb3JGdW5jO1xuICBpZiAoISR3bmRfMC5fX2d3dF9zdHlsZXNMb2FkZWQpIHtcbiAgICAkd25kXzAuX19nd3Rfc3R5bGVzTG9hZGVkID0ge307XG4gIH1cbiAgaWYgKCEkd25kXzAuX19nd3Rfc2NyaXB0c0xvYWRlZCkge1xuICAgICR3bmRfMC5fX2d3dF9zY3JpcHRzTG9hZGVkID0ge307XG4gIH1cbiAgZnVuY3Rpb24gaXNIb3N0ZWRNb2RlKCl7XG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICB2YXIgcXVlcnkgPSAkd25kXzAubG9jYXRpb24uc2VhcmNoO1xuICAgICAgcmV0dXJuIChxdWVyeS5pbmRleE9mKCdnd3QuY29kZXN2cj0nKSAhPSAtMSB8fCAocXVlcnkuaW5kZXhPZignZ3d0Lmhvc3RlZD0nKSAhPSAtMSB8fCAkd25kXzAuZXh0ZXJuYWwgJiYgJHduZF8wLmV4dGVybmFsLmd3dE9uTG9hZCkpICYmIHF1ZXJ5LmluZGV4T2YoJ2d3dC5oeWJyaWQnKSA9PSAtMTtcbiAgICB9XG4gICAgIGNhdGNoIChlKSB7XG4gICAgfVxuICAgIGlzSG9zdGVkTW9kZSA9IGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1heWJlU3RhcnRNb2R1bGUoKXtcbiAgICBpZiAoZ3d0T25Mb2FkXzAgJiYgYm9keURvbmUpIHtcbiAgICAgIGd3dE9uTG9hZF8wKG9uTG9hZEVycm9yRnVuYywgJ2FwcCcsIGJhc2UsIHNvZnRQZXJtdXRhdGlvbklkKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlU2NyaXB0QmFzZSgpe1xuICAgIHZhciB0aGlzU2NyaXB0LCBtYXJrZXJJZCA9ICdfX2d3dF9tYXJrZXJfYXBwJywgbWFya2VyU2NyaXB0O1xuICAgICRkb2NfMC53cml0ZSgnPHNjcmlwdCBpZD1cIicgKyBtYXJrZXJJZCArICdcIj48XFwvc2NyaXB0PicpO1xuICAgIG1hcmtlclNjcmlwdCA9ICRkb2NfMC5nZXRFbGVtZW50QnlJZChtYXJrZXJJZCk7XG4gICAgdGhpc1NjcmlwdCA9IG1hcmtlclNjcmlwdCAmJiBtYXJrZXJTY3JpcHQucHJldmlvdXNTaWJsaW5nO1xuICAgIHdoaWxlICh0aGlzU2NyaXB0ICYmIHRoaXNTY3JpcHQudGFnTmFtZSAhPSAnU0NSSVBUJykge1xuICAgICAgdGhpc1NjcmlwdCA9IHRoaXNTY3JpcHQucHJldmlvdXNTaWJsaW5nO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXREaXJlY3RvcnlPZkZpbGUocGF0aCl7XG4gICAgICB2YXIgaGFzaEluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignIycpO1xuICAgICAgaWYgKGhhc2hJbmRleCA9PSAtMSkge1xuICAgICAgICBoYXNoSW5kZXggPSBwYXRoLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciBxdWVyeUluZGV4ID0gcGF0aC5pbmRleE9mKCc/Jyk7XG4gICAgICBpZiAocXVlcnlJbmRleCA9PSAtMSkge1xuICAgICAgICBxdWVyeUluZGV4ID0gcGF0aC5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgc2xhc2hJbmRleCA9IHBhdGgubGFzdEluZGV4T2YoJy8nLCBNYXRoLm1pbihxdWVyeUluZGV4LCBoYXNoSW5kZXgpKTtcbiAgICAgIHJldHVybiBzbGFzaEluZGV4ID49IDA/cGF0aC5zdWJzdHJpbmcoMCwgc2xhc2hJbmRleCArIDEpOicnO1xuICAgIH1cblxuICAgIDtcbiAgICBpZiAodGhpc1NjcmlwdCAmJiB0aGlzU2NyaXB0LnNyYykge1xuICAgICAgYmFzZSA9IGdldERpcmVjdG9yeU9mRmlsZSh0aGlzU2NyaXB0LnNyYyk7XG4gICAgfVxuICAgIGlmIChiYXNlID09ICcnKSB7XG4gICAgICB2YXIgYmFzZUVsZW1lbnRzID0gJGRvY18wLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJyk7XG4gICAgICBpZiAoYmFzZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYmFzZSA9IGJhc2VFbGVtZW50c1tiYXNlRWxlbWVudHMubGVuZ3RoIC0gMV0uaHJlZjtcbiAgICAgIH1cbiAgICAgICBlbHNlIHtcbiAgICAgICAgYmFzZSA9IGdldERpcmVjdG9yeU9mRmlsZSgkZG9jXzAubG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgfVxuICAgICBlbHNlIGlmIChiYXNlLm1hdGNoKC9eXFx3KzpcXC9cXC8vKSkge1xuICAgIH1cbiAgICAgZWxzZSB7XG4gICAgICB2YXIgaW1nID0gJGRvY18wLmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgaW1nLnNyYyA9IGJhc2UgKyAnY2xlYXIuY2FjaGUuZ2lmJztcbiAgICAgIGJhc2UgPSBnZXREaXJlY3RvcnlPZkZpbGUoaW1nLnNyYyk7XG4gICAgfVxuICAgIGlmIChtYXJrZXJTY3JpcHQpIHtcbiAgICAgIG1hcmtlclNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG1hcmtlclNjcmlwdCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc01ldGFzKCl7XG4gICAgdmFyIG1ldGFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21ldGEnKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG1ldGFzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIG1ldGEgPSBtZXRhc1tpXSwgbmFtZV8wID0gbWV0YS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSwgY29udGVudF8wO1xuICAgICAgaWYgKG5hbWVfMCkge1xuICAgICAgICBpZiAobmFtZV8wID09ICdnd3Q6cHJvcGVydHknKSB7XG4gICAgICAgICAgY29udGVudF8wID0gbWV0YS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICAgICAgICBpZiAoY29udGVudF8wKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWVfMCwgZXEgPSBjb250ZW50XzAuaW5kZXhPZignPScpO1xuICAgICAgICAgICAgaWYgKGVxID49IDApIHtcbiAgICAgICAgICAgICAgbmFtZV8wID0gY29udGVudF8wLnN1YnN0cmluZygwLCBlcSk7XG4gICAgICAgICAgICAgIHZhbHVlXzAgPSBjb250ZW50XzAuc3Vic3RyaW5nKGVxICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIG5hbWVfMCA9IGNvbnRlbnRfMDtcbiAgICAgICAgICAgICAgdmFsdWVfMCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWV0YVByb3BzW25hbWVfMF0gPSB2YWx1ZV8wO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAgZWxzZSBpZiAobmFtZV8wID09ICdnd3Q6b25Qcm9wZXJ0eUVycm9yRm4nKSB7XG4gICAgICAgICAgY29udGVudF8wID0gbWV0YS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICAgICAgICBpZiAoY29udGVudF8wKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBwcm9wZXJ0eUVycm9yRnVuYyA9IGV2YWwoY29udGVudF8wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBhbGVydCgnQmFkIGhhbmRsZXIgXCInICsgY29udGVudF8wICsgJ1wiIGZvciBcImd3dDpvblByb3BlcnR5RXJyb3JGblwiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICBlbHNlIGlmIChuYW1lXzAgPT0gJ2d3dDpvbkxvYWRFcnJvckZuJykge1xuICAgICAgICAgIGNvbnRlbnRfMCA9IG1ldGEuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgICAgICAgaWYgKGNvbnRlbnRfMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgb25Mb2FkRXJyb3JGdW5jID0gZXZhbChjb250ZW50XzApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGFsZXJ0KCdCYWQgaGFuZGxlciBcIicgKyBjb250ZW50XzAgKyAnXCIgZm9yIFwiZ3d0Om9uTG9hZEVycm9yRm5cIicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9fZ3d0X2lzS25vd25Qcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24ocHJvcE5hbWUsIHByb3BWYWx1ZSl7XG4gICAgcmV0dXJuIHByb3BWYWx1ZSBpbiB2YWx1ZXNbcHJvcE5hbWVdO1xuICB9XG4gIDtcbiAgX19nd3RfZ2V0TWV0YVByb3BlcnR5ID0gZnVuY3Rpb24obmFtZV8wKXtcbiAgICB2YXIgdmFsdWVfMCA9IG1ldGFQcm9wc1tuYW1lXzBdO1xuICAgIHJldHVybiB2YWx1ZV8wID09IG51bGw/bnVsbDp2YWx1ZV8wO1xuICB9XG4gIDtcbiAgZnVuY3Rpb24gdW5mbGF0dGVuS2V5bGlzdEludG9BbnN3ZXJzKHByb3BWYWxBcnJheSwgdmFsdWVfMCl7XG4gICAgdmFyIGFuc3dlciA9IGFuc3dlcnM7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBwcm9wVmFsQXJyYXkubGVuZ3RoIC0gMTsgaSA8IG47ICsraSkge1xuICAgICAgYW5zd2VyID0gYW5zd2VyW3Byb3BWYWxBcnJheVtpXV0gfHwgKGFuc3dlcltwcm9wVmFsQXJyYXlbaV1dID0gW10pO1xuICAgIH1cbiAgICBhbnN3ZXJbcHJvcFZhbEFycmF5W25dXSA9IHZhbHVlXzA7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlUHJvcFZhbHVlKHByb3BOYW1lKXtcbiAgICB2YXIgdmFsdWVfMCA9IHByb3ZpZGVyc1twcm9wTmFtZV0oKSwgYWxsb3dlZFZhbHVlc01hcCA9IHZhbHVlc1twcm9wTmFtZV07XG4gICAgaWYgKHZhbHVlXzAgaW4gYWxsb3dlZFZhbHVlc01hcCkge1xuICAgICAgcmV0dXJuIHZhbHVlXzA7XG4gICAgfVxuICAgIHZhciBhbGxvd2VkVmFsdWVzTGlzdCA9IFtdO1xuICAgIGZvciAodmFyIGsgaW4gYWxsb3dlZFZhbHVlc01hcCkge1xuICAgICAgYWxsb3dlZFZhbHVlc0xpc3RbYWxsb3dlZFZhbHVlc01hcFtrXV0gPSBrO1xuICAgIH1cbiAgICBpZiAocHJvcGVydHlFcnJvckZ1bmMpIHtcbiAgICAgIHByb3BlcnR5RXJyb3JGdW5jKHByb3BOYW1lLCBhbGxvd2VkVmFsdWVzTGlzdCwgdmFsdWVfMCk7XG4gICAgfVxuICAgIHRocm93IG51bGw7XG4gIH1cblxuICBwcm92aWRlcnNbJ3VzZXIuYWdlbnQnXSA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBkb2NNb2RlID0gJGRvY18wLmRvY3VtZW50TW9kZTtcbiAgICBpZiAoZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiB1YS5pbmRleE9mKCd3ZWJraXQnKSAhPSAtMTtcbiAgICB9XG4gICAgKCkpXG4gICAgICByZXR1cm4gJ3NhZmFyaSc7XG4gICAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4gdWEuaW5kZXhPZignbXNpZScpICE9IC0xICYmIChkb2NNb2RlID49IDEwICYmIGRvY01vZGUgPCAxMSk7XG4gICAgfVxuICAgICgpKVxuICAgICAgcmV0dXJuICdpZTEwJztcbiAgICBpZiAoZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgKGRvY01vZGUgPj0gOSAmJiBkb2NNb2RlIDwgMTEpO1xuICAgIH1cbiAgICAoKSlcbiAgICAgIHJldHVybiAnaWU5JztcbiAgICBpZiAoZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgKGRvY01vZGUgPj0gOCAmJiBkb2NNb2RlIDwgMTEpO1xuICAgIH1cbiAgICAoKSlcbiAgICAgIHJldHVybiAnaWU4JztcbiAgICBpZiAoZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiB1YS5pbmRleE9mKCdnZWNrbycpICE9IC0xIHx8IGRvY01vZGUgPj0gMTE7XG4gICAgfVxuICAgICgpKVxuICAgICAgcmV0dXJuICdnZWNrbzFfOCc7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIDtcbiAgdmFsdWVzWyd1c2VyLmFnZW50J10gPSB7J2dlY2tvMV84JzowLCAnaWUxMCc6MSwgJ2llOCc6MiwgJ2llOSc6MywgJ3NhZmFyaSc6NH07XG4gIGFwcC5vblNjcmlwdExvYWQgPSBmdW5jdGlvbihnd3RPbkxvYWRGdW5jKXtcbiAgICBhcHAgPSBudWxsO1xuICAgIGd3dE9uTG9hZF8wID0gZ3d0T25Mb2FkRnVuYztcbiAgICBtYXliZVN0YXJ0TW9kdWxlKCk7XG4gIH1cbiAgO1xuICBpZiAoaXNIb3N0ZWRNb2RlKCkpIHtcbiAgICBhbGVydCgnU2luZ2xlLXNjcmlwdCBob3N0ZWQgbW9kZSBub3QgeWV0IGltcGxlbWVudGVkLiBTZWUgaXNzdWUgJyArICdodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXdlYi10b29sa2l0L2lzc3Vlcy9kZXRhaWw/aWQ9MjA3OScpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb21wdXRlU2NyaXB0QmFzZSgpO1xuICBwcm9jZXNzTWV0YXMoKTtcbiAgdHJ5IHtcbiAgICB2YXIgc3Ryb25nTmFtZTtcbiAgICB1bmZsYXR0ZW5LZXlsaXN0SW50b0Fuc3dlcnMoWydnZWNrbzFfOCddLCAnNDhFREM4MzQ3Qjc4RDUwNkUxOTFBNTFDQTAxNjBCNzgnKTtcbiAgICB1bmZsYXR0ZW5LZXlsaXN0SW50b0Fuc3dlcnMoWydpZTEwJ10sICc0OEVEQzgzNDdCNzhENTA2RTE5MUE1MUNBMDE2MEI3OCcgKyAnOjEnKTtcbiAgICB1bmZsYXR0ZW5LZXlsaXN0SW50b0Fuc3dlcnMoWydpZTgnXSwgJzQ4RURDODM0N0I3OEQ1MDZFMTkxQTUxQ0EwMTYwQjc4JyArICc6MicpO1xuICAgIHVuZmxhdHRlbktleWxpc3RJbnRvQW5zd2VycyhbJ2llOSddLCAnNDhFREM4MzQ3Qjc4RDUwNkUxOTFBNTFDQTAxNjBCNzgnICsgJzozJyk7XG4gICAgdW5mbGF0dGVuS2V5bGlzdEludG9BbnN3ZXJzKFsnc2FmYXJpJ10sICc0OEVEQzgzNDdCNzhENTA2RTE5MUE1MUNBMDE2MEI3OCcgKyAnOjQnKTtcbiAgICBzdHJvbmdOYW1lID0gYW5zd2Vyc1tjb21wdXRlUHJvcFZhbHVlKCd1c2VyLmFnZW50JyldO1xuICAgIHZhciBpZHggPSBzdHJvbmdOYW1lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaWR4ICE9IC0xKSB7XG4gICAgICBzb2Z0UGVybXV0YXRpb25JZCA9IE51bWJlcihzdHJvbmdOYW1lLnN1YnN0cmluZyhpZHggKyAxKSk7XG4gICAgfVxuICB9XG4gICBjYXRjaCAoZSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgb25Cb2R5RG9uZVRpbWVySWQ7XG4gIGZ1bmN0aW9uIG9uQm9keURvbmUoKXtcbiAgICBpZiAoIWJvZHlEb25lKSB7XG4gICAgICBib2R5RG9uZSA9IHRydWU7XG4gICAgICBpZiAoIV9fZ3d0X3N0eWxlc0xvYWRlZFsnZ3d0L2NsZWFuL2NsZWFuLmNzcyddKSB7XG4gICAgICAgIHZhciBsID0gJGRvY18wLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgX19nd3Rfc3R5bGVzTG9hZGVkWydnd3QvY2xlYW4vY2xlYW4uY3NzJ10gPSBsO1xuICAgICAgICBsLnNldEF0dHJpYnV0ZSgncmVsJywgJ3N0eWxlc2hlZXQnKTtcbiAgICAgICAgbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBiYXNlICsgJ2d3dC9jbGVhbi9jbGVhbi5jc3MnKTtcbiAgICAgICAgJGRvY18wLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobCk7XG4gICAgICB9XG4gICAgICBtYXliZVN0YXJ0TW9kdWxlKCk7XG4gICAgICBpZiAoJGRvY18wLnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgJGRvY18wLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBvbkJvZHlEb25lLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICBpZiAob25Cb2R5RG9uZVRpbWVySWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChvbkJvZHlEb25lVGltZXJJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCRkb2NfMC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgJGRvY18wLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpe1xuICAgICAgb25Cb2R5RG9uZSgpO1xuICAgIH1cbiAgICAsIGZhbHNlKTtcbiAgfVxuICB2YXIgb25Cb2R5RG9uZVRpbWVySWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpe1xuICAgIGlmICgvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KCRkb2NfMC5yZWFkeVN0YXRlKSkge1xuICAgICAgb25Cb2R5RG9uZSgpO1xuICAgIH1cbiAgfVxuICAsIDUwKTtcbn1cblxuYXBwKCk7XG4oZnVuY3Rpb24gKCkge3ZhciAkZ3d0X3ZlcnNpb24gPSBcIjIuOC4yXCI7dmFyICR3bmQgPSB3aW5kb3c7dmFyICRkb2MgPSAkd25kLmRvY3VtZW50O3ZhciAkbW9kdWxlTmFtZSwgJG1vZHVsZUJhc2U7dmFyICRzdGF0cyA9ICR3bmQuX19nd3RTdGF0c0V2ZW50ID8gZnVuY3Rpb24oYSkgeyR3bmQuX19nd3RTdGF0c0V2ZW50KGEpfSA6IG51bGw7dmFyICRzdHJvbmdOYW1lID0gJzQ4RURDODM0N0I3OEQ1MDZFMTkxQTUxQ0EwMTYwQjc4Jzt2YXIgJGludGVybl8wID0gezM6MSwgNDoxfSwgJGludGVybl8xID0gezExOjF9O1xudmFyIF8sIHByb3RvdHlwZXNCeVR5cGVJZF8wLCBpbml0Rm5MaXN0XzAsIHBlcm11dGF0aW9uSWQgPSAtMTtcbmZ1bmN0aW9uIGNyZWF0ZV9jb21fZ29vZ2xlX2d3dF91c2VyYWdlbnRfY2xpZW50X1VzZXJBZ2VudCgpe1xuICBzd2l0Y2ggKHBlcm11dGF0aW9uSWQpIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gbmV3IFVzZXJBZ2VudEltcGxJZTEwO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBuZXcgVXNlckFnZW50SW1wbFNhZmFyaTtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gbmV3IFVzZXJBZ2VudEltcGxHZWNrbzFfODtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IFVzZXJBZ2VudEltcGxJZTg7XG4gIH1cbiAgcmV0dXJuIG5ldyBVc2VyQWdlbnRJbXBsSWU5O1xufVxuXG5mdW5jdGlvbiBzZXRHd3RQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpe1xuICB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygd2luZG93WyckZ3d0J10gPT09ICdvYmplY3QnICYmICh3aW5kb3dbJyRnd3QnXVtwcm9wZXJ0eU5hbWVdID0gcHJvcGVydHlWYWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGd3dE9uTG9hZF8wKGVyckZuLCBtb2ROYW1lLCBtb2RCYXNlLCBzb2Z0UGVybXV0YXRpb25JZCl7XG4gIGVuc3VyZU1vZHVsZUluaXQoKTtcbiAgdmFyIGluaXRGbkxpc3QgPSBpbml0Rm5MaXN0XzA7XG4gICRtb2R1bGVOYW1lID0gbW9kTmFtZTtcbiAgJG1vZHVsZUJhc2UgPSBtb2RCYXNlO1xuICBwZXJtdXRhdGlvbklkID0gc29mdFBlcm11dGF0aW9uSWQ7XG4gIGZ1bmN0aW9uIGluaXRpYWxpemVNb2R1bGVzKCl7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0Rm5MaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbml0Rm5MaXN0W2ldKCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVyckZuKSB7XG4gICAgdHJ5IHtcbiAgICAgICRlbnRyeShpbml0aWFsaXplTW9kdWxlcykoKTtcbiAgICB9XG4gICAgIGNhdGNoIChlKSB7XG4gICAgICBlcnJGbihtb2ROYW1lLCBlKTtcbiAgICB9XG4gIH1cbiAgIGVsc2Uge1xuICAgICRlbnRyeShpbml0aWFsaXplTW9kdWxlcykoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbnN1cmVNb2R1bGVJbml0KCl7XG4gIGluaXRGbkxpc3RfMCA9PSBudWxsICYmIChpbml0Rm5MaXN0XzAgPSBbXSk7XG59XG5cbmZ1bmN0aW9uIGFkZEluaXRGdW5jdGlvbnMoKXtcbiAgZW5zdXJlTW9kdWxlSW5pdCgpO1xuICB2YXIgaW5pdEZuTGlzdCA9IGluaXRGbkxpc3RfMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBpbml0Rm5MaXN0LnB1c2goYXJndW1lbnRzW2ldKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0eXBlTWFya2VyRm4oKXtcbn1cblxuZnVuY3Rpb24gdG9TdHJpbmdfMChvYmplY3Qpe1xuICB2YXIgbnVtYmVyO1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpICYmIG9iamVjdC50eXBlTWFya2VyID09PSB0eXBlTWFya2VyRm4pIHtcbiAgICByZXR1cm4gJGdldE5hbWUoaW5zdGFuY2VPZlN0cmluZyhvYmplY3QpP0xqYXZhX2xhbmdfU3RyaW5nXzJfY2xhc3NMaXQ6aW5zdGFuY2VPZkRvdWJsZShvYmplY3QpP0xqYXZhX2xhbmdfRG91YmxlXzJfY2xhc3NMaXQ6aW5zdGFuY2VPZkJvb2xlYW4ob2JqZWN0KT9MamF2YV9sYW5nX0Jvb2xlYW5fMl9jbGFzc0xpdDpoYXNKYXZhT2JqZWN0VmlydHVhbERpc3BhdGNoKG9iamVjdCk/b2JqZWN0Ll9fX2NsYXp6OmlzSmF2YUFycmF5KG9iamVjdCk/b2JqZWN0Ll9fX2NsYXp6Om9iamVjdC5fX19jbGF6eiB8fCBBcnJheS5pc0FycmF5KG9iamVjdCkgJiYgZ2V0Q2xhc3NMaXRlcmFsRm9yQXJyYXkoTGNvbV9nb29nbGVfZ3d0X2NvcmVfY2xpZW50X0phdmFTY3JpcHRPYmplY3RfMl9jbGFzc0xpdCwgMSkgfHwgTGNvbV9nb29nbGVfZ3d0X2NvcmVfY2xpZW50X0phdmFTY3JpcHRPYmplY3RfMl9jbGFzc0xpdCkgKyAnQCcgKyAobnVtYmVyID0gKGluc3RhbmNlT2ZTdHJpbmcob2JqZWN0KT9nZXRIYXNoQ29kZV8wKG9iamVjdCk6aW5zdGFuY2VPZkRvdWJsZShvYmplY3QpP3JvdW5kX2ludCgoY2hlY2tDcml0aWNhbE5vdE51bGwob2JqZWN0KSAsIG9iamVjdCkpOmluc3RhbmNlT2ZCb29sZWFuKG9iamVjdCk/KGNoZWNrQ3JpdGljYWxOb3ROdWxsKG9iamVjdCkgLCBvYmplY3QpPzEyMzE6MTIzNzpoYXNKYXZhT2JqZWN0VmlydHVhbERpc3BhdGNoKG9iamVjdCk/b2JqZWN0Lmhhc2hDb2RlXzAoKTppc0phdmFBcnJheShvYmplY3QpP2dldEhhc2hDb2RlKG9iamVjdCk6ISFvYmplY3QgJiYgISFvYmplY3QuaGFzaENvZGU/b2JqZWN0Lmhhc2hDb2RlKCk6Z2V0SGFzaENvZGUob2JqZWN0KSkgPj4+IDAgLCBudW1iZXIudG9TdHJpbmcoMTYpKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIHBvcnRhYmxlT2JqQ3JlYXRlKG9iail7XG4gIGZ1bmN0aW9uIEYoKXtcbiAgfVxuXG4gIDtcbiAgRi5wcm90b3R5cGUgPSBvYmogfHwge307XG4gIHJldHVybiBuZXcgRjtcbn1cblxuZnVuY3Rpb24gZW1wdHlNZXRob2QoKXtcbn1cblxuZnVuY3Rpb24gZGVmaW5lQ2xhc3ModHlwZUlkLCBzdXBlclR5cGVJZE9yUHJvdG90eXBlLCBjYXN0YWJsZVR5cGVNYXApe1xuICB2YXIgcHJvdG90eXBlc0J5VHlwZUlkID0gcHJvdG90eXBlc0J5VHlwZUlkXzAsIHN1cGVyUHJvdG90eXBlO1xuICB2YXIgcHJvdG90eXBlXzAgPSBwcm90b3R5cGVzQnlUeXBlSWRbdHlwZUlkXTtcbiAgdmFyIGNsYXp6ID0gcHJvdG90eXBlXzAgaW5zdGFuY2VvZiBBcnJheT9wcm90b3R5cGVfMFswXTpudWxsO1xuICBpZiAocHJvdG90eXBlXzAgJiYgIWNsYXp6KSB7XG4gICAgXyA9IHByb3RvdHlwZV8wO1xuICB9XG4gICBlbHNlIHtcbiAgICBfID0gKHN1cGVyUHJvdG90eXBlID0gc3VwZXJUeXBlSWRPclByb3RvdHlwZSAmJiBzdXBlclR5cGVJZE9yUHJvdG90eXBlLnByb3RvdHlwZSAsICFzdXBlclByb3RvdHlwZSAmJiAoc3VwZXJQcm90b3R5cGUgPSBwcm90b3R5cGVzQnlUeXBlSWRfMFtzdXBlclR5cGVJZE9yUHJvdG90eXBlXSkgLCBwb3J0YWJsZU9iakNyZWF0ZShzdXBlclByb3RvdHlwZSkpO1xuICAgIF8uY2FzdGFibGVUeXBlTWFwID0gY2FzdGFibGVUeXBlTWFwO1xuICAgICFzdXBlclR5cGVJZE9yUHJvdG90eXBlICYmIChfLnR5cGVNYXJrZXIgPSB0eXBlTWFya2VyRm4pO1xuICAgIHByb3RvdHlwZXNCeVR5cGVJZFt0eXBlSWRdID0gXztcbiAgfVxuICBmb3IgKHZhciBpID0gMzsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkge1xuICAgIGFyZ3VtZW50c1tpXS5wcm90b3R5cGUgPSBfO1xuICB9XG4gIGNsYXp6ICYmIChfLl9fX2NsYXp6ID0gY2xhenopO1xufVxuXG5mdW5jdGlvbiBib290c3RyYXAoKXtcbiAgcHJvdG90eXBlc0J5VHlwZUlkXzAgPSB7fTtcbiAgIUFycmF5LmlzQXJyYXkgJiYgKEFycmF5LmlzQXJyYXkgPSBmdW5jdGlvbih2QXJnKXtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZBcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xuICB9XG4gICk7XG4gIGZ1bmN0aW9uIG5vd18wKCl7XG4gICAgcmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpO1xuICB9XG5cbiAgIURhdGUubm93ICYmIChEYXRlLm5vdyA9IG5vd18wKTtcbn1cblxuYm9vdHN0cmFwKCk7XG5mdW5jdGlvbiBPYmplY3RfMCgpe1xufVxuXG5kZWZpbmVDbGFzcygxLCBudWxsLCB7fSwgT2JqZWN0XzApO1xuXy5nZXRDbGFzc18wID0gZnVuY3Rpb24gZ2V0Q2xhc3NfMCgpe1xuICByZXR1cm4gdGhpcy5fX19jbGF6ejtcbn1cbjtcbl8uaGFzaENvZGVfMCA9IGZ1bmN0aW9uIGhhc2hDb2RlXzAoKXtcbiAgcmV0dXJuIGdldEhhc2hDb2RlKHRoaXMpO1xufVxuO1xuXy5oYXNoQ29kZSA9IGZ1bmN0aW9uKCl7XG4gIHJldHVybiB0aGlzLmhhc2hDb2RlXzAoKTtcbn1cbjtcbmZ1bmN0aW9uICRlbnN1cmVOYW1lc0FyZUluaXRpYWxpemVkKHRoaXMkc3RhdGljKXtcbiAgaWYgKHRoaXMkc3RhdGljLnR5cGVOYW1lICE9IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaW5pdGlhbGl6ZU5hbWVzKHRoaXMkc3RhdGljKTtcbn1cblxuZnVuY3Rpb24gJGdldE5hbWUodGhpcyRzdGF0aWMpe1xuICAkZW5zdXJlTmFtZXNBcmVJbml0aWFsaXplZCh0aGlzJHN0YXRpYyk7XG4gIHJldHVybiB0aGlzJHN0YXRpYy50eXBlTmFtZTtcbn1cblxuZnVuY3Rpb24gQ2xhc3MoKXtcbiAgKytuZXh0U2VxdWVudGlhbElkO1xuICB0aGlzLnR5cGVOYW1lID0gbnVsbDtcbiAgdGhpcy5zaW1wbGVOYW1lID0gbnVsbDtcbiAgdGhpcy5wYWNrYWdlTmFtZSA9IG51bGw7XG4gIHRoaXMuY29tcG91bmROYW1lID0gbnVsbDtcbiAgdGhpcy5jYW5vbmljYWxOYW1lID0gbnVsbDtcbiAgdGhpcy50eXBlSWQgPSBudWxsO1xuICB0aGlzLmFycmF5TGl0ZXJhbHMgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGb3JDbGFzcyhwYWNrYWdlTmFtZSwgY29tcG91bmRDbGFzc05hbWUsIHR5cGVJZCl7XG4gIHZhciBjbGF6eiwgY2xhenpfMDtcbiAgY2xhenogPSAoY2xhenpfMCA9IG5ldyBDbGFzcyAsIGNsYXp6XzAucGFja2FnZU5hbWUgPSBwYWNrYWdlTmFtZSAsIGNsYXp6XzAuY29tcG91bmROYW1lID0gY29tcG91bmRDbGFzc05hbWUgLCBjbGF6el8wKTtcbiAgbWF5YmVTZXRDbGFzc0xpdGVyYWwodHlwZUlkLCBjbGF6eik7XG4gIHJldHVybiBjbGF6ejtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xhc3NMaXRlcmFsRm9yQXJyYXlfMChsZWFmQ2xhc3MsIGRpbWVuc2lvbnMpe1xuICB2YXIgYXJyYXlMaXRlcmFscyA9IGxlYWZDbGFzcy5hcnJheUxpdGVyYWxzID0gbGVhZkNsYXNzLmFycmF5TGl0ZXJhbHMgfHwgW107XG4gIHJldHVybiBhcnJheUxpdGVyYWxzW2RpbWVuc2lvbnNdIHx8IChhcnJheUxpdGVyYWxzW2RpbWVuc2lvbnNdID0gbGVhZkNsYXNzLmNyZWF0ZUNsYXNzTGl0ZXJhbEZvckFycmF5KGRpbWVuc2lvbnMpKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlRm9yQ2xhc3MoY2xhenope1xuICBpZiAoY2xhenouaXNQcmltaXRpdmUoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciB0eXBlSWQgPSBjbGF6ei50eXBlSWQ7XG4gIHJldHVybiBwcm90b3R5cGVzQnlUeXBlSWRfMFt0eXBlSWRdO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXplTmFtZXMoY2xhenope1xuICBpZiAoY2xhenouaXNBcnJheV8wKCkpIHtcbiAgICB2YXIgY29tcG9uZW50VHlwZSA9IGNsYXp6LmNvbXBvbmVudFR5cGU7XG4gICAgY29tcG9uZW50VHlwZS5pc1ByaW1pdGl2ZSgpPyhjbGF6ei50eXBlTmFtZSA9ICdbJyArIGNvbXBvbmVudFR5cGUudHlwZUlkKTohY29tcG9uZW50VHlwZS5pc0FycmF5XzAoKT8oY2xhenoudHlwZU5hbWUgPSAnW0wnICsgY29tcG9uZW50VHlwZS5nZXROYW1lKCkgKyAnOycpOihjbGF6ei50eXBlTmFtZSA9ICdbJyArIGNvbXBvbmVudFR5cGUuZ2V0TmFtZSgpKTtcbiAgICBjbGF6ei5jYW5vbmljYWxOYW1lID0gY29tcG9uZW50VHlwZS5nZXRDYW5vbmljYWxOYW1lKCkgKyAnW10nO1xuICAgIGNsYXp6LnNpbXBsZU5hbWUgPSBjb21wb25lbnRUeXBlLmdldFNpbXBsZU5hbWUoKSArICdbXSc7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBwYWNrYWdlTmFtZSA9IGNsYXp6LnBhY2thZ2VOYW1lO1xuICB2YXIgY29tcG91bmROYW1lID0gY2xhenouY29tcG91bmROYW1lO1xuICBjb21wb3VuZE5hbWUgPSBjb21wb3VuZE5hbWUuc3BsaXQoJy8nKTtcbiAgY2xhenoudHlwZU5hbWUgPSBqb2luXzAoJy4nLCBbcGFja2FnZU5hbWUsIGpvaW5fMCgnJCcsIGNvbXBvdW5kTmFtZSldKTtcbiAgY2xhenouY2Fub25pY2FsTmFtZSA9IGpvaW5fMCgnLicsIFtwYWNrYWdlTmFtZSwgam9pbl8wKCcuJywgY29tcG91bmROYW1lKV0pO1xuICBjbGF6ei5zaW1wbGVOYW1lID0gY29tcG91bmROYW1lW2NvbXBvdW5kTmFtZS5sZW5ndGggLSAxXTtcbn1cblxuZnVuY3Rpb24gam9pbl8wKHNlcGFyYXRvciwgc3RyaW5ncyl7XG4gIHZhciBpID0gMDtcbiAgd2hpbGUgKCFzdHJpbmdzW2ldIHx8IHN0cmluZ3NbaV0gPT0gJycpIHtcbiAgICBpKys7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHN0cmluZ3NbaSsrXTtcbiAgZm9yICg7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFzdHJpbmdzW2ldIHx8IHN0cmluZ3NbaV0gPT0gJycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXN1bHQgKz0gc2VwYXJhdG9yICsgc3RyaW5nc1tpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtYXliZVNldENsYXNzTGl0ZXJhbCh0eXBlSWQsIGNsYXp6KXtcbiAgdmFyIHByb3RvO1xuICBpZiAoIXR5cGVJZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjbGF6ei50eXBlSWQgPSB0eXBlSWQ7XG4gIHZhciBwcm90b3R5cGVfMCA9IGdldFByb3RvdHlwZUZvckNsYXNzKGNsYXp6KTtcbiAgaWYgKCFwcm90b3R5cGVfMCkge1xuICAgIHByb3RvdHlwZXNCeVR5cGVJZF8wW3R5cGVJZF0gPSBbY2xhenpdO1xuICAgIHJldHVybjtcbiAgfVxuICBwcm90b3R5cGVfMC5fX19jbGF6eiA9IGNsYXp6O1xufVxuXG5kZWZpbmVDbGFzcygxNCwgMSwge30sIENsYXNzKTtcbl8uY3JlYXRlQ2xhc3NMaXRlcmFsRm9yQXJyYXkgPSBmdW5jdGlvbiBjcmVhdGVDbGFzc0xpdGVyYWxGb3JBcnJheShkaW1lbnNpb25zKXtcbiAgdmFyIGNsYXp6O1xuICBjbGF6eiA9IG5ldyBDbGFzcztcbiAgY2xhenoubW9kaWZpZXJzID0gNDtcbiAgZGltZW5zaW9ucyA+IDE/KGNsYXp6LmNvbXBvbmVudFR5cGUgPSBnZXRDbGFzc0xpdGVyYWxGb3JBcnJheV8wKHRoaXMsIGRpbWVuc2lvbnMgLSAxKSk6KGNsYXp6LmNvbXBvbmVudFR5cGUgPSB0aGlzKTtcbiAgcmV0dXJuIGNsYXp6O1xufVxuO1xuXy5nZXRDYW5vbmljYWxOYW1lID0gZnVuY3Rpb24gZ2V0Q2Fub25pY2FsTmFtZSgpe1xuICAkZW5zdXJlTmFtZXNBcmVJbml0aWFsaXplZCh0aGlzKTtcbiAgcmV0dXJuIHRoaXMuY2Fub25pY2FsTmFtZTtcbn1cbjtcbl8uZ2V0TmFtZSA9IGZ1bmN0aW9uIGdldE5hbWUoKXtcbiAgcmV0dXJuICRnZXROYW1lKHRoaXMpO1xufVxuO1xuXy5nZXRTaW1wbGVOYW1lID0gZnVuY3Rpb24gZ2V0U2ltcGxlTmFtZSgpe1xuICAkZW5zdXJlTmFtZXNBcmVJbml0aWFsaXplZCh0aGlzKTtcbiAgcmV0dXJuIHRoaXMuc2ltcGxlTmFtZTtcbn1cbjtcbl8uaXNBcnJheV8wID0gZnVuY3Rpb24gaXNBcnJheSgpe1xuICByZXR1cm4gKHRoaXMubW9kaWZpZXJzICYgNCkgIT0gMDtcbn1cbjtcbl8uaXNQcmltaXRpdmUgPSBmdW5jdGlvbiBpc1ByaW1pdGl2ZSgpe1xuICByZXR1cm4gKHRoaXMubW9kaWZpZXJzICYgMSkgIT0gMDtcbn1cbjtcbl8ubW9kaWZpZXJzID0gMDtcbnZhciBuZXh0U2VxdWVudGlhbElkID0gMTtcbnZhciBMamF2YV9sYW5nX09iamVjdF8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2phdmEubGFuZycsICdPYmplY3QnLCAxKTtcbnZhciBMamF2YV9sYW5nX0NsYXNzXzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnamF2YS5sYW5nJywgJ0NsYXNzJywgMTQpO1xuZnVuY3Rpb24gJGZpbGxJblN0YWNrVHJhY2UodGhpcyRzdGF0aWMpe1xuICB0aGlzJHN0YXRpYy53cml0ZXRhYmxlU3RhY2tUcmFjZSAmJiB0aGlzJHN0YXRpYy5iYWNraW5nSnNPYmplY3QgIT09ICdfX25vaW5pdF9fJyAmJiB0aGlzJHN0YXRpYy5pbml0aWFsaXplQmFja2luZ0Vycm9yKCk7XG4gIHJldHVybiB0aGlzJHN0YXRpYztcbn1cblxuZnVuY3Rpb24gJHNldEJhY2tpbmdKc09iamVjdCh0aGlzJHN0YXRpYywgYmFja2luZ0pzT2JqZWN0KXtcbiAgdGhpcyRzdGF0aWMuYmFja2luZ0pzT2JqZWN0ID0gYmFja2luZ0pzT2JqZWN0O1xuICBiYWNraW5nSnNPYmplY3QgIT0gbnVsbCAmJiBzZXRQcm9wZXJ0eVNhZmUoYmFja2luZ0pzT2JqZWN0LCAnX19qYXZhJGV4Y2VwdGlvbicsIHRoaXMkc3RhdGljKTtcbn1cblxuZnVuY3Rpb24gZml4SUUoZSl7XG4gIGlmICghKCdzdGFjaycgaW4gZSkpIHtcbiAgICB0cnkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgIGNhdGNoIChpZ25vcmVkKSB7XG4gICAgfVxuICB9XG4gIHJldHVybiBlO1xufVxuXG5kZWZpbmVDbGFzcyg0LCAxLCAkaW50ZXJuXzApO1xuXy5jcmVhdGVFcnJvciA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1zZyl7XG4gIHJldHVybiBuZXcgRXJyb3IobXNnKTtcbn1cbjtcbl8uaW5pdGlhbGl6ZUJhY2tpbmdFcnJvciA9IGZ1bmN0aW9uIGluaXRpYWxpemVCYWNraW5nRXJyb3IoKXtcbiAgdmFyIGNsYXNzTmFtZSwgZXJyb3JNZXNzYWdlLCBtZXNzYWdlO1xuICBtZXNzYWdlID0gdGhpcy5kZXRhaWxNZXNzYWdlID09IG51bGw/bnVsbDp0aGlzLmRldGFpbE1lc3NhZ2UucmVwbGFjZShuZXcgUmVnRXhwKCdcXG4nLCAnZycpLCAnICcpO1xuICBlcnJvck1lc3NhZ2UgPSAoY2xhc3NOYW1lID0gJGdldE5hbWUodGhpcy5fX19jbGF6eikgLCBtZXNzYWdlID09IG51bGw/Y2xhc3NOYW1lOmNsYXNzTmFtZSArICc6ICcgKyBtZXNzYWdlKTtcbiAgJHNldEJhY2tpbmdKc09iamVjdCh0aGlzLCBmaXhJRSh0aGlzLmNyZWF0ZUVycm9yKGVycm9yTWVzc2FnZSkpKTtcbiAgY2FwdHVyZVN0YWNrVHJhY2UodGhpcyk7XG59XG47XG5fLmJhY2tpbmdKc09iamVjdCA9ICdfX25vaW5pdF9fJztcbl8ud3JpdGV0YWJsZVN0YWNrVHJhY2UgPSB0cnVlO1xudmFyIExqYXZhX2xhbmdfVGhyb3dhYmxlXzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnamF2YS5sYW5nJywgJ1Rocm93YWJsZScsIDQpO1xuZGVmaW5lQ2xhc3MoMTMsIDQsICRpbnRlcm5fMCk7XG52YXIgTGphdmFfbGFuZ19FeGNlcHRpb25fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnRXhjZXB0aW9uJywgMTMpO1xuZnVuY3Rpb24gUnVudGltZUV4Y2VwdGlvbihtZXNzYWdlKXtcbiAgdGhpcy5kZXRhaWxNZXNzYWdlID0gbWVzc2FnZTtcbiAgJGZpbGxJblN0YWNrVHJhY2UodGhpcyk7XG4gIHRoaXMuaW5pdGlhbGl6ZUJhY2tpbmdFcnJvcigpO1xufVxuXG5kZWZpbmVDbGFzcyg3LCAxMywgJGludGVybl8wKTtcbnZhciBMamF2YV9sYW5nX1J1bnRpbWVFeGNlcHRpb25fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnUnVudGltZUV4Y2VwdGlvbicsIDcpO1xuZGVmaW5lQ2xhc3MoMTUsIDcsICRpbnRlcm5fMCk7XG52YXIgTGphdmFfbGFuZ19Kc0V4Y2VwdGlvbl8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2phdmEubGFuZycsICdKc0V4Y2VwdGlvbicsIDE1KTtcbmRlZmluZUNsYXNzKDE5LCAxNSwgJGludGVybl8wKTtcbnZhciBMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9KYXZhU2NyaXB0RXhjZXB0aW9uQmFzZV8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2NvbS5nb29nbGUuZ3d0LmNvcmUuY2xpZW50LmltcGwnLCAnSmF2YVNjcmlwdEV4Y2VwdGlvbkJhc2UnLCAxOSk7XG5mdW5jdGlvbiAkY2xpbml0X0phdmFTY3JpcHRFeGNlcHRpb24oKXtcbiAgJGNsaW5pdF9KYXZhU2NyaXB0RXhjZXB0aW9uID0gZW1wdHlNZXRob2Q7XG4gIE5PVF9TRVQgPSBuZXcgT2JqZWN0XzA7XG59XG5cbmZ1bmN0aW9uIEphdmFTY3JpcHRFeGNlcHRpb24oZSl7XG4gICRjbGluaXRfSmF2YVNjcmlwdEV4Y2VwdGlvbigpO1xuICAkZmlsbEluU3RhY2tUcmFjZSh0aGlzKTtcbiAgdGhpcy5iYWNraW5nSnNPYmplY3QgPSBlO1xuICBlICE9IG51bGwgJiYgc2V0UHJvcGVydHlTYWZlKGUsICdfX2phdmEkZXhjZXB0aW9uJywgdGhpcyk7XG4gIHRoaXMuZGV0YWlsTWVzc2FnZSA9IGUgPT0gbnVsbD8nbnVsbCc6dG9TdHJpbmdfMChlKTtcbiAgdGhpcy5lID0gZTtcbn1cblxuZGVmaW5lQ2xhc3MoOSwgMTksIHs5OjEsIDM6MSwgNDoxfSwgSmF2YVNjcmlwdEV4Y2VwdGlvbik7XG5fLmdldFRocm93biA9IGZ1bmN0aW9uIGdldFRocm93bigpe1xuICByZXR1cm4gbWFza1VuZGVmaW5lZCh0aGlzLmUpID09PSBtYXNrVW5kZWZpbmVkKE5PVF9TRVQpP251bGw6dGhpcy5lO1xufVxuO1xudmFyIE5PVF9TRVQ7XG52YXIgTGNvbV9nb29nbGVfZ3d0X2NvcmVfY2xpZW50X0phdmFTY3JpcHRFeGNlcHRpb25fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudCcsICdKYXZhU2NyaXB0RXhjZXB0aW9uJywgOSk7XG52YXIgTGNvbV9nb29nbGVfZ3d0X2NvcmVfY2xpZW50X0phdmFTY3JpcHRPYmplY3RfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudCcsICdKYXZhU2NyaXB0T2JqZWN0JCcsIDApO1xuZnVuY3Rpb24gbm93XzEoKXtcbiAgaWYgKERhdGUubm93KSB7XG4gICAgcmV0dXJuIERhdGUubm93KCk7XG4gIH1cbiAgcmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpO1xufVxuXG5kZWZpbmVDbGFzcygzNCwgMSwge30pO1xudmFyIExjb21fZ29vZ2xlX2d3dF9jb3JlX2NsaWVudF9TY2hlZHVsZXJfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudCcsICdTY2hlZHVsZXInLCAzNCk7XG5mdW5jdGlvbiAkY2xpbml0X0ltcGwoKXtcbiAgJGNsaW5pdF9JbXBsID0gZW1wdHlNZXRob2Q7XG4gICEhKCRjbGluaXRfU3RhY2tUcmFjZUNyZWF0b3IoKSAsIGNvbGxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIGFwcGx5XzAoanNGdW5jdGlvbiwgdGhpc09iaiwgYXJncyl7XG4gIHJldHVybiBqc0Z1bmN0aW9uLmFwcGx5KHRoaXNPYmosIGFyZ3MpO1xuICB2YXIgX18wO1xufVxuXG5mdW5jdGlvbiBlbnRlcigpe1xuICB2YXIgbm93XzA7XG4gIGlmIChlbnRyeURlcHRoICE9IDApIHtcbiAgICBub3dfMCA9IG5vd18xKCk7XG4gICAgaWYgKG5vd18wIC0gd2F0Y2hkb2dFbnRyeURlcHRoTGFzdFNjaGVkdWxlZCA+IDIwMDApIHtcbiAgICAgIHdhdGNoZG9nRW50cnlEZXB0aExhc3RTY2hlZHVsZWQgPSBub3dfMDtcbiAgICAgIHdhdGNoZG9nRW50cnlEZXB0aFRpbWVySWQgPSAkd25kLnNldFRpbWVvdXQod2F0Y2hkb2dFbnRyeURlcHRoUnVuLCAxMCk7XG4gICAgfVxuICB9XG4gIGlmIChlbnRyeURlcHRoKysgPT0gMCkge1xuICAgICRmbHVzaEVudHJ5Q29tbWFuZHMoKCRjbGluaXRfU2NoZWR1bGVySW1wbCgpICwgSU5TVEFOQ0UpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGVudHJ5KGpzRnVuY3Rpb24pe1xuICAkY2xpbml0X0ltcGwoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIGVudHJ5MChqc0Z1bmN0aW9uLCB0aGlzLCBhcmd1bWVudHMpO1xuICAgIHZhciBfXzA7XG4gIH1cbiAgO1xufVxuXG5mdW5jdGlvbiBlbnRyeTAoanNGdW5jdGlvbiwgdGhpc09iaiwgYXJncyl7XG4gIHZhciBpbml0aWFsRW50cnk7XG4gIGluaXRpYWxFbnRyeSA9IGVudGVyKCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFwcGx5XzAoanNGdW5jdGlvbiwgdGhpc09iaiwgYXJncyk7XG4gIH1cbiAgIGZpbmFsbHkge1xuICAgIGV4aXQoaW5pdGlhbEVudHJ5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBleGl0KGluaXRpYWxFbnRyeSl7XG4gIGluaXRpYWxFbnRyeSAmJiAkZmx1c2hGaW5hbGx5Q29tbWFuZHMoKCRjbGluaXRfU2NoZWR1bGVySW1wbCgpICwgSU5TVEFOQ0UpKTtcbiAgLS1lbnRyeURlcHRoO1xuICBpZiAoaW5pdGlhbEVudHJ5KSB7XG4gICAgaWYgKHdhdGNoZG9nRW50cnlEZXB0aFRpbWVySWQgIT0gLTEpIHtcbiAgICAgIHdhdGNoZG9nRW50cnlEZXB0aENhbmNlbCh3YXRjaGRvZ0VudHJ5RGVwdGhUaW1lcklkKTtcbiAgICAgIHdhdGNoZG9nRW50cnlEZXB0aFRpbWVySWQgPSAtMTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwb3J0VG9Ccm93c2VyKGUpe1xuICAkY2xpbml0X0ltcGwoKTtcbiAgJHduZC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgdGhyb3cgZTtcbiAgfVxuICAsIDApO1xufVxuXG5mdW5jdGlvbiB3YXRjaGRvZ0VudHJ5RGVwdGhDYW5jZWwodGltZXJJZCl7XG4gICR3bmQuY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xufVxuXG5mdW5jdGlvbiB3YXRjaGRvZ0VudHJ5RGVwdGhSdW4oKXtcbiAgZW50cnlEZXB0aCAhPSAwICYmIChlbnRyeURlcHRoID0gMCk7XG4gIHdhdGNoZG9nRW50cnlEZXB0aFRpbWVySWQgPSAtMTtcbn1cblxudmFyIGVudHJ5RGVwdGggPSAwLCB3YXRjaGRvZ0VudHJ5RGVwdGhMYXN0U2NoZWR1bGVkID0gMCwgd2F0Y2hkb2dFbnRyeURlcHRoVGltZXJJZCA9IC0xO1xuZnVuY3Rpb24gJGNsaW5pdF9TY2hlZHVsZXJJbXBsKCl7XG4gICRjbGluaXRfU2NoZWR1bGVySW1wbCA9IGVtcHR5TWV0aG9kO1xuICBJTlNUQU5DRSA9IG5ldyBTY2hlZHVsZXJJbXBsO1xufVxuXG5mdW5jdGlvbiAkZmx1c2hFbnRyeUNvbW1hbmRzKHRoaXMkc3RhdGljKXtcbiAgdmFyIG9sZFF1ZXVlLCByZXNjaGVkdWxlZDtcbiAgaWYgKHRoaXMkc3RhdGljLmVudHJ5Q29tbWFuZHMpIHtcbiAgICByZXNjaGVkdWxlZCA9IG51bGw7XG4gICAgZG8ge1xuICAgICAgb2xkUXVldWUgPSB0aGlzJHN0YXRpYy5lbnRyeUNvbW1hbmRzO1xuICAgICAgdGhpcyRzdGF0aWMuZW50cnlDb21tYW5kcyA9IG51bGw7XG4gICAgICByZXNjaGVkdWxlZCA9IHJ1blNjaGVkdWxlZFRhc2tzKG9sZFF1ZXVlLCByZXNjaGVkdWxlZCk7XG4gICAgfVxuICAgICB3aGlsZSAodGhpcyRzdGF0aWMuZW50cnlDb21tYW5kcyk7XG4gICAgdGhpcyRzdGF0aWMuZW50cnlDb21tYW5kcyA9IHJlc2NoZWR1bGVkO1xuICB9XG59XG5cbmZ1bmN0aW9uICRmbHVzaEZpbmFsbHlDb21tYW5kcyh0aGlzJHN0YXRpYyl7XG4gIHZhciBvbGRRdWV1ZSwgcmVzY2hlZHVsZWQ7XG4gIGlmICh0aGlzJHN0YXRpYy5maW5hbGx5Q29tbWFuZHMpIHtcbiAgICByZXNjaGVkdWxlZCA9IG51bGw7XG4gICAgZG8ge1xuICAgICAgb2xkUXVldWUgPSB0aGlzJHN0YXRpYy5maW5hbGx5Q29tbWFuZHM7XG4gICAgICB0aGlzJHN0YXRpYy5maW5hbGx5Q29tbWFuZHMgPSBudWxsO1xuICAgICAgcmVzY2hlZHVsZWQgPSBydW5TY2hlZHVsZWRUYXNrcyhvbGRRdWV1ZSwgcmVzY2hlZHVsZWQpO1xuICAgIH1cbiAgICAgd2hpbGUgKHRoaXMkc3RhdGljLmZpbmFsbHlDb21tYW5kcyk7XG4gICAgdGhpcyRzdGF0aWMuZmluYWxseUNvbW1hbmRzID0gcmVzY2hlZHVsZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gU2NoZWR1bGVySW1wbCgpe1xufVxuXG5mdW5jdGlvbiBwdXNoXzAocXVldWUsIHRhc2spe1xuICAhcXVldWUgJiYgKHF1ZXVlID0gW10pO1xuICBxdWV1ZVtxdWV1ZS5sZW5ndGhdID0gdGFzaztcbiAgcmV0dXJuIHF1ZXVlO1xufVxuXG5mdW5jdGlvbiBydW5TY2hlZHVsZWRUYXNrcyh0YXNrcywgcmVzY2hlZHVsZWQpe1xuICB2YXIgZSwgaSwgaiwgdDtcbiAgZm9yIChpID0gMCAsIGogPSB0YXNrcy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICB0ID0gdGFza3NbaV07XG4gICAgdHJ5IHtcbiAgICAgIHRbMV0/dFswXS4kX251bGxNZXRob2QoKSAmJiAocmVzY2hlZHVsZWQgPSBwdXNoXzAocmVzY2hlZHVsZWQsIHQpKTp0WzBdLiRfbnVsbE1ldGhvZCgpO1xuICAgIH1cbiAgICAgY2F0Y2ggKCRlMCkge1xuICAgICAgJGUwID0gdG9KYXZhKCRlMCk7XG4gICAgICBpZiAoaW5zdGFuY2VPZigkZTAsIDQpKSB7XG4gICAgICAgIGUgPSAkZTA7XG4gICAgICAgICRjbGluaXRfSW1wbCgpO1xuICAgICAgICByZXBvcnRUb0Jyb3dzZXIoaW5zdGFuY2VPZihlLCA5KT9jYXN0VG8oZSwgOSkuZ2V0VGhyb3duKCk6ZSk7XG4gICAgICB9XG4gICAgICAgZWxzZSBcbiAgICAgICAgdGhyb3cgdG9KcygkZTApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzY2hlZHVsZWQ7XG59XG5cbmRlZmluZUNsYXNzKDI3LCAzNCwge30sIFNjaGVkdWxlckltcGwpO1xudmFyIElOU1RBTkNFO1xudmFyIExjb21fZ29vZ2xlX2d3dF9jb3JlX2NsaWVudF9pbXBsX1NjaGVkdWxlckltcGxfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudC5pbXBsJywgJ1NjaGVkdWxlckltcGwnLCAyNyk7XG5mdW5jdGlvbiAkY2xpbml0X1N0YWNrVHJhY2VDcmVhdG9yKCl7XG4gICRjbGluaXRfU3RhY2tUcmFjZUNyZWF0b3IgPSBlbXB0eU1ldGhvZDtcbiAgdmFyIGMsIGVuZm9yY2VMZWdhY3k7XG4gIGVuZm9yY2VMZWdhY3kgPSAhc3VwcG9ydHNFcnJvclN0YWNrKCk7XG4gIGMgPSBuZXcgU3RhY2tUcmFjZUNyZWF0b3IkQ29sbGVjdG9yTW9kZXJuTm9Tb3VyY2VNYXA7XG4gIGNvbGxlY3RvciA9IGVuZm9yY2VMZWdhY3k/bmV3IFN0YWNrVHJhY2VDcmVhdG9yJENvbGxlY3RvckxlZ2FjeTpjO1xufVxuXG5mdW5jdGlvbiBjYXB0dXJlU3RhY2tUcmFjZShlcnJvcil7XG4gICRjbGluaXRfU3RhY2tUcmFjZUNyZWF0b3IoKTtcbiAgY29sbGVjdG9yLmNvbGxlY3QoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RnVuY3Rpb25OYW1lKGZuTmFtZSl7XG4gIHZhciBmblJFID0gL2Z1bmN0aW9uKD86XFxzKyhbXFx3JF0rKSk/XFxzKlxcKC87XG4gIHZhciBtYXRjaF8wID0gZm5SRS5leGVjKGZuTmFtZSk7XG4gIHJldHVybiBtYXRjaF8wICYmIG1hdGNoXzBbMV0gfHwgJ2Fub255bW91cyc7XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRzRXJyb3JTdGFjaygpe1xuICBpZiAoRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID4gMCkge1xuICAgICR3bmQuRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gNjQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuICdzdGFjaycgaW4gbmV3IEVycm9yO1xufVxuXG52YXIgY29sbGVjdG9yO1xuZGVmaW5lQ2xhc3MoNDcsIDEsIHt9KTtcbnZhciBMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9TdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudC5pbXBsJywgJ1N0YWNrVHJhY2VDcmVhdG9yL0NvbGxlY3RvcicsIDQ3KTtcbmZ1bmN0aW9uIFN0YWNrVHJhY2VDcmVhdG9yJENvbGxlY3RvckxlZ2FjeSgpe1xufVxuXG5kZWZpbmVDbGFzcygyMCwgNDcsIHt9LCBTdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JMZWdhY3kpO1xuXy5jb2xsZWN0ID0gZnVuY3Rpb24gY29sbGVjdChlcnJvcil7XG4gIHZhciBzZWVuID0ge30sIG5hbWVfMTtcbiAgdmFyIGZuU3RhY2sgPSBbXTtcbiAgZXJyb3JbJ2ZuU3RhY2snXSA9IGZuU3RhY2s7XG4gIHZhciBjYWxsZWUgPSBhcmd1bWVudHMuY2FsbGVlLmNhbGxlcjtcbiAgd2hpbGUgKGNhbGxlZSkge1xuICAgIHZhciBuYW1lXzAgPSAoJGNsaW5pdF9TdGFja1RyYWNlQ3JlYXRvcigpICwgY2FsbGVlLm5hbWUgfHwgKGNhbGxlZS5uYW1lID0gZXh0cmFjdEZ1bmN0aW9uTmFtZShjYWxsZWUudG9TdHJpbmcoKSkpKTtcbiAgICBmblN0YWNrLnB1c2gobmFtZV8wKTtcbiAgICB2YXIga2V5TmFtZSA9ICc6JyArIG5hbWVfMDtcbiAgICB2YXIgd2l0aFRoaXNOYW1lID0gc2VlbltrZXlOYW1lXTtcbiAgICBpZiAod2l0aFRoaXNOYW1lKSB7XG4gICAgICB2YXIgaSwgajtcbiAgICAgIGZvciAoaSA9IDAgLCBqID0gd2l0aFRoaXNOYW1lLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICBpZiAod2l0aFRoaXNOYW1lW2ldID09PSBjYWxsZWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgKHdpdGhUaGlzTmFtZSB8fCAoc2VlbltrZXlOYW1lXSA9IFtdKSkucHVzaChjYWxsZWUpO1xuICAgIGNhbGxlZSA9IGNhbGxlZS5jYWxsZXI7XG4gIH1cbn1cbjtcbnZhciBMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9TdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JMZWdhY3lfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudC5pbXBsJywgJ1N0YWNrVHJhY2VDcmVhdG9yL0NvbGxlY3RvckxlZ2FjeScsIDIwKTtcbmRlZmluZUNsYXNzKDQ4LCA0Nywge30pO1xuXy5jb2xsZWN0ID0gZnVuY3Rpb24gY29sbGVjdF8wKGVycm9yKXtcbn1cbjtcbnZhciBMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9TdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JNb2Rlcm5fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudC5pbXBsJywgJ1N0YWNrVHJhY2VDcmVhdG9yL0NvbGxlY3Rvck1vZGVybicsIDQ4KTtcbmZ1bmN0aW9uIFN0YWNrVHJhY2VDcmVhdG9yJENvbGxlY3Rvck1vZGVybk5vU291cmNlTWFwKCl7XG59XG5cbmRlZmluZUNsYXNzKDIxLCA0OCwge30sIFN0YWNrVHJhY2VDcmVhdG9yJENvbGxlY3Rvck1vZGVybk5vU291cmNlTWFwKTtcbnZhciBMY29tX2dvb2dsZV9nd3RfY29yZV9jbGllbnRfaW1wbF9TdGFja1RyYWNlQ3JlYXRvciRDb2xsZWN0b3JNb2Rlcm5Ob1NvdXJjZU1hcF8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2NvbS5nb29nbGUuZ3d0LmNvcmUuY2xpZW50LmltcGwnLCAnU3RhY2tUcmFjZUNyZWF0b3IvQ29sbGVjdG9yTW9kZXJuTm9Tb3VyY2VNYXAnLCAyMSk7XG5mdW5jdGlvbiBnZXRDbGFzc0xpdGVyYWxGb3JBcnJheShjbGF6eiwgZGltZW5zaW9ucyl7XG4gIHJldHVybiBnZXRDbGFzc0xpdGVyYWxGb3JBcnJheV8wKGNsYXp6LCBkaW1lbnNpb25zKTtcbn1cblxuZnVuY3Rpb24gaXNKYXZhQXJyYXkoc3JjXzApe1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzcmNfMCkgJiYgc3JjXzAudHlwZU1hcmtlciA9PT0gdHlwZU1hcmtlckZuO1xufVxuXG5mdW5jdGlvbiBzdGFtcEphdmFUeXBlSW5mbyhhcnJheUNsYXNzLCBjYXN0YWJsZVR5cGVNYXAsIGVsZW1lbnRUeXBlSWQsIGVsZW1lbnRUeXBlQ2F0ZWdvcnksIGFycmF5KXtcbiAgYXJyYXkuX19fY2xhenogPSBhcnJheUNsYXNzO1xuICBhcnJheS5jYXN0YWJsZVR5cGVNYXAgPSBjYXN0YWJsZVR5cGVNYXA7XG4gIGFycmF5LnR5cGVNYXJrZXIgPSB0eXBlTWFya2VyRm47XG4gIGFycmF5Ll9fZWxlbWVudFR5cGVJZCQgPSBlbGVtZW50VHlwZUlkO1xuICBhcnJheS5fX2VsZW1lbnRUeXBlQ2F0ZWdvcnkkID0gZWxlbWVudFR5cGVDYXRlZ29yeTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBjYW5DYXN0KHNyY18wLCBkc3RJZCl7XG4gIGlmIChpbnN0YW5jZU9mU3RyaW5nKHNyY18wKSkge1xuICAgIHJldHVybiAhIXN0cmluZ0Nhc3RNYXBbZHN0SWRdO1xuICB9XG4gICBlbHNlIGlmIChzcmNfMC5jYXN0YWJsZVR5cGVNYXApIHtcbiAgICByZXR1cm4gISFzcmNfMC5jYXN0YWJsZVR5cGVNYXBbZHN0SWRdO1xuICB9XG4gICBlbHNlIGlmIChpbnN0YW5jZU9mRG91YmxlKHNyY18wKSkge1xuICAgIHJldHVybiAhIWRvdWJsZUNhc3RNYXBbZHN0SWRdO1xuICB9XG4gICBlbHNlIGlmIChpbnN0YW5jZU9mQm9vbGVhbihzcmNfMCkpIHtcbiAgICByZXR1cm4gISFib29sZWFuQ2FzdE1hcFtkc3RJZF07XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjYXN0VG8oc3JjXzAsIGRzdElkKXtcbiAgY2hlY2tDcml0aWNhbFR5cGUoc3JjXzAgPT0gbnVsbCB8fCBjYW5DYXN0KHNyY18wLCBkc3RJZCkpO1xuICByZXR1cm4gc3JjXzA7XG59XG5cbmZ1bmN0aW9uIGhhc0phdmFPYmplY3RWaXJ0dWFsRGlzcGF0Y2goc3JjXzApe1xuICByZXR1cm4gIUFycmF5LmlzQXJyYXkoc3JjXzApICYmIHNyY18wLnR5cGVNYXJrZXIgPT09IHR5cGVNYXJrZXJGbjtcbn1cblxuZnVuY3Rpb24gaW5zdGFuY2VPZihzcmNfMCwgZHN0SWQpe1xuICByZXR1cm4gc3JjXzAgIT0gbnVsbCAmJiBjYW5DYXN0KHNyY18wLCBkc3RJZCk7XG59XG5cbmZ1bmN0aW9uIGluc3RhbmNlT2ZCb29sZWFuKHNyY18wKXtcbiAgcmV0dXJuIHR5cGVvZiBzcmNfMCA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpbnN0YW5jZU9mRG91YmxlKHNyY18wKXtcbiAgcmV0dXJuIHR5cGVvZiBzcmNfMCA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGluc3RhbmNlT2ZTdHJpbmcoc3JjXzApe1xuICByZXR1cm4gdHlwZW9mIHNyY18wID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gbWFza1VuZGVmaW5lZChzcmNfMCl7XG4gIHJldHVybiBzcmNfMCA9PSBudWxsP251bGw6c3JjXzA7XG59XG5cbmZ1bmN0aW9uIHJvdW5kX2ludCh4XzApe1xuICByZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4oeF8wLCAyMTQ3NDgzNjQ3KSwgLTIxNDc0ODM2NDgpIHwgMDtcbn1cblxudmFyIGJvb2xlYW5DYXN0TWFwLCBkb3VibGVDYXN0TWFwLCBzdHJpbmdDYXN0TWFwO1xuZnVuY3Rpb24gdG9KYXZhKGUpe1xuICB2YXIgamF2YUV4Y2VwdGlvbjtcbiAgaWYgKGluc3RhbmNlT2YoZSwgNCkpIHtcbiAgICByZXR1cm4gZTtcbiAgfVxuICBqYXZhRXhjZXB0aW9uID0gZSAmJiBlWydfX2phdmEkZXhjZXB0aW9uJ107XG4gIGlmICghamF2YUV4Y2VwdGlvbikge1xuICAgIGphdmFFeGNlcHRpb24gPSBuZXcgSmF2YVNjcmlwdEV4Y2VwdGlvbihlKTtcbiAgICBjYXB0dXJlU3RhY2tUcmFjZShqYXZhRXhjZXB0aW9uKTtcbiAgfVxuICByZXR1cm4gamF2YUV4Y2VwdGlvbjtcbn1cblxuZnVuY3Rpb24gdG9Kcyh0KXtcbiAgcmV0dXJuIHQuYmFja2luZ0pzT2JqZWN0O1xufVxuXG5mdW5jdGlvbiBpbml0KCl7XG4gIHZhciBkaXY7XG4gICR3bmQuc2V0VGltZW91dCgkZW50cnkoYXNzZXJ0Q29tcGlsZVRpbWVVc2VyQWdlbnQpKTtcbiAgJG9uTW9kdWxlTG9hZCgpO1xuICBkaXYgPSAoJGNsaW5pdF9Eb21HbG9iYWwoKSAsIGRvY3VtZW50XzApLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYudGV4dENvbnRlbnQgPSAnaGVsbGxvb29vb29vb29vb29vb29vb29vb28nO1xuICBkb2N1bWVudF8wLmdldEVsZW1lbnRCeUlkKCdnd3QtZGl2JykuYXBwZW5kQ2hpbGQoZGl2KTtcbn1cblxuZnVuY3Rpb24gJG9uTW9kdWxlTG9hZCgpe1xuICB2YXIgYWxsb3dlZE1vZGVzLCBjdXJyZW50TW9kZSwgaTtcbiAgY3VycmVudE1vZGUgPSAkZG9jLmNvbXBhdE1vZGU7XG4gIGFsbG93ZWRNb2RlcyA9IHN0YW1wSmF2YVR5cGVJbmZvKGdldENsYXNzTGl0ZXJhbEZvckFycmF5KExqYXZhX2xhbmdfU3RyaW5nXzJfY2xhc3NMaXQsIDEpLCB7MzoxfSwgMiwgNiwgWydDU1MxQ29tcGF0J10pO1xuICBmb3IgKGkgPSAwOyBpIDwgYWxsb3dlZE1vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCRlcXVhbHMoYWxsb3dlZE1vZGVzW2ldLCBjdXJyZW50TW9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgYWxsb3dlZE1vZGVzLmxlbmd0aCA9PSAxICYmICRlcXVhbHMoJ0NTUzFDb21wYXQnLCBhbGxvd2VkTW9kZXNbMF0pICYmICRlcXVhbHMoJ0JhY2tDb21wYXQnLCBjdXJyZW50TW9kZSk/XCJHV1Qgbm8gbG9uZ2VyIHN1cHBvcnRzIFF1aXJrcyBNb2RlIChkb2N1bWVudC5jb21wYXRNb2RlPScgQmFja0NvbXBhdCcpLjxicj5NYWtlIHN1cmUgeW91ciBhcHBsaWNhdGlvbidzIGhvc3QgSFRNTCBwYWdlIGhhcyBhIFN0YW5kYXJkcyBNb2RlIChkb2N1bWVudC5jb21wYXRNb2RlPScgQ1NTMUNvbXBhdCcpIGRvY3R5cGUsPGJyPmUuZy4gYnkgdXNpbmcgJmx0OyFkb2N0eXBlIGh0bWwmZ3Q7IGF0IHRoZSBzdGFydCBvZiB5b3VyIGFwcGxpY2F0aW9uJ3MgSFRNTCBwYWdlLjxicj48YnI+VG8gY29udGludWUgdXNpbmcgdGhpcyB1bnN1cHBvcnRlZCByZW5kZXJpbmcgbW9kZSBhbmQgcmlzayBsYXlvdXQgcHJvYmxlbXMsIHN1cHByZXNzIHRoaXMgbWVzc2FnZSBieSBhZGRpbmc8YnI+dGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIqLmd3dC54bWwgbW9kdWxlIGZpbGU6PGJyPiZuYnNwOyZuYnNwOyZsdDtleHRlbmQtY29uZmlndXJhdGlvbi1wcm9wZXJ0eSBuYW1lPVxcXCJkb2N1bWVudC5jb21wYXRNb2RlXFxcIiB2YWx1ZT1cXFwiXCIgKyBjdXJyZW50TW9kZSArICdcIi8mZ3Q7JzpcIllvdXIgKi5nd3QueG1sIG1vZHVsZSBjb25maWd1cmF0aW9uIHByb2hpYml0cyB0aGUgdXNlIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IHJlbmRlcmluZyBtb2RlIChkb2N1bWVudC5jb21wYXRNb2RlPScgXCIgKyBjdXJyZW50TW9kZSArIFwiJykuPGJyPk1vZGlmeSB5b3VyIGFwcGxpY2F0aW9uJ3MgaG9zdCBIVE1MIHBhZ2UgZG9jdHlwZSwgb3IgdXBkYXRlIHlvdXIgY3VzdG9tIFwiICsgXCInZG9jdW1lbnQuY29tcGF0TW9kZScgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBzZXR0aW5ncy5cIjtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0Q29tcGlsZVRpbWVVc2VyQWdlbnQoKXtcbiAgdmFyIGNvbXBpbGVUaW1lVmFsdWUsIGltcGwsIHJ1bnRpbWVWYWx1ZTtcbiAgaW1wbCA9IGNhc3RUbyhjcmVhdGVfY29tX2dvb2dsZV9nd3RfdXNlcmFnZW50X2NsaWVudF9Vc2VyQWdlbnQoKSwgMTEpO1xuICBjb21waWxlVGltZVZhbHVlID0gaW1wbC5nZXRDb21waWxlVGltZVZhbHVlKCk7XG4gIHJ1bnRpbWVWYWx1ZSA9IGltcGwuZ2V0UnVudGltZVZhbHVlKCk7XG4gIGlmICghJGVxdWFscyhjb21waWxlVGltZVZhbHVlLCBydW50aW1lVmFsdWUpKSB7XG4gICAgdGhyb3cgdG9KcyhuZXcgVXNlckFnZW50QXNzZXJ0ZXIkVXNlckFnZW50QXNzZXJ0aW9uRXJyb3IoY29tcGlsZVRpbWVWYWx1ZSwgcnVudGltZVZhbHVlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gRXJyb3JfMChtZXNzYWdlKXtcbiAgdGhpcy5kZXRhaWxNZXNzYWdlID0gbWVzc2FnZTtcbiAgJGZpbGxJblN0YWNrVHJhY2UodGhpcyk7XG4gIHRoaXMuaW5pdGlhbGl6ZUJhY2tpbmdFcnJvcigpO1xufVxuXG5kZWZpbmVDbGFzcygxMiwgNCwgJGludGVybl8wKTtcbnZhciBMamF2YV9sYW5nX0Vycm9yXzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnamF2YS5sYW5nJywgJ0Vycm9yJywgMTIpO1xuZGVmaW5lQ2xhc3MoNSwgMTIsICRpbnRlcm5fMCk7XG52YXIgTGphdmFfbGFuZ19Bc3NlcnRpb25FcnJvcl8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2phdmEubGFuZycsICdBc3NlcnRpb25FcnJvcicsIDUpO1xuZnVuY3Rpb24gVXNlckFnZW50QXNzZXJ0ZXIkVXNlckFnZW50QXNzZXJ0aW9uRXJyb3IoY29tcGlsZVRpbWVWYWx1ZSwgcnVudGltZVZhbHVlKXtcbiAgdmFyIGxhc3RBcmc7XG4gIEVycm9yXzAuY2FsbCh0aGlzLCAobGFzdEFyZyA9ICdQb3NzaWJsZSBwcm9ibGVtIHdpdGggeW91ciAqLmd3dC54bWwgbW9kdWxlIGZpbGUuXFxuVGhlIGNvbXBpbGUgdGltZSB1c2VyLmFnZW50IHZhbHVlICgnICsgY29tcGlsZVRpbWVWYWx1ZSArICcpICcgKyAnZG9lcyBub3QgbWF0Y2ggdGhlIHJ1bnRpbWUgdXNlci5hZ2VudCB2YWx1ZSAoJyArIHJ1bnRpbWVWYWx1ZSArICcpLlxcbicgKyAnRXhwZWN0IG1vcmUgZXJyb3JzLicgPT0gbnVsbD8nbnVsbCc6dG9TdHJpbmdfMCgnUG9zc2libGUgcHJvYmxlbSB3aXRoIHlvdXIgKi5nd3QueG1sIG1vZHVsZSBmaWxlLlxcblRoZSBjb21waWxlIHRpbWUgdXNlci5hZ2VudCB2YWx1ZSAoJyArIGNvbXBpbGVUaW1lVmFsdWUgKyAnKSAnICsgJ2RvZXMgbm90IG1hdGNoIHRoZSBydW50aW1lIHVzZXIuYWdlbnQgdmFsdWUgKCcgKyBydW50aW1lVmFsdWUgKyAnKS5cXG4nICsgJ0V4cGVjdCBtb3JlIGVycm9ycy4nKSAsIGluc3RhbmNlT2YoJ1Bvc3NpYmxlIHByb2JsZW0gd2l0aCB5b3VyICouZ3d0LnhtbCBtb2R1bGUgZmlsZS5cXG5UaGUgY29tcGlsZSB0aW1lIHVzZXIuYWdlbnQgdmFsdWUgKCcgKyBjb21waWxlVGltZVZhbHVlICsgJykgJyArICdkb2VzIG5vdCBtYXRjaCB0aGUgcnVudGltZSB1c2VyLmFnZW50IHZhbHVlICgnICsgcnVudGltZVZhbHVlICsgJykuXFxuJyArICdFeHBlY3QgbW9yZSBlcnJvcnMuJywgNCk/Y2FzdFRvKCdQb3NzaWJsZSBwcm9ibGVtIHdpdGggeW91ciAqLmd3dC54bWwgbW9kdWxlIGZpbGUuXFxuVGhlIGNvbXBpbGUgdGltZSB1c2VyLmFnZW50IHZhbHVlICgnICsgY29tcGlsZVRpbWVWYWx1ZSArICcpICcgKyAnZG9lcyBub3QgbWF0Y2ggdGhlIHJ1bnRpbWUgdXNlci5hZ2VudCB2YWx1ZSAoJyArIHJ1bnRpbWVWYWx1ZSArICcpLlxcbicgKyAnRXhwZWN0IG1vcmUgZXJyb3JzLicsIDQpOm51bGwgLCBsYXN0QXJnKSk7XG59XG5cbmRlZmluZUNsYXNzKDE2LCA1LCAkaW50ZXJuXzAsIFVzZXJBZ2VudEFzc2VydGVyJFVzZXJBZ2VudEFzc2VydGlvbkVycm9yKTtcbnZhciBMY29tX2dvb2dsZV9nd3RfdXNlcmFnZW50X2NsaWVudF9Vc2VyQWdlbnRBc3NlcnRlciRVc2VyQWdlbnRBc3NlcnRpb25FcnJvcl8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2NvbS5nb29nbGUuZ3d0LnVzZXJhZ2VudC5jbGllbnQnLCAnVXNlckFnZW50QXNzZXJ0ZXIvVXNlckFnZW50QXNzZXJ0aW9uRXJyb3InLCAxNik7XG5mdW5jdGlvbiBVc2VyQWdlbnRJbXBsR2Vja28xXzgoKXtcbn1cblxuZGVmaW5lQ2xhc3MoMzEsIDEsICRpbnRlcm5fMSwgVXNlckFnZW50SW1wbEdlY2tvMV84KTtcbl8uZ2V0Q29tcGlsZVRpbWVWYWx1ZSA9IGZ1bmN0aW9uIGdldENvbXBpbGVUaW1lVmFsdWUoKXtcbiAgcmV0dXJuICdnZWNrbzFfOCc7XG59XG47XG5fLmdldFJ1bnRpbWVWYWx1ZSA9IGZ1bmN0aW9uIGdldFJ1bnRpbWVWYWx1ZSgpe1xuICB2YXIgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gIHZhciBkb2NNb2RlID0gJGRvYy5kb2N1bWVudE1vZGU7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCd3ZWJraXQnKSAhPSAtMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ3NhZmFyaSc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgZG9jTW9kZSA+PSAxMCAmJiBkb2NNb2RlIDwgMTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdpZTEwJztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ21zaWUnKSAhPSAtMSAmJiBkb2NNb2RlID49IDkgJiYgZG9jTW9kZSA8IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnaWU5JztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ21zaWUnKSAhPSAtMSAmJiBkb2NNb2RlID49IDggJiYgZG9jTW9kZSA8IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnaWU4JztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ2dlY2tvJykgIT0gLTEgfHwgZG9jTW9kZSA+PSAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2dlY2tvMV84JztcbiAgcmV0dXJuICd1bmtub3duJztcbn1cbjtcbnZhciBMY29tX2dvb2dsZV9nd3RfdXNlcmFnZW50X2NsaWVudF9Vc2VyQWdlbnRJbXBsR2Vja28xXzE4XzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnY29tLmdvb2dsZS5nd3QudXNlcmFnZW50LmNsaWVudCcsICdVc2VyQWdlbnRJbXBsR2Vja28xXzgnLCAzMSk7XG5mdW5jdGlvbiBVc2VyQWdlbnRJbXBsSWUxMCgpe1xufVxuXG5kZWZpbmVDbGFzcygyOSwgMSwgJGludGVybl8xLCBVc2VyQWdlbnRJbXBsSWUxMCk7XG5fLmdldENvbXBpbGVUaW1lVmFsdWUgPSBmdW5jdGlvbiBnZXRDb21waWxlVGltZVZhbHVlXzAoKXtcbiAgcmV0dXJuICdpZTEwJztcbn1cbjtcbl8uZ2V0UnVudGltZVZhbHVlID0gZnVuY3Rpb24gZ2V0UnVudGltZVZhbHVlXzAoKXtcbiAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICB2YXIgZG9jTW9kZSA9ICRkb2MuZG9jdW1lbnRNb2RlO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignd2Via2l0JykgIT0gLTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdzYWZhcmknO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignbXNpZScpICE9IC0xICYmIGRvY01vZGUgPj0gMTAgJiYgZG9jTW9kZSA8IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnaWUxMCc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgZG9jTW9kZSA+PSA5ICYmIGRvY01vZGUgPCAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2llOSc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgZG9jTW9kZSA+PSA4ICYmIGRvY01vZGUgPCAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2llOCc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdnZWNrbycpICE9IC0xIHx8IGRvY01vZGUgPj0gMTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdnZWNrbzFfOCc7XG4gIHJldHVybiAndW5rbm93bic7XG59XG47XG52YXIgTGNvbV9nb29nbGVfZ3d0X3VzZXJhZ2VudF9jbGllbnRfVXNlckFnZW50SW1wbEllMTBfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC51c2VyYWdlbnQuY2xpZW50JywgJ1VzZXJBZ2VudEltcGxJZTEwJywgMjkpO1xuZnVuY3Rpb24gVXNlckFnZW50SW1wbEllOCgpe1xufVxuXG5kZWZpbmVDbGFzcygzMiwgMSwgJGludGVybl8xLCBVc2VyQWdlbnRJbXBsSWU4KTtcbl8uZ2V0Q29tcGlsZVRpbWVWYWx1ZSA9IGZ1bmN0aW9uIGdldENvbXBpbGVUaW1lVmFsdWVfMSgpe1xuICByZXR1cm4gJ2llOCc7XG59XG47XG5fLmdldFJ1bnRpbWVWYWx1ZSA9IGZ1bmN0aW9uIGdldFJ1bnRpbWVWYWx1ZV8xKCl7XG4gIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgdmFyIGRvY01vZGUgPSAkZG9jLmRvY3VtZW50TW9kZTtcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ3dlYmtpdCcpICE9IC0xO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnc2FmYXJpJztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ21zaWUnKSAhPSAtMSAmJiBkb2NNb2RlID49IDEwICYmIGRvY01vZGUgPCAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2llMTAnO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignbXNpZScpICE9IC0xICYmIGRvY01vZGUgPj0gOSAmJiBkb2NNb2RlIDwgMTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdpZTknO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignbXNpZScpICE9IC0xICYmIGRvY01vZGUgPj0gOCAmJiBkb2NNb2RlIDwgMTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdpZTgnO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignZ2Vja28nKSAhPSAtMSB8fCBkb2NNb2RlID49IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnZ2Vja28xXzgnO1xuICByZXR1cm4gJ3Vua25vd24nO1xufVxuO1xudmFyIExjb21fZ29vZ2xlX2d3dF91c2VyYWdlbnRfY2xpZW50X1VzZXJBZ2VudEltcGxJZThfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdjb20uZ29vZ2xlLmd3dC51c2VyYWdlbnQuY2xpZW50JywgJ1VzZXJBZ2VudEltcGxJZTgnLCAzMik7XG5mdW5jdGlvbiBVc2VyQWdlbnRJbXBsSWU5KCl7XG59XG5cbmRlZmluZUNsYXNzKDI4LCAxLCAkaW50ZXJuXzEsIFVzZXJBZ2VudEltcGxJZTkpO1xuXy5nZXRDb21waWxlVGltZVZhbHVlID0gZnVuY3Rpb24gZ2V0Q29tcGlsZVRpbWVWYWx1ZV8yKCl7XG4gIHJldHVybiAnaWU5Jztcbn1cbjtcbl8uZ2V0UnVudGltZVZhbHVlID0gZnVuY3Rpb24gZ2V0UnVudGltZVZhbHVlXzIoKXtcbiAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICB2YXIgZG9jTW9kZSA9ICRkb2MuZG9jdW1lbnRNb2RlO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignd2Via2l0JykgIT0gLTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdzYWZhcmknO1xuICBpZiAoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignbXNpZScpICE9IC0xICYmIGRvY01vZGUgPj0gMTAgJiYgZG9jTW9kZSA8IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnaWUxMCc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgZG9jTW9kZSA+PSA5ICYmIGRvY01vZGUgPCAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2llOSc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgZG9jTW9kZSA+PSA4ICYmIGRvY01vZGUgPCAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2llOCc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdnZWNrbycpICE9IC0xIHx8IGRvY01vZGUgPj0gMTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdnZWNrbzFfOCc7XG4gIHJldHVybiAndW5rbm93bic7XG59XG47XG52YXIgTGNvbV9nb29nbGVfZ3d0X3VzZXJhZ2VudF9jbGllbnRfVXNlckFnZW50SW1wbEllOV8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2NvbS5nb29nbGUuZ3d0LnVzZXJhZ2VudC5jbGllbnQnLCAnVXNlckFnZW50SW1wbEllOScsIDI4KTtcbmZ1bmN0aW9uIFVzZXJBZ2VudEltcGxTYWZhcmkoKXtcbn1cblxuZGVmaW5lQ2xhc3MoMzAsIDEsICRpbnRlcm5fMSwgVXNlckFnZW50SW1wbFNhZmFyaSk7XG5fLmdldENvbXBpbGVUaW1lVmFsdWUgPSBmdW5jdGlvbiBnZXRDb21waWxlVGltZVZhbHVlXzMoKXtcbiAgcmV0dXJuICdzYWZhcmknO1xufVxuO1xuXy5nZXRSdW50aW1lVmFsdWUgPSBmdW5jdGlvbiBnZXRSdW50aW1lVmFsdWVfMygpe1xuICB2YXIgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gIHZhciBkb2NNb2RlID0gJGRvYy5kb2N1bWVudE1vZGU7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCd3ZWJraXQnKSAhPSAtMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ3NhZmFyaSc7XG4gIGlmIChmdW5jdGlvbigpe1xuICAgIHJldHVybiB1YS5pbmRleE9mKCdtc2llJykgIT0gLTEgJiYgZG9jTW9kZSA+PSAxMCAmJiBkb2NNb2RlIDwgMTE7XG4gIH1cbiAgKCkpXG4gICAgcmV0dXJuICdpZTEwJztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ21zaWUnKSAhPSAtMSAmJiBkb2NNb2RlID49IDkgJiYgZG9jTW9kZSA8IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnaWU5JztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ21zaWUnKSAhPSAtMSAmJiBkb2NNb2RlID49IDggJiYgZG9jTW9kZSA8IDExO1xuICB9XG4gICgpKVxuICAgIHJldHVybiAnaWU4JztcbiAgaWYgKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ2dlY2tvJykgIT0gLTEgfHwgZG9jTW9kZSA+PSAxMTtcbiAgfVxuICAoKSlcbiAgICByZXR1cm4gJ2dlY2tvMV84JztcbiAgcmV0dXJuICd1bmtub3duJztcbn1cbjtcbnZhciBMY29tX2dvb2dsZV9nd3RfdXNlcmFnZW50X2NsaWVudF9Vc2VyQWdlbnRJbXBsU2FmYXJpXzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnY29tLmdvb2dsZS5nd3QudXNlcmFnZW50LmNsaWVudCcsICdVc2VyQWdlbnRJbXBsU2FmYXJpJywgMzApO1xuZnVuY3Rpb24gJGNsaW5pdF9Eb21HbG9iYWwoKXtcbiAgJGNsaW5pdF9Eb21HbG9iYWwgPSBlbXB0eU1ldGhvZDtcbiAgZG9jdW1lbnRfMCA9ICR3bmQud2luZG93LmRvY3VtZW50O1xufVxuXG52YXIgZG9jdW1lbnRfMDtcbmZ1bmN0aW9uICRjbGluaXRfQm9vbGVhbigpe1xuICAkY2xpbml0X0Jvb2xlYW4gPSBlbXB0eU1ldGhvZDtcbn1cblxuYm9vbGVhbkNhc3RNYXAgPSB7MzoxLCAxNzoxfTtcbnZhciBMamF2YV9sYW5nX0Jvb2xlYW5fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnQm9vbGVhbicsIDQ0KTtcbmZ1bmN0aW9uIENsYXNzQ2FzdEV4Y2VwdGlvbigpe1xuICBSdW50aW1lRXhjZXB0aW9uLmNhbGwodGhpcywgbnVsbCk7XG59XG5cbmRlZmluZUNsYXNzKDE4LCA3LCAkaW50ZXJuXzAsIENsYXNzQ2FzdEV4Y2VwdGlvbik7XG52YXIgTGphdmFfbGFuZ19DbGFzc0Nhc3RFeGNlcHRpb25fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnQ2xhc3NDYXN0RXhjZXB0aW9uJywgMTgpO1xuZGVmaW5lQ2xhc3MoNDUsIDEsIHszOjF9KTtcbnZhciBMamF2YV9sYW5nX051bWJlcl8yX2NsYXNzTGl0ID0gY3JlYXRlRm9yQ2xhc3MoJ2phdmEubGFuZycsICdOdW1iZXInLCA0NSk7XG5kb3VibGVDYXN0TWFwID0gezM6MSwgMTc6MX07XG52YXIgTGphdmFfbGFuZ19Eb3VibGVfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnRG91YmxlJywgNDYpO1xuZGVmaW5lQ2xhc3MoMjIsIDcsICRpbnRlcm5fMCk7XG52YXIgTGphdmFfbGFuZ19JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnamF2YS5sYW5nJywgJ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24nLCAyMik7XG5kZWZpbmVDbGFzcyg3MSwgMSwge30pO1xuZnVuY3Rpb24gTnVsbFBvaW50ZXJFeGNlcHRpb24oKXtcbiAgJGZpbGxJblN0YWNrVHJhY2UodGhpcyk7XG4gIHRoaXMuaW5pdGlhbGl6ZUJhY2tpbmdFcnJvcigpO1xufVxuXG5kZWZpbmVDbGFzcygyNCwgMTUsICRpbnRlcm5fMCwgTnVsbFBvaW50ZXJFeGNlcHRpb24pO1xuXy5jcmVhdGVFcnJvciA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yXzAobXNnKXtcbiAgcmV0dXJuIG5ldyBUeXBlRXJyb3IobXNnKTtcbn1cbjtcbnZhciBMamF2YV9sYW5nX051bGxQb2ludGVyRXhjZXB0aW9uXzJfY2xhc3NMaXQgPSBjcmVhdGVGb3JDbGFzcygnamF2YS5sYW5nJywgJ051bGxQb2ludGVyRXhjZXB0aW9uJywgMjQpO1xuZnVuY3Rpb24gJGNoYXJBdCh0aGlzJHN0YXRpYywgaW5kZXhfMCl7XG4gIGNoZWNrQ3JpdGljYWxTdHJpbmdFbGVtZW50SW5kZXgoaW5kZXhfMCwgdGhpcyRzdGF0aWMubGVuZ3RoKTtcbiAgcmV0dXJuIHRoaXMkc3RhdGljLmNoYXJDb2RlQXQoaW5kZXhfMCk7XG59XG5cbmZ1bmN0aW9uICRlcXVhbHModGhpcyRzdGF0aWMsIG90aGVyKXtcbiAgcmV0dXJuIGNoZWNrQ3JpdGljYWxOb3ROdWxsKHRoaXMkc3RhdGljKSAsIHRoaXMkc3RhdGljID09PSBvdGhlcjtcbn1cblxuc3RyaW5nQ2FzdE1hcCA9IHszOjEsIDUyOjEsIDE3OjEsIDI6MX07XG52YXIgTGphdmFfbGFuZ19TdHJpbmdfMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnU3RyaW5nJywgMik7XG5mdW5jdGlvbiBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG1lc3NhZ2Upe1xuICBSdW50aW1lRXhjZXB0aW9uLmNhbGwodGhpcywgbWVzc2FnZSk7XG59XG5cbmRlZmluZUNsYXNzKDIzLCAyMiwgJGludGVybl8wLCBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKTtcbnZhciBMamF2YV9sYW5nX1N0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMl9jbGFzc0xpdCA9IGNyZWF0ZUZvckNsYXNzKCdqYXZhLmxhbmcnLCAnU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbicsIDIzKTtcbmRlZmluZUNsYXNzKDc0LCAxLCB7fSk7XG5mdW5jdGlvbiBjaGVja0NyaXRpY2FsTm90TnVsbChyZWZlcmVuY2Upe1xuICBpZiAocmVmZXJlbmNlID09IG51bGwpIHtcbiAgICB0aHJvdyB0b0pzKG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbik7XG4gIH1cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDcml0aWNhbFN0cmluZ0VsZW1lbnRJbmRleChpbmRleF8wLCBzaXplXzApe1xuICBpZiAoaW5kZXhfMCA8IDAgfHwgaW5kZXhfMCA+PSBzaXplXzApIHtcbiAgICB0aHJvdyB0b0pzKG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKCdJbmRleDogJyArIGluZGV4XzAgKyAnLCBTaXplOiAnICsgc2l6ZV8wKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tDcml0aWNhbFR5cGUoZXhwcmVzc2lvbil7XG4gIGlmICghZXhwcmVzc2lvbikge1xuICAgIHRocm93IHRvSnMobmV3IENsYXNzQ2FzdEV4Y2VwdGlvbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UHJvcGVydHlTYWZlKG1hcF8wLCBrZXksIHZhbHVlXzApe1xuICB0cnkge1xuICAgIG1hcF8wW2tleV0gPSB2YWx1ZV8wO1xuICB9XG4gICBjYXRjaCAoaWdub3JlZCkge1xuICB9XG59XG5cbmRlZmluZUNsYXNzKDcwLCAxLCB7fSk7XG5mdW5jdGlvbiBnZXRIYXNoQ29kZShvKXtcbiAgcmV0dXJuIG8uJEggfHwgKG8uJEggPSArK25leHRIYXNoSWQpO1xufVxuXG52YXIgbmV4dEhhc2hJZCA9IDA7XG5mdW5jdGlvbiAkY2xpbml0X1N0cmluZ0hhc2hDYWNoZSgpe1xuICAkY2xpbml0X1N0cmluZ0hhc2hDYWNoZSA9IGVtcHR5TWV0aG9kO1xuICBiYWNrXzAgPSBuZXcgT2JqZWN0XzA7XG4gIGZyb250ID0gbmV3IE9iamVjdF8wO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlKHN0cil7XG4gIHZhciBoYXNoQ29kZSwgaSwgbiwgbkJhdGNoO1xuICBoYXNoQ29kZSA9IDA7XG4gIG4gPSBzdHIubGVuZ3RoO1xuICBuQmF0Y2ggPSBuIC0gNDtcbiAgaSA9IDA7XG4gIHdoaWxlIChpIDwgbkJhdGNoKSB7XG4gICAgaGFzaENvZGUgPSAoY2hlY2tDcml0aWNhbFN0cmluZ0VsZW1lbnRJbmRleChpICsgMywgc3RyLmxlbmd0aCkgLCBzdHIuY2hhckNvZGVBdChpICsgMykgKyAoY2hlY2tDcml0aWNhbFN0cmluZ0VsZW1lbnRJbmRleChpICsgMiwgc3RyLmxlbmd0aCkgLCAzMSAqIChzdHIuY2hhckNvZGVBdChpICsgMikgKyAoY2hlY2tDcml0aWNhbFN0cmluZ0VsZW1lbnRJbmRleChpICsgMSwgc3RyLmxlbmd0aCkgLCAzMSAqIChzdHIuY2hhckNvZGVBdChpICsgMSkgKyAoY2hlY2tDcml0aWNhbFN0cmluZ0VsZW1lbnRJbmRleChpLCBzdHIubGVuZ3RoKSAsIDMxICogKHN0ci5jaGFyQ29kZUF0KGkpICsgMzEgKiBoYXNoQ29kZSkpKSkpKSk7XG4gICAgaGFzaENvZGUgPSBoYXNoQ29kZSB8IDA7XG4gICAgaSArPSA0O1xuICB9XG4gIHdoaWxlIChpIDwgbikge1xuICAgIGhhc2hDb2RlID0gaGFzaENvZGUgKiAzMSArICRjaGFyQXQoc3RyLCBpKyspO1xuICB9XG4gIGhhc2hDb2RlID0gaGFzaENvZGUgfCAwO1xuICByZXR1cm4gaGFzaENvZGU7XG59XG5cbmZ1bmN0aW9uIGdldEhhc2hDb2RlXzAoc3RyKXtcbiAgJGNsaW5pdF9TdHJpbmdIYXNoQ2FjaGUoKTtcbiAgdmFyIGhhc2hDb2RlLCBrZXksIHJlc3VsdDtcbiAga2V5ID0gJzonICsgc3RyO1xuICByZXN1bHQgPSBmcm9udFtrZXldO1xuICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICByZXR1cm4gcm91bmRfaW50KChjaGVja0NyaXRpY2FsTm90TnVsbChyZXN1bHQpICwgcmVzdWx0KSk7XG4gIH1cbiAgcmVzdWx0ID0gYmFja18wW2tleV07XG4gIGhhc2hDb2RlID0gcmVzdWx0ID09IG51bGw/Y29tcHV0ZShzdHIpOnJvdW5kX2ludCgoY2hlY2tDcml0aWNhbE5vdE51bGwocmVzdWx0KSAsIHJlc3VsdCkpO1xuICBpbmNyZW1lbnQoKTtcbiAgZnJvbnRba2V5XSA9IGhhc2hDb2RlO1xuICByZXR1cm4gaGFzaENvZGU7XG59XG5cbmZ1bmN0aW9uIGluY3JlbWVudCgpe1xuICBpZiAoY291bnQgPT0gMjU2KSB7XG4gICAgYmFja18wID0gZnJvbnQ7XG4gICAgZnJvbnQgPSBuZXcgT2JqZWN0XzA7XG4gICAgY291bnQgPSAwO1xuICB9XG4gICsrY291bnQ7XG59XG5cbnZhciBiYWNrXzAsIGNvdW50ID0gMCwgZnJvbnQ7XG5kZWZpbmVDbGFzcyg0NTAsIDEsIHt9KTtcbnZhciAkZW50cnkgPSAoJGNsaW5pdF9JbXBsKCkgLCBlbnRyeSk7XG52YXIgZ3d0T25Mb2FkID0gZ3d0T25Mb2FkID0gZ3d0T25Mb2FkXzA7XG5hZGRJbml0RnVuY3Rpb25zKGluaXQpO1xuc2V0R3d0UHJvcGVydHkoJ3Blcm1Qcm9wcycsIFtbWydsb2NhbGUnLCAnZGVmYXVsdCddLCBbJ3VzZXIuYWdlbnQnLCAnZ2Vja28xXzgnXV0sIFtbJ2xvY2FsZScsICdkZWZhdWx0J10sIFsndXNlci5hZ2VudCcsICdpZTEwJ11dLCBbWydsb2NhbGUnLCAnZGVmYXVsdCddLCBbJ3VzZXIuYWdlbnQnLCAnaWU4J11dLCBbWydsb2NhbGUnLCAnZGVmYXVsdCddLCBbJ3VzZXIuYWdlbnQnLCAnaWU5J11dLCBbWydsb2NhbGUnLCAnZGVmYXVsdCddLCBbJ3VzZXIuYWdlbnQnLCAnc2FmYXJpJ11dXSk7XG5pZiAoYXBwKSBhcHAub25TY3JpcHRMb2FkKGd3dE9uTG9hZCk7fSkoKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvZ3d0L2FwcC9hcHAubm9jYWNoZS5qcyJdLCJzb3VyY2VSb290IjoiIn0= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function app(){ | |
var $wnd_0 = window, $doc_0 = document, gwtOnLoad_0, bodyDone, base = '', metaProps = {}, values = [], providers = [], answers = [], softPermutationId = 0, onLoadErrorFunc, propertyErrorFunc; | |
if (!$wnd_0.__gwt_stylesLoaded) { | |
$wnd_0.__gwt_stylesLoaded = {}; | |
} | |
if (!$wnd_0.__gwt_scriptsLoaded) { | |
$wnd_0.__gwt_scriptsLoaded = {}; | |
} | |
function isHostedMode(){ | |
var result = false; | |
try { | |
var query = $wnd_0.location.search; | |
return (query.indexOf('gwt.codesvr=') != -1 || (query.indexOf('gwt.hosted=') != -1 || $wnd_0.external && $wnd_0.external.gwtOnLoad)) && query.indexOf('gwt.hybrid') == -1; | |
} | |
catch (e) { | |
} | |
isHostedMode = function(){ | |
return result; | |
} | |
; | |
return result; | |
} | |
function maybeStartModule(){ | |
if (gwtOnLoad_0 && bodyDone) { | |
gwtOnLoad_0(onLoadErrorFunc, 'app', base, softPermutationId); | |
} | |
} | |
function computeScriptBase(){ | |
var thisScript, markerId = '__gwt_marker_app', markerScript; | |
$doc_0.write('<script id="' + markerId + '"><\/script>'); | |
markerScript = $doc_0.getElementById(markerId); | |
thisScript = markerScript && markerScript.previousSibling; | |
while (thisScript && thisScript.tagName != 'SCRIPT') { | |
thisScript = thisScript.previousSibling; | |
} | |
function getDirectoryOfFile(path){ | |
var hashIndex = path.lastIndexOf('#'); | |
if (hashIndex == -1) { | |
hashIndex = path.length; | |
} | |
var queryIndex = path.indexOf('?'); | |
if (queryIndex == -1) { | |
queryIndex = path.length; | |
} | |
var slashIndex = path.lastIndexOf('/', Math.min(queryIndex, hashIndex)); | |
return slashIndex >= 0?path.substring(0, slashIndex + 1):''; | |
} | |
; | |
if (thisScript && thisScript.src) { | |
base = getDirectoryOfFile(thisScript.src); | |
} | |
if (base == '') { | |
var baseElements = $doc_0.getElementsByTagName('base'); | |
if (baseElements.length > 0) { | |
base = baseElements[baseElements.length - 1].href; | |
} | |
else { | |
base = getDirectoryOfFile($doc_0.location.href); | |
} | |
} | |
else if (base.match(/^\w+:\/\//)) { | |
} | |
else { | |
var img = $doc_0.createElement('img'); | |
img.src = base + 'clear.cache.gif'; | |
base = getDirectoryOfFile(img.src); | |
} | |
if (markerScript) { | |
markerScript.parentNode.removeChild(markerScript); | |
} | |
} | |
function processMetas(){ | |
var metas = document.getElementsByTagName('meta'); | |
for (var i = 0, n = metas.length; i < n; ++i) { | |
var meta = metas[i], name_0 = meta.getAttribute('name'), content_0; | |
if (name_0) { | |
if (name_0 == 'gwt:property') { | |
content_0 = meta.getAttribute('content'); | |
if (content_0) { | |
var value_0, eq = content_0.indexOf('='); | |
if (eq >= 0) { | |
name_0 = content_0.substring(0, eq); | |
value_0 = content_0.substring(eq + 1); | |
} | |
else { | |
name_0 = content_0; | |
value_0 = ''; | |
} | |
metaProps[name_0] = value_0; | |
} | |
} | |
else if (name_0 == 'gwt:onPropertyErrorFn') { | |
content_0 = meta.getAttribute('content'); | |
if (content_0) { | |
try { | |
propertyErrorFunc = eval(content_0); | |
} | |
catch (e) { | |
alert('Bad handler "' + content_0 + '" for "gwt:onPropertyErrorFn"'); | |
} | |
} | |
} | |
else if (name_0 == 'gwt:onLoadErrorFn') { | |
content_0 = meta.getAttribute('content'); | |
if (content_0) { | |
try { | |
onLoadErrorFunc = eval(content_0); | |
} | |
catch (e) { | |
alert('Bad handler "' + content_0 + '" for "gwt:onLoadErrorFn"'); | |
} | |
} | |
} | |
} | |
} | |
} | |
__gwt_isKnownPropertyValue = function(propName, propValue){ | |
return propValue in values[propName]; | |
} | |
; | |
__gwt_getMetaProperty = function(name_0){ | |
var value_0 = metaProps[name_0]; | |
return value_0 == null?null:value_0; | |
} | |
; | |
function unflattenKeylistIntoAnswers(propValArray, value_0){ | |
var answer = answers; | |
for (var i = 0, n = propValArray.length - 1; i < n; ++i) { | |
answer = answer[propValArray[i]] || (answer[propValArray[i]] = []); | |
} | |
answer[propValArray[n]] = value_0; | |
} | |
function computePropValue(propName){ | |
var value_0 = providers[propName](), allowedValuesMap = values[propName]; | |
if (value_0 in allowedValuesMap) { | |
return value_0; | |
} | |
var allowedValuesList = []; | |
for (var k in allowedValuesMap) { | |
allowedValuesList[allowedValuesMap[k]] = k; | |
} | |
if (propertyErrorFunc) { | |
propertyErrorFunc(propName, allowedValuesList, value_0); | |
} | |
throw null; | |
} | |
providers['user.agent'] = function(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc_0.documentMode; | |
if (function(){ | |
return ua.indexOf('webkit') != -1; | |
} | |
()) | |
return 'safari'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && (docMode >= 10 && docMode < 11); | |
} | |
()) | |
return 'ie10'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && (docMode >= 9 && docMode < 11); | |
} | |
()) | |
return 'ie9'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && (docMode >= 8 && docMode < 11); | |
} | |
()) | |
return 'ie8'; | |
if (function(){ | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
} | |
()) | |
return 'gecko1_8'; | |
return ''; | |
} | |
; | |
values['user.agent'] = {'gecko1_8':0, 'ie10':1, 'ie8':2, 'ie9':3, 'safari':4}; | |
app.onScriptLoad = function(gwtOnLoadFunc){ | |
app = null; | |
gwtOnLoad_0 = gwtOnLoadFunc; | |
maybeStartModule(); | |
} | |
; | |
if (isHostedMode()) { | |
alert('Single-script hosted mode not yet implemented. See issue ' + 'http://code.google.com/p/google-web-toolkit/issues/detail?id=2079'); | |
return; | |
} | |
computeScriptBase(); | |
processMetas(); | |
try { | |
var strongName; | |
unflattenKeylistIntoAnswers(['gecko1_8'], '48EDC8347B78D506E191A51CA0160B78'); | |
unflattenKeylistIntoAnswers(['ie10'], '48EDC8347B78D506E191A51CA0160B78' + ':1'); | |
unflattenKeylistIntoAnswers(['ie8'], '48EDC8347B78D506E191A51CA0160B78' + ':2'); | |
unflattenKeylistIntoAnswers(['ie9'], '48EDC8347B78D506E191A51CA0160B78' + ':3'); | |
unflattenKeylistIntoAnswers(['safari'], '48EDC8347B78D506E191A51CA0160B78' + ':4'); | |
strongName = answers[computePropValue('user.agent')]; | |
var idx = strongName.indexOf(':'); | |
if (idx != -1) { | |
softPermutationId = Number(strongName.substring(idx + 1)); | |
} | |
} | |
catch (e) { | |
return; | |
} | |
var onBodyDoneTimerId; | |
function onBodyDone(){ | |
if (!bodyDone) { | |
bodyDone = true; | |
if (!__gwt_stylesLoaded['gwt/clean/clean.css']) { | |
var l = $doc_0.createElement('link'); | |
__gwt_stylesLoaded['gwt/clean/clean.css'] = l; | |
l.setAttribute('rel', 'stylesheet'); | |
l.setAttribute('href', base + 'gwt/clean/clean.css'); | |
$doc_0.getElementsByTagName('head')[0].appendChild(l); | |
} | |
maybeStartModule(); | |
if ($doc_0.removeEventListener) { | |
$doc_0.removeEventListener('DOMContentLoaded', onBodyDone, false); | |
} | |
if (onBodyDoneTimerId) { | |
clearInterval(onBodyDoneTimerId); | |
} | |
} | |
} | |
if ($doc_0.addEventListener) { | |
$doc_0.addEventListener('DOMContentLoaded', function(){ | |
onBodyDone(); | |
} | |
, false); | |
} | |
var onBodyDoneTimerId = setInterval(function(){ | |
if (/loaded|complete/.test($doc_0.readyState)) { | |
onBodyDone(); | |
} | |
} | |
, 50); | |
} | |
app(); | |
(function () {var $gwt_version = "2.8.2";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var $strongName = '48EDC8347B78D506E191A51CA0160B78';var $intern_0 = {3:1, 4:1}, $intern_1 = {11:1}; | |
var _, prototypesByTypeId_0, initFnList_0, permutationId = -1; | |
function create_com_google_gwt_useragent_client_UserAgent(){ | |
switch (permutationId) { | |
case 1: | |
return new UserAgentImplIe10; | |
case 4: | |
return new UserAgentImplSafari; | |
case 0: | |
return new UserAgentImplGecko1_8; | |
case 2: | |
return new UserAgentImplIe8; | |
} | |
return new UserAgentImplIe9; | |
} | |
function setGwtProperty(propertyName, propertyValue){ | |
typeof window === 'object' && typeof window['$gwt'] === 'object' && (window['$gwt'][propertyName] = propertyValue); | |
} | |
function gwtOnLoad_0(errFn, modName, modBase, softPermutationId){ | |
ensureModuleInit(); | |
var initFnList = initFnList_0; | |
$moduleName = modName; | |
$moduleBase = modBase; | |
permutationId = softPermutationId; | |
function initializeModules(){ | |
for (var i = 0; i < initFnList.length; i++) { | |
initFnList[i](); | |
} | |
} | |
if (errFn) { | |
try { | |
$entry(initializeModules)(); | |
} | |
catch (e) { | |
errFn(modName, e); | |
} | |
} | |
else { | |
$entry(initializeModules)(); | |
} | |
} | |
function ensureModuleInit(){ | |
initFnList_0 == null && (initFnList_0 = []); | |
} | |
function addInitFunctions(){ | |
ensureModuleInit(); | |
var initFnList = initFnList_0; | |
for (var i = 0; i < arguments.length; i++) { | |
initFnList.push(arguments[i]); | |
} | |
} | |
function typeMarkerFn(){ | |
} | |
function toString_0(object){ | |
var number; | |
if (Array.isArray(object) && object.typeMarker === typeMarkerFn) { | |
return $getName(instanceOfString(object)?Ljava_lang_String_2_classLit:instanceOfDouble(object)?Ljava_lang_Double_2_classLit:instanceOfBoolean(object)?Ljava_lang_Boolean_2_classLit:hasJavaObjectVirtualDispatch(object)?object.___clazz:isJavaArray(object)?object.___clazz:object.___clazz || Array.isArray(object) && getClassLiteralForArray(Lcom_google_gwt_core_client_JavaScriptObject_2_classLit, 1) || Lcom_google_gwt_core_client_JavaScriptObject_2_classLit) + '@' + (number = (instanceOfString(object)?getHashCode_0(object):instanceOfDouble(object)?round_int((checkCriticalNotNull(object) , object)):instanceOfBoolean(object)?(checkCriticalNotNull(object) , object)?1231:1237:hasJavaObjectVirtualDispatch(object)?object.hashCode_0():isJavaArray(object)?getHashCode(object):!!object && !!object.hashCode?object.hashCode():getHashCode(object)) >>> 0 , number.toString(16)); | |
} | |
return object.toString(); | |
} | |
function portableObjCreate(obj){ | |
function F(){ | |
} | |
; | |
F.prototype = obj || {}; | |
return new F; | |
} | |
function emptyMethod(){ | |
} | |
function defineClass(typeId, superTypeIdOrPrototype, castableTypeMap){ | |
var prototypesByTypeId = prototypesByTypeId_0, superPrototype; | |
var prototype_0 = prototypesByTypeId[typeId]; | |
var clazz = prototype_0 instanceof Array?prototype_0[0]:null; | |
if (prototype_0 && !clazz) { | |
_ = prototype_0; | |
} | |
else { | |
_ = (superPrototype = superTypeIdOrPrototype && superTypeIdOrPrototype.prototype , !superPrototype && (superPrototype = prototypesByTypeId_0[superTypeIdOrPrototype]) , portableObjCreate(superPrototype)); | |
_.castableTypeMap = castableTypeMap; | |
!superTypeIdOrPrototype && (_.typeMarker = typeMarkerFn); | |
prototypesByTypeId[typeId] = _; | |
} | |
for (var i = 3; i < arguments.length; ++i) { | |
arguments[i].prototype = _; | |
} | |
clazz && (_.___clazz = clazz); | |
} | |
function bootstrap(){ | |
prototypesByTypeId_0 = {}; | |
!Array.isArray && (Array.isArray = function(vArg){ | |
return Object.prototype.toString.call(vArg) === '[object Array]'; | |
} | |
); | |
function now_0(){ | |
return (new Date).getTime(); | |
} | |
!Date.now && (Date.now = now_0); | |
} | |
bootstrap(); | |
function Object_0(){ | |
} | |
defineClass(1, null, {}, Object_0); | |
_.getClass_0 = function getClass_0(){ | |
return this.___clazz; | |
} | |
; | |
_.hashCode_0 = function hashCode_0(){ | |
return getHashCode(this); | |
} | |
; | |
_.hashCode = function(){ | |
return this.hashCode_0(); | |
} | |
; | |
function $ensureNamesAreInitialized(this$static){ | |
if (this$static.typeName != null) { | |
return; | |
} | |
initializeNames(this$static); | |
} | |
function $getName(this$static){ | |
$ensureNamesAreInitialized(this$static); | |
return this$static.typeName; | |
} | |
function Class(){ | |
++nextSequentialId; | |
this.typeName = null; | |
this.simpleName = null; | |
this.packageName = null; | |
this.compoundName = null; | |
this.canonicalName = null; | |
this.typeId = null; | |
this.arrayLiterals = null; | |
} | |
function createForClass(packageName, compoundClassName, typeId){ | |
var clazz, clazz_0; | |
clazz = (clazz_0 = new Class , clazz_0.packageName = packageName , clazz_0.compoundName = compoundClassName , clazz_0); | |
maybeSetClassLiteral(typeId, clazz); | |
return clazz; | |
} | |
function getClassLiteralForArray_0(leafClass, dimensions){ | |
var arrayLiterals = leafClass.arrayLiterals = leafClass.arrayLiterals || []; | |
return arrayLiterals[dimensions] || (arrayLiterals[dimensions] = leafClass.createClassLiteralForArray(dimensions)); | |
} | |
function getPrototypeForClass(clazz){ | |
if (clazz.isPrimitive()) { | |
return null; | |
} | |
var typeId = clazz.typeId; | |
return prototypesByTypeId_0[typeId]; | |
} | |
function initializeNames(clazz){ | |
if (clazz.isArray_0()) { | |
var componentType = clazz.componentType; | |
componentType.isPrimitive()?(clazz.typeName = '[' + componentType.typeId):!componentType.isArray_0()?(clazz.typeName = '[L' + componentType.getName() + ';'):(clazz.typeName = '[' + componentType.getName()); | |
clazz.canonicalName = componentType.getCanonicalName() + '[]'; | |
clazz.simpleName = componentType.getSimpleName() + '[]'; | |
return; | |
} | |
var packageName = clazz.packageName; | |
var compoundName = clazz.compoundName; | |
compoundName = compoundName.split('/'); | |
clazz.typeName = join_0('.', [packageName, join_0('$', compoundName)]); | |
clazz.canonicalName = join_0('.', [packageName, join_0('.', compoundName)]); | |
clazz.simpleName = compoundName[compoundName.length - 1]; | |
} | |
function join_0(separator, strings){ | |
var i = 0; | |
while (!strings[i] || strings[i] == '') { | |
i++; | |
} | |
var result = strings[i++]; | |
for (; i < strings.length; i++) { | |
if (!strings[i] || strings[i] == '') { | |
continue; | |
} | |
result += separator + strings[i]; | |
} | |
return result; | |
} | |
function maybeSetClassLiteral(typeId, clazz){ | |
var proto; | |
if (!typeId) { | |
return; | |
} | |
clazz.typeId = typeId; | |
var prototype_0 = getPrototypeForClass(clazz); | |
if (!prototype_0) { | |
prototypesByTypeId_0[typeId] = [clazz]; | |
return; | |
} | |
prototype_0.___clazz = clazz; | |
} | |
defineClass(14, 1, {}, Class); | |
_.createClassLiteralForArray = function createClassLiteralForArray(dimensions){ | |
var clazz; | |
clazz = new Class; | |
clazz.modifiers = 4; | |
dimensions > 1?(clazz.componentType = getClassLiteralForArray_0(this, dimensions - 1)):(clazz.componentType = this); | |
return clazz; | |
} | |
; | |
_.getCanonicalName = function getCanonicalName(){ | |
$ensureNamesAreInitialized(this); | |
return this.canonicalName; | |
} | |
; | |
_.getName = function getName(){ | |
return $getName(this); | |
} | |
; | |
_.getSimpleName = function getSimpleName(){ | |
$ensureNamesAreInitialized(this); | |
return this.simpleName; | |
} | |
; | |
_.isArray_0 = function isArray(){ | |
return (this.modifiers & 4) != 0; | |
} | |
; | |
_.isPrimitive = function isPrimitive(){ | |
return (this.modifiers & 1) != 0; | |
} | |
; | |
_.modifiers = 0; | |
var nextSequentialId = 1; | |
var Ljava_lang_Object_2_classLit = createForClass('java.lang', 'Object', 1); | |
var Ljava_lang_Class_2_classLit = createForClass('java.lang', 'Class', 14); | |
function $fillInStackTrace(this$static){ | |
this$static.writetableStackTrace && this$static.backingJsObject !== '__noinit__' && this$static.initializeBackingError(); | |
return this$static; | |
} | |
function $setBackingJsObject(this$static, backingJsObject){ | |
this$static.backingJsObject = backingJsObject; | |
backingJsObject != null && setPropertySafe(backingJsObject, '__java$exception', this$static); | |
} | |
function fixIE(e){ | |
if (!('stack' in e)) { | |
try { | |
throw e; | |
} | |
catch (ignored) { | |
} | |
} | |
return e; | |
} | |
defineClass(4, 1, $intern_0); | |
_.createError = function createError(msg){ | |
return new Error(msg); | |
} | |
; | |
_.initializeBackingError = function initializeBackingError(){ | |
var className, errorMessage, message; | |
message = this.detailMessage == null?null:this.detailMessage.replace(new RegExp('\n', 'g'), ' '); | |
errorMessage = (className = $getName(this.___clazz) , message == null?className:className + ': ' + message); | |
$setBackingJsObject(this, fixIE(this.createError(errorMessage))); | |
captureStackTrace(this); | |
} | |
; | |
_.backingJsObject = '__noinit__'; | |
_.writetableStackTrace = true; | |
var Ljava_lang_Throwable_2_classLit = createForClass('java.lang', 'Throwable', 4); | |
defineClass(13, 4, $intern_0); | |
var Ljava_lang_Exception_2_classLit = createForClass('java.lang', 'Exception', 13); | |
function RuntimeException(message){ | |
this.detailMessage = message; | |
$fillInStackTrace(this); | |
this.initializeBackingError(); | |
} | |
defineClass(7, 13, $intern_0); | |
var Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang', 'RuntimeException', 7); | |
defineClass(15, 7, $intern_0); | |
var Ljava_lang_JsException_2_classLit = createForClass('java.lang', 'JsException', 15); | |
defineClass(19, 15, $intern_0); | |
var Lcom_google_gwt_core_client_impl_JavaScriptExceptionBase_2_classLit = createForClass('com.google.gwt.core.client.impl', 'JavaScriptExceptionBase', 19); | |
function $clinit_JavaScriptException(){ | |
$clinit_JavaScriptException = emptyMethod; | |
NOT_SET = new Object_0; | |
} | |
function JavaScriptException(e){ | |
$clinit_JavaScriptException(); | |
$fillInStackTrace(this); | |
this.backingJsObject = e; | |
e != null && setPropertySafe(e, '__java$exception', this); | |
this.detailMessage = e == null?'null':toString_0(e); | |
this.e = e; | |
} | |
defineClass(9, 19, {9:1, 3:1, 4:1}, JavaScriptException); | |
_.getThrown = function getThrown(){ | |
return maskUndefined(this.e) === maskUndefined(NOT_SET)?null:this.e; | |
} | |
; | |
var NOT_SET; | |
var Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptException', 9); | |
var Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptObject$', 0); | |
function now_1(){ | |
if (Date.now) { | |
return Date.now(); | |
} | |
return (new Date).getTime(); | |
} | |
defineClass(34, 1, {}); | |
var Lcom_google_gwt_core_client_Scheduler_2_classLit = createForClass('com.google.gwt.core.client', 'Scheduler', 34); | |
function $clinit_Impl(){ | |
$clinit_Impl = emptyMethod; | |
!!($clinit_StackTraceCreator() , collector); | |
} | |
function apply_0(jsFunction, thisObj, args){ | |
return jsFunction.apply(thisObj, args); | |
var __0; | |
} | |
function enter(){ | |
var now_0; | |
if (entryDepth != 0) { | |
now_0 = now_1(); | |
if (now_0 - watchdogEntryDepthLastScheduled > 2000) { | |
watchdogEntryDepthLastScheduled = now_0; | |
watchdogEntryDepthTimerId = $wnd.setTimeout(watchdogEntryDepthRun, 10); | |
} | |
} | |
if (entryDepth++ == 0) { | |
$flushEntryCommands(($clinit_SchedulerImpl() , INSTANCE)); | |
return true; | |
} | |
return false; | |
} | |
function entry(jsFunction){ | |
$clinit_Impl(); | |
return function(){ | |
return entry0(jsFunction, this, arguments); | |
var __0; | |
} | |
; | |
} | |
function entry0(jsFunction, thisObj, args){ | |
var initialEntry; | |
initialEntry = enter(); | |
try { | |
return apply_0(jsFunction, thisObj, args); | |
} | |
finally { | |
exit(initialEntry); | |
} | |
} | |
function exit(initialEntry){ | |
initialEntry && $flushFinallyCommands(($clinit_SchedulerImpl() , INSTANCE)); | |
--entryDepth; | |
if (initialEntry) { | |
if (watchdogEntryDepthTimerId != -1) { | |
watchdogEntryDepthCancel(watchdogEntryDepthTimerId); | |
watchdogEntryDepthTimerId = -1; | |
} | |
} | |
} | |
function reportToBrowser(e){ | |
$clinit_Impl(); | |
$wnd.setTimeout(function(){ | |
throw e; | |
} | |
, 0); | |
} | |
function watchdogEntryDepthCancel(timerId){ | |
$wnd.clearTimeout(timerId); | |
} | |
function watchdogEntryDepthRun(){ | |
entryDepth != 0 && (entryDepth = 0); | |
watchdogEntryDepthTimerId = -1; | |
} | |
var entryDepth = 0, watchdogEntryDepthLastScheduled = 0, watchdogEntryDepthTimerId = -1; | |
function $clinit_SchedulerImpl(){ | |
$clinit_SchedulerImpl = emptyMethod; | |
INSTANCE = new SchedulerImpl; | |
} | |
function $flushEntryCommands(this$static){ | |
var oldQueue, rescheduled; | |
if (this$static.entryCommands) { | |
rescheduled = null; | |
do { | |
oldQueue = this$static.entryCommands; | |
this$static.entryCommands = null; | |
rescheduled = runScheduledTasks(oldQueue, rescheduled); | |
} | |
while (this$static.entryCommands); | |
this$static.entryCommands = rescheduled; | |
} | |
} | |
function $flushFinallyCommands(this$static){ | |
var oldQueue, rescheduled; | |
if (this$static.finallyCommands) { | |
rescheduled = null; | |
do { | |
oldQueue = this$static.finallyCommands; | |
this$static.finallyCommands = null; | |
rescheduled = runScheduledTasks(oldQueue, rescheduled); | |
} | |
while (this$static.finallyCommands); | |
this$static.finallyCommands = rescheduled; | |
} | |
} | |
function SchedulerImpl(){ | |
} | |
function push_0(queue, task){ | |
!queue && (queue = []); | |
queue[queue.length] = task; | |
return queue; | |
} | |
function runScheduledTasks(tasks, rescheduled){ | |
var e, i, j, t; | |
for (i = 0 , j = tasks.length; i < j; i++) { | |
t = tasks[i]; | |
try { | |
t[1]?t[0].$_nullMethod() && (rescheduled = push_0(rescheduled, t)):t[0].$_nullMethod(); | |
} | |
catch ($e0) { | |
$e0 = toJava($e0); | |
if (instanceOf($e0, 4)) { | |
e = $e0; | |
$clinit_Impl(); | |
reportToBrowser(instanceOf(e, 9)?castTo(e, 9).getThrown():e); | |
} | |
else | |
throw toJs($e0); | |
} | |
} | |
return rescheduled; | |
} | |
defineClass(27, 34, {}, SchedulerImpl); | |
var INSTANCE; | |
var Lcom_google_gwt_core_client_impl_SchedulerImpl_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl', 27); | |
function $clinit_StackTraceCreator(){ | |
$clinit_StackTraceCreator = emptyMethod; | |
var c, enforceLegacy; | |
enforceLegacy = !supportsErrorStack(); | |
c = new StackTraceCreator$CollectorModernNoSourceMap; | |
collector = enforceLegacy?new StackTraceCreator$CollectorLegacy:c; | |
} | |
function captureStackTrace(error){ | |
$clinit_StackTraceCreator(); | |
collector.collect(error); | |
} | |
function extractFunctionName(fnName){ | |
var fnRE = /function(?:\s+([\w$]+))?\s*\(/; | |
var match_0 = fnRE.exec(fnName); | |
return match_0 && match_0[1] || 'anonymous'; | |
} | |
function supportsErrorStack(){ | |
if (Error.stackTraceLimit > 0) { | |
$wnd.Error.stackTraceLimit = Error.stackTraceLimit = 64; | |
return true; | |
} | |
return 'stack' in new Error; | |
} | |
var collector; | |
defineClass(47, 1, {}); | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/Collector', 47); | |
function StackTraceCreator$CollectorLegacy(){ | |
} | |
defineClass(20, 47, {}, StackTraceCreator$CollectorLegacy); | |
_.collect = function collect(error){ | |
var seen = {}, name_1; | |
var fnStack = []; | |
error['fnStack'] = fnStack; | |
var callee = arguments.callee.caller; | |
while (callee) { | |
var name_0 = ($clinit_StackTraceCreator() , callee.name || (callee.name = extractFunctionName(callee.toString()))); | |
fnStack.push(name_0); | |
var keyName = ':' + name_0; | |
var withThisName = seen[keyName]; | |
if (withThisName) { | |
var i, j; | |
for (i = 0 , j = withThisName.length; i < j; i++) { | |
if (withThisName[i] === callee) { | |
return; | |
} | |
} | |
} | |
(withThisName || (seen[keyName] = [])).push(callee); | |
callee = callee.caller; | |
} | |
} | |
; | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorLegacy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorLegacy', 20); | |
defineClass(48, 47, {}); | |
_.collect = function collect_0(error){ | |
} | |
; | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModern_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModern', 48); | |
function StackTraceCreator$CollectorModernNoSourceMap(){ | |
} | |
defineClass(21, 48, {}, StackTraceCreator$CollectorModernNoSourceMap); | |
var Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModernNoSourceMap_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModernNoSourceMap', 21); | |
function getClassLiteralForArray(clazz, dimensions){ | |
return getClassLiteralForArray_0(clazz, dimensions); | |
} | |
function isJavaArray(src_0){ | |
return Array.isArray(src_0) && src_0.typeMarker === typeMarkerFn; | |
} | |
function stampJavaTypeInfo(arrayClass, castableTypeMap, elementTypeId, elementTypeCategory, array){ | |
array.___clazz = arrayClass; | |
array.castableTypeMap = castableTypeMap; | |
array.typeMarker = typeMarkerFn; | |
array.__elementTypeId$ = elementTypeId; | |
array.__elementTypeCategory$ = elementTypeCategory; | |
return array; | |
} | |
function canCast(src_0, dstId){ | |
if (instanceOfString(src_0)) { | |
return !!stringCastMap[dstId]; | |
} | |
else if (src_0.castableTypeMap) { | |
return !!src_0.castableTypeMap[dstId]; | |
} | |
else if (instanceOfDouble(src_0)) { | |
return !!doubleCastMap[dstId]; | |
} | |
else if (instanceOfBoolean(src_0)) { | |
return !!booleanCastMap[dstId]; | |
} | |
return false; | |
} | |
function castTo(src_0, dstId){ | |
checkCriticalType(src_0 == null || canCast(src_0, dstId)); | |
return src_0; | |
} | |
function hasJavaObjectVirtualDispatch(src_0){ | |
return !Array.isArray(src_0) && src_0.typeMarker === typeMarkerFn; | |
} | |
function instanceOf(src_0, dstId){ | |
return src_0 != null && canCast(src_0, dstId); | |
} | |
function instanceOfBoolean(src_0){ | |
return typeof src_0 === 'boolean'; | |
} | |
function instanceOfDouble(src_0){ | |
return typeof src_0 === 'number'; | |
} | |
function instanceOfString(src_0){ | |
return typeof src_0 === 'string'; | |
} | |
function maskUndefined(src_0){ | |
return src_0 == null?null:src_0; | |
} | |
function round_int(x_0){ | |
return Math.max(Math.min(x_0, 2147483647), -2147483648) | 0; | |
} | |
var booleanCastMap, doubleCastMap, stringCastMap; | |
function toJava(e){ | |
var javaException; | |
if (instanceOf(e, 4)) { | |
return e; | |
} | |
javaException = e && e['__java$exception']; | |
if (!javaException) { | |
javaException = new JavaScriptException(e); | |
captureStackTrace(javaException); | |
} | |
return javaException; | |
} | |
function toJs(t){ | |
return t.backingJsObject; | |
} | |
function init(){ | |
var div; | |
$wnd.setTimeout($entry(assertCompileTimeUserAgent)); | |
$onModuleLoad(); | |
div = ($clinit_DomGlobal() , document_0).createElement('div'); | |
div.textContent = 'helllooooooooooooooooooooo'; | |
document_0.getElementById('gwt-div').appendChild(div); | |
} | |
function $onModuleLoad(){ | |
var allowedModes, currentMode, i; | |
currentMode = $doc.compatMode; | |
allowedModes = stampJavaTypeInfo(getClassLiteralForArray(Ljava_lang_String_2_classLit, 1), {3:1}, 2, 6, ['CSS1Compat']); | |
for (i = 0; i < allowedModes.length; i++) { | |
if ($equals(allowedModes[i], currentMode)) { | |
return; | |
} | |
} | |
allowedModes.length == 1 && $equals('CSS1Compat', allowedModes[0]) && $equals('BackCompat', currentMode)?"GWT no longer supports Quirks Mode (document.compatMode=' BackCompat').<br>Make sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,<br>e.g. by using <!doctype html> at the start of your application's HTML page.<br><br>To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding<br>the following line to your*.gwt.xml module file:<br> <extend-configuration-property name=\"document.compatMode\" value=\"" + currentMode + '"/>':"Your *.gwt.xml module configuration prohibits the use of the current document rendering mode (document.compatMode=' " + currentMode + "').<br>Modify your application's host HTML page doctype, or update your custom " + "'document.compatMode' configuration property settings."; | |
} | |
function assertCompileTimeUserAgent(){ | |
var compileTimeValue, impl, runtimeValue; | |
impl = castTo(create_com_google_gwt_useragent_client_UserAgent(), 11); | |
compileTimeValue = impl.getCompileTimeValue(); | |
runtimeValue = impl.getRuntimeValue(); | |
if (!$equals(compileTimeValue, runtimeValue)) { | |
throw toJs(new UserAgentAsserter$UserAgentAssertionError(compileTimeValue, runtimeValue)); | |
} | |
} | |
function Error_0(message){ | |
this.detailMessage = message; | |
$fillInStackTrace(this); | |
this.initializeBackingError(); | |
} | |
defineClass(12, 4, $intern_0); | |
var Ljava_lang_Error_2_classLit = createForClass('java.lang', 'Error', 12); | |
defineClass(5, 12, $intern_0); | |
var Ljava_lang_AssertionError_2_classLit = createForClass('java.lang', 'AssertionError', 5); | |
function UserAgentAsserter$UserAgentAssertionError(compileTimeValue, runtimeValue){ | |
var lastArg; | |
Error_0.call(this, (lastArg = 'Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.' == null?'null':toString_0('Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.') , instanceOf('Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.', 4)?castTo('Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (' + compileTimeValue + ') ' + 'does not match the runtime user.agent value (' + runtimeValue + ').\n' + 'Expect more errors.', 4):null , lastArg)); | |
} | |
defineClass(16, 5, $intern_0, UserAgentAsserter$UserAgentAssertionError); | |
var Lcom_google_gwt_useragent_client_UserAgentAsserter$UserAgentAssertionError_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter/UserAgentAssertionError', 16); | |
function UserAgentImplGecko1_8(){ | |
} | |
defineClass(31, 1, $intern_1, UserAgentImplGecko1_8); | |
_.getCompileTimeValue = function getCompileTimeValue(){ | |
return 'gecko1_8'; | |
} | |
; | |
_.getRuntimeValue = function getRuntimeValue(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function(){ | |
return ua.indexOf('webkit') != -1; | |
} | |
()) | |
return 'safari'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
} | |
()) | |
return 'ie10'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
} | |
()) | |
return 'ie9'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
} | |
()) | |
return 'ie8'; | |
if (function(){ | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
} | |
()) | |
return 'gecko1_8'; | |
return 'unknown'; | |
} | |
; | |
var Lcom_google_gwt_useragent_client_UserAgentImplGecko1_18_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplGecko1_8', 31); | |
function UserAgentImplIe10(){ | |
} | |
defineClass(29, 1, $intern_1, UserAgentImplIe10); | |
_.getCompileTimeValue = function getCompileTimeValue_0(){ | |
return 'ie10'; | |
} | |
; | |
_.getRuntimeValue = function getRuntimeValue_0(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function(){ | |
return ua.indexOf('webkit') != -1; | |
} | |
()) | |
return 'safari'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
} | |
()) | |
return 'ie10'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
} | |
()) | |
return 'ie9'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
} | |
()) | |
return 'ie8'; | |
if (function(){ | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
} | |
()) | |
return 'gecko1_8'; | |
return 'unknown'; | |
} | |
; | |
var Lcom_google_gwt_useragent_client_UserAgentImplIe10_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplIe10', 29); | |
function UserAgentImplIe8(){ | |
} | |
defineClass(32, 1, $intern_1, UserAgentImplIe8); | |
_.getCompileTimeValue = function getCompileTimeValue_1(){ | |
return 'ie8'; | |
} | |
; | |
_.getRuntimeValue = function getRuntimeValue_1(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function(){ | |
return ua.indexOf('webkit') != -1; | |
} | |
()) | |
return 'safari'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
} | |
()) | |
return 'ie10'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
} | |
()) | |
return 'ie9'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
} | |
()) | |
return 'ie8'; | |
if (function(){ | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
} | |
()) | |
return 'gecko1_8'; | |
return 'unknown'; | |
} | |
; | |
var Lcom_google_gwt_useragent_client_UserAgentImplIe8_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplIe8', 32); | |
function UserAgentImplIe9(){ | |
} | |
defineClass(28, 1, $intern_1, UserAgentImplIe9); | |
_.getCompileTimeValue = function getCompileTimeValue_2(){ | |
return 'ie9'; | |
} | |
; | |
_.getRuntimeValue = function getRuntimeValue_2(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function(){ | |
return ua.indexOf('webkit') != -1; | |
} | |
()) | |
return 'safari'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
} | |
()) | |
return 'ie10'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
} | |
()) | |
return 'ie9'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
} | |
()) | |
return 'ie8'; | |
if (function(){ | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
} | |
()) | |
return 'gecko1_8'; | |
return 'unknown'; | |
} | |
; | |
var Lcom_google_gwt_useragent_client_UserAgentImplIe9_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplIe9', 28); | |
function UserAgentImplSafari(){ | |
} | |
defineClass(30, 1, $intern_1, UserAgentImplSafari); | |
_.getCompileTimeValue = function getCompileTimeValue_3(){ | |
return 'safari'; | |
} | |
; | |
_.getRuntimeValue = function getRuntimeValue_3(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
var docMode = $doc.documentMode; | |
if (function(){ | |
return ua.indexOf('webkit') != -1; | |
} | |
()) | |
return 'safari'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 10 && docMode < 11; | |
} | |
()) | |
return 'ie10'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 9 && docMode < 11; | |
} | |
()) | |
return 'ie9'; | |
if (function(){ | |
return ua.indexOf('msie') != -1 && docMode >= 8 && docMode < 11; | |
} | |
()) | |
return 'ie8'; | |
if (function(){ | |
return ua.indexOf('gecko') != -1 || docMode >= 11; | |
} | |
()) | |
return 'gecko1_8'; | |
return 'unknown'; | |
} | |
; | |
var Lcom_google_gwt_useragent_client_UserAgentImplSafari_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentImplSafari', 30); | |
function $clinit_DomGlobal(){ | |
$clinit_DomGlobal = emptyMethod; | |
document_0 = $wnd.window.document; | |
} | |
var document_0; | |
function $clinit_Boolean(){ | |
$clinit_Boolean = emptyMethod; | |
} | |
booleanCastMap = {3:1, 17:1}; | |
var Ljava_lang_Boolean_2_classLit = createForClass('java.lang', 'Boolean', 44); | |
function ClassCastException(){ | |
RuntimeException.call(this, null); | |
} | |
defineClass(18, 7, $intern_0, ClassCastException); | |
var Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang', 'ClassCastException', 18); | |
defineClass(45, 1, {3:1}); | |
var Ljava_lang_Number_2_classLit = createForClass('java.lang', 'Number', 45); | |
doubleCastMap = {3:1, 17:1}; | |
var Ljava_lang_Double_2_classLit = createForClass('java.lang', 'Double', 46); | |
defineClass(22, 7, $intern_0); | |
var Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'IndexOutOfBoundsException', 22); | |
defineClass(71, 1, {}); | |
function NullPointerException(){ | |
$fillInStackTrace(this); | |
this.initializeBackingError(); | |
} | |
defineClass(24, 15, $intern_0, NullPointerException); | |
_.createError = function createError_0(msg){ | |
return new TypeError(msg); | |
} | |
; | |
var Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang', 'NullPointerException', 24); | |
function $charAt(this$static, index_0){ | |
checkCriticalStringElementIndex(index_0, this$static.length); | |
return this$static.charCodeAt(index_0); | |
} | |
function $equals(this$static, other){ | |
return checkCriticalNotNull(this$static) , this$static === other; | |
} | |
stringCastMap = {3:1, 52:1, 17:1, 2:1}; | |
var Ljava_lang_String_2_classLit = createForClass('java.lang', 'String', 2); | |
function StringIndexOutOfBoundsException(message){ | |
RuntimeException.call(this, message); | |
} | |
defineClass(23, 22, $intern_0, StringIndexOutOfBoundsException); | |
var Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'StringIndexOutOfBoundsException', 23); | |
defineClass(74, 1, {}); | |
function checkCriticalNotNull(reference){ | |
if (reference == null) { | |
throw toJs(new NullPointerException); | |
} | |
return reference; | |
} | |
function checkCriticalStringElementIndex(index_0, size_0){ | |
if (index_0 < 0 || index_0 >= size_0) { | |
throw toJs(new StringIndexOutOfBoundsException('Index: ' + index_0 + ', Size: ' + size_0)); | |
} | |
} | |
function checkCriticalType(expression){ | |
if (!expression) { | |
throw toJs(new ClassCastException); | |
} | |
} | |
function setPropertySafe(map_0, key, value_0){ | |
try { | |
map_0[key] = value_0; | |
} | |
catch (ignored) { | |
} | |
} | |
defineClass(70, 1, {}); | |
function getHashCode(o){ | |
return o.$H || (o.$H = ++nextHashId); | |
} | |
var nextHashId = 0; | |
function $clinit_StringHashCache(){ | |
$clinit_StringHashCache = emptyMethod; | |
back_0 = new Object_0; | |
front = new Object_0; | |
} | |
function compute(str){ | |
var hashCode, i, n, nBatch; | |
hashCode = 0; | |
n = str.length; | |
nBatch = n - 4; | |
i = 0; | |
while (i < nBatch) { | |
hashCode = (checkCriticalStringElementIndex(i + 3, str.length) , str.charCodeAt(i + 3) + (checkCriticalStringElementIndex(i + 2, str.length) , 31 * (str.charCodeAt(i + 2) + (checkCriticalStringElementIndex(i + 1, str.length) , 31 * (str.charCodeAt(i + 1) + (checkCriticalStringElementIndex(i, str.length) , 31 * (str.charCodeAt(i) + 31 * hashCode))))))); | |
hashCode = hashCode | 0; | |
i += 4; | |
} | |
while (i < n) { | |
hashCode = hashCode * 31 + $charAt(str, i++); | |
} | |
hashCode = hashCode | 0; | |
return hashCode; | |
} | |
function getHashCode_0(str){ | |
$clinit_StringHashCache(); | |
var hashCode, key, result; | |
key = ':' + str; | |
result = front[key]; | |
if (result != null) { | |
return round_int((checkCriticalNotNull(result) , result)); | |
} | |
result = back_0[key]; | |
hashCode = result == null?compute(str):round_int((checkCriticalNotNull(result) , result)); | |
increment(); | |
front[key] = hashCode; | |
return hashCode; | |
} | |
function increment(){ | |
if (count == 256) { | |
back_0 = front; | |
front = new Object_0; | |
count = 0; | |
} | |
++count; | |
} | |
var back_0, count = 0, front; | |
defineClass(450, 1, {}); | |
var $entry = ($clinit_Impl() , entry); | |
var gwtOnLoad = gwtOnLoad = gwtOnLoad_0; | |
addInitFunctions(init); | |
setGwtProperty('permProps', [[['locale', 'default'], ['user.agent', 'gecko1_8']], [['locale', 'default'], ['user.agent', 'ie10']], [['locale', 'default'], ['user.agent', 'ie8']], [['locale', 'default'], ['user.agent', 'ie9']], [['locale', 'default'], ['user.agent', 'safari']]]); | |
if (app) app.onScriptLoad(gwtOnLoad);})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment