From 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 13 Apr 2025 18:48:02 +0100 Subject: initial --- site/code/base.js | 60 + site/code/csound.js | 903 +++++ site/code/csound.js.map | 9 + site/code/csound.orig.js | 903 +++++ site/code/d3.v7.min.js | 2 + site/code/input-knobs.js | 342 ++ site/code/jquery.js | 4 + site/code/nexusui.js | 9393 ++++++++++++++++++++++++++++++++++++++++++++++ site/code/svg.js | 13 + 9 files changed, 11629 insertions(+) create mode 100644 site/code/base.js create mode 100644 site/code/csound.js create mode 100644 site/code/csound.js.map create mode 100644 site/code/csound.orig.js create mode 100644 site/code/d3.v7.min.js create mode 100644 site/code/input-knobs.js create mode 100644 site/code/jquery.js create mode 100644 site/code/nexusui.js create mode 100644 site/code/svg.js (limited to 'site/code') diff --git a/site/code/base.js b/site/code/base.js new file mode 100644 index 0000000..847807f --- /dev/null +++ b/site/code/base.js @@ -0,0 +1,60 @@ +var baseurl = "https://y.1bpm.net/csTest"; + +function csound_ready(Csound) { + $("#loading").hide(); + window.Csound = Csound; +} + +function handleMessage(message) { + var msgbox = $("#csmessages"); + msgbox.val(msgbox.val() + message + "\n"); +} + + +async function make_instance() { + if (!window.csound) { + window.csound = await Csound({useWorker: false, useSAB: false}); + } + window.csound.on("message", handleMessage); + return Promise.resolve(); +} + +async function copyUrlToLocal(url, name) { + const response = await fetch(url); + const bufferSrc = await response.arrayBuffer(); + const buffer = new Uint8Array(bufferSrc); + await csound.fs.writeFile(name, buffer); + return Promise.resolve(); +} + +async function load_files(bug) { + await copyUrlToLocal(baseurl + "/vibe.csd", "vibe.csd"); + await copyUrlToLocal(baseurl + "/input.mp3", "input.mp3"); + return Promise.resolve(); +} + + +async function play() { + $("#bug_status").text("Loading resources"); + await make_instance(); + await load_files(); + await csound.compileCsd("vibe.csd"); + await csound.setOption("-odac"); + await csound.setOption("-b2048"); + await csound.setOption("-m0"); + await csound.setOption("-d"); + await csound.setOption("--ksmps=128"); + + await csound.start(); + return Promise.resolve(); +} + + + +$(function(){ + + $("#bug_play").click(async function() { + await play(); + }); + +}); diff --git a/site/code/csound.js b/site/code/csound.js new file mode 100644 index 0000000..fc1706e --- /dev/null +++ b/site/code/csound.js @@ -0,0 +1,903 @@ +/* + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b}; +goog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1; +goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/; +goog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/; +goog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module."); +goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null; +goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1}; +goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0}; +goog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error('Module with namespace "'+a+'" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error('Module with namespace "'+ +a+'" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0}); +goog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)}; +goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2").replace(/'/g,"'").replace(/"/g,'"').replace(/&/g,"&"));b&&(a=a.replace(/\{\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c}; +goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h\x3c/script>';f+="";f=goog.Dependency.defer_?f+("document.getElementById('script-"+e+"').onload = function() {\n goog.Dependency.callback_('"+e+"', this);\n};\n"):f+("goog.Dependency.callback_('"+e+"', document.getElementById('script-"+e+"'));");f+="\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce= +c);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a, +b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(n,m){var l="",p=goog.getScriptNonce_();p&&(l=' nonce="'+p+'"');n=m?'`,""].join("\n");b=new Blob([b],{type:"text/html"});this.iFrameElement=document.createElement("iframe");this.iFrameElement.src=URL.createObjectURL(b);this.iFrameElement.sandbox.add("allow-scripts","allow-same-origin");this.iFrameElement.style.cssText="position:absolute;left:0;top:-999px;width:1px;height:1px;"; +b=new Promise(c=>{this.iFrameElement.onload=()=>{c()}});a.body.append(this.iFrameElement);try{await b}catch(c){console.error(c)}spnWorker$$module$src$mains$old_spn_main=this.iFrameElement.contentWindow}async initialize(){if(!spnWorker$$module$src$mains$old_spn_main&&(await this.initIframe(),!spnWorker$$module$src$mains$old_spn_main)){console.error("SPN FATAL: Couldn't create iFrame");return}var a=`audioWorklet${UID$$module$src$mains$old_spn_main}`;this.contextUid=a;UID$$module$src$mains$old_spn_main+= +1;proxyPort$$module$src$mains$old_spn_main||(proxyPort$$module$src$mains$old_spn_main=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(spnWorker$$module$src$mains$old_spn_main)));this.audioContext||(this.audioContextIsProvided&&console.error("fatal: the provided AudioContext was undefined"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));"closed"===this.audioContext.state&&(this.audioContextIsProvided&& +console.error("fatal: the provided AudioContext was closed, falling back new AudioContext"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));this.audioContextIsProvided||this.sampleRate===this.audioContext.sampleRate||(this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));spnWorker$$module$src$mains$old_spn_main[a]=this.audioContext;window[`__csound_wasm_iframe_parent_${a}`]=this.audioContext;let b;this.isRequestingInput&& +await new Promise(c=>{requestMicrophoneNode$$module$src$mains$io_utils(d=>{d&&(b=this.audioContext.createMediaStreamSource(d));c()})});logOldSpnMain$$module$src$logger("initializing proxyPort")();await proxyPort$$module$src$mains$old_spn_main.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({contextUid:a,hardwareBufferSize:32768,softwareBufferSize:2048,inputsCount:this.inputsCount,outputsCount:this.outputsCount,sampleRate:this.sampleRate,audioInputPort:this.ipcMessagePorts.audioWorkerAudioInputPort, +messagePort:this.ipcMessagePorts.workerMessagePort2,requestPort:this.ipcMessagePorts.audioWorkerFrameRequestPort,audioContextIsProvided:this.audioContextIsProvided,autoConnect:this.autoConnect,initialPlayState:this.currentPlayState},[this.ipcMessagePorts.audioWorkerAudioInputPort,this.ipcMessagePorts.workerMessagePort2,this.ipcMessagePorts.audioWorkerFrameRequestPort]));logOldSpnMain$$module$src$logger("done initializing proxyPort")();(a=spnWorker$$module$src$mains$old_spn_main[`${a}Node`]||window[`__csound_wasm_iframe_parent_${a}Node`])&& +b&&b.connect(a);this.publicEvents.triggerOnAudioNodeCreated(a);this.isRequestingMidi&&this.csoundWorkerMain&&this.csoundWorkerMain.handleMidiInput&&(logOldSpnMain$$module$src$logger("requesting for web-midi connection")(),requestMidi$$module$src$utils$request_midi({onMidiMessage:this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain)}))}}var $jscompDefaultExport$$module$src$mains$old_spn_main=ScriptProcessorNodeMainThread$$module$src$mains$old_spn_main,module$src$mains$old_spn_main={}; +module$src$mains$old_spn_main.default=$jscompDefaultExport$$module$src$mains$old_spn_main;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k, +b.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length, +"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn't export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt); +const WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants= +10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants= +20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants= +31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41, +WASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants= +52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants= +62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants= +73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants= +7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants= +18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants= +3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants= +16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants= +goog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants= +goog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants= +goog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants= +goog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants| +WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants| +WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants| +WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants| +WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants= +WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants| +WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants| +WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants| +WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants| +WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants| +WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants, +RIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants= +1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants= +0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants; +module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants; +module$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants; +module$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError"; +goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;ec?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;cc&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1}; +goog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;fb?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find; +function module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;fb?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight; +function module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty; +function module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt; +function module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore; +function module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast; +function module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf; +function module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)} +goog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice; +function module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e>>1);let n;n=c?b.call(e,a[k],k,a):b(d,a[k]);0b?1:ac?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove; +function module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;ec*(f-e))return[];if(0f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;db&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}}; +goog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}}; +goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}}; +goog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_}; +goog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got '"+a+"'");return"type_error:Const"}; +goog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={}; +class module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof +module$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))}; +goog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a":"
")}; +goog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&").replace(goog.string.internal.LT_RE_,"<").replace(goog.string.internal.GT_RE_,">").replace(goog.string.internal.QUOT_RE_,""").replace(goog.string.internal.SINGLE_QUOTE_RE_,"'").replace(goog.string.internal.NULL_RE_,"�");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_, +"<"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,">"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.internal.QUOT_RE_,"""));-1!=a.indexOf("'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"'"));-1!=a.indexOf("\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"�"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=//g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g; +goog.string.internal.NULL_RE_=/\x00/g;goog.string.internal.ALL_RE_=/[\x00&<>"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g,"  "),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())}; +goog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&gb?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}; +goog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))}; +goog.html.SAFE_MIME_TYPE_PATTERN_=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\w+=(?:\\w+|"[\\w;,= ]+"))*$',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)}; +goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)}; +goog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\/]+=*$/i; +goog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)}; +goog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)}; +goog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)}; +goog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c); +return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez"; +function module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return'url("'+goog.html.SafeUrl.unwrap(a).replace(/{let f="";d=d.replace(/^(['"])(.*)\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})} +goog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1} +function module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)} +function module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c+~[\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments, +c);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden '<' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof +module$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}} +module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO"; +goog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD"; +goog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM"; +goog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT"; +goog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER"; +goog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT"; +goog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP"; +goog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR"; +goog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a}; +const module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null} +function module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData(); +function module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal} +function module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal} +function module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)} +function module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT; +goog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent; +goog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_= +!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand; +function module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""} +function module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()? +b(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion; +function module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher; +function module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\d\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\d\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b} +function module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version", +"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a=== +module$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&& +a[1]||"":""} +function module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])} +function module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast; +function module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost; +class module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a= +await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1; +async function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions; +goog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()}; +function module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a, +c,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf; +function module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)} +goog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={}; +class module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&& +a.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got '${a}' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof +module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--"+ +goog.string.internal.htmlEscape(a)+"--\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a); +a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d< +a.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c, +f)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+'" with value "'+c[f]+'"':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape; +const module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0, +[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0}; +function module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'Attribute "style" not supported.':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +`Attribute "${b}`+'" requires goog.string.Const value, "'+c+'" given.':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+'" requires goog.html.SafeUrl, goog.string.Const, or string, value "'+ +c+'" given.':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+'"'} +function module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'The "style" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)} +module$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("
")}(); +goog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0}; +goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement}); +goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)}; +goog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)}; +goog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)}; +goog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)}; +goog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))}; +goog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)}; +goog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)}; +goog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)}; +goog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b): +b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)}; +goog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)}; +goog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))}; +goog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)}; +goog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)}; +goog.dom.safe.createImageFromBlob=function(a){if(!/^image\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))}; +goog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_('style[nonce],link[rel="stylesheet"][nonce]',a)};goog.dom.safe.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\u00a0",ZERO_WIDTH_SPACE:"\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals; +goog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")}; +goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare; +goog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g",""":'"'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."), +e+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,"  "),b)}; +goog.string.preserveSpaces=function(a){return a.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;db&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a}; +goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\x0B",'"':'\\"',"\\":"\\\\","<":"\\u003C"};goog.string.jsEscapeCache_={"'":"\\'"}; +goog.string.quote=function(a){a=String(a);const b=['"'];for(let c=0;ce?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;cc)b=a;else{if(256>c){if(b="\\x",16>c||256c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains; +goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)}; +goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})}; +goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0c&&(c=e)}return-1==c?a:a.slice(c+1)}; +goog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e=b?"":a.slice(b+1)}; +goog.string.path.join=function(a){let b=arguments[0];for(let c=1;cd+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}} +const WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0}; +WASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b}; +WASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a}; +WASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START); +default:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants), +!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b, +goog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((l,p)=>l+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,n=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;fq).reduce((p,q)=>{if(n)return p;const [u,t]=p;let x=p=0,r=!1,y=0,v;if(0===q)for(;!r;)v=e[p]?e[p].byteLength:0,y<=h&&v+y>h?(r=!0,x=h-y):(y+=v,p+=1);else p=u,x=t;e[p]?(g.setUint8(l+q,e[p][x]),x+1>=e[p].byteLength?(p=u+1,x=0):x+=1):(g.setUint8(l+q,"\x00"),h+=q,n=!0);return[p,x]},[0,0]),n||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])}; +WASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break; +case WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0{this.fd[a].buffers[0][n+l]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const n=this.getMemory();var m=(this.fd[a]||{path:"/"}).path,l=new Uint8Array(n.buffer,c,d);l=decoder$$module$src$utils$text_encoders.decode(l);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":m,l)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path", +p,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?l=m.fd:(l=this.fd.length,this.fd[l]={fd:l});this.fd[l]={...this.fd[l],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:m?this.fd[l].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for", +p);n.setUint32(k,l,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3c===a);return[b&&b.buffers,b.fd]}; +WASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)}; +WASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]}; +WASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can't append to non-existing file ${a}`)}; +WASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn't been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)}; +WASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)}; +WASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0c&&(c=a[k]),a[k]>=1;p=e<<16|k;for(n=h;n=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}}; +RawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<=f);)b|=d[e++]<>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535}; +RawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken"); +switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c}; +RawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable); +break;default:throw Error("invalid inflate mode");}}; +RawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;ef)d>= +e&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d}; +RawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,n=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,l=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]= +f;else for(f-=257,h=k[f],0e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d}; +RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength; +return c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0}; +Adler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate= +new RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType; +Inflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\n$/g.test(d);e=/^\n/g.test(d);var k=d.split("\n").filter(m=>0{l+1===k.length?h?0===l?(n.push(c.join("")+m), +clearArray$$module$src$utils$clear_array(c)):n.push(m):c.push(m):0===l?(n.push(c.join("")+m),clearArray$$module$src$utils$clear_array(c)):n.push(m)});n.forEach(m=>{m.replace(/(\r\n|\n|\r)/gm,"")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\nPerhaps csdl.h or module.h wasn't imported correctly?"); +return!1}console.error("A csound plugin didn't export __wasm_call_ctors.\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let n=0,m=1;for(;;){const l=a[c++];n+=(l&127)*m;m*=128;if(!(l&128))break}return n}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!"); +if(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn't found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]=== +".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory, +streamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]}; +var $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(v,z)=>{v=await v; +let B,w;try{B=new Uint8Array(z),w=getBinaryHeaderData$$module$src$module(B)}catch(C){console.error("Error in plugin",C)}w&&v.push({headerData:w,wasmPluginBytes:B});return v},[]);var n=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((v,{headerData:z})=>"static"===z?0:v+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+n;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),l=new WebAssembly.Table({initial:k+ +1,element:"anyfunc"});e.setMemory(m);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);n=new WebAssembly.Global({value:"i32",mutable:!1},n);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),u=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const t=e.getImports(a);let x=[],r=d;t.env=t.env||{};t.env.memory=m;t.env.__indirect_function_table= +l;t.env.__stack_pointer=p;t.env.__memory_base=n;t.env.__table_base=q;t.env.csoundLoadModules=v=>{x.forEach(z=>{void 0===y?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(y,z,l,v)});return 0};t.env._ZTH5errno=function(){};t.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});t.env.printDebugCallback=(v,z)=>{v=new Uint8Array(m.buffer,v,z);v=uint2String$$module$src$utils$text_encoders(v);console.log(v)}; +t["GOT.mem"]=t["GOT.mem"]||{};t["GOT.mem"].__heap_base=f;t["GOT.func"]=t["GOT.func"]||{};const y=await WebAssembly.instantiate(a,t);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:m});x=await b.reduce(async(v,{headerData:z,wasmPluginBytes:B})=>{v=await v;try{const {memorySize:w,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(B),A=e.getImports(E),G=new WebAssembly.Global({value:"i32",mutable:!1},r*PAGE_SIZE$$module$src$module);l.grow(F);A.env=Object.assign({},A.env);A.env.memory= +m;A.env.__indirect_function_table=l;A.env.__memory_base=G;A.env.__stack_pointer=p;A.env.__table_base=q;A.env.csoundLoadModules=u;delete A.env.csoundWasiJsMessageCallback;r+=Math.ceil((w+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,A);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),v.push(D))}catch(w){console.error("Error while compiling csound-plugin",w)}return v},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]}, +module$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0; +MessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;class ScriptProcessorNodeSingleThread$$module$src$mains$spn_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.onaudioprocess=this.onaudioprocess.bind(this);this.currentPlayState=void 0;this.onPlayStateChange=this.onPlayStateChange.bind(this);this.start=this.start.bind(this);this.stop=this.stop.bind(this);this.pause= +this.pause.bind(this);this.resume=this.resume.bind(this);this.csoundApi=this.csoundInstance=this.wasm=void 0;this.exportApi={};this.spn=a.createScriptProcessor(0,b,c);this.spn.audioContext=a;this.spn.inputChannelCount=b;this.spn.outputChannelCount=c;this.spn.onaudioprocess=this.onaudioprocess;this.node=this.spn;this.exportApi.getNode=async()=>this.spn;this.sampleRate=a.sampleRate;this.messagePort=new $jscompDefaultExport$$module$src$utils$message_port_state;this.messagePort.post=d=>messageEventHandler$$module$src$mains$messages_main(this)({data:{log:d}}); +this.messagePort.ready=!0;this.started=this.running=!1}async terminateInstance(){this.spn&&(this.spn.disconnect(),delete this.spn);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.publicEvents&&this.currentPlayState!== +a)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.publicEvents.triggerRealtimePerformanceEnded(this);break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.publicEvents.triggerRenderStarted(this);break;case "renderEnded":this.publicEvents.triggerRenderEnded(this)}}async pause(){this.started&& +this.running&&(this.running=!1,this.onPlayStateChange("realtimePerformancePaused"))}async resume(){this.started&&!this.running&&(this.running=!0,this.onPlayStateChange("realtimePerformanceResumed"))}async stop(){if(this.started){this.eventPromises.createStopPromise();const a=this.csoundApi.csoundStop(this.csoundInstance);await this.eventPromises.waitForStop();this.watcherStdOut&&(this.watcherStdOut.close(),delete this.watcherStdOut);this.watcherStdErr&&(this.watcherStdErr.close(),delete this.watcherStdErr); +delete this.csoundInputBuffer;delete this.csoundOutputBuffer;delete this.currentPlayState;return a}}async start(){if(this.csoundApi){var a=(this.csoundApi.csoundGetOutputName(this.csoundInstance)||"test.wav").includes("dac");if(a&&"realtimePerformanceStarted"!==this.currentPlayState){this.result=0;this.csoundApi.csoundSetOption(this.csoundInstance,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;this.cnt=this.ksmps=a=this.csoundApi.csoundGetKsmps(this.csoundInstance);this.nchnls=this.csoundApi.csoundGetNchnls(this.csoundInstance); +this.nchnls_i=this.csoundApi.csoundGetNchnlsInput(this.csoundInstance);var b=this.csoundApi.csoundGetSpout(this.csoundInstance);this.csoundOutputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls);b=this.csoundApi.csoundGetSpin(this.csoundInstance);this.csoundInputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls_i);this.zerodBFS=this.csoundApi.csoundGet0dBFS(this.csoundInstance);this.publicEvents.triggerOnAudioNodeCreated(this.spn);this.eventPromises.createStartPromise(); +a=this.csoundApi.csoundStart(this.csoundInstance);this.csoundApi._isRequestingRtMidiInput(this.csoundInstance)&&requestMidi$$module$src$utils$request_midi({onMidiMessage:({data:c})=>this.csoundApi.csoundPushMidiMessage(this.csoundInstance,c[0],c[1],c[2])});this.running=!0;await this.eventPromises.waitForStart();return a}if(!a&&"renderStarted"!==this.currentPlayState)return a=this.csoundApi.csoundStart(this.csoundInstance),this.onPlayStateChange("renderStarted"),setTimeout(()=>{let c=0;for(;0===c&& +this.csoundApi&&this.csoundInstance;)c=this.csoundApi.csoundPerformKsmps(this.csoundInstance);this.onPlayStateChange&&this.onPlayStateChange("renderEnded")},0),a}else console.error("starting csound failed because csound instance wasn't created")}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){this.plugins||!b||isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)||(b=await fetchPlugins$$module$src$utils(b));if(!this.wasm){const [f,g]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a(), +withPlugins:b,messagePort:this.messagePort});this.wasm=f;this.wasi=g;f.wasi=g}const d=$jscompDefaultExport$$module$src$libcsound(this.wasm);this.csoundApi=d;const e=await d.csoundCreate(0);this.csoundInstance=e;c&&this.spn.connect(this.audioContext.destination);this.resetCsound(!1);Object.keys(d).reduce((f,g)=>{if(["mkdir","readdir","writeFile"].includes(g)){f.fs=f.fs||{};var h=async(...k)=>makeSingleThreadCallback$$module$src$utils(this.wasm,d[g]).apply({},k);h.toString=d[g].toString;f.fs[g]=h}else h= +csoundApiRename$$module$src$utils(g),f[h]=(...k)=>makeSingleThreadCallback$$module$src$utils(e,d[g]).apply({},k),f[h].toString=d[g].toString;return f},this.exportApi);this.exportApi.pause=this.pause.bind(this);this.exportApi.resume=this.resume.bind(this);this.exportApi.start=this.start.bind(this);this.exportApi.stop=this.stop.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioContext;this.exportApi.name="Csound: ScriptProcessor Node, Single-threaded"; +this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.reset=()=>this.resetCsound(!0);this.exportApi.addListener("message",console.log);return this.exportApi}async resetCsound(a){if(a&&"realtimePerformanceEnded"!==this.currentPlayState&&"realtimePerformanceStarted"!==this.currentPlayState)return-1;if("realtimePerformanceStarted"===this.currentPlayState)this.onPlayStateChange("realtimePerformanceEnded");this.started=this.running=!1;this.result=0;const b=this.csoundInstance,c=this.csoundApi; +a&&c.csoundReset(b);c.csoundSetOption(b,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;delete this.csoundOutputBuffer;delete this.csoundInputBuffer}onaudioprocess(a){if(this.csoundApi&&!["renderStarted","renderEnded"].includes(this.currentPlayState)){if(null===this.csoundOutputBuffer||!1===this.running){var b=a.outputBuffer,c=b.getChannelData(0);if(c){c=c.length;for(var d=0;d"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGspe2smJihnb29nLmxvYWRlZE1vZHVsZXNfW2tdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmt8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGwsbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2w9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2wrJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChsKTpsKX1mdW5jdGlvbiBjKGwsbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChsKTpsO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihsKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsbCxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGs9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oayk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwprKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgbD1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChsKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGw9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7bC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgaz1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQprLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGsmJmsuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGs9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBsPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKbD0hMDticmVhaztjYXNlICJBUFBMWSI6bD1uLmFwcGx5KG0sayk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmspO2w9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6dX09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsdSk7bD10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjpsPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7bD17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbayxsXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTprfSxsKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtrLGxdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omt9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxrXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGw9PmwudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBjc291bmRDcmVhdGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uPWE9PigpPT5hLmV4cG9ydHMuY3NvdW5kQ3JlYXRlV2FzaSgpO2Nzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJjcmVhdGUgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kRGVzdHJveShiKTtjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi50b1N0cmluZz0oKT0+ImRlc3Ryb3kgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmRHZXRBUElWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT4oKT0+YS5leHBvcnRzLmNzb3VuZEdldEFQSVZlcnNpb24oKTsKY3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRBUElWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KCk9PmEuZXhwb3J0cy5jc291bmRHZXRWZXJzaW9uKCk7Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kSW5pdGlhbGl6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KGIsYyk9PmEuZXhwb3J0cy5jc291bmRJbml0aWFsaXplKGMpO2Nzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLnRvU3RyaW5nPSgpPT4iaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwp2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249e307bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kQ3JlYXRlPWNzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kRGVzdHJveT1jc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjttb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi5jc291bmRHZXRBUElWZXJzaW9uPWNzb3VuZEdldEFQSVZlcnNpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uO21vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLmNzb3VuZEdldFZlcnNpb249Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kSW5pdGlhbGl6ZT1jc291bmRJbml0aWFsaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjtjb25zdCBXSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzPTE7ZnVuY3Rpb24gVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoKXt0aGlzLmVuY29kaW5nPSJ1dGY4IjtyZXR1cm4gdGhpc31UZXh0RW5jb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigicGFzc2VkIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgIithKyIgIit0eXBlb2YgYSk7YT11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpO2NvbnN0IGI9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgpO1suLi5hXS5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7YltkXT1jLmNvZGVQb2ludEF0KDApfSk7cmV0dXJuIGJ9OwpmdW5jdGlvbiBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycygpe3RoaXMuZW5jb2Rpbmc9InV0ZjgiO3RoaXMuaWdub3JlQk9NPSExO3RoaXMudHJpbU51bGw9YT0+e2NvbnN0IGI9YS5pbmRleE9mKCJceDAwIik7cmV0dXJuLTE8Yj9hLnNsaWNlKDAsTWF0aC5tYXgoMCxiKSk6YX07dGhpcy5kZWNvZGU9ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDA9PT1hKXJldHVybiIiO2lmKCJib29sZWFuIiE9PXR5cGVvZih2b2lkIDAhPT1iJiYic3RyZWFtImluIGI/Yi5zdHJlYW06ITEpKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBvcHRpb24gbXVzdCBiZSBib29sZWFuIik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGEpKXthPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpO2NvbnN0IGM9QXJyYXkuZnJvbSh7bGVuZ3RoOmEubGVuZ3RofSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7Y1tlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChkKX0pOwpyZXR1cm4gdGhpcy50cmltTnVsbChjLmpvaW4oIiIpKX10aHJvdyBuZXcgVHlwZUVycm9yKCJwYXNzZWQgYXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpO319CmNvbnN0IGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1XSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzP25ldyBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczpuZXcgVGV4dERlY29kZXIoInV0ZjgiKSxlbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9V0lUSF9URVhUX0VOQ09ERVJfUE9MWUZJTEwkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz9uZXcgVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM6bmV3IFRleHRFbmNvZGVyKCJ1dGY4IiksdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1hPT5kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKGEpO3ZhciBtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9e307Cm1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGVyPWRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczttb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2Rlcj1lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7bW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLnVpbnQyU3RyaW5nPXVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7Y29uc3QgdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsPWE9Pntjb25zdCBiPWEuaW5kZXhPZigiXHgwMCIpO3JldHVybi0xPGI/YS5zdWJzdHIoMCxiKTphfTt2YXIgbW9kdWxlJHNyYyR1dGlscyR0cmltX251bGw9e307bW9kdWxlJHNyYyR1dGlscyR0cmltX251bGwudHJpbU51bGw9dHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsO2NvbnN0IGZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57YS5leHBvcnRzLmZyZWVTdHJpbmdNZW0oYil9LHB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57KHtidWZmZXI6YX09YS53YXNpLm1lbW9yeSk7Yj1uZXcgVWludDhBcnJheShhLGIpO2I9dWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhiKTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKGIpfSxzdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycz0oYSxiKT0+e2lmKCJzdHJpbmciIT09dHlwZW9mIGIpY29uc29sZS5lcnJvcigiRXhwZWN0ZWQgc3RyaW5nIGJ1dCBnb3QiLHR5cGVvZiBiKTtlbHNle2I9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShiKTt2YXIgYz1hLmV4cG9ydHMuYWxsb2NTdHJpbmdNZW0oYi5sZW5ndGgpOwooe2J1ZmZlcjphfT1hLndhc2kubWVtb3J5KTsobmV3IFVpbnQ4QXJyYXkoYSxjLGIubGVuZ3RoKzEpKS5zZXQoYik7cmV0dXJuIGN9fTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM9e307bW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMuZnJlZVN0cmluZ1B0cj1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVyczttb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycy5wdHIyc3RyaW5nPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzO21vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzLnN0cmluZzJwdHI9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM7Y29uc3QgY3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFBhcnNlT3JjKGIsYyk7Y3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBhcnNlT3JjID0gYXN5bmMgKG9yY2hlc3RyYSkgPT4gT2JqZWN0OyI7Y29uc3QgY3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZENvbXBpbGVUcmVlKGIsYyk7Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVUcmVlID0gYXN5bmMgKHRyZWUpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kQ29tcGlsZU9yYyhiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVPcmMgPSBhc3luYyAob3JjaGVzdHJhKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+e2M9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtiPWEuZXhwb3J0cy5jc291bmRFdmFsQ29kZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZEV2YWxDb2RlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjc291bmRFdmFsQ29kZSA9IGFzeW5jIChvcmNoZXN0cmEpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFN0YXJ0V2FzaShiKTtjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4ic3RhcnQgPSBhc3luYyAoKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2xldCBkO3RyeXtkPWEuZXhwb3J0cy5jc291bmRDb21waWxlQ3NkKGIsYyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBkfTtjc291bmRDb21waWxlQ3NkJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjb21waWxlQ3NkID0gYXN5bmMgKHBhdGgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlQ3NkVGV4dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZENvbXBpbGVDc2RUZXh0KGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVDc2RUZXh0ID0gYXN5bmMgKGNzb3VuZERvY3VtZW50KSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFBlcmZvcm0oYik7Y3NvdW5kUGVyZm9ybSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4icGVyZm9ybSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUtzbXBzV2FzaShiKTtjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBlcmZvcm1Lc21wcyA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFBlcmZvcm1CdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUJ1ZmZlcihiKTtjc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJwZXJmb3JtQnVmZmVyID0gYXN5bmMgKGNzb3VuZCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTdG9wKGIpOwpjc291bmRTdG9wJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJzdG9wID0gYXN5bmMgKCkgPT4gdW5kZWZpbmVkOyI7Y29uc3QgY3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRDbGVhbnVwKGIpO2Nzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNsZWFudXAgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRSZXNldFdhc2koYik7Y3NvdW5kUmVzZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InJlc2V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENsZWFudXA9Y3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRDb21waWxlQ3NkPWNzb3VuZENvbXBpbGVDc2QkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZUNzZFRleHQ9Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZU9yYz1jc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENvbXBpbGVUcmVlPWNzb3VuZENvbXBpbGVUcmVlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7Cm1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRFdmFsQ29kZT1jc291bmRFdmFsQ29kZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQYXJzZU9yYz1jc291bmRQYXJzZU9yYyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQZXJmb3JtPWNzb3VuZFBlcmZvcm0kJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kUGVyZm9ybUJ1ZmZlcj1jc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFBlcmZvcm1Lc21wcz1jc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFJlc2V0PWNzb3VuZFJlc2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0YXJ0PWNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0b3A9Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO2NvbnN0IHNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXM9e2ludDo0LE1ZRkxUOjQsY2hhcjoxfSxzaXplb2ZTdHJ1Y3QkJG1vZHVsZSRzcmMkdXRpbHMkbmF0aXZlX3NpemVzPWE9PmEucmVkdWNlKChiLFssYywuLi5kXSk9PmIrKCJjaGFyIj09PWM/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tjXSpkWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbY10pLDApO3ZhciBtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcz17fTttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplT2ZQcmltaXRpdmU9c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplczttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplb2ZTdHJ1Y3Q9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcztjb25zdCBzdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD0oYSxiKT0+e1thXT1hLnJlZHVjZSgoW2MsZF0sW2UsZiwuLi5nXSk9PntnPSJjaGFyIj09PWY/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tmXSpnWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbZl07Zj0iY2hhciI9PT1mP3RyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGIuc3ViYXJyYXkoZCxnKSkpfHwiIjpiW2RdO2NbZV09ZjtyZXR1cm5bYyxkK2ddfSxbe30sMF0pO3JldHVybiBhfTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD17fTsKbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdC5zdHJ1Y3RCdWZmZXJUb09iamVjdD1zdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdDtjb25zdCBDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGVidWdfbW9kZSIsImludCJdLFsiYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiaGFyZHdhcmVfYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiZGlzcGxheXMiLCJpbnQiXSxbImFzY2lpX2dyYXBocyIsImludCJdLFsicG9zdHNjcmlwdF9ncmFwaHMiLCJpbnQiXSxbIm1lc3NhZ2VfbGV2ZWwiLCJpbnQiXSxbInRlbXBvIiwiaW50Il0sWyJyaW5nX2JlbGwiLCJpbnQiXSxbInVzZV9jc2NvcmUiLCJpbnQiXSxbInRlcm1pbmF0ZV9vbl9taWRpIiwiaW50Il0sWyJoZWFydGJlYXQiLCJpbnQiXSxbImRlZmVyX2dlbjAxX2xvYWQiLCJpbnQiXSxbIm1pZGlfa2V5IiwiaW50Il0sWyJtaWRpX2tleV9jcHMiLCJpbnQiXSxbIm1pZGlfa2V5X29jdCIsImludCJdLFsibWlkaV9rZXlfcGNoIiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5IiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5X2FtcCIsImludCJdLFsibm9fZGVmYXVsdF9wYXRocyIsCiJpbnQiXSxbIm51bWJlcl9vZl90aHJlYWRzIiwiaW50Il0sWyJzeW50YXhfY2hlY2tfb25seSIsImludCJdLFsiY3NkX2xpbmVfY291bnRzIiwiaW50Il0sWyJjb21wdXRlX3dlaWdodHMiLCJpbnQiXSxbInJlYWx0aW1lX21vZGUiLCJpbnQiXSxbInNhbXBsZV9hY2N1cmF0ZSIsImludCJdLFsic2FtcGxlX3JhdGVfb3ZlcnJpZGUiLCJNWUZMVCJdLFsiY29udHJvbF9yYXRlX292ZXJyaWRlIiwiTVlGTFQiXSxbIm5jaG5sc19vdmVycmlkZSIsImludCJdLFsibmNobmxzX2lfb3ZlcnJpZGUiLCJpbnQiXSxbImUwZGJmc19vdmVycmlkZSIsIk1ZRkxUIl0sWyJkYWVtb24iLCJpbnQiXSxbImtzbXBzX292ZXJyaWRlIiwiaW50Il0sWyJGRlRfbGlicmFyeSIsImludCJdXSxDU19NSURJREVWSUNFJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGV2aWNlX25hbWUiLCJjaGFyIiw2NF0sWyJpbnRlcmZhY2VfbmFtZSIsImNoYXIiLDY0XSxbImRldmljZV9pZCIsImNoYXIiLDY0XSxbIm1pZGlfbW9kdWxlIiwKImNoYXIiLDY0XSxbImlzT3V0cHV0IiwiaW50Il1dO3ZhciBtb2R1bGUkc3JjJHN0cnVjdHVyZXM9e307Y29uc3QgY3NvdW5kR2V0U3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcihiKTtjc291bmRHZXRTciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRTciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEtyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0S3IoYik7Y3NvdW5kR2V0S3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0S3IgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRLc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEtzbXBzKGIpO2Nzb3VuZEdldEtzbXBzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldEtzbXBzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldE5jaG5scyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE5jaG5scyhiKTtjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0TmNobmxzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0TmNobmxzSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXROY2hubHNJbnB1dChiKTtjc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXROY2hubHNJbnB1dCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0MGRCRlMoYik7CmNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldDBkQkZTID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRBNChiKTtjc291bmRHZXRBNCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRBNCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyhiKTtjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0Q3VycmVudFRpbWVTYW1wbGVzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNpemVPZk1ZRkxUJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQoYik7Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0U2l6ZU9mTVlGTFQgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFNldE9wdGlvbihiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJzZXRPcHRpb24gPSBhc3luYyAob3B0aW9uKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT4oYixjKT0+e2EuZXhwb3J0cy5jc291bmRTZXRQYXJhbXMoYixjKX07Y3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldFBhcmFtcyA9IGFzeW5jIChjc291bmRQYXJhbXMpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2NvbnN0IGQ9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcyhDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXMpLGU9YS5leHBvcnRzLmFsbG9jQ3NvdW5kUGFyYW1zU3RydWN0KCk7Yz1uZXcgVWludDhBcnJheShjLGUsZCk7YS5leHBvcnRzLmNzb3VuZEdldFBhcmFtcyhiLGUpO2I9c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NPVU5EX1BBUkFNUyQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGMpO2EuZXhwb3J0cy5mcmVlQ3NvdW5kUGFyYW1zKGUpO3JldHVybiBifTtjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0UGFyYW1zID0gYXN5bmMgKCkgPT4gQ1NPVU5EX1BBUkFNUzsiOwpjb25zdCBjc291bmRHZXREZWJ1ZyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldERlYnVnKGIpO2Nzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldERlYnVnID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57YS5leHBvcnRzLmNzb3VuZFNldERlYnVnKGIsYyl9O2Nzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldERlYnVnID0gYXN5bmMgKG51bWJlcikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldDBkQkZTPWNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0QTQ9Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcz1jc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldERlYnVnPWNzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXRLcj1jc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0S3NtcHM9Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzOwptb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHM9Y3NvdW5kR2V0TmNobmxzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHNJbnB1dD1jc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0UGFyYW1zPWNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQ9Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldFNyPWNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kU2V0RGVidWc9Y3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldE9wdGlvbj1jc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldFBhcmFtcz1jc291bmRTZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO2NvbnN0IGNzb3VuZEdldElucHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldElucHV0QnVmZmVyU2l6ZShiKTtjc291bmRHZXRJbnB1dEJ1ZmZlclNpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE91dHB1dEJ1ZmZlclNpemUoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRJbnB1dEJ1ZmZlcihiKTsKY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXIgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRPdXRwdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXRCdWZmZXIoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldE91dHB1dEJ1ZmZlciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcGluKGIpO2Nzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0U3BpbiA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldFNwb3V0KGIpO2Nzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldFNwb3V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldElucHV0QnVmZmVyPWNzb3VuZEdldElucHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRJbnB1dEJ1ZmZlclNpemU9Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRPdXRwdXRCdWZmZXI9Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzsKbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8uY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZT1jc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRTcGluPWNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvO21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldFNwb3V0PWNzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbztmdW5jdGlvbiBhZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5hZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOk51bWJlcihhKStOdW1iZXIoYil9Y29uc3QgY2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7ZnVuY3Rpb24gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9W10pe3JldHVybiguLi5jKT0+e2M9Wy4uLmIsLi4uY107cmV0dXJuIGMubGVuZ3RoPj1hLmxlbmd0aD9hKC4uLmMpOmN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKX19CmZ1bmN0aW9uIGFkanVzdEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2NvbnN0IGQ9MD5hP2MubGVuZ3RoK2E6YTtpZihhPj1jLmxlbmd0aHx8MD5kKXJldHVybiBjO2E9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7YVtkXT1iKGFbZF0pO3JldHVybiBhfWNvbnN0IGFkanVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYWRqdXN0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspaWYoIWEoYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYWxsUGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+e2xldCBjPTA7Zm9yKDtjPGEubGVuZ3RoOyl7aWYoIWFbY10oLi4uYikpcmV0dXJuITE7YysrfXJldHVybiEwfX1mdW5jdGlvbiBhbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYj0+YX0KZnVuY3Rpb24gYW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJiZifWZ1bmN0aW9uIGFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9MDtmb3IoO2M8Yi5sZW5ndGg7KXtpZihhKGJbY10sYykpcmV0dXJuITA7YysrfXJldHVybiExfQpmdW5jdGlvbiBhbnlQYXNzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuKC4uLmIpPT57bGV0IGM9MDtmb3IoO2M8YS5sZW5ndGg7KXtpZihhW2NdKC4uLmIpKXJldHVybiEwO2MrK31yZXR1cm4hMX19ZnVuY3Rpb24gYXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLnNwbGl0KCIiKS5jb25jYXQoYSk7Y29uc3QgYz1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjLnB1c2goYSk7cmV0dXJuIGN9CmZ1bmN0aW9uIGFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmEuYXBwbHkodGhpcyxiKX1jb25zdCB7aXNBcnJheTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN9PUFycmF5OwpmdW5jdGlvbiBfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9MCl7Zm9yKGNvbnN0IGMgaW4gYSkhMSE9PWEuaGFzT3duUHJvcGVydHkoYykmJiJjb25zdHJ1Y3RvciIhPT1jJiYoIm9iamVjdCI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2NdKSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixhW2NdLmxlbmd0aCkpKTtyZXR1cm4gYn0KZnVuY3Rpb24gX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2NvbnN0IGE9W107bGV0IGI9MDtjb25zdCBjPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtiPGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFyZ3VtZW50c1tiXTspYVtiXT1hcmd1bWVudHNbYl0sYisrO3JldHVybiBhfQpmdW5jdGlvbiBfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXt2YXIgZD1iLWMubGVuZ3RoO2lmKDE9PT1kKXJldHVybiBmPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZikpO2lmKDI9PT1kKXJldHVybihmLGcpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZixnKSk7aWYoMz09PWQpcmV0dXJuKGYsZyxoKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLApiLF9fZmlsdGVyVW5kZWZpbmVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoLi4uYyxmLGcsaCkpO2lmKDQ9PT1kKXJldHVybihmLGcsaCxrKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyguLi5jLGYsZyxoLGspKTtpZig0PGQpcmV0dXJuKC4uLmYpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsLi4uZikpO2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSl7dmFyIGU9W107ZD0wO2NvbnN0IGY9YS5sZW5ndGg7CmZvcig7ZDxmO2QrKyl7aWYoIm9iamVjdCI9PT10eXBlb2YgYVtkXXx8aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pKWVbZF09X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdLGIsYyk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhW2RdJiYoZVtkXT1hW2RdKC4uLmMpKX1yZXR1cm4gZX1kPXt9O2ZvcihlIGluIGEpITEhPT1hLmhhc093blByb3BlcnR5KGUpJiYiY29uc3RydWN0b3IiIT09ZSYmKCJvYmplY3QiPT09dHlwZW9mIGFbZV0/ZFtlXT1fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZV0sYixjKToiZnVuY3Rpb24iPT09dHlwZW9mIGFbZV0mJihkW2VdPWFbZV0oLi4uYykpKTtyZXR1cm4gZH0KZnVuY3Rpb24gYXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPV9fZmluZEhpZ2hlc3RBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpO3JldHVybiAwPT09Yz8oKT0+KHt9KTpfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyxiKX1mdW5jdGlvbiBhc3NvY0ZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGMse1thXTpifSl9Y29uc3QgYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIF9pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYTw8MD09PWF9Y29uc3QgaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9TnVtYmVyLmlzSW50ZWdlcnx8X2lzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBhc3NvY1BhdGhGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtjb25zdCBkPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiLiIpLm1hcChlPT5pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhOdW1iZXIoZSkpP051bWJlcihlKTplKTphO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gYjthPWRbMF07aWYoMTxkLmxlbmd0aCl7Y29uc3QgZT0ib2JqZWN0Ij09PXR5cGVvZiBjJiZudWxsIT09YyYmYy5oYXNPd25Qcm9wZXJ0eShhKT9jW2FdOmlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGRbMV0pP1tdOnt9O2I9YXNzb2NQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkLDEpLGIsZSl9cmV0dXJuIGlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpJiYKaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpPyhjPWNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpLGNbYV09YixjKTphc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKX1jb25zdCBhc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jUGF0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPTA7bGV0IGU9MDtjb25zdCBmPWIubGVuZ3RoLGc9YXJndW1lbnRzLmxlbmd0aCxoPUFycmF5KGYrZyk7Zm9yKDtkPGY7KWhbZF09YltkXSxkKys7Zm9yKDtlPGc7KWhbZitlXT1hcmd1bWVudHNbZV0sZSsrO2Q9YS1oLmxlbmd0aDtyZXR1cm4gaC5sZW5ndGg+PWE/Yy5hcHBseSh0aGlzLGgpOl9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxoLGMpKX19CmZ1bmN0aW9uIF9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihjLGQsZSxmKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07CmNhc2UgNzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDg6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDk6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtLG4pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fQpmdW5jdGlvbiBjdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5jdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKDEwPGEpdGhyb3cgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIF9hcml0eSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpO3JldHVybiBfYXJpdHkkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsX2N1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsW10sYikpfQpmdW5jdGlvbiBiaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS5sZW5ndGgsKC4uLmMpPT5hLmFwcGx5KGIsYykpfWZ1bmN0aW9uIGJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5ib3RoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTooLi4uYyk9PmEoLi4uYykmJmIoLi4uYyl9CmZ1bmN0aW9uIGNoYWluJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOltdLmNvbmNhdCguLi5iLm1hcChhKSl9ZnVuY3Rpb24gY2xhbXBGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZihhPmIpdGhyb3cgRXJyb3IoIm1pbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4IGluIGNsYW1wKG1pbiwgbWF4LCB2YWx1ZSkiKTtpZihjPj1hJiZjPD1iKXJldHVybiBjO2lmKGM+YilyZXR1cm4gYjtpZihjPGEpcmV0dXJuIGF9Y29uc3QgY2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGNsYW1wRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGNsb25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk/QXJyYXkoYS5sZW5ndGgpOnt9O2lmKGEmJmEuZ2V0VGltZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2Zvcihjb25zdCBjIGluIGEpe2NvbnN0IGQ9YVtjXTtiW2NdPSJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kP2QuZ2V0VGltZT9uZXcgRGF0ZShkLmdldFRpbWUoKSk6Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkKTpkfXJldHVybiBifWZ1bmN0aW9uIGNvbXBsZW1lbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PiFhKC4uLmIpfQpjbGFzcyBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN7Y29uc3RydWN0b3IoYSl7dGhpcy52YWx1ZT1hfX1mdW5jdGlvbiByZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZTogbGlzdCBtdXN0IGJlIGFycmF5IG9yIGl0ZXJhYmxlIik7bGV0IGQ9MDtjb25zdCBlPWMubGVuZ3RoO2Zvcig7ZDxlOyl7Yj1hKGIsY1tkXSxkLGMpO2lmKGIgaW5zdGFuY2VvZiBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpcmV0dXJuIGIudmFsdWU7ZCsrfXJldHVybiBifQpjb25zdCByZWR1Y2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpLHJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT5uZXcgUmVkdWNlU3RvcHBlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpOwpmdW5jdGlvbiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihjLGQpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTsKY2FzZSA3OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCxrKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0sbil7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKTt9fQpmdW5jdGlvbiBfcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2FsbCh0aGlzLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19CmZ1bmN0aW9uIHBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJwaXBlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhcmd1bWVudHNbMF0ubGVuZ3RoLHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX3BpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyxhcmd1bWVudHNbMF0sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEsSW5maW5pdHkpKSl9CmZ1bmN0aW9uIGNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJjb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBwaXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkucmV2ZXJzZSgpKX1mdW5jdGlvbiBjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5jb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOiJzdHJpbmciPT09dHlwZW9mIGE/YCR7YX0ke2J9YDpbLi4uYSwuLi5iXX0KZnVuY3Rpb24gY29uZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBiPT57bGV0IGM9ITEsZDthLmZvckVhY2goKFtlLGZdKT0+eyFjJiZlKGIpJiYoYz0hMCxkPWYoYikpfSk7cmV0dXJuIGR9fWNvbnN0IHtrZXlzOmtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzfT1PYmplY3Q7ZnVuY3Rpb24gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYz0hMSl7bGV0IGQ9MDtjb25zdCBlPUFycmF5KGIubGVuZ3RoKTtmb3IoO2Q8Yi5sZW5ndGg7KWVbZF09Yz9hKGJbZF0sZCk6YShiW2RdKSxkKys7cmV0dXJuIGV9CmZ1bmN0aW9uIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGc9Pm1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZyk7bGV0IGM9MDtjb25zdCBkPWtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLGU9ZC5sZW5ndGgsZj17fTtmb3IoO2M8ZTspe2NvbnN0IGc9ZFtjXTtmW2ddPWEoYltnXSxnLGIpO2MrK31yZXR1cm4gZn1jb25zdCBtYXBPYmpJbmRleGVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7CmZ1bmN0aW9uIG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9Pm1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoIWIpdGhyb3cgRXJyb3IoSU5DT1JSRUNUX0lURVJBQkxFX0lOUFVUKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP21hcEFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTptYXBPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBtYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmI+YT9iOmF9CmZ1bmN0aW9uIGNvbnZlcmdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9Pm1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsZS5sZW5ndGgpLDAsYik7cmV0dXJuIGN1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQ9PmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGIpKX0pfQpmdW5jdGlvbiBjb3VudCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmNvdW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/Yi5maWx0ZXIoYz0+YShjKSkubGVuZ3RoOjB9ZnVuY3Rpb24gY291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmNvdW50QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9e307Yi5mb3JFYWNoKGQ9PntkPWEoZCk7Y1tkXT9jW2RdKys6Y1tkXT0xfSk7cmV0dXJuIGN9CmNvbnN0IGRlYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PmEtMTtmdW5jdGlvbiBpc0ZhbHN5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIHZvaWQgMD09PWF8fG51bGw9PT1hfHwhMD09PU51bWJlci5pc05hTihhKX1mdW5jdGlvbiBkZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5kZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzRmFsc3kkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKT9hOmJ9CmZ1bmN0aW9uIHR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtpZihudWxsPT09YSlyZXR1cm4iTnVsbCI7aWYodm9pZCAwPT09YSlyZXR1cm4iVW5kZWZpbmVkIjtpZihOdW1iZXIuaXNOYU4oYSkpcmV0dXJuIk5hTiI7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkuc2xpY2UoOCwtMSk7cmV0dXJuIkFzeW5jRnVuY3Rpb24iPT09YT8iUHJvbWlzZSI6YX0KZnVuY3Rpb24gX2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpKXRocm93IEVycm9yKGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnaW5kZXhPZicgb2YgJHtifWApO3ZhciBjPXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtpZighWyJPYmplY3QiLCJBcnJheSIsIk5hTiIsIlJlZ0V4cCJdLmluY2x1ZGVzKGMpKXJldHVybiBiLmxhc3RJbmRleE9mKGEpOyh7bGVuZ3RoOmN9PWIpO2xldCBkPS0xO2Zvcig7LTE8LS1jJiYtMT09PWQ7KWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGJbY10sYSkmJihkPWMpO3JldHVybiBkfQpmdW5jdGlvbiBfaW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ2luZGV4T2YnIG9mICR7Yn1gKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoIVsiT2JqZWN0IiwiQXJyYXkiLCJOYU4iLCJSZWdFeHAiXS5pbmNsdWRlcyhjKSlyZXR1cm4gYi5pbmRleE9mKGEpO2xldCBkPWM9LTE7Y29uc3Qge2xlbmd0aDplfT1iO2Zvcig7KytjPGUmJi0xPT09ZDspZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYltjXSxhKSYmKGQ9Yyk7cmV0dXJuIGR9CmZ1bmN0aW9uIF9hcnJheUZyb21JdGVyYXRvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2NvbnN0IGI9W107bGV0IGM7Zm9yKDshKGM9YS5uZXh0KCkpLmRvbmU7KWIucHVzaChjLnZhbHVlKTtyZXR1cm4gYn1mdW5jdGlvbiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoYS5zaXplIT09Yi5zaXplKXJldHVybiExO2E9X2FycmF5RnJvbUl0ZXJhdG9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS52YWx1ZXMoKSk7Y29uc3QgYz1fYXJyYXlGcm9tSXRlcmF0b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLnZhbHVlcygpKTtyZXR1cm4gMD09PWEuZmlsdGVyKGQ9Pi0xPT09X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkLGMpKS5sZW5ndGh9CmZ1bmN0aW9uIHBhcnNlRXJyb3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPWEuX19wcm90b19fLnRvU3RyaW5nKCk7cmV0dXJuWyJFcnJvciIsIlR5cGVFcnJvciJdLmluY2x1ZGVzKGIpP1tiLGEubWVzc2FnZV06W119ZnVuY3Rpb24gcGFyc2VEYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9EYXRlU3RyaW5nP1shMCxhLmdldFRpbWUoKV06WyExXX1mdW5jdGlvbiBwYXJzZVJlZ2V4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEuY29uc3RydWN0b3IhPT1SZWdFeHA/WyExXTpbITAsYS50b1N0cmluZygpXX0KZnVuY3Rpb24gZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoYyE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlyZXR1cm4hMTtpZigiRnVuY3Rpb24iPT09YylyZXR1cm4gdm9pZCAwPT09YS5uYW1lPyExOmEubmFtZT09PWIubmFtZTtpZihbIk5hTiIsIlVuZGVmaW5lZCIsIk51bGwiXS5pbmNsdWRlcyhjKSlyZXR1cm4hMDtpZigiTnVtYmVyIj09PWMpcmV0dXJuIE9iamVjdC5pcygtMCxhKSE9PU9iamVjdC5pcygtMCxiKT8hMTphLnRvU3RyaW5nKCk9PT1iLnRvU3RyaW5nKCk7aWYoWyJTdHJpbmciLCJCb29sZWFuIl0uaW5jbHVkZXMoYykpcmV0dXJuIGEudG9TdHJpbmcoKT09PQpiLnRvU3RyaW5nKCk7aWYoIkFycmF5Ij09PWMpe2M9QXJyYXkuZnJvbShhKTtjb25zdCBmPUFycmF5LmZyb20oYik7aWYoYy50b1N0cmluZygpIT09Zi50b1N0cmluZygpKXJldHVybiExO2xldCBnPSEwO2MuZm9yRWFjaCgoaCxrKT0+e2cmJihoPT09ZltrXXx8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxmW2tdKXx8KGc9ITEpKX0pO3JldHVybiBnfXZhciBkPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxlPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtpZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZURhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtlPXBhcnNlRGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpOwppZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7ZT1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZFswXSlyZXR1cm4gZVswXT9kWzBdPT09ZVswXSYmZFsxXT09PWVbMV06ITE7aWYoIlNldCI9PT1jKXJldHVybiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYik7aWYoIk9iamVjdCI9PT1jKXtjPU9iamVjdC5rZXlzKGEpO2lmKGMubGVuZ3RoIT09T2JqZWN0LmtleXMoYikubGVuZ3RoKXJldHVybiExO2xldCBmPSEwO2MuZm9yRWFjaChnPT57aWYoZil7Y29uc3QgaD1hW2ddO2c9YltnXTtoPT09Z3x8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxnKXx8KGY9ITEpfX0pOwpyZXR1cm4gZn1yZXR1cm4hMX1mdW5jdGlvbiBpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmluY2x1ZGVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLmluY2x1ZGVzKGEpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5IFwnaW5kZXhPZlwnIG9mICR7Yn1gKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpPy0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTohMX0KY2xhc3MgX1NldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpze2NvbnN0cnVjdG9yKCl7dGhpcy5zZXQ9bmV3IFNldDt0aGlzLml0ZW1zPXt9fWNoZWNrVW5pcXVlbmVzcyhhKXt2YXIgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJOdWxsIiwiVW5kZWZpbmVkIiwiTmFOIl0uaW5jbHVkZXMoYik/YiBpbiB0aGlzLml0ZW1zPyExOnRoaXMuaXRlbXNbYl09ITA6WyJPYmplY3QiLCJBcnJheSJdLmluY2x1ZGVzKGIpP2IgaW4gdGhpcy5pdGVtcz8tMT09PV9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSx0aGlzLml0ZW1zW2JdKT8odGhpcy5pdGVtc1tiXS5wdXNoKGEpLCEwKTohMToodGhpcy5pdGVtc1tiXT1bYV0sITApOihiPXRoaXMuc2V0LnNpemUsdGhpcy5zZXQuYWRkKGEpLHRoaXMuc2V0LnNpemUhPT1iKX19CmZ1bmN0aW9uIHVuaXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPW5ldyBfU2V0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMsYz1bXTthLmZvckVhY2goZD0+e2IuY2hlY2tVbmlxdWVuZXNzKGQpJiZjLnB1c2goZCl9KTtyZXR1cm4gY31mdW5jdGlvbiBkaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZGlmZmVyZW5jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6dW5pcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLmZpbHRlcihjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpKX0KZnVuY3Rpb24gZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+ZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZihudWxsPT09Ynx8dm9pZCAwPT09YilyZXR1cm57fTtjb25zdCBjPXt9O2Zvcihjb25zdCBkIGluIGIpY1tkXT1iW2RdO2RlbGV0ZSBjW2FdO3JldHVybiBjfWZ1bmN0aW9uIGRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS9ifQpmdW5jdGlvbiBkcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Yi5zbGljZSgwPGE/YTowKX1mdW5jdGlvbiBkcm9wTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRyb3BMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPGE/Yi5zbGljZSgwLC1hKTpiLnNsaWNlKCl9CmZ1bmN0aW9uIGRyb3BMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxnKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7Y29uc3QgYz1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKGAncHJlZGljYXRlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYX1gKTtpZighYyYmInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYn1gKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPWIubGVuZ3RoO2Zvcig7MDxmOylmLS0sZHx8ITEhPT1hKGJbZl0pP2QmJmUucHVzaChiW2ZdKToKKGQ9ITAsZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lLnJldmVyc2UoKTplLnJldmVyc2UoKS5qb2luKCIiKX1mdW5jdGlvbiBkcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYCR7YX0gaXMgbm90IGEgbGlzdGApO2NvbnN0IGI9W107YS5yZWR1Y2UoKGMsZCk9PntlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGQpfHxiLnB1c2goZCk7cmV0dXJuIGR9LHZvaWQgMCk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgJHtifSBpcyBub3QgYSBsaXN0YCk7Y29uc3QgYz1bXTtiLnJlZHVjZSgoZCxlKT0+e2lmKHZvaWQgMD09PWQpcmV0dXJuIGMucHVzaChlKSxlO2EoZCxlKXx8Yy5wdXNoKGUpO3JldHVybiBlfSx2b2lkIDApO3JldHVybiBjfQpmdW5jdGlvbiBkcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWQ/ZS5wdXNoKGJbZl0pOmEoYltmXSl8fChkfHwoZD0hMCksZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIGVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6KC4uLmMpPT4hKCFhKC4uLmMpJiYhYiguLi5jKSl9CmZ1bmN0aW9uIGVuZHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKCJzdHJpbmciPT09dHlwZW9mIGIpcmV0dXJuIGIuZW5kc1dpdGgoYSk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSlyZXR1cm4hMTtjb25zdCBjPWIubGVuZ3RoLWEubGVuZ3RoO2xldCBkPSEwO3JldHVybiBhLmZpbHRlcigoZSxmKT0+e2lmKCFkKXJldHVybiExOyhlPWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGUsYltmK2NdKSl8fChkPSExKTtyZXR1cm4gZX0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoYilyZXR1cm4gYlthXX1mdW5jdGlvbiBlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKX1jb25zdCBlcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGV2b2x2ZUFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygoYyxkKT0+IkZ1bmN0aW9uIj09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9hW2RdKGMpOmMsYiwhMCl9CmZ1bmN0aW9uIGV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChjLGQpPT57aWYoIk9iamVjdCI9PT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYykpe2NvbnN0IGU9dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pO3JldHVybiJGdW5jdGlvbiI9PT1lP2FbZF0oYyk6Ik9iamVjdCI9PT1lP2V2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0sYyk6Y31yZXR1cm4iRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pP2FbZF0oYyk6Y30sYil9CmZ1bmN0aW9uIGV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7Y29uc3QgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSksZD10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZCE9PWMpdGhyb3cgRXJyb3IoIml0ZXJhYmxlVHlwZSAhPT0gcnVsZXNUeXBlIik7aWYoIVsiT2JqZWN0IiwiQXJyYXkiXS5pbmNsdWRlcyhjKSl0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBhbmQgJ3J1bGVzJyBhcmUgZnJvbSB3cm9uZyB0eXBlICR7Y31gKTtyZXR1cm4iT2JqZWN0Ij09PWQ/ZXZvbHZlT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTpldm9sdmVBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsCmIpfWZ1bmN0aW9uIEYkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe3JldHVybiExfWZ1bmN0aW9uIGZpbHRlck9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBiKWEoYltkXSxkLGIpJiYoY1tkXT1iW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBmaWx0ZXJBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjPSExKXtsZXQgZD0wO2NvbnN0IGU9Yi5sZW5ndGgsZj1bXTtmb3IoO2Q8ZTspKGM/YShiW2RdLGQpOmEoYltkXSkpJiZmLnB1c2goYltkXSksZCsrO3JldHVybiBmfQpmdW5jdGlvbiBmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5maWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFiKXRocm93IEVycm9yKCJJbmNvcnJlY3QgaXRlcmFibGUgaW5wdXQiKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2ZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLCExKTpmaWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBmaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9MDtjb25zdCBkPWIubGVuZ3RoO2Zvcig7YzxkOyl7Y29uc3QgZT1iW2NdO2lmKGEoZSkpcmV0dXJuIGU7YysrfX1mdW5jdGlvbiBmaW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5maW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2NvbnN0IGM9Yi5sZW5ndGg7bGV0IGQ9LTE7Zm9yKDsrK2Q8YzspaWYoYShiW2RdKSlyZXR1cm4gZDtyZXR1cm4tMX0KZnVuY3Rpb24gZmluZExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5maW5kTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9Yi5sZW5ndGg7Zm9yKDswPD0tLWM7KWlmKGEoYltjXSkpcmV0dXJuIGJbY119ZnVuY3Rpb24gZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmZpbmRMYXN0SW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2xldCBjPWIubGVuZ3RoO2Zvcig7MDw9LS1jOylpZihhKGJbY10pKXJldHVybiBjO3JldHVybi0xfQpmdW5jdGlvbiBmbGF0dGVuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtiPXZvaWQgMD09PWI/W106Yjtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKylpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtjXSk/ZmxhdHRlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbY10sYik6Yi5wdXNoKGFbY10pO3JldHVybiBifQpmdW5jdGlvbiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PntpZigxPT09Yi5sZW5ndGgpcmV0dXJuIGM9PmEoYyxiWzBdKTtpZigyPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdKTtpZigzPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdLGJbMl0pO2lmKDQ9PT1iLmxlbmd0aClyZXR1cm4gYShiWzFdLGJbMF0sYlsyXSxiWzNdKTt0aHJvdyBFcnJvcigiUi5mbGlwIGRvZXNuJ3Qgd29yayB3aXRoIGFyaXR5ID4gNCIpO319ZnVuY3Rpb24gZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0KZnVuY3Rpb24gZm9yRWFjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKHZvaWQgMCE9PWIpe2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDspYShiW2NdKSxjKys7ZWxzZXtjPTA7ZD1rZXlzJDEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjb25zdCBlPWQubGVuZ3RoO2Zvcig7YzxlOyl7Y29uc3QgZj1kW2NdO2EoYltmXSxmLGIpO2MrK319cmV0dXJuIGJ9fQpmdW5jdGlvbiBmcm9tUGFpcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPXt9O2EuZm9yRWFjaCgoW2MsZF0pPT5iW2NdPWQpO3JldHVybiBifWZ1bmN0aW9uIGdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5ncm91cEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF0sZj1hKGUpO2NbZl18fChjW2ZdPVtdKTtjW2ZdLnB1c2goZSl9cmV0dXJuIGN9CmZ1bmN0aW9uIGdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJsaXN0LnJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoMT09PWIubGVuZ3RoKXJldHVybltjXTtjb25zdCBkPVtdO2xldCBlPVtdO2MucmVkdWNlKChmLGcsaCk9PntpZigwPT09aClyZXR1cm4gZztjb25zdCBrPWEoZixnKSxsPTA9PT1lLmxlbmd0aDtoPWg9PT1iLmxlbmd0aC0xO2lmKGspcmV0dXJuIGwmJmUucHVzaChmKSxlLnB1c2goZyksaCYmZC5wdXNoKGUpLGc7aWYobClyZXR1cm4gZC5wdXNoKFtmXSksaCYmZC5wdXNoKFtnXSksZztkLnB1c2goZSk7aCYmZC5wdXNoKFtnXSk7ZT1bXTtyZXR1cm4gZ30sCnZvaWQgMCk7cmV0dXJuIGR9ZnVuY3Rpb24gaGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+aGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiP2IuaGFzT3duUHJvcGVydHkoYSk6ITF9ZnVuY3Rpb24gY3JlYXRlUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYj0iLiIpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdChiKTphfQpmdW5jdGlvbiBwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1iLGQ9MCxlPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtkPGUubGVuZ3RoOyl7aWYobnVsbD09PWN8fHZvaWQgMD09PWN8fG51bGw9PT1jW2VbZF1dKXJldHVybjtjPWNbZVtkXV07ZCsrfXJldHVybiBjfX0KZnVuY3Rpb24gaGFzUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pmhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnZvaWQgMCE9PXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfWZ1bmN0aW9uIGhlYWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2FbMF18fCIiOmFbMF19ZnVuY3Rpb24gX29iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYT09PWI/MCE9PWF8fDEvYT09PTEvYjphIT09YSYmYiE9PWJ9Y29uc3Qgb2JqZWN0SXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1PYmplY3QuaXN8fF9vYmplY3RJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBpZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOm9iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBpZGVudGl0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBhfWZ1bmN0aW9uIGlmRWxzZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiguLi5kKT0+ITA9PT0oImJvb2xlYW4iPT09dHlwZW9mIGE/YTphKC4uLmQpKT9iKC4uLmQpOmMoLi4uZCl9CmNvbnN0IGlmRWxzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaWZFbHNlRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyksaW5jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+YSsxO2Z1bmN0aW9uIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1twYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKV09ZX1yZXR1cm4gY30KZnVuY3Rpb24gaW5kZXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1thKGUpXT1lfXJldHVybiBjfQpmdW5jdGlvbiBpbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOl9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBiYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7bGV0IGQ9LTEse2xlbmd0aDplfT1hO2M9Yz5lP2U6YzswPmMmJihjKz1lKTtlPWI+Yz8wOmMtYj4+PjA7Yj4+Pj0wO2ZvcihjPUFycmF5KGUpOysrZDxlOyljW2RdPWFbZCtiXTtyZXR1cm4gY30KZnVuY3Rpb24gaW5pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zbGljZSgwLC0xKTphLmxlbmd0aD9iYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLDAsLTEpOltdfWZ1bmN0aW9uIGludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+aW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGEpLGIpfQpmdW5jdGlvbiBpbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGY9PmludGVyc3BlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtsZXQgYz0tMTtjb25zdCBkPWIubGVuZ3RoLGU9W107Zm9yKDsrK2M8ZDspYz09PWQtMT9lLnB1c2goYltjXSk6ZS5wdXNoKGJbY10sYSk7cmV0dXJuIGV9ZnVuY3Rpb24gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bnVsbCE9YiYmYi5jb25zdHJ1Y3Rvcj09PWF8fGIgaW5zdGFuY2VvZiBhfQpmdW5jdGlvbiBpc0VtcHR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJVbmRlZmluZWQiLCJOYU4iLCJOdW1iZXIiLCJOdWxsIl0uaW5jbHVkZXMoYik/ITE6YT8iT2JqZWN0Ij09PWI/MD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aDoiQXJyYXkiPT09Yj8wPT09YS5sZW5ndGg6ITE6ITB9ZnVuY3Rpb24gaXNOaWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09PWF9CmZ1bmN0aW9uIGpvaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5qb2luJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiLmpvaW4oYSl9ZnVuY3Rpb24ganV4dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+YS5tYXAoYz0+YyguLi5iKSl9ZnVuY3Rpb24ga2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKX1mdW5jdGlvbiBsYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hW2EubGVuZ3RoLTFdfHwiIjphW2EubGVuZ3RoLTFdfQpmdW5jdGlvbiBsYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pl9sYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBsZW5ndGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2EubGVuZ3RoOk5hTn0KZnVuY3Rpb24gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gYyhhKGQpKS5tYXAoZT0+YihlLGQpKX19fWZ1bmN0aW9uIG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz0wPmE/Yi5sZW5ndGgrYTphO3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP2IuY2hhckF0KGMpOmJbY119CmZ1bmN0aW9uIHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2M9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7cmV0dXJuLTE9PT1hP2MuZmlsbChiLGEpOmMuZmlsbChiLGEsYSsxKX1jb25zdCB1cGRhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBsZW5zSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLHVwZGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBsZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBsZW5zJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLGFzc29jUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX0KZnVuY3Rpb24gbGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBtYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm1hdGNoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPWIubWF0Y2goYSk7cmV0dXJuIG51bGw9PT1jP1tdOmN9CmZ1bmN0aW9uIG1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXRoTW9kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTohaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl8fCFpc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKXx8MT5iP05hTjooYSViK2IpJWJ9ZnVuY3Rpb24gbWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT5hKGIpP2M6Yn1jb25zdCBtYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gc3VtJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEucmVkdWNlKChiLGMpPT5iK2MsMCl9ZnVuY3Rpb24gbWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBzdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKS9hLmxlbmd0aH1mdW5jdGlvbiBtZWRpYW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT09YilyZXR1cm4gTmFOO2NvbnN0IGM9Mi1iJTI7Yj0oYi1jKS8yO3JldHVybiBtZWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKS5zb3J0KChkLGUpPT5kPT09ZT8wOmQ8ZT8tMToxKS5zbGljZShiLGIrYykpfQpmdW5jdGlvbiBtZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6T2JqZWN0LmFzc2lnbih7fSxhfHx7fSxifHx7fSl9ZnVuY3Rpb24gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtsZXQgYj17fTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT57Yj1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKX0sYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIG1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGQ9PnsiT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2RdKT8iT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9jW2RdPW1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtkXSxiW2RdKTpjW2RdPWJbZF06Y1tkXT1iW2RdfSk7cmV0dXJuIGN9CmZ1bmN0aW9uIG1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsYSl9ZnVuY3Rpb24gbWVyZ2VXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Y29uc3QgZD17fTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGU9PntkW2VdPXZvaWQgMD09PWNbZV0/YltlXTphKGJbZV0sY1tlXSl9KTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGU9Pnt2b2lkIDA9PT1kW2VdJiYoZFtlXT12b2lkIDA9PT1iW2VdP2NbZV06YShiW2VdLGNbZV0pKX0pO3JldHVybiBkfQpjb25zdCBtZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1lcmdlV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIG1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YjxhP2I6YX1mdW5jdGlvbiBtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGMpPGEoYik/YzpifWNvbnN0IG1pbkJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBvd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXt2YXIgYz1PYmplY3Qua2V5cyhhKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGEpO2ImJihkPWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZSkuZW51bWVyYWJsZX0pKTtjLnB1c2guYXBwbHkoYyxkKX1yZXR1cm4gY30KZnVuY3Rpb24gX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtmb3IodmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz1udWxsIT1hcmd1bWVudHNbYl0/YXJndW1lbnRzW2JdOnt9O2IlMj9vd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoT2JqZWN0KGMpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe19kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCxjW2RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGEsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYykpOm93bktleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhPYmplY3QoYykpLmZvckVhY2goZnVuY3Rpb24oZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsCmQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGQpKX0pfXJldHVybiBhfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtiIGluIGE/T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7dmFsdWU6YyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmFbYl09YztyZXR1cm4gYX1mdW5jdGlvbiBpc0l0ZXJhYmxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSl8fCJPYmplY3QiPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfQpmdW5jdGlvbiBtb2RpZnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXNJdGVyYWJsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpJiZ2b2lkIDAhPT1jW2FdP2lzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT91cGRhdGVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYihjW2FdKSxjKTpfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thXTpiKGNbYV0pfSk6Y31jb25zdCBtb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZGlmeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7YT1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoMT09PWEubGVuZ3RoKXJldHVybiBfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thWzBdXTpiKGNbYVswXV0pfSk7aWYodm9pZCAwPT09cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYykpcmV0dXJuIGM7Yj1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwxKSxiLGNbYVswXV0pO3JldHVybiBiPT09Y1thWzBdXT9jOmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVswXSwKYixjKX1jb25zdCBtb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gbW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJWJ9CmZ1bmN0aW9uIG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZigwPmF8fDA+Yil0aHJvdyBFcnJvcigiUmFtYmRhLm1vdmUgZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbmRleGVzIik7aWYoYT5jLmxlbmd0aC0xfHxiPmMubGVuZ3RoLTEpcmV0dXJuIGM7Y29uc3QgZD1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKTtkW2FdPWNbYl07ZFtiXT1jW2FdO3JldHVybiBkfWNvbnN0IG1vdmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gbXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tdWx0aXBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YSpifWZ1bmN0aW9uIG5lZ2F0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybi1hfWZ1bmN0aW9uIG5vbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylpZihhKGJbY10pKXJldHVybiExO3JldHVybiEwfQpmdW5jdGlvbiBub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4hYX1mdW5jdGlvbiBvYmpPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9iak9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTp7W2FdOmJ9fWZ1bmN0aW9uIG9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuW2FdfQpmdW5jdGlvbiBvbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+b21pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe3ZhciBjPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLCIsIiksZD17fTtmb3IoY29uc3QgZSBpbiBiKWMuaW5jbHVkZXMoZSl8fChkW2VdPWJbZV0pO3JldHVybiBkfX0KZnVuY3Rpb24gb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxkKXtyZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGg/ZT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxlKToyPT09YXJndW1lbnRzLmxlbmd0aD8oZSxmKT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsZSxmKTphKGIoYyksYihkKSl9ZnVuY3Rpb24gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oKXthJiYoYz1hLmFwcGx5KGJ8fHRoaXMsYXJndW1lbnRzKSxhPW51bGwpO3JldHVybiBjfX0KZnVuY3Rpb24gb25jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2NvbnN0IGM9b25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtyZXR1cm4gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKX1yZXR1cm4gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphfHxifWNvbnN0IElkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+KHt4OmEsbWFwOmI9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihhKSl9KTsKZnVuY3Rpb24gb3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGQ9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihkKSkpKGMpLnh9Y29uc3Qgb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMob3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXJ0aWFsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPWEubGVuZ3RoO3JldHVybiguLi5kKT0+Yi5sZW5ndGgrZC5sZW5ndGg+PWM/YSguLi5iLC4uLmQpOnBhcnRpYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLC4uLlsuLi5iLC4uLmRdKX1mdW5jdGlvbiBwYXJ0aWFsT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYz0+YShtZXJnZURlZXBSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwYXJ0aXRpb25PYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2NvbnN0IGM9e30sZD17fTtPYmplY3QuZW50cmllcyhiKS5mb3JFYWNoKChbZSxmXSk9PnthKGYsZSk/Y1tlXT1mOmRbZV09Zn0pO3JldHVybltjLGRdfWZ1bmN0aW9uIHBhcnRpdGlvbkFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGM9ITEpe2NvbnN0IGQ9W10sZT1bXTtsZXQgZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOykoYz9hKGJbZl0sZik6YShiW2ZdKSk/ZC5wdXNoKGJbZl0pOmUucHVzaChiW2ZdKTtyZXR1cm5bZCxlXX0KZnVuY3Rpb24gcGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpOnBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil9CmZ1bmN0aW9uIHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKSxiKX1jb25zdCBwYXRoRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9Y29uc3QgcGF0aE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcGF0aHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS5tYXAoYz0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwaWNrJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGljayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWNbZV1pbiBiJiYoZFtjW2VdXT1iW2NbZV1dKSxlKys7cmV0dXJuIGR9fQpmdW5jdGlvbiBwaWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGlja0FsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWRbY1tlXV09Y1tlXWluIGI/YltjW2VdXTp2b2lkIDAsZSsrO3JldHVybiBkfX0KZnVuY3Rpb24gcGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5wbHVjayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz1bXTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkPT57dm9pZCAwIT09ZFthXSYmYy5wdXNoKGRbYV0pfSxiKTtyZXR1cm4gY31mdW5jdGlvbiBwcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cHJlcGVuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6InN0cmluZyI9PT10eXBlb2YgYj9bYV0uY29uY2F0KGIuc3BsaXQoIiIpKTpbYV0uY29uY2F0KGIpfQpjb25zdCBwcm9kdWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcywxKTtmdW5jdGlvbiBwcm9wRXFGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYz9lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKTohMX1jb25zdCBwcm9wRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwcm9wSXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGNbYl0pfWNvbnN0IHByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcElzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gcHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGM/ZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjW2JdKTphfWNvbnN0IHByb3BPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIHByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoInByb3BzVG9QaWNrIGlzIG5vdCBhIGxpc3QiKTtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT5iW2NdLGEpfWZ1bmN0aW9uIHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9CmNvbnN0IHByb3BTYXRpc2ZpZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYoTnVtYmVyLmlzTmFOKE51bWJlcihhKSl8fE51bWJlci5pc05hTihOdW1iZXIoYikpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIHJhbmdlIG11c3QgYmUgbnVtYmVycyIpO2lmKGI8YSlyZXR1cm5bXTtjb25zdCBjPWItYSxkPUFycmF5KGMpO2ZvcihsZXQgZT0wO2U8YztlKyspZFtlXT1hK2U7cmV0dXJuIGR9CmZ1bmN0aW9uIHJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+IWEoYyksYil9ZnVuY3Rpb24gcmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpBcnJheShiKS5maWxsKGEpfWZ1bmN0aW9uIHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5yZXBsYWNlKGEsYil9CmNvbnN0IHJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTtmdW5jdGlvbiByZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6YS5zbGljZSgpLnJldmVyc2UoKX1mdW5jdGlvbiBzZXRGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYWx3YXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYiksYyl9CmNvbnN0IHNldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoc2V0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gc2xpY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5zbGljZShhLGIpfWNvbnN0IHNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhzbGljZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBzb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c29ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikuc29ydChhKX1mdW5jdGlvbiBzb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLnNvcnQoKGMsZCk9PntjPWEoYyk7ZD1hKGQpO3JldHVybiBjPT09ZD8wOmM8ZD8tMToxfSl9CmZ1bmN0aW9uIHNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c3BsaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmIuc3BsaXQoYSl9ZnVuY3Rpb24gbWF5YmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Yj1hJiYiRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2IoKTpiO2M9YXx8IkZ1bmN0aW9uIiE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT9jOmMoKTtyZXR1cm4gYT9iOmN9CmZ1bmN0aW9uIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT50YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPmE/Yi5zbGljZSgpOiJzdHJpbmciPT09dHlwZW9mIGI/Yi5zbGljZSgwLGEpOmJhc2VTbGljZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsMCxhKX0KZnVuY3Rpb24gc3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PnNwbGl0QXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdzbGljZScgb2YgJHtifWApO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikmJiJzdHJpbmciIT09dHlwZW9mIGIpcmV0dXJuW1tdLFtdXTtjb25zdCBjPW1heWJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoMD5hLDA+Yi5sZW5ndGgrYT8wOmIubGVuZ3RoK2EsYSk7cmV0dXJuW3Rha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLApiKV19ZnVuY3Rpb24gc3BsaXRFdmVyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKDE+YSl0aHJvdyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gc3BsaXRFdmVyeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2NvbnN0IGM9W107bGV0IGQ9MDtmb3IoO2Q8Yi5sZW5ndGg7KWMucHVzaChiLnNsaWNlKGQsZCs9YSkpO3JldHVybiBjfQpmdW5jdGlvbiBzcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5zcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdsZW5ndGgnIG9mICR7Yn1gKTtjb25zdCBjPVtdLGQ9W107bGV0IGU9ITEsZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOyllP2QucHVzaChiW2ZdKTphKGJbZl0pPyhkLnB1c2goYltmXSksZT0hMCk6Yy5wdXNoKGJbZl0pO3JldHVybltjLGRdfQpmdW5jdGlvbiBzdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+c3RhcnRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoInN0cmluZyI9PT10eXBlb2YgYilyZXR1cm4gYi5zdGFydHNXaXRoKGEpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpcmV0dXJuITE7bGV0IGM9ITA7cmV0dXJuIGEuZmlsdGVyKChkLGUpPT57aWYoIWMpcmV0dXJuITE7KGQ9ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxiW2VdKSl8fChjPSExKTtyZXR1cm4gZH0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBzdWJ0cmFjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphLWJ9CmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGEpLGZpbHRlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9PiFpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYSksYikpfQpmdW5jdGlvbiBUJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKXtyZXR1cm4hMH1mdW5jdGlvbiB0YWlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygxLGEpfQpmdW5jdGlvbiB0YWtlTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPWIubGVuZ3RoO2lmKDA+YSlyZXR1cm4gYi5zbGljZSgpO2xldCBkPWE+Yz9jOmE7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYj9iLnNsaWNlKGMtZCk6YmFzZVNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjLWQsYyl9CmZ1bmN0aW9uIHRha2VMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBmPT50YWtlTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7bGV0IGM9ITE7Y29uc3QgZD1bXTtsZXQgZT1iLmxlbmd0aDtmb3IoOyFjfHwwPT09ZTspZS0tLCExPT09YShiW2VdKT9jPSEwOmN8fGQucHVzaChiW2VdKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2QucmV2ZXJzZSgpOmQucmV2ZXJzZSgpLmpvaW4oIiIpfQpmdW5jdGlvbiB0YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT50YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMDtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWEoYltmXSk/ZCYmZS5wdXNoKGJbZl0pOmQmJihkPSExKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIHRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7YShiKTtyZXR1cm4gYn1mdW5jdGlvbiB0ZXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoInN0cmluZyI9PT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGBcdTIwMTh0ZXN0XHUyMDE5IHJlcXVpcmVzIGEgdmFsdWUgb2YgdHlwZSBSZWdFeHAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50OyByZWNlaXZlZCAiJHthfSJgKTtyZXR1cm4tMSE9PWIuc2VhcmNoKGEpfQpmdW5jdGlvbiB0aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRpbWVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZighaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYil8fDA+Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGFuIGludGVnZXIiKTtyZXR1cm4gbWFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxyYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKDAsYikpfWZ1bmN0aW9uIHRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfQpmdW5jdGlvbiB0b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGEpfWZ1bmN0aW9uIHRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9TdHJpbmcoKX1mdW5jdGlvbiB0b1VwcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9VcHBlckNhc2UoKX1mdW5jdGlvbiB0cmFuc3Bvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS5yZWR1Y2UoKGIsYyk9PntjLmZvckVhY2goKGQsZSk9PmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2VdKT9iW2VdLnB1c2goZCk6Yi5wdXNoKFtkXSkpO3JldHVybiBifSxbXSl9CmZ1bmN0aW9uIHRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50cmltKCl9Y29uc3QgaXNGdW5jdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PlsiUHJvbWlzZSIsIkZ1bmN0aW9uIl0uaW5jbHVkZXModHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKTsKZnVuY3Rpb24gdHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKCFpc0Z1bmN0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYFIudHJ5Q2F0Y2ggfCBmbiAnJHthfSdgKTtjb25zdCBjPWlzRnVuY3Rpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtyZXR1cm4oLi4uZCk9Pnt0cnl7cmV0dXJuIGEoLi4uZCl9Y2F0Y2goZSl7cmV0dXJuIGM/YihlLC4uLmQpOmJ9fX1mdW5jdGlvbiB1bmFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3JldHVybiBhLmNhbGwodGhpcyxiKX19CmZ1bmN0aW9uIHVuaW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7Yi5mb3JFYWNoKGQ9PntpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYSl8fGMucHVzaChkKX0pO3JldHVybiBjfQpmdW5jdGlvbiB1bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT51bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9bmV3IFNldDtyZXR1cm4gYi5maWx0ZXIoZD0+e2lmKGMuaGFzKGEoZCkpKXJldHVybiExO2MuYWRkKGEoZCkpO3JldHVybiEwfSl9ZnVuY3Rpb24gaW5jbHVkZXNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2xldCBkPSExLGU9LTE7Zm9yKDsrK2U8Yy5sZW5ndGgmJiFkOylhKGIsY1tlXSkmJihkPSEwKTtyZXR1cm4gZH0KZnVuY3Rpb24gdW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT51bmlxV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9LTE7Y29uc3QgZD1bXTtmb3IoOysrYzxiLmxlbmd0aDspe2NvbnN0IGU9YltjXTtpbmNsdWRlc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUsZCl8fGQucHVzaChlKX1yZXR1cm4gZH1mdW5jdGlvbiB1bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmM9PmEoYyk/YzpiKGMpfQpmdW5jdGlvbiB1bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2FdKT9tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9Pl9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyh7fSxiKSx7fSx7W2FdOmN9KSxiW2FdKTpbYl19CmZ1bmN0aW9uIHZhbHVlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJPYmplY3QiIT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpP1tdOk9iamVjdC52YWx1ZXMoYSl9Y29uc3QgQ29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT4oe3g6YSxtYXA6Yj0+Q29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0pO2Z1bmN0aW9uIHZpZXckJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT52aWV3JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphKENvbnN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpKGIpLnh9CmZ1bmN0aW9uIHdoZW5GbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT9iKGMpOmN9Y29uc3Qgd2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMod2hlbkZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIHdoZXJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZih2b2lkIDA9PT1iKXJldHVybiBkPT53aGVyZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9ITA7Zm9yKGNvbnN0IGQgaW4gYSl7aWYoIWMpY29udGludWU7Y29uc3QgZT1hW2RdKGJbZF0pO2MmJiExPT09ZSYmKGM9ITEpfXJldHVybiBjfQpmdW5jdGlvbiB3aGVyZUFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYodm9pZCAwPT09YilyZXR1cm4gYz0+d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2Zvcihjb25zdCBjIGluIGEpaWYoYVtjXShiW2NdKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gd2hlcmVFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PndoZXJlRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9PmVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYltlXSksYSk7cmV0dXJuIE9iamVjdC5rZXlzKGMpLmxlbmd0aD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aH0KZnVuY3Rpb24gd2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/Yz0+d2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGMsZCk9Pi0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxhKT9jOmMuY29uY2F0KGQpLFtdLGIpfWZ1bmN0aW9uIHhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ISFhJiYhYnx8ISFiJiYhYX0KZnVuY3Rpb24gemlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPVtdLGQ9TWF0aC5taW4oYS5sZW5ndGgsYi5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8ZDtlKyspY1tlXT1bYVtlXSxiW2VdXTtyZXR1cm4gY31mdW5jdGlvbiB6aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT56aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aCxhKS5yZWR1Y2UoKGMsZCxlKT0+e2NbZF09YltlXTtyZXR1cm4gY30se30pfQpmdW5jdGlvbiB6aXBXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aD5jLmxlbmd0aD9jLmxlbmd0aDpiLmxlbmd0aCxiKS5tYXAoKGQsZSk9PmEoZCxjW2VdKSl9Y29uc3QgemlwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoemlwV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9e307bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLkY9RiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuVD1UJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLl9fZmluZEhpZ2hlc3RBcml0eT1fX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuX2FyaXR5PV9hcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5faW5kZXhPZj1faW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fbGFzdEluZGV4T2Y9X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fcGlwZT1fcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hZGQ9YWRkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFkanVzdD1hZGp1c3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYWxsPWFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbGxQYXNzPWFsbFBhc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFsd2F5cz1hbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYW5kPWFuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbnk9YW55JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFueVBhc3M9YW55UGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBlbmQ9YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseT1hcHBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseVNwZWM9YXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jPWFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jUGF0aD1hc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYmluZD1iaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ib3RoPWJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2hhaW49Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xhbXA9Y2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xvbmU9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29tcGxlbWVudD1jb21wbGVtZW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb21wb3NlPWNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29uY2F0PWNvbmNhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb25kPWNvbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29udmVyZ2U9Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY291bnQ9Y291bnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmNvdW50Qnk9Y291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeT1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeU49Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRlYz1kZWMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGVmYXVsdFRvPWRlZmF1bHRUbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGlmZmVyZW5jZT1kaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRpc3NvYz1kaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGl2aWRlPWRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wPWRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZHJvcExhc3Q9ZHJvcExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BMYXN0V2hpbGU9ZHJvcExhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0cz1kcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0c1dpdGg9ZHJvcFJlcGVhdHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BXaGlsZT1kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVpdGhlcj1laXRoZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZW5kc1dpdGg9ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXFQcm9wcz1lcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVxdWFscz1lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlPWV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlQXJyYXk9ZXZvbHZlQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlT2JqZWN0PWV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maWx0ZXI9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlckFycmF5PWZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlck9iamVjdD1maWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmQ9ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maW5kSW5kZXg9ZmluZEluZGV4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0PWZpbmRMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0SW5kZXg9ZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mbGF0dGVuPWZsYXR0ZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZsaXA9ZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mb3JFYWNoPWZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZnJvbVBhaXJzPWZyb21QYWlycyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ncm91cEJ5PWdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZ3JvdXBXaXRoPWdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGFzPWhhcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5oYXNQYXRoPWhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGVhZD1oZWFkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlkZW50aWNhbD1pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaWRlbnRpdHk9aWRlbnRpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlmRWxzZT1pZkVsc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5jPWluYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmNsdWRlcz1pbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmRleEJ5PWluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5kZXhPZj1pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbml0PWluaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW50ZXJzZWN0aW9uPWludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbnRlcnNwZXJzZT1pbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pcz1pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pc0VtcHR5PWlzRW1wdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlzTmlsPWlzTmlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmpvaW49am9pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5qdXh0PWp1eHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMua2V5cz1rZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmxhc3Q9bGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGFzdEluZGV4T2Y9bGFzdEluZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuZ3RoPWxlbmd0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zPWxlbnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc0luZGV4PWxlbnNJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zUGF0aD1sZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc1Byb3A9bGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWFwPW1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBBcnJheT1tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmpJbmRleGVkPW1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmplY3Q9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRjaD1tYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRoTW9kPW1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWF4PW1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeT1tYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeUZuPW1heEJ5Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lYW49bWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tZWRpYW49bWVkaWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlPW1lcmdlUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VBbGw9bWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VEZWVwUmlnaHQ9bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlTGVmdD1tZXJnZUxlZnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VSaWdodD1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlV2l0aD1tZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluPW1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5taW5CeT1taW5CeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluQnlGbj1taW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeT1tb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kaWZ5UGF0aD1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeVBhdGhGbj1tb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kdWxvPW1vZHVsbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW92ZT1tb3ZlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm11bHRpcGx5PW11bHRpcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5lZ2F0ZT1uZWdhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubm9uZT1ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5vdD1ub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm50aD1udGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2JqT2Y9b2JqT2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2Y9b2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub21pdD1vbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm9uPW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5vbmNlPW9uY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3I9b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3Zlcj1vdmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpYWw9cGFydGlhbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXJ0aWFsT2JqZWN0PXBhcnRpYWxPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpdGlvbj1wYXJ0aXRpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uQXJyYXk9cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uT2JqZWN0PXBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRoPXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aEVxPXBhdGhFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aE9yPXBhdGhPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRocz1wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5waWNrPXBpY2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGlja0FsbD1waWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBpcGU9cGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGx1Y2s9cGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJlcGVuZD1wcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb2R1Y3Q9cHJvZHVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wPXByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcEVxPXByb3BFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcElzPXByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wT3I9cHJvcE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb3BTYXRpc2ZpZXM9cHJvcFNhdGlzZmllcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wcz1wcm9wcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yYW5nZT1yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVkdWNlPXJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VGbj1yZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VTdG9wcGVyPXJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVqZWN0PXJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBlYXQ9cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBsYWNlPXJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmV2ZXJzZT1yZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNldD1zZXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc2xpY2U9c2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc29ydD1zb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zb3J0Qnk9c29ydEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0PXNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0QXQ9c3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zcGxpdEV2ZXJ5PXNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3BsaXRXaGVuPXNwbGl0V2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3RhcnRzV2l0aD1zdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1YnRyYWN0PXN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1bT1zdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3ltbWV0cmljRGlmZmVyZW5jZT1zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhaWw9dGFpbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudGFrZT10YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0PXRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0V2hpbGU9dGFrZUxhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50YWtlV2hpbGU9dGFrZVdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhcD10YXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRlc3Q9dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50aW1lcz10aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b0xvd2VyPXRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudG9QYWlycz10b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRvU3RyaW5nPXRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b1VwcGVyPXRvVXBwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJhbnNwb3NlPXRyYW5zcG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50cmltPXRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJ5Q2F0Y2g9dHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHlwZT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51bmFwcGx5PXVuYXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pb249dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcT11bmlxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVuaXFCeT11bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcVdpdGg9dW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVubGVzcz11bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW53aW5kPXVud2luZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51cGRhdGU9dXBkYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVwZGF0ZUZuPXVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZhbHVlcz12YWx1ZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZpZXc9dmlldyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aGVuPXdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmU9d2hlcmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVBbnk9d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVFcT13aGVyZUVxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aXRob3V0PXdpdGhvdXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMueG9yPXhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy56aXA9emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnppcE9iaj16aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuemlwV2l0aD16aXBXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Y29uc3QgY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT57YS5leHBvcnRzLmNzb3VuZFNldE1pZGlDYWxsYmFja3MoYil9LGNzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMpPT57Y29uc3Qge2J1ZmZlcjpkfT1hLndhc2kubWVtb3J5LGU9YS5leHBvcnRzLmNzb3VuZEdldE1JRElEZXZMaXN0KGIsdm9pZCAwLGM/MTowKTtpZigwPT09ZSlyZXR1cm5bXTtjb25zdCBmPXNpemVvZlN0cnVjdCQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXMoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzKSxnPWEuZXhwb3J0cy5hbGxvY0NzTWlkaURldmljZVN0cnVjdChlKTthLmV4cG9ydHMuY3NvdW5kR2V0TUlESURldkxpc3QoYixnLGM/MTowKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KGQsZyxmKmUpO2I9cmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygwLAplKS5tYXAoaz0+c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGguc3ViYXJyYXkoaypmLGYpKSk7YS5leHBvcnRzLmZyZWVDc01pZGlEZXZpY2VTdHJ1Y3QoZyk7cmV0dXJuIGJ9O2Nzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLnRvU3RyaW5nPSgpPT4iZ2V0TUlESURldkxpc3QgPSBhc3luYyAoaXNPdXRwdXQpID0+IE9iamVjdDsiOwpjb25zdCBjc291bmRHZXRSdE1pZGlOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldFJ0TWlkaU5hbWUoYik7Yz1uZXcgVWludDhBcnJheShjLGIsMTI4KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS50b1N0cmluZz0oKT0+ImdldFJ0TWlkaU5hbWUgPSBhc3luYyAoKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldE1pZGlPdXRGaWxlTmFtZShiKTtjPW5ldyBVaW50OEFycmF5KGMsYiwxMjgpO2ImJjA8Yi5sZW5ndGgmJmZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7cmV0dXJuIHRyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGMpKXx8IiJ9LF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT5hLmV4cG9ydHMuaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoYiksY3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMsZCxlKT0+e2EuZXhwb3J0cy5wdXNoTWlkaU1lc3NhZ2UoYiwKYyxkLGUpfTtjc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkudG9TdHJpbmc9KCk9PiJtaWRpTWVzc2FnZSA9IGFzeW5jIChzdGF0dXMsIGRhdGExLCBkYXRhMikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk9e307bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQ9X2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpO21vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkuY3NvdW5kR2V0TUlESURldkxpc3Q9Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRHZXRNaWRpT3V0RmlsZU5hbWU9Y3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpOwptb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZEdldFJ0TWlkaU5hbWU9Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaTttb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZFB1c2hNaWRpTWVzc2FnZT1jc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRTZXRNaWRpQ2FsbGJhY2tzPWNzb3VuZFNldE1pZGlDYWxsYmFja3MkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7Y29uc3QgY3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJpbnB1dE1lc3NhZ2UgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlQXN5bmMoYixjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBifTtjc291bmRJbnB1dE1lc3NhZ2VBc3luYyQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLnRvU3RyaW5nPSgpPT4iaW5wdXRNZXNzYWdlQXN5bmMgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0Q29udHJvbENoYW5uZWxXYXNpKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+ImdldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2EuZXhwb3J0cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbChiLGMsZCk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKX07Y3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lLCB2YWx1ZSkgPT4gdm9pZDsiOwpjb25zdCBjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0U3RyaW5nQ2hhbm5lbFdhc2koYixjKTtjb25zdCBkPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGIpO3JldHVybiBkfTtjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJnZXRTdHJpbmdDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kU2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzPWE9PihiLGMsZCk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZD1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGQpO2EuZXhwb3J0cy5jc291bmRTZXRTdHJpbmdDaGFubmVsKGIsYyxkKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsZCl9O2Nzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldFN0cmluZ0NoYW5uZWwgPSBhc3luYyAoY2hhbm5lbE5hbWUsIHZhbHVlKSA9PiB2b2lkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldENvbnRyb2xDaGFubmVsPWNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldFN0cmluZ0NoYW5uZWw9Y3NvdW5kR2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRJbnB1dE1lc3NhZ2U9Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZElucHV0TWVzc2FnZUFzeW5jPWNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7Cm1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbD1jc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRTdHJpbmdDaGFubmVsPWNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cztjb25zdCBjc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz1hPT5iPT57dmFyIHtidWZmZXI6Y309YS53YXNpLm1lbW9yeTtiPWEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0T3V0cHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXROYW1lID0gYXN5bmMgKCkgPT4gU3RyaW5nOyI7CmNvbnN0IGNzb3VuZEdldElucHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW89YT0+Yj0+e3ZhciB7YnVmZmVyOmN9PWEud2FzaS5tZW1vcnk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0SW5wdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby50b1N0cmluZz0oKT0+ImdldElucHV0TmFtZSA9IGFzeW5jIChjc291bmQpID0+IFN0cmluZzsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz17fTttb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby5jc291bmRHZXRJbnB1dE5hbWU9Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbzsKbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8uY3NvdW5kR2V0T3V0cHV0TmFtZT1jc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbztjb25zdCBjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYT1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2Q9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtiPWEuZXhwb3J0cy5jc291bmRBcHBlbmRFbnYoYixjLGQpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtyZXR1cm4gYn07Y3NvdW5kQXBwZW5kRW52JCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEudG9TdHJpbmc9KCk9PiJhcHBlbmRFbnYgPSBhc3luYyAoY3NvdW5kLCB2YXJpYWJsZSwgdmFsdWUpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTaG91bGREYWVtb25pemUoYik7CnZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmE9e307bW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhLmNzb3VuZEFwcGVuZEVudj1jc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYTttb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEuY3NvdW5kU2hvdWxkRGFlbW9uaXplPWNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhO2NvbnN0IGNzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZElzU2NvcmVQZW5kaW5nKGIpO2Nzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJpc1Njb3JlUGVuZGluZyA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kU2V0U2NvcmVQZW5kaW5nKGIsYyk7Y3NvdW5kU2V0U2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJzZXRTY29yZVBlbmRpbmcgPSBhc3luYyAocGVuZGluZykgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFJlYWRTY29yZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4icmVhZFNjb3JlID0gYXN5bmMgKHNjb3JlKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRTY29yZVRpbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2NvcmVUaW1lKGIpO2Nzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4iZ2V0U2NvcmVUaW1lID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMoYik7Y3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJnZXRTY29yZU9mZnNldFNlY29uZHMgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyhiLGMpO2Nzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4ic2V0U2NvcmVPZmZzZXRTZWNvbmRzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFJld2luZFNjb3JlKGIpO2Nzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJyZXdpbmRTY29yZSA9IGFzeW5jICgpID0+IHVuZGVmaW5lZDsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9e307bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcz1jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kR2V0U2NvcmVUaW1lPWNzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nOwptb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kSXNTY29yZVBlbmRpbmc9Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kUmVhZFNjb3JlPWNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRSZXdpbmRTY29yZT1jc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRTZXRTY29yZU9mZnNldFNlY29uZHM9Y3NvdW5kU2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc7bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZFNldFNjb3JlUGVuZGluZz1jc291bmRTZXRTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZztjb25zdCBjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVMZW5ndGgoYixjKTtjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVMZW5ndGggPSBhc3luYyAodGFibGVOdW0pID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+YS5leHBvcnRzLmNzb3VuZFRhYmxlR2V0KGIsYyxkKTtjc291bmRUYWJsZUdldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVHZXQgPSBhc3luYyAodGFibGVOdW0sIHRhYmxlSW5kZXgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkLGUpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVTZXQoYixjLGQsZSk7CmNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJ0YWJsZVNldCA9IGFzeW5jICh0YWJsZU51bSwgdGFibGVJbmRleCwgdmFsdWUpID0+IHVuZGVmaW5lZDsiO2NvbnN0IGNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+e2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jRmxvYXRBcnJheShkLmxlbmd0aCk7KG5ldyBGbG9hdDY0QXJyYXkoYS53YXNpLm1lbW9yeS5idWZmZXIsZSxkLmxlbmd0aCkpLnNldChkKTthLmV4cG9ydHMuY3NvdW5kVGFibGVDb3B5SW4oYixjLGUpO2EuZXhwb3J0cy5mcmVlRmxvYXRBcnJheU1lbShlKX07Y3NvdW5kVGFibGVDb3B5SW4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS50b1N0cmluZz0oKT0+InRhYmxlQ29weUluID0gYXN5bmMgKHRhYmxlTnVtLCBmbG9hdDY0QXJyYXkpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+e3ZhciBkPWEuZXhwb3J0cy5jc291bmRUYWJsZUxlbmd0aChiLGMpO2lmKDA8ZCl7Y29uc3QgZT1hLmV4cG9ydHMuYWxsb2NGbG9hdEFycmF5KGQpO2EuZXhwb3J0cy5jc291bmRUYWJsZUNvcHlPdXQoYixjLGUpOyh7YnVmZmVyOmJ9PWEud2FzaS5tZW1vcnkpO2Q9bmV3IEZsb2F0NjRBcnJheShiLGUsZCk7YS5leHBvcnRzLmZyZWVGbG9hdEFycmF5TWVtKGUpO3JldHVybiBGbG9hdDY0QXJyYXkuZnJvbShkKX19O2Nzb3VuZFRhYmxlQ29weU91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVDb3B5T3V0ID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7Y29uc3QgY3NvdW5kR2V0VGFibGUkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKY3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9Y3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc7Y29uc3QgY3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyk9Pntjb25zdCBkPWEuZXhwb3J0cy5hbGxvY0Zsb2F0QXJyYXkoMTAyNCk7YS5leHBvcnRzLmNzb3VuZEdldFRhYmxlQXJncyhiLGQsYyk7KHtidWZmZXI6Yn09YS53YXNpLm1lbW9yeSk7Yj1uZXcgRmxvYXQ2NEFycmF5KGIsZCwxMDI0KTthLmV4cG9ydHMuZnJlZUZsb2F0QXJyYXlNZW0oZCk7cmV0dXJuIGJ9O2Nzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0VGFibGVBcmdzID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7CmNvbnN0IGNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJpc05hbWVkR0VOID0gYXN5bmMgKHRhYmxlTnVtKSA9PiBudW1iZXI7Ijtjb25zdCBjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT57dmFyIGQ9YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtpZigwPGQpe2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jU3RyaW5nTWVtKGQpO2EuZXhwb3J0cy5jc291bmRHZXROYW1lZEdFTihiLGUsYyxkKTsoe2J1ZmZlcjpifT1hLndhc2kubWVtb3J5KTtkPW5ldyBVaW50OEFycmF5KGIsZSxkKTtyZXR1cm4gdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhkKX19Owpjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0TmFtZWRHRU4gPSBhc3luYyAodGFibGVOdW0pID0+ID9zdHJpbmc7Ijt2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPXt9O21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXROYW1lZEdFTj1jc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXRUYWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kR2V0VGFibGVBcmdzPWNzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRJc05hbWVkR0VOPWNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weUluPWNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU7bW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weU91dD1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVHZXQ9Y3NvdW5kVGFibGVHZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVMZW5ndGg9Y3NvdW5kVGFibGVMZW5ndGgkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVTZXQ9Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTtmdW5jdGlvbiB3cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyxkKT0+e2I9InN0cmluZyI9PT10eXBlb2YgZD9lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2RlKGQpOmQ7YS53YXNpLndyaXRlRmlsZShjLGIpfX13cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCwgZGF0YSkgPT4gdm9pZCI7ZnVuY3Rpb24gYXBwZW5kRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjLGQpPT57Yj0ic3RyaW5nIj09PXR5cGVvZiBkP2VuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoZCk6ZDthLndhc2kuYXBwZW5kRmlsZShjLGIpfX1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgsIGRhdGEpID0+IHZvaWQiOwpmdW5jdGlvbiByZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLnJlYWRGaWxlKGMpfXJlYWRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+ID9VaW50OEFycmF5IjtmdW5jdGlvbiB1bmxpbmskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS51bmxpbmsoYyl9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO2Z1bmN0aW9uIHJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS5yZWFkZGlyKGMpfXJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCkgPT4gc3RyaW5nW10iOwpmdW5jdGlvbiBta2RpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLm1rZGlyKGMpfW1rZGlyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzPXt9O21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMuYXBwZW5kRmlsZT1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMubWtkaXI9bWtkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy5yZWFkRmlsZT1yZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnJlYWRkaXI9cmVhZGRpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy51bmxpbms9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMud3JpdGVGaWxlPXdyaXRlRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcztjb25zdCBhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kPXtjc291bmRDcmVhdGU6Y3NvdW5kQ3JlYXRlJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmREZXN0cm95OmNzb3VuZERlc3Ryb3kkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZEdldEFQSVZlcnNpb246Y3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24sY3NvdW5kR2V0VmVyc2lvbjpjc291bmRHZXRWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmRJbml0aWFsaXplOmNzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZFBhcnNlT3JjOmNzb3VuZFBhcnNlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kQ29tcGlsZVRyZWU6Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRDb21waWxlT3JjOmNzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSwKY3NvdW5kRXZhbENvZGU6Y3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRTdGFydDpjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2Q6Y3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2RUZXh0OmNzb3VuZENvbXBpbGVDc2RUZXh0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybTpjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybUtzbXBzOmNzb3VuZFBlcmZvcm1Lc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFBlcmZvcm1CdWZmZXI6Y3NvdW5kUGVyZm9ybUJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFN0b3A6Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLApjc291bmRDbGVhbnVwOmNzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRSZXNldDpjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZEdldFNyOmNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRLcjpjc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0S3NtcHM6Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sczpjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sc0lucHV0OmNzb3VuZEdldE5jaG5sc0lucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXQwZEJGUzpjc291bmRHZXQwZEJGUyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0QTQ6Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLApjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXM6Y3NvdW5kR2V0Q3VycmVudFRpbWVTYW1wbGVzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRTaXplT2ZNWUZMVDpjc291bmRHZXRTaXplT2ZNWUZMVCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0T3B0aW9uOmNzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0UGFyYW1zOmNzb3VuZFNldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0UGFyYW1zOmNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0RGVidWc6Y3NvdW5kR2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZFNldERlYnVnOmNzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRJbnB1dEJ1ZmZlclNpemU6Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbywKY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZTpjc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRJbnB1dEJ1ZmZlcjpjc291bmRHZXRJbnB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0T3V0cHV0QnVmZmVyOmNzb3VuZEdldE91dHB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0U3Bpbjpjc291bmRHZXRTcGluJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRTcG91dDpjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0TUlESURldkxpc3Q6Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kU2V0TWlkaUNhbGxiYWNrczpjc291bmRTZXRNaWRpQ2FsbGJhY2tzJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLGNzb3VuZEdldFJ0TWlkaU5hbWU6Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSwKY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lOmNzb3VuZEdldE1pZGlPdXRGaWxlTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSxjc291bmRQdXNoTWlkaU1lc3NhZ2U6Y3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dDpfaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kSW5wdXRNZXNzYWdlOmNzb3VuZElucHV0TWVzc2FnZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLGNzb3VuZElucHV0TWVzc2FnZUFzeW5jOmNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMsY3NvdW5kR2V0Q29udHJvbENoYW5uZWw6Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRDb250cm9sQ2hhbm5lbDpjc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLApjc291bmRHZXRTdHJpbmdDaGFubmVsOmNzb3VuZEdldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRTdHJpbmdDaGFubmVsOmNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRHZXRJbnB1dE5hbWU6Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbyxjc291bmRHZXRPdXRwdXROYW1lOmNzb3VuZEdldE91dHB1dE5hbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRnZW5lcmFsX2lvLGNzb3VuZEFwcGVuZEVudjpjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYSxjc291bmRTaG91bGREYWVtb25pemU6Y3NvdW5kU2hvdWxkRGFlbW9uaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEsY3NvdW5kSXNTY29yZVBlbmRpbmc6Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZywKY3NvdW5kU2V0U2NvcmVQZW5kaW5nOmNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFJlYWRTY29yZTpjc291bmRSZWFkU2NvcmUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRHZXRTY29yZVRpbWU6Y3NvdW5kR2V0U2NvcmVUaW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcsY3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzOmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kczpjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRSZXdpbmRTY29yZTpjc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFRhYmxlTGVuZ3RoOmNzb3VuZFRhYmxlTGVuZ3RoJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsCmNzb3VuZFRhYmxlR2V0OmNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kVGFibGVTZXQ6Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRUYWJsZUNvcHlJbjpjc291bmRUYWJsZUNvcHlJbiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLGNzb3VuZFRhYmxlQ29weU91dDpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZTpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZUFyZ3M6Y3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kSXNOYW1lZEdFTjpjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kR2V0TmFtZWRHRU46Y3NvdW5kR2V0TmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxmczptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzfTsKdmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZD1mdW5jdGlvbihhKXtyZXR1cm4gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhbcmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGIsYyk9PmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyxhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kW2NdKGEpLGIpLHt9LGtleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiZnMiKShhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kKSkpLHJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChiLGMpPT5hc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsCmFwaSQkbW9kdWxlJHNyYyRsaWJjc291bmQuZnNbY10oYSksYikse30sa2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMpKV0pfSxtb2R1bGUkc3JjJGxpYmNzb3VuZD17fTttb2R1bGUkc3JjJGxpYmNzb3VuZC5hcGk9YXBpJCRtb2R1bGUkc3JjJGxpYmNzb3VuZDttb2R1bGUkc3JjJGxpYmNzb3VuZC5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZDtjb25zdCBkbGluaXQkJG1vZHVsZSRzcmMkZGxpbml0PShhLGIsYyxkKT0+e2lmKGIuZXhwb3J0cy5jc291bmRNb2R1bGVJbml0KXt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LDApLGc9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7Y29uc3QgaD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKTtsZXQgaz1jLmxlbmd0aDsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRNb2R1bGVDcmVhdGUmJihjLmdyb3coMSksZS52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZSksays9MSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kTW9kdWxlSW5pdCYmKGMuZ3JvdygxKSxmLnZhbHVlPWssYy5zZXQoaywKYi5leHBvcnRzLmNzb3VuZE1vZHVsZUluaXQpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kmJihjLmdyb3coMSksZy52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZUVycm9yQ29kZVRvU3RyaW5nJiYoYy5ncm93KDEpLGgudmFsdWU9ayxjLnNldChrLGIuZXhwb3J0cy5jc291bmRNb2R1bGVFcnJvckNvZGVUb1N0cmluZykpO2EuZXhwb3J0cy5jc291bmRXYXNpTG9hZFBsdWdpbihkLGUsZixnLGgpfWVsc2UgYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8Yi5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQ/KGU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCksZj1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxnPWMubGVuZ3RoLAoiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRfb3Bjb2RlX2luaXQmJihlLnZhbHVlPWcsYy5ncm93KDEpLGMuc2V0KGcsYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdCksZys9MSksImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCYmKGYudmFsdWU9ZyxjLmdyb3coMSksYy5zZXQoZyxiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCkpLGEuZXhwb3J0cy5jc291bmRXYXNpTG9hZE9wY29kZUxpYnJhcnkoZCxmLGUpKTpjb25zb2xlLmVycm9yKCJQbHVnaW4gZG9lc24ndCBleHBvcnQgbmVjZWNjYXJ5IGZ1bmN0aW9ucyB0byBxdWFsaXR5IGFzIGNzb3VuZCBwbHVnaW4uIil9O3ZhciBtb2R1bGUkc3JjJGRsaW5pdD17fTttb2R1bGUkc3JjJGRsaW5pdC5kbGluaXQ9ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdDt2b2lkIDAhPT1nb29nLmdsb2JhbCYmKGdvb2cuZ2xvYmFsPXt9KTtnb29nLmdsb2JhbC5CaWdJbnR8fChnb29nLmdsb2JhbC5CaWdJbnQ9dm9pZCAwPT09QmlnSW50P051bWJlcjpCaWdJbnQpOwpjb25zdCBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9FQUREUklOVVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMsV0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NSxXQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRUFMUkVBRFkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NyxXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTgsV0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTksV0FTSV9FQlVTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTAsV0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTEsV0FTSV9FQ0hJTEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTIsV0FTSV9FQ09OTkFCT1JURUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9FQ09OTlJFRlVTRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTQsV0FTSV9FQ09OTlJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE1LFdBU0lfRURFQURMSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNixXQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNyxXQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTgsV0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9FRVhJU1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjIwLFdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIxLFdBU0lfRUZCSUckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjIsV0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9FSURSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNCxXQVNJX0VJTFNFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNSxXQVNJX0VJTlBST0dSRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI2LFdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjcsV0FTSV9FSU5WQUwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjgsV0FTSV9FSU8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjksV0FTSV9FSVNDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMwLFdBU0lfRUlTRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQozMSxXQVNJX0VMT09QJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMyLFdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMzLFdBU0lfRU1MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTM0LFdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzUsV0FTSV9FTVVMVElIT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzYsV0FTSV9FTkFNRVRPT0xPTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzcsV0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOCxXQVNJX0VORVRSRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOSxXQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQwLFdBU0lfRU5GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQxLApXQVNJX0VOT0JVRlMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDIsV0FTSV9FTk9ERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDMsV0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDQsV0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ1LFdBU0lfRU5PTENLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ2LFdBU0lfRU5PTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00NyxXQVNJX0VOT01FTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OCxXQVNJX0VOT01TRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OSxXQVNJX0VOT1BST1RPT1BUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUwLFdBU0lfRU5PU1BDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUxLFdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQo1MixXQVNJX0VOT1RDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUzLFdBU0lfRU5PVERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NCxXQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NSxXQVNJX0VOT1RSRUNPVkVSQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NixXQVNJX0VOT1RTT0NLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTU3LFdBU0lfRU5PVFNVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OCxXQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OSxXQVNJX0VOWElPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYwLFdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYxLFdBU0lfRU9XTkVSREVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KNjIsV0FTSV9FUEVSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02MyxXQVNJX0VQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY0LFdBU0lfRVBST1RPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY1LFdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY2LFdBU0lfRVBST1RPVFlQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02NyxXQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02OCxXQVNJX0VST0ZTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY5LFdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTcwLFdBU0lfRVNSQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzEsV0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzIsV0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjczLFdBU0lfRVRYVEJTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03NCxXQVNJX0VYREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTc1LFdBU0lfRU5PVENBUEFCTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzYsV0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TSUdBTFJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TSUdCVVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX1NJR0NITEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfU0lHSFVQJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYsV0FTSV9TSUdJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjcsV0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1NJR0tJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OSxXQVNJX1NJR1BJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTAsV0FTSV9TSUdRVUlUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTExLFdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xMixXQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE0LFdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNSxXQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTYsV0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE3LFdBU0lfU0lHVFRPVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTgsV0FTSV9TSUdVUkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9TSUdVU1IxJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIwLFdBU0lfU0lHVVNSMiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMSxXQVNJX1NJR1ZUQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMixXQVNJX1NJR1hDUFUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9TSUdYRlNaJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI0LFdBU0lfRklMRVRZUEVfVU5LTk9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRklMRVRZUEVfQkxPQ0tfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjMsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRklMRVRZUEVfU1lNQk9MSUNfTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03LFdBU0lfRkRGTEFHX0FQUEVORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRkRGTEFHX0RTWU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GREZMQUdfTk9OQkxPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz04LFdBU0lfRkRGTEFHX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjE2LFdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEpLFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMiksV0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0KSxXQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgpLFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYpLFdBU0lfUklHSFRfRkRfVEVMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzIpLFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCg2NCksV0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEyOCksV0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjU2KSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoNTEyKSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwMjQpLFdBU0lfUklHSFRfUEFUSF9MSU5LX1NPVVJDRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjA0OCksV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQpnb29nLmdsb2JhbC5CaWdJbnQoNDA5NiksV0FTSV9SSUdIVF9QQVRIX09QRU4kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgxOTIpLFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYzODQpLFdBU0lfUklHSFRfUEFUSF9SRUFETElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzI3NjgpLFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg2NTUzNiksV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEzMTA3MiksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KZ29vZy5nbG9iYWwuQmlnSW50KDI2MjE0NCksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg1MjQyODgpLFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwNDg1NzYpLFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgyMDk3MTUyKSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0MTk0MzA0KSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoODM4ODYwOCksV0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCgxNjc3NzIxNiksV0FTSV9SSUdIVF9QQVRIX1JFTU9WRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDMzNTU0NDMyKSxXQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDY3MTA4ODY0KSxXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgxMzQyMTc3MjgpLFdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjY4NDM1NDU2KSxSSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX0ZEX1NFRUskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FEVklTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FMTE9DQVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfT1BFTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFQURMSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQ0hBUkFDVEVSX0RFVklDRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMsUklHSFRTX0NIQVJBQ1RFUl9ERVZJQ0VfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KV0FTSV9SSUdIVF9GRF9EQVRBU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9URUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMCksUklHSFRTX0RJUkVDVE9SWV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19ESVJFQ1RPUllfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8UklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cywKUklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX0VWRU5UVFlQRV9DTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0VWRU5UVFlQRV9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfRklMRVNUQVRfU0VUX0FUSU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjEsV0FTSV9GSUxFU1RBVF9TRVRfQVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9GSUxFU1RBVF9TRVRfTVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX09fQ1JFQVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX09fVFJVTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1BSRU9QRU5UWVBFX0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRElSQ09PS0lFX1NUQVJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjAsV0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9XSEVOQ0VfQ1VSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI7dmFyIG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9e307bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQUxMPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19ESVJFQ1RPUllfQkFTRT1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfRElSRUNUT1JZX0lOSEVSSVRJTkc9UklHSFRTX0RJUkVDVE9SWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRT1SSUdIVFNfUkVHVUxBUl9GSUxFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfUkVHVUxBUl9GSUxFX0lOSEVSSVRJTkc9UklHSFRTX1JFR1VMQVJfRklMRV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1NPQ0tFVF9CQVNFPVJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19TT0NLRVRfSU5IRVJJVElORz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1RUWV9CQVNFPVJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfVFRZX0lOSEVSSVRJTkc9UklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9DTE9DS19NT05PVE9OSUM9V0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRD1XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfQ0xPQ0tfUkVBTFRJTUU9V0FTSV9DTE9DS19SRUFMVElNRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1RIUkVBRF9DUFVUSU1FX0lEPVdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0RJUkNPT0tJRV9TVEFSVD1XQVNJX0RJUkNPT0tJRV9TVEFSVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRTJCSUc9V0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFDQ0VTPVdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUREUklOVVNFPVdBU0lfRUFERFJJTlVTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBRERSTk9UQVZBSUw9V0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUZOT1NVUFBPUlQ9V0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBR0FJTj1XQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFMUkVBRFk9V0FTSV9FQUxSRUFEWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUJBREY9V0FTSV9FQkFERiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VCQURNU0c9V0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQlVTWT1XQVNJX0VCVVNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ0FOQ0VMRUQ9V0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VDSElMRD1XQVNJX0VDSElMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5BQk9SVEVEPVdBU0lfRUNPTk5BQk9SVEVEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5SRUZVU0VEPVdBU0lfRUNPTk5SRUZVU0VEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ09OTlJFU0VUPVdBU0lfRUNPTk5SRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURFQURMSz1XQVNJX0VERUFETEskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VERVNUQUREUlJFUT1XQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURPTT1XQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRFFVT1Q9V0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VFWElTVD1XQVNJX0VFWElTVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUZBVUxUPVdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRkJJRz1XQVNJX0VGQklHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSE9TVFVOUkVBQ0g9V0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJRFJNPVdBU0lfRUlEUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSUxTRVE9V0FTSV9FSUxTRVEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlBST0dSRVNTPVdBU0lfRUlOUFJPR1JFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlRSPVdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlZBTD1XQVNJX0VJTlZBTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUlPPVdBU0lfRUlPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSVNDT05OPVdBU0lfRUlTQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJU0RJUj1XQVNJX0VJU0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUxPT1A9V0FTSV9FTE9PUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU1GSUxFPVdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTUxJTks9V0FTSV9FTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNU0dTSVpFPVdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNVUxUSUhPUD1XQVNJX0VNVUxUSUhPUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOQU1FVE9PTE9ORz1XQVNJX0VOQU1FVE9PTE9ORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVERPV049V0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVFJFU0VUPVdBU0lfRU5FVFJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkVUVU5SRUFDSD1XQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkZJTEU9V0FTSV9FTkZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9CVUZTPVdBU0lfRU5PQlVGUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PREVWPVdBU0lfRU5PREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9FTlQ9V0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0VYRUM9V0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9MQ0s9V0FTSV9FTk9MQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0xJTks9V0FTSV9FTk9MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PTUVNPVdBU0lfRU5PTUVNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9NU0c9V0FTSV9FTk9NU0ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1BST1RPT1BUPVdBU0lfRU5PUFJPVE9PUFQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1NQQz1XQVNJX0VOT1NQQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PU1lTPVdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENBUEFCTEU9V0FTSV9FTk9UQ0FQQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENPTk49V0FTSV9FTk9UQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVERJUj1XQVNJX0VOT1RESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RFTVBUWT1XQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFJFQ09WRVJBQkxFPVdBU0lfRU5PVFJFQ09WRVJBQkxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNPQ0s9V0FTSV9FTk9UU09DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNVUD1XQVNJX0VOT1RTVVAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RUWT1XQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5YSU89V0FTSV9FTlhJTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9WRVJGTE9XPVdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9XTkVSREVBRD1XQVNJX0VPV05FUkRFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQRVJNPVdBU0lfRVBFUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQSVBFPVdBU0lfRVBJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQUk9UTz1XQVNJX0VQUk9UTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPTk9TVVBQT1JUPVdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPVFlQRT1XQVNJX0VQUk9UT1RZUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VSQU5HRT1XQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVJPRlM9V0FTSV9FUk9GUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVNQSVBFPVdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1JDSD1XQVNJX0VTUkNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1RBTEU9V0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1VDQ0VTUz1XQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVElNRURPVVQ9V0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VUWFRCU1k9V0FTSV9FVFhUQlNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfQ0xPQ0s9V0FTSV9FVkVOVFRZUEVfQ0xPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VWRU5UVFlQRV9GRF9SRUFEPVdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfRkRfV1JJVEU9V0FTSV9FVkVOVFRZUEVfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VYREVWPVdBU0lfRVhERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19BUFBFTkQ9V0FTSV9GREZMQUdfQVBQRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GREZMQUdfRFNZTkM9V0FTSV9GREZMQUdfRFNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19OT05CTE9DSz1XQVNJX0ZERkxBR19OT05CTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19SU1lOQz1XQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRkRGTEFHX1NZTkM9V0FTSV9GREZMQUdfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU09V0FTSV9GSUxFU1RBVF9TRVRfQVRJTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFU1RBVF9TRVRfTVRJTT1XQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0U9V0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX0NIQVJBQ1RFUl9ERVZJQ0U9V0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlk9V0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEU9V0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9TVFJFQU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NZTUJPTElDX0xJTks9V0FTSV9GSUxFVFlQRV9TWU1CT0xJQ19MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfVU5LTk9XTj1XQVNJX0ZJTEVUWVBFX1VOS05PV04kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fQ1JFQVQ9V0FTSV9PX0NSRUFUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0RJUkVDVE9SWT1XQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0VYQ0w9V0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fVFJVTkM9V0FTSV9PX1RSVU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUFJFT1BFTlRZUEVfRElSPVdBU0lfUFJFT1BFTlRZUEVfRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9BRFZJU0U9V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0FMTE9DQVRFPVdBU0lfUklHSFRfRkRfQUxMT0NBVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0RBVEFTWU5DPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1M9V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUPVdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRT1XQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVM9V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1JFQUQ9V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfUkVBRERJUj1XQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1NFRUs9V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9TWU5DPVdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfVEVMTD1XQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1dSSVRFPVdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlk9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVD1XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0U9V0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUPVdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9PUEVOPVdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRUFETElOSz1XQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWT1XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFPVdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQ9V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1NZTUxJTks9V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURT1XQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOPVdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0FCUlQ9V0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdBTFJNPVdBU0lfU0lHQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQlVTPVdBU0lfU0lHQlVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdDSExEPVdBU0lfU0lHQ0hMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQ09OVD1XQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0ZQRT1XQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0hVUD1XQVNJX1NJR0hVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHSUxMPVdBU0lfU0lHSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdJTlQ9V0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0tJTEw9V0FTSV9TSUdLSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdQSVBFPVdBU0lfU0lHUElQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHUVVJVD1XQVNJX1NJR1FVSVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdTRUdWPVdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHU1RPUD1XQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RFUk09V0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdUUkFQPVdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFNUUD1XQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RUSU49V0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFRPVT1XQVNJX1NJR1RUT1UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VSRz1XQVNJX1NJR1VSRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVVNSMT1XQVNJX1NJR1VTUjEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VTUjI9V0FTSV9TSUdVU1IyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdWVEFMUk09V0FTSV9TSUdWVEFMUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdYQ1BVPVdBU0lfU0lHWENQVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHWEZTWj1XQVNJX1NJR1hGU1okJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NUREVSUl9GSUxFTk89V0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TVERJTl9GSUxFTk89V0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NURE9VVF9GSUxFTk89V0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfV0hFTkNFX0NVUj1XQVNJX1dIRU5DRV9DVVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1dIRU5DRV9FTkQ9V0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9XSEVOQ0VfU0VUPVdBU0lfV0hFTkNFX1NFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cztnb29nLmRlYnVnPXt9O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IoYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IpO2Vsc2V7Y29uc3QgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTt2b2lkIDAhPT1iJiYodGhpcy5jYXVzZT1iKTt0aGlzLnJlcG9ydEVycm9yVG9TZXJ2ZXI9ITB9Z29vZy5pbmhlcml0cyhtb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLEVycm9yKTttb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7Z29vZy5kZWJ1Zy5FcnJvcj1tb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yO2dvb2cuZG9tPXt9O2dvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9O2dvb2cuYXNzZXJ0cz17fTtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX0Fzc2VydGlvbkVycm9yKGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvci5jYWxsKHRoaXMsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYikpO3RoaXMubWVzc2FnZVBhdHRlcm49YX1nb29nLmluaGVyaXRzKG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IsbW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvcik7Z29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yPW1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3I7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvci5wcm90b3R5cGUubmFtZT0iQXNzZXJ0aW9uRXJyb3IiOwpnb29nLmFzc2VydHMuREVGQVVMVF9FUlJPUl9IQU5ETEVSPWZ1bmN0aW9uKGEpe3Rocm93IGE7fTtsZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19lcnJvckhhbmRsZXJfPWdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYil7YT1hLnNwbGl0KCIlcyIpO2xldCBjPSIiO2NvbnN0IGQ9YS5sZW5ndGgtMTtmb3IobGV0IGU9MDtlPGQ7ZSsrKWMrPWFbZV0rKGU8Yi5sZW5ndGg/YltlXToiJXMiKTtyZXR1cm4gYythW2RdfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZShhLGIsYyxkKXtsZXQgZT0iQXNzZXJ0aW9uIGZhaWxlZCIsZjtjPyhlKz0iOiAiK2MsZj1kKTphJiYoZSs9IjogIithLGY9Yik7YT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiIitlLGZ8fFtdKTttb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8oYSl9Z29vZy5hc3NlcnRzLnNldEVycm9ySGFuZGxlcj1mdW5jdGlvbihhKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl89YSl9Owpnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiIixudWxsLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Z29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cz1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1hJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgdG8gZXhpc3Q6ICVzLiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8obmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IoIkZhaWx1cmUiKyhhPyI6ICIrYToiIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSl9O2dvb2cuYXNzZXJ0cy5hc3NlcnROdW1iZXI9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIm51bWJlciIhPT10eXBlb2YgYSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG51bWJlciBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJzdHJpbmciIT09dHlwZW9mIGEmJm1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTtnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdD1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9O2dvb2cuYXNzZXJ0cy5hc3NlcnRBcnJheT1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhQXJyYXkuaXNBcnJheShhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIGFycmF5IGJ1dCBnb3QgJXM6ICVzLiIsW2dvb2cudHlwZU9mKGEpLGFdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5hc3NlcnRCb29sZWFuPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJib29sZWFuIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgYm9vbGVhbiBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChhKSYmYS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIEVsZW1lbnQgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oYSxiLGMsZCl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8YSBpbnN0YW5jZW9mIGJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBpbnN0YW5jZW9mICVzIGJ1dCBnb3QgJXMuIixbbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19nZXRUeXBlKGIpLG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKV0sYyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMykpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Im51bWJlciI9PXR5cGVvZiBhJiZpc0Zpbml0ZShhKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2EuZGlzcGxheU5hbWV8fGEubmFtZXx8InVua25vd24gdHlwZSBuYW1lIjphIGluc3RhbmNlb2YgT2JqZWN0P2EuY29uc3RydWN0b3IuZGlzcGxheU5hbWV8fGEuY29uc3RydWN0b3IubmFtZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOm51bGw9PT1hPyJudWxsIjp0eXBlb2YgYX07Z29vZy5hcnJheT17fTtnb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTPWdvb2cuVFJVU1RFRF9TSVRFO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVI7Z29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfWdvb2cuYXJyYXkucGVlaz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrO2dvb2cuYXJyYXkubGFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbmRleE9mPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5tYXgoMCxhLmxlbmd0aCtjKTpjO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuInN0cmluZyIhPT10eXBlb2YgYnx8MSE9Yi5sZW5ndGg/LTE6YS5pbmRleE9mKGIsYyk7Zm9yKDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtnb29nLmFycmF5LmluZGV4T2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbGFzdEluZGV4T2Y9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYSxiLG51bGw9PWM/YS5sZW5ndGgtMTpjKX06ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbD09Yz9hLmxlbmd0aC0xOmM7MD5jJiYoYz1NYXRoLm1heCgwLGEubGVuZ3RoK2MpKTtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiJzdHJpbmciIT09dHlwZW9mIGJ8fDEhPWIubGVuZ3RoPy0xOmEubGFzdEluZGV4T2YoYixjKTtmb3IoOzA8PWM7Yy0tKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9Owpnb29nLmFycmF5Lmxhc3RJbmRleE9mPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2xhc3RJbmRleE9mO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2g9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpfTtnb29nLmFycmF5LmZvckVhY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsYixjKXt2YXIgZD1hLmxlbmd0aDtjb25zdCBlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IoLS1kOzA8PWQ7LS1kKWQgaW4gZSYmYi5jYWxsKGMsZVtkXSxkLGEpfWdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2hSaWdodDsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmZpbHRlcik/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPVtdO2xldCBmPTA7Y29uc3QgZz0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBoPTA7aDxkO2grKylpZihoIGluIGcpe2NvbnN0IGs9Z1toXTtiLmNhbGwoYyxrLGgsYSkmJihlW2YrK109ayl9cmV0dXJuIGV9O2dvb2cuYXJyYXkuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbHRlcjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbWFwPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9InN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKTphO2ZvcihsZXQgZz0wO2c8ZDtnKyspZyBpbiBmJiYoZVtnXT1iLmNhbGwoYyxmW2ddLGcsYSkpO3JldHVybiBlfTtnb29nLmFycmF5Lm1hcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9tYXA7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZT1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYobW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfQVNTVU1FX05BVElWRV9GVU5DVElPTlN8fEFycmF5LnByb3RvdHlwZS5yZWR1Y2UpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2QmJihiPWdvb2cuYmluZChiLGQpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMsZCl7bGV0IGU9Yzttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoKGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9Yik7ZCYmKGI9Z29vZy5iaW5kKGIsZCkpO3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjLGQpe2xldCBlPWM7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1cm4hMX07Z29vZy5hcnJheS5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2V2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmV2ZXJ5KT9mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1hLmxlbmd0aCk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJiFiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuITE7cmV0dXJuITB9O2dvb2cuYXJyYXkuZXZlcnk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXZlcnk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvdW50KGEsYixjKXtsZXQgZD0wO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYsZyl7Yi5jYWxsKGMsZSxmLGcpJiYrK2R9LGMpO3JldHVybiBkfWdvb2cuYXJyYXkuY291bnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY291bnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZChhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleChhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWlmKGYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpKXJldHVybiBmO3JldHVybi0xfWdvb2cuYXJyYXkuZmluZEluZGV4PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kUmlnaHQoYSxiLGMpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZEluZGV4UmlnaHQoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZFJpZ2h0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXhSaWdodChhLGIsYyl7dmFyIGQ9YS5sZW5ndGg7Y29uc3QgZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDswPD1kO2QtLSlpZihkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleFJpZ2h0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zKGEsYil7cmV0dXJuIDA8PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxiKX1nb29nLmFycmF5LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzRW1wdHkoYSl7cmV0dXJuIDA9PWEubGVuZ3RofWdvb2cuYXJyYXkuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pc0VtcHR5OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jbGVhcihhKXtpZighQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGI9YS5sZW5ndGgtMTswPD1iO2ItLSlkZWxldGUgYVtiXTthLmxlbmd0aD0wfWdvb2cuYXJyYXkuY2xlYXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY2xlYXI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0KGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29udGFpbnMoYSxiKXx8YS5wdXNoKGIpfWdvb2cuYXJyYXkuaW5zZXJ0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRBdChhLGIsYyl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYywwLGIpfWdvb2cuYXJyYXkuaW5zZXJ0QXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQoYSxiLGMpe2dvb2cucGFydGlhbChtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2UsYSxjLDApLmFwcGx5KG51bGwsYil9Z29vZy5hcnJheS5pbnNlcnRBcnJheUF0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QmVmb3JlKGEsYixjKXtsZXQgZDsyPT1hcmd1bWVudHMubGVuZ3RofHwwPihkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxjKSk/YS5wdXNoKGIpOm1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYixkKX1nb29nLmFycmF5Lmluc2VydEJlZm9yZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRCZWZvcmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZShhLGIpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZihhLGIpO2xldCBjOyhjPTA8PWIpJiZtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpO3JldHVybiBjfWdvb2cuYXJyYXkucmVtb3ZlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVMYXN0KGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9sYXN0SW5kZXhPZihhLGIpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUxhc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlTGFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMT09QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGh9Z29vZy5hcnJheS5yZW1vdmVBdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVJZihhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUlmPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZUlmOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZihhLGIsYyl7bGV0IGQ9MDttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoUmlnaHQoYSxmdW5jdGlvbihlLGYpe2IuY2FsbChjLGUsZixhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxmKSYmZCsrfSk7cmV0dXJuIGR9Z29vZy5hcnJheS5yZW1vdmVBbGxJZj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQoYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX1nb29nLmFycmF5LmNvbmNhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfQpnb29nLmFycmF5LmpvaW49bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5KGEpe2NvbnN0IGI9YS5sZW5ndGg7aWYoMDxiKXtjb25zdCBjPUFycmF5KGIpO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2Nsb25lPWdvb2cuYXJyYXkudG9BcnJheT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5O2dvb2cuYXJyYXkuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9BcnJheTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXh0ZW5kKGEsYil7Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107aWYoZ29vZy5pc0FycmF5TGlrZShkKSl7Y29uc3QgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IobGV0IGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX1nb29nLmFycmF5LmV4dGVuZD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9leHRlbmQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoYXJndW1lbnRzLDEpKX1nb29nLmFycmF5LnNwbGljZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2U7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX1nb29nLmFycmF5LnNsaWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzKGEsYixjKXtiPWJ8fGE7dmFyIGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZyk/Im8iK2dvb2cuZ2V0VWlkKGcpOih0eXBlb2YgZykuY2hhckF0KDApK2d9O2M9Y3x8ZDtsZXQgZT1kPTA7Y29uc3QgZj17fTtmb3IoO2U8YS5sZW5ndGg7KXtjb25zdCBnPWFbZSsrXSxoPWMoZyk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsaCl8fChmW2hdPSEwLGJbZCsrXT1nKX1iLmxlbmd0aD1kfWdvb2cuYXJyYXkucmVtb3ZlRHVwbGljYXRlcz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2hfKGEsY3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUsITEsYil9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5U2VhcmNoO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlbGVjdChhLGIsYyl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLCEwLHZvaWQgMCxjKX1nb29nLmFycmF5LmJpbmFyeVNlbGVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWxlY3Q7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLGMsZCxlKXtsZXQgZj0wLGc9YS5sZW5ndGgsaDtmb3IoO2Y8Zzspe2NvbnN0IGs9ZisoZy1mPj4+MSk7bGV0IGw7bD1jP2IuY2FsbChlLGFba10sayxhKTpiKGQsYVtrXSk7MDxsP2Y9aysxOihnPWssaD0hbCl9cmV0dXJuIGg/ZjotZi0xfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYSxiKXthLnNvcnQoYnx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUpfWdvb2cuYXJyYXkuc29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0KGEsYil7Y29uc3QgYz1BcnJheShhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspY1tlXT17aW5kZXg6ZSx2YWx1ZTphW2VdfTtjb25zdCBkPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYyxmdW5jdGlvbihlLGYpe3JldHVybiBkKGUudmFsdWUsZi52YWx1ZSl8fGUuaW5kZXgtZi5pbmRleH0pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYVtiXT1jW2JdLnZhbHVlfWdvb2cuYXJyYXkuc3RhYmxlU29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxiLGMpe2NvbnN0IGQ9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc29ydChhLGZ1bmN0aW9uKGUsZil7cmV0dXJuIGQoYihlKSxiKGYpKX0pfWdvb2cuYXJyYXkuc29ydEJ5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRCeUtleTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0T2JqZWN0c0J5S2V5KGEsYixjKXttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxmdW5jdGlvbihkKXtyZXR1cm4gZFtiXX0sYyl9Z29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRPYmplY3RzQnlLZXk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkKGEsYixjKXtiPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO2ZvcihsZXQgZD0xO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWIoYVtkLTFdLGFbZF0pO2lmKDA8ZXx8MD09ZSYmYylyZXR1cm4hMX1yZXR1cm4hMH1nb29nLmFycmF5LmlzU29ydGVkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2VxdWFscyhhLGIsYyl7aWYoIWdvb2cuaXNBcnJheUxpa2UoYSl8fCFnb29nLmlzQXJyYXlMaWtlKGIpfHxhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuITE7Y29uc3QgZD1hLmxlbmd0aDtjPWN8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7Zm9yKGxldCBlPTA7ZTxkO2UrKylpZighYyhhW2VdLGJbZV0pKXJldHVybiExO3JldHVybiEwfQpnb29nLmFycmF5LmVxdWFscz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9lcXVhbHM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTMoYSxiLGMpe2M9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7Y29uc3QgZD1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxkO2UrKyl7Y29uc3QgZj1jKGFbZV0sYltlXSk7aWYoMCE9ZilyZXR1cm4gZn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYS5sZW5ndGgsYi5sZW5ndGgpfWdvb2cuYXJyYXkuY29tcGFyZTM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9kZWZhdWx0Q29tcGFyZTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlKGEsYil7cmV0dXJuLW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlKGEsYil9Z29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHkoYSxiKXtyZXR1cm4gYT09PWJ9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeUluc2VydChhLGIsYyl7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpO3JldHVybiAwPmM/KG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYiwtKGMrMSkpLCEwKTohMX1nb29nLmFycmF5LmJpbmFyeUluc2VydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlJbnNlcnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5UmVtb3ZlKGEsYixjKXtiPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaChhLGIsYyk7cmV0dXJuIDA8PWI/bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKTohMX1nb29nLmFycmF5LmJpbmFyeVJlbW92ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlSZW1vdmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldChhLGIsYyl7Y29uc3QgZD17fTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7Y29uc3QgZj1hW2VdLGc9Yi5jYWxsKGMsZixlLGEpO3ZvaWQgMCE9PWcmJihkW2ddfHwoZFtnXT1bXSkpLnB1c2goZil9cmV0dXJuIGR9Z29vZy5hcnJheS5idWNrZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldFRvTWFwKGEsYil7Y29uc3QgYz1uZXcgTWFwO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWFbZF0sZj1iKGUsZCxhKTtpZih2b2lkIDAhPT1mKXtsZXQgZz1jLmdldChmKTtnfHwoZz1bXSxjLnNldChmLGcpKTtnLnB1c2goZSl9fXJldHVybiBjfWdvb2cuYXJyYXkuYnVja2V0VG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0VG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3RvT2JqZWN0KGEsYixjKXtjb25zdCBkPXt9O21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYpe2RbYi5jYWxsKGMsZSxmLGEpXT1lfSk7cmV0dXJuIGR9Z29vZy5hcnJheS50b09iamVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b09iamVjdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b01hcChhLGIpe2NvbnN0IGM9bmV3IE1hcDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdO2Muc2V0KGIoZSxkLGEpLGUpfXJldHVybiBjfWdvb2cuYXJyYXkudG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JhbmdlKGEsYixjKXtjb25zdCBkPVtdO2xldCBlPTAsZj1hO2M9Y3x8MTt2b2lkIDAhPT1iJiYoZT1hLGY9Yik7aWYoMD5jKihmLWUpKXJldHVybltdO2lmKDA8Yylmb3IoYT1lO2E8ZjthKz1jKWQucHVzaChhKTtlbHNlIGZvcihhPWU7YT5mO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfWdvb2cuYXJyYXkucmFuZ2U9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmFuZ2U7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVwZWF0KGEsYil7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbZF09YTtyZXR1cm4gY31nb29nLmFycmF5LnJlcGVhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZXBlYXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZsYXR0ZW4oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXtjb25zdCBlPWFyZ3VtZW50c1tkXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7Zis9ODE5Mil7dmFyIGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoZSxmLGYrODE5Mik7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuLmFwcGx5KG51bGwsYyk7Zm9yKGxldCBnPTA7ZzxjLmxlbmd0aDtnKyspYi5wdXNoKGNbZ10pfWVsc2UgYi5wdXNoKGUpfXJldHVybiBifWdvb2cuYXJyYXkuZmxhdHRlbj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGUoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTthLmxlbmd0aCYmKGIlPWEubGVuZ3RoLDA8Yj9BcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShhLGEuc3BsaWNlKC1iLGIpKTowPmImJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEsYS5zcGxpY2UoMCwtYikpKTtyZXR1cm4gYX1nb29nLmFycmF5LnJvdGF0ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGU7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW0oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9YiYmYjxhLmxlbmd0aCk7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD1jJiZjPGEubGVuZ3RoKTtiPUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYywwLGJbMF0pfWdvb2cuYXJyYXkubW92ZUl0ZW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3ppcChhKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTtjb25zdCBiPVtdO2xldCBjPWFyZ3VtZW50c1swXS5sZW5ndGg7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylhcmd1bWVudHNbZF0ubGVuZ3RoPGMmJihjPWFyZ3VtZW50c1tkXS5sZW5ndGgpO2ZvcihkPTA7ZDxjO2QrKyl7Y29uc3QgZT1bXTtmb3IobGV0IGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWUucHVzaChhcmd1bWVudHNbZl1bZF0pO2IucHVzaChlKX1yZXR1cm4gYn1nb29nLmFycmF5LnppcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV96aXA7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZShhLGIpe2I9Ynx8TWF0aC5yYW5kb207Zm9yKGxldCBjPWEubGVuZ3RoLTE7MDxjO2MtLSl7Y29uc3QgZD1NYXRoLmZsb29yKGIoKSooYysxKSksZT1hW2NdO2FbY109YVtkXTthW2RdPWV9fQpnb29nLmFycmF5LnNodWZmbGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb3B5QnlJbmRleChhLGIpe2NvbnN0IGM9W107bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaChiLGZ1bmN0aW9uKGQpe2MucHVzaChhW2RdKX0pO3JldHVybiBjfWdvb2cuYXJyYXkuY29weUJ5SW5kZXg9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29weUJ5SW5kZXg7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0TWFwKGEsYixjKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0LmFwcGx5KFtdLG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X21hcChhLGIsYykpfWdvb2cuYXJyYXkuY29uY2F0TWFwPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbmNhdE1hcDtnb29nLmRvbS5hc3NlcnRzPXt9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbj1mdW5jdGlvbihhKXtpZihnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMpe3ZhciBiPWdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93XyhhKTtiJiYoIWF8fCEoYSBpbnN0YW5jZW9mIGIuTG9jYXRpb24pJiZhIGluc3RhbmNlb2YgYi5FbGVtZW50KSYmZ29vZy5hc3NlcnRzLmZhaWwoIkFyZ3VtZW50IGlzIG5vdCBhIExvY2F0aW9uIChvciBhIG5vbi1FbGVtZW50IG1vY2spOyBnb3Q6ICVzIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpfXJldHVybiBhfTsKZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXz1mdW5jdGlvbihhLGIpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIGM9Z29vZy5kb20uYXNzZXJ0cy5nZXRXaW5kb3dfKGEpO2MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY1tiXSYmKGEmJihhIGluc3RhbmNlb2YgY1tiXXx8IShhIGluc3RhbmNlb2YgYy5Mb2NhdGlvbnx8YSBpbnN0YW5jZW9mIGMuRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbCgiQXJndW1lbnQgaXMgbm90IGEgJXMgKG9yIGEgbm9uLUVsZW1lbnQsIG5vbi1Mb2NhdGlvbiBtb2NrKTsgZ290OiAlcyIsYixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpKX1yZXR1cm4gYX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxBbmNob3JFbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEJ1dHRvbkVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxMaW5rRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MTGlua0VsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEltYWdlRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MQXVkaW9FbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MVmlkZW9FbGVtZW50Iil9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxJbnB1dEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxUZXh0QXJlYUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFRleHRBcmVhRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTENhbnZhc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTENhbnZhc0VsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRW1iZWRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxFbWJlZEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGb3JtRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MRm9ybUVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEZyYW1lRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTElGcmFtZUVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MT2JqZWN0RWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFNjcmlwdEVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihhKXtpZihnb29nLmlzT2JqZWN0KGEpKXRyeXtyZXR1cm4gYS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8YS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Y2F0Y2goYil7cmV0dXJuIjxvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkPiJ9ZWxzZSByZXR1cm4gdm9pZCAwPT09YT8idW5kZWZpbmVkIjpudWxsPT09YT8ibnVsbCI6dHlwZW9mIGF9O2dvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YSYmYS5vd25lckRvY3VtZW50LGM9YiYmKGIuZGVmYXVsdFZpZXd8fGIucGFyZW50V2luZG93KTtjPWN8fGdvb2cuZ2xvYmFsO2lmKGMuRWxlbWVudCYmYy5Mb2NhdGlvbilyZXR1cm4gY31jYXRjaChkKXt9cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zPXt9O2dvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhfX07Z29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Z29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfTtnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zLlVOREVGSU5FRD1mdW5jdGlvbigpe307Z29vZy5mdW5jdGlvbnMuRU1QVFk9Z29vZy5mdW5jdGlvbnMuVU5ERUZJTkVEO2dvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGEpO319O2dvb2cuZnVuY3Rpb25zLmZhaWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgYTt9fTsKZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihhLGIpe2I9Ynx8MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLGIpKX19O2dvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2FdfX07Z29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGQ9dGhpcztkPT09Z29vZy5nbG9iYWwmJihkPXZvaWQgMCk7Y29uc3QgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2UucHVzaC5hcHBseShlLGMpO3JldHVybiBhLmFwcGx5KGQsZSl9fTsKZ29vZy5mdW5jdGlvbnMud2l0aFJldHVyblZhbHVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlKGEsZ29vZy5mdW5jdGlvbnMuY29uc3RhbnQoYikpfTtnb29nLmZ1bmN0aW9ucy5lcXVhbFRvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiP2E9PWM6YT09PWN9fTtnb29nLmZ1bmN0aW9ucy5jb21wb3NlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hcmd1bWVudHMsZD1jLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZTtkJiYoZT1jW2QtMV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtmb3IobGV0IGY9ZC0yOzA8PWY7Zi0tKWU9Y1tmXS5jYWxsKHRoaXMsZSk7cmV0dXJuIGV9fTsKZ29vZy5mdW5jdGlvbnMuc2VxdWVuY2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZDtmb3IobGV0IGU9MDtlPGM7ZSsrKWQ9YltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR9fTtnb29nLmZ1bmN0aW9ucy5hbmQ9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IobGV0IGQ9MDtkPGM7ZCsrKWlmKCFiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMTtyZXR1cm4hMH19O2dvb2cuZnVuY3Rpb25zLm9yPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YXJndW1lbnRzLGM9Yi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19Owpnb29nLmZ1bmN0aW9ucy5ub3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07Z29vZy5mdW5jdGlvbnMuY3JlYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlPWEucHJvdG90eXBlO2M9bmV3IGM7YS5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIGN9O2dvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRT0hMDtnb29nLmZ1bmN0aW9ucy5jYWNoZVJldHVyblZhbHVlPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWdvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRSlyZXR1cm4gYSgpO2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319O2dvb2cuZnVuY3Rpb25zLm9uY2U9ZnVuY3Rpb24oYSl7bGV0IGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXtjb25zdCBjPWI7Yj1udWxsO2MoKX19fTsKZ29vZy5mdW5jdGlvbnMuZGVib3VuY2U9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTA7cmV0dXJuIGZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNsZWFyVGltZW91dChkKTtjb25zdCBmPWFyZ3VtZW50cztkPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFwcGx5KGMsZil9LGIpfX07Z29vZy5mdW5jdGlvbnMudGhyb3R0bGU9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTAsZT0hMSxmPVtdO2NvbnN0IGc9ZnVuY3Rpb24oKXtkPTA7ZSYmKGU9ITEsaCgpKX0saD1mdW5jdGlvbigpe2Q9Z29vZy5nbG9iYWwuc2V0VGltZW91dChnLGIpO2xldCBrPWY7Zj1bXTthLmFwcGx5KGMsayl9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07Cmdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9MDtjb25zdCBlPWZ1bmN0aW9uKCl7ZD0wfTtyZXR1cm4gZnVuY3Rpb24oZil7ZHx8KGQ9Z29vZy5nbG9iYWwuc2V0VGltZW91dChlLGIpLGEuYXBwbHkoYyxhcmd1bWVudHMpKX19O2dvb2cuZnVuY3Rpb25zLmlzRnVuY3Rpb249YT0+ImZ1bmN0aW9uIj09PXR5cGVvZiBhO2dvb2cuc3RyaW5nPXt9O2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fTtnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihhLGIpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1hPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJmJ8fCIiO3RoaXMuU1RSSU5HX0NPTlNUX1RZUEVfTUFSS0VSX19HT09HX1NUUklOR19TRUNVUklUWV9QUklWQVRFXz1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl99O2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwO2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlX307Cmdvb2cuREVCVUcmJihnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ29uc3R7Iit0aGlzLnN0cmluZ0NvbnN0VmFsdWVXaXRoU2VjdXJpdHlDb250cmFjdF9fZ29vZ1N0cmluZ1NlY3VyaXR5UHJpdmF0ZV8rIn0ifSk7Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuc3RyaW5nLkNvbnN0JiZhLlNUUklOR19DT05TVF9UWVBFX01BUktFUl9fR09PR19TVFJJTkdfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl8pcmV0dXJuIGEuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgQ29uc3QsIGdvdCAnIithKyInIik7cmV0dXJuInR5cGVfZXJyb3I6Q29uc3QifTsKZ29vZy5zdHJpbmcuQ29uc3QuZnJvbT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGdvb2cuc3RyaW5nLkNvbnN0KGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfLGEpfTtnb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl89e307Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Z29vZy5zdHJpbmcuQ29uc3QuRU1QVFk9Z29vZy5zdHJpbmcuQ29uc3QuZnJvbSgiIik7Z29vZy5odG1sPXt9O2dvb2cuaHRtbC50cnVzdGVkdHlwZXM9e307Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRT1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FKyIjaHRtbCI6IiI7Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oKXtpZighZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV8mJihnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV89Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSkpO3JldHVybiBnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV99O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFPXt9OwpjbGFzcyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Yj09PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO3JldHVybiAwPT09YS5sZW5ndGg/bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBmcm9tSnNvbihhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnN0cmluZ2lmeV8oYSkpfWdldFR5cGVkU3RyaW5nVmFsdWUoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXN0YXRpYyB1bndyYXAoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYSkudG9TdHJpbmcoKX1zdGF0aWMgdW53cmFwVHJ1c3RlZFNjcmlwdChhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdClyZXR1cm4gYS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTY3JpcHQsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVNjcmlwdCJ9c3RhdGljIHN0cmluZ2lmeV8oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpLnJlcGxhY2UoLzwvZywiXFx4M2MiKX1zdGF0aWMgY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVTY3JpcHQoYSk6CmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdChhLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX19bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk9ZnVuY3Rpb24oKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCIiKX0oKTtnb29nLmh0bWwuU2FmZVNjcmlwdD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdDtnb29nLmZzPXt9O2dvb2cuZnMudXJsPXt9O2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLmNyZWF0ZU9iamVjdFVSTChhKX07Z29vZy5mcy51cmwucmV2b2tlT2JqZWN0VXJsPWZ1bmN0aW9uKGEpe2dvb2cuZnMudXJsLmdldFVybE9iamVjdF8oKS5yZXZva2VPYmplY3RVUkwoYSl9O2dvb2cuZnMudXJsLlVybE9iamVjdF89ZnVuY3Rpb24oKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9Owpnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7Y29uc3QgYT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpO2lmKG51bGwhPWEpcmV0dXJuIGE7dGhyb3cgRXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHMiKTt9O2dvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PWdvb2cuZ2xvYmFsLlVSTCYmdm9pZCAwIT09Z29vZy5nbG9iYWwuVVJMLmNyZWF0ZU9iamVjdFVSTD9nb29nLmdsb2JhbC5VUkw6dm9pZCAwIT09Z29vZy5nbG9iYWwuY3JlYXRlT2JqZWN0VVJMP2dvb2cuZ2xvYmFsOm51bGx9O2dvb2cuZnMudXJsLmJyb3dzZXJTdXBwb3J0c09iamVjdFVybHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Z29vZy5mcy51cmwuZmluZFVybE9iamVjdF8oKX07Z29vZy5mcy5ibG9iPXt9O2dvb2cuZnMuYmxvYi5nZXRCbG9iPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cuZ2xvYmFsLkJsb2JCdWlsZGVyfHxnb29nLmdsb2JhbC5XZWJLaXRCbG9iQnVpbGRlcjtpZih2b2lkIDAhPT1iKXtiPW5ldyBiO2ZvcihsZXQgYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYi5hcHBlbmQoYXJndW1lbnRzW2NdKTtyZXR1cm4gYi5nZXRCbG9iKCl9cmV0dXJuIGdvb2cuZnMuYmxvYi5nZXRCbG9iV2l0aFByb3BlcnRpZXMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9Owpnb29nLmZzLmJsb2IuZ2V0QmxvYldpdGhQcm9wZXJ0aWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nb29nLmdsb2JhbC5CbG9iQnVpbGRlcnx8Z29vZy5nbG9iYWwuV2ViS2l0QmxvYkJ1aWxkZXI7aWYodm9pZCAwIT09ZCl7ZD1uZXcgZDtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKylkLmFwcGVuZChhW2VdLGMpO3JldHVybiBkLmdldEJsb2IoYil9aWYodm9pZCAwIT09Z29vZy5nbG9iYWwuQmxvYilyZXR1cm4gZD17fSxiJiYoZC50eXBlPWIpLGMmJihkLmVuZGluZ3M9YyksbmV3IEJsb2IoYSxkKTt0aHJvdyBFcnJvcigiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IGNyZWF0aW5nIEJsb2JzIik7fTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfP2E6IiJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfKyIifX07Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYil7dmFyIGM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcyk7Yz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMoYyk7dmFyIGQ9Y1szXXx8IiI7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoY1sxXStnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnN0cmluZ2lmeVBhcmFtc18oIj8iLGNbMl18fCIiLGEpK2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXygiIyIsZCxiKSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwoYSkudG9TdHJpbmcoKX07Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgVHJ1c3RlZFJlc291cmNlVXJsLCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybCJ9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdD1mdW5jdGlvbihhLGIpe3ZhciBjPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKTtpZighZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF8udGVzdChjKSl0aHJvdyBFcnJvcigiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiAiK2MpO2E9Yy5yZXBsYWNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuRk9STUFUX01BUktFUl8sZnVuY3Rpb24oZCxlKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZSkpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgIicrZSsnIiwgaW4gZm9ybWF0IHN0cmluZywgIicrYysnIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGQpOgplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkZPUk1BVF9NQVJLRVJfPS8leyhcdyspfS9nO2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQkFTRV9VUkxfPVJlZ0V4cCgiXigoaHR0cHM6KT8vL1swLTlhLXouOltcXF0tXSsvfC9bXi9cXFxcXXxbXjovXFxcXCVdKy98W146L1xcXFwlXSpbPyNdfGFib3V0OmJsYW5rIykiLCJpIik7Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5VUkxfUEFSQU1fUEFSU0VSXz0vXihbXj8jXSopKFw/W14jXSopPygjW1xzXFNdKik/LzsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChhLGIpLmNsb25lV2l0aFBhcmFtcyhjLGQpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1nb29nLnN0cmluZy5Db25zdC51bndyYXAoYVtjXSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21TYWZlU2NyaXB0PWZ1bmN0aW9uKGEpe2E9Z29vZy5mcy5ibG9iLmdldEJsb2JXaXRoUHJvcGVydGllcyhbbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQudW53cmFwKGEpXSwidGV4dC9qYXZhc2NyaXB0Iik7YT1nb29nLmZzLnVybC5jcmVhdGVPYmplY3RVcmwoYSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmdldFBvbGljeVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdFVSTChhKTphO3JldHVybiBuZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybChhLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8pfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKCJzdHJpbmciPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6IiI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/IiYiOiIiKStlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O2dvb2cuc3RyaW5nLmludGVybmFsPXt9O2dvb2cuc3RyaW5nLmludGVybmFsLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5sYXN0SW5kZXhPZihiLDApfTtnb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aD1mdW5jdGlvbihhLGIpe2NvbnN0IGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoYixhLnNsaWNlKDAsYi5sZW5ndGgpKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZShiLGEuc2xpY2UoYS5sZW5ndGgtYi5sZW5ndGgpKX07Cmdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscz1mdW5jdGlvbihhLGIpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PWIudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKiQvLnRlc3QoYSl9O2dvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9OmZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qKFtcc1xTXSo/KVtcc1x4YTBdKiQvLmV4ZWMoYSlbMV19O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXthPVN0cmluZyhhKS50b0xvd2VyQ2FzZSgpO2I9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGE8Yj8tMTphPT1iPzA6MX07Cmdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csYj8iPGJyIC8+IjoiPGJyPiIpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuaHRtbEVzY2FwZT1mdW5jdGlvbihhLGIpe2lmKGIpYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXywiJmx0OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLCImZ3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXywiJnF1b3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sIiYjMDsiKTtlbHNle2lmKCFnb29nLnN0cmluZy5pbnRlcm5hbC5BTExfUkVfLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZigiJiIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKSk7LTEhPWEuaW5kZXhPZigiPCIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfLAoiJmx0OyIpKTstMSE9YS5pbmRleE9mKCI+IikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5HVF9SRV8sIiZndDsiKSk7LTEhPWEuaW5kZXhPZignIicpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV8sIiZxdW90OyIpKTstMSE9YS5pbmRleE9mKCInIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpKTstMSE9YS5pbmRleE9mKCJceDAwIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXywiJiMwOyIpKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXz0vJi9nO2dvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXz0vPC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXz0vPi9nO2dvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfPS8iL2c7Z29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nOwpnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXz0vXHgwMC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tceDAwJjw+IiddLztnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybi0xIT1hLmluZGV4T2YoYil9O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEudG9Mb3dlckNhc2UoKSxiLnRvTG93ZXJDYXNlKCkpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbShTdHJpbmcoYikpLnNwbGl0KCIuIik7Y29uc3QgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7MD09YyYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZigwPT1lWzBdLmxlbmd0aCYmMD09ZlswXS5sZW5ndGgpYnJlYWs7Yz0wPT1lWzFdLmxlbmd0aD8wOnBhcnNlSW50KGVbMV0sMTApO2NvbnN0IGg9MD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKTtjPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oYyxoKXx8Cmdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oMD09ZVsyXS5sZW5ndGgsMD09ZlsyXS5sZW5ndGgpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZSgwPT1jKX1yZXR1cm4gY307Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXz1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07Z29vZy5odG1sLlNhZmVVcmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz9hOiIifXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX19O2dvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc9ImFib3V0OmludmFsaWQjekNsb3N1cmV6Ijtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9Owpnb29nLmh0bWwuU2FmZVVybC51bndyYXA9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsJiZhLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV87Z29vZy5hc3NlcnRzLmZhaWwoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVVybCJ9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKSl9Owpnb29nLmh0bWwuU0FGRV9NSU1FX1RZUEVfUEFUVEVSTl89UmVnRXhwKCdeKD86YXVkaW8vKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LW1hdHJvc2thfHgtd2F2fHdhdnx3ZWJtKXxmb250L1xcdyt8aW1hZ2UvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwfHgtaWNvbnxoZWljfGhlaWYpfHZpZGVvLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtfHF1aWNrdGltZXx4LW1hdHJvc2thKSkoPzo7XFx3Kz0oPzpcXHcrfCJbXFx3Oyw9IF0rIikpKiQnLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuaXNTYWZlTWltZVR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuZnJvbUJsb2I9ZnVuY3Rpb24oYSl7YT1nb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZShhLnR5cGUpP2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybChhKTpnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLnJldm9rZU9iamVjdFVybD1mdW5jdGlvbihhKXthPWEuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpO2EhPT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HJiZnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmwoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tTWVkaWFTb3VyY2U9ZnVuY3Rpb24oYSl7Z29vZy5hc3NlcnRzLmFzc2VydCgiTWVkaWFTb3VyY2UiaW4gZ29vZy5nbG9iYWwsIk5vIHN1cHBvcnQgZm9yIE1lZGlhU291cmNlIik7YT1hIGluc3RhbmNlb2YgTWVkaWFTb3VyY2U/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGEpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLkRBVEFfVVJMX1BBVFRFUk5fPS9eZGF0YTooLiopO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTsKZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmw9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7YT1hLnJlcGxhY2UoLyglMEF8JTBEKS9nLCIiKTtyZXR1cm4gYS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pP2dvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKTpudWxsfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmwoYSl8fGdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19VUkx9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ0ZWw6Iil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXz1SZWdFeHAoIl5zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQiLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNpcFVybD1mdW5jdGlvbihhKXtnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChhKSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21GYWNlYm9va01lc3NlbmdlclVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsImZiLW1lc3NlbmdlcjovL3NoYXJlIil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ3aGF0c2FwcDovL3NlbmQiKXx8KGE9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNtc1VybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNtczoiKSYmZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfKGEpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpOzA8YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7Yj1hLm1hdGNoKC9bPyZdYm9keT0vZ2kpO2lmKCFiKXJldHVybiEwO2lmKDE8Yi5sZW5ndGgpcmV0dXJuITE7YT1hLm1hdGNoKC9bPyZdYm9keT0oW14mXSopLylbMV07aWYoIWEpcmV0dXJuITA7dHJ5e2RlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChjKXtyZXR1cm4hMX1yZXR1cm4vXig/OlthLXowLTlcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNzaDovLyIpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVDaHJvbWVFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9eY2hyb21lLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVGaXJlZm94RXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXm1vei1leHRlbnNpb246XC9cLyhbXlwvXSspXC8vLGEsYil9O2dvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Cmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihhLGIsYyl7KGE9YS5leGVjKGIpKT8oYT1hWzFdLC0xPT0oYyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAoYyldOmMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBnb29nLnN0cmluZy5Db25zdC51bndyYXAoZCl9KSkuaW5kZXhPZihhKSYmKGI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORykpOmI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYSkpfTsKZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO2dvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fO2dvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4gYTthPSJvYmplY3QiPT10eXBlb2YgYSYmYS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2EuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhhKTtyZXR1cm4gZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLnRlc3QoYSk/Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpOmdvb2cuaHRtbC5TYWZlVXJsLnRyeUZyb21EYXRhVXJsKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplKGEpfHxnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfVVJMfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7aWYoYiYmL15kYXRhOi9pLnRlc3QoYSkmJihiPWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGEpLGIuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpPT1hKSlyZXR1cm4gYjtnb29nLmFzc2VydHMuYXNzZXJ0KGdvb2cuaHRtbC5TQUZFX1VSTF9QQVRURVJOXy50ZXN0KGEpLCIlcyBkb2VzIG5vdCBtYXRjaCB0aGUgc2FmZSBVUkwgcGF0dGVybiIsYSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz17fTtnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBnb29nLmh0bWwuU2FmZVVybChhLGdvb2cuaHRtbC5TYWZlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfKX07Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1VSTD1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7Z29vZy5odG1sLlNhZmVVcmwuQUJPVVRfQkxBTks9Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJhYm91dDpibGFuayIpO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlV3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT9hOiIiO3RoaXMuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMH1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKCgwLGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoKShhLCI7IiksYExhc3QgY2hhcmFjdGVyIG9mIHN0eWxlIHN0cmluZyBpcyBub3QgJzsnOiAke2F9YCk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsCiI6IiksIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFwibmFtZTogdmFsdWVcIiBwYWlyOiAiK2EpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV99dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlJiZhLmNvbnN0cnVjdG9yPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV87CigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZVN0eWxlLCBnb3QgJyR7YX1gKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVN0eWxlIn1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlKGEpe2xldCBiPSIiO2ZvcihsZXQgYyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QoYykpdGhyb3cgRXJyb3IoYE5hbWUgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05XSwgZ290OiAke2N9YCk7bGV0IGQ9YVtjXTtudWxsIT1kJiYKKGQ9QXJyYXkuaXNBcnJheShkKT9kLm1hcChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUpLmpvaW4oIiAiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoZCksYis9YCR7Y306JHtkfTtgKX1yZXR1cm4gYj9tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYik6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZfXN0YXRpYyBjb25jYXQoYSl7bGV0IGI9IiI7Y29uc3QgYz1kPT57QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goYyk6Yis9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChkKX07QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhcmd1bWVudHMsYyk7CnJldHVybiBiP21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuRU1QVFl9fW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HPSJ6Q2xvc3VyZXoiOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKXJldHVybid1cmwoIicrZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLnJlcGxhY2UoLzwvZywiJTNjIikucmVwbGFjZSgvW1xcIl0vZywiXFwkJiIpKyciKSc7YT1hIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpOm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX3Nhbml0aXplUHJvcGVydHlWYWx1ZVN0cmluZyhTdHJpbmcoYSkpO2lmKC9bezt9XS8udGVzdChhKSl0aHJvdyBuZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuIixbYV0pO3JldHVybiBhfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmcoYSl7Y29uc3QgYj1hLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfVVJMX1JFLCJ1cmwiKTtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRS50ZXN0KGIpKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT01NRU5UX1JFLnRlc3QoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6ICR7YX1gKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORzsKaWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkUXVvdGVzKGEpKXJldHVybigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgU3RyaW5nIHZhbHVlIHJlcXVpcmVzIGJhbGFuY2VkIHF1b3RlcywgZ290OiAke2F9YCksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkc7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHMoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiAiK2EpLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HfWVsc2UgcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfWArCiIgYW5kIHNpbXBsZSBmdW5jdGlvbnMsIGdvdDogIithKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRRdW90ZXMoYSl7bGV0IGI9ITAsYz0hMDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hLmNoYXJBdChkKTsiJyI9PWUmJmM/Yj0hYjonIic9PWUmJmImJihjPSFjKX1yZXR1cm4gYiYmY30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRTcXVhcmVCcmFja2V0cyhhKXtsZXQgYj0hMDtjb25zdCBjPS9eWy1fYS16QS1aMC05XSQvO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWEuY2hhckF0KGQpO2lmKCJdIj09ZSl7aWYoYilyZXR1cm4hMTtiPSEwfWVsc2UgaWYoIlsiPT1lKXtpZighYilyZXR1cm4hMTtiPSExfWVsc2UgaWYoIWImJiFjLnRlc3QoZSkpcmV0dXJuITF9cmV0dXJuIGJ9CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1ZBTFVFX0FMTE9XRURfQ0hBUlM9IlstLC5cIiclXyEjLyBhLXpBLVowLTlcXFtcXF1dIixtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRT1uZXcgUmVnRXhwKGBeJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfStcJGApLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1VSTF9SRT1SZWdFeHAoIlxcYih1cmxcXChbIFx0XG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXHRcbl0qXFwpKSIsImciKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUz0iY2FsYyBjdWJpYy1iZXppZXIgZml0LWNvbnRlbnQgaHNsIGhzbGEgbGluZWFyLWdyYWRpZW50IG1hdHJpeCBtaW5tYXggcmFkaWFsLWdyYWRpZW50IHJlcGVhdCByZ2IgcmdiYSAocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPyBzdGVwcyB2YXIiLnNwbGl0KCIgIiksCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0ZVTkNUSU9OU19SRT1uZXcgUmVnRXhwKCJcXGIoIittb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUy5qb2luKCJ8IikrIilcXChbLSsqLzAtOWEtekEtWi4lI1xcW1xcXSwgXStcXCkiLCJnIiksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09NTUVOVF9SRT0vXC9cKi87ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl7cmV0dXJuIGEucmVwbGFjZShtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9VUkxfUkUsKGIsYyxkLGUpPT57bGV0IGY9IiI7ZD1kLnJlcGxhY2UoL14oWyciXSkoLiopXDEkLywoZyxoLGspPT57Zj1oO3JldHVybiBrfSk7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShkKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk7cmV0dXJuIGMrZitiK2YrZX0pfQpnb29nLmh0bWwuU2FmZVN0eWxlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZTtnb29nLm9iamVjdD17fTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZm9yRWFjaChhLGIsYyl7Zm9yKGNvbnN0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbHRlcihhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWIuY2FsbChjLGFbZV0sZSxhKSYmKGRbZV09YVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcChhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWRbZV09Yi5jYWxsKGMsYVtlXSxlLGEpO3JldHVybiBkfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lKGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V2ZXJ5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKCFiLmNhbGwoYyxhW2RdLGQsYSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldENvdW50KGEpe2xldCBiPTA7Zm9yKGNvbnN0IGMgaW4gYSliKys7cmV0dXJuIGJ9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldEFueUtleShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhhLGIpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZShhLGIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0VmFsdWVzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5cyhhLGIpe3ZhciBjPWdvb2cuaXNBcnJheUxpa2UoYik7Y29uc3QgZD1jP2I6YXJndW1lbnRzO2ZvcihjPWM/MDoxO2M8ZC5sZW5ndGg7YysrKXtpZihudWxsPT1hKXJldHVybjthPWFbZFtjXV19cmV0dXJuIGF9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NvbnRhaW5zS2V5KGEsYil7cmV0dXJuIG51bGwhPT1hJiZiIGluIGF9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWluc1ZhbHVlKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZihhW2NdPT1iKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maW5kS2V5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4gZH1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZFZhbHVlKGEsYixjKXtyZXR1cm4oYj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleShhLGIsYykpJiZhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9pc0VtcHR5KGEpe2Zvcihjb25zdCBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NsZWFyKGEpe2Zvcihjb25zdCBiIGluIGEpZGVsZXRlIGFbYl19CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9yZW1vdmUoYSxiKXtsZXQgYzsoYz1iIGluIGEpJiZkZWxldGUgYVtiXTtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfYWRkKGEsYixjKXtpZihudWxsIT09YSYmYiBpbiBhKXRocm93IEVycm9yKGBUaGUgb2JqZWN0IGFscmVhZHkgY29udGFpbnMgdGhlIGtleSAiJHtifSJgKTttb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0KGEsYixjKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0KGEsYixjKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYT9hW2JdOmN9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldChhLGIsYyl7YVtiXT1jfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zZXRJZlVuZGVmaW5lZChhLGIsYyl7cmV0dXJuIGIgaW4gYT9hW2JdOmFbYl09Y30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0KGEsYixjKXtpZihiIGluIGEpcmV0dXJuIGFbYl07Yz1jKCk7cmV0dXJuIGFbYl09Y31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXF1YWxzKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZighKGMgaW4gYil8fGFbY10hPT1iW2NdKXJldHVybiExO2Zvcihjb25zdCBjIGluIGIpaWYoIShjIGluIGEpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jbG9uZShhKXtjb25zdCBiPXt9O2Zvcihjb25zdCBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdW5zYWZlQ2xvbmUoYSl7aWYoIWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIGE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhLmNsb25lKXJldHVybiBhLmNsb25lKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTWFwJiZhIGluc3RhbmNlb2YgTWFwKXJldHVybiBuZXcgTWFwKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFNldCYmYSBpbnN0YW5jZW9mIFNldClyZXR1cm4gbmV3IFNldChhKTtpZihhIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2NvbnN0IGI9QXJyYXkuaXNBcnJheShhKT9bXToiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyfHwiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlld3x8IUFycmF5QnVmZmVyLmlzVmlldyhhKXx8YSBpbnN0YW5jZW9mIERhdGFWaWV3P3t9Om5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoKTtmb3IoY29uc3QgYyBpbiBhKWJbY109Cm1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZShhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlKGEpe2NvbnN0IGI9e307Zm9yKGNvbnN0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFM9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V4dGVuZChhLGIpe2xldCBjLGQ7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKGxldCBmPTA7Zjxtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfUFJPVE9UWVBFX0ZJRUxEUy5sZW5ndGg7ZisrKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFNbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZShhKXtjb25zdCBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09YiYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtpZihiJTIpdGhyb3cgRXJyb3IoIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzIik7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCs9MiljW2FyZ3VtZW50c1tkXV09YXJndW1lbnRzW2QrMV07cmV0dXJuIGN9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jcmVhdGVTZXQoYSl7Y29uc3QgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldC5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbYXJndW1lbnRzW2RdXT0hMDtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldyhhKXtsZXQgYj1hO09iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihhKSYmKGI9T2JqZWN0LmNyZWF0ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNJbW11dGFibGVWaWV3KGEpe3JldHVybiEhT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNGcm96ZW4oYSl9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzKGEsYixjKXtpZighYSlyZXR1cm5bXTtpZighT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fCFPYmplY3QuZ2V0UHJvdG90eXBlT2YpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpO2NvbnN0IGQ9e307Zm9yKDthJiYoYSE9PU9iamVjdC5wcm90b3R5cGV8fGIpJiYoYSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8Yyk7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWRbZVtmXV09ITA7YT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGQpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0U3VwZXJDbGFzcyhhKXtyZXR1cm4oYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYS5wcm90b3R5cGUpKSYmYS5jb25zdHJ1Y3Rvcn1nb29nLm9iamVjdC5hZGQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2FkZDtnb29nLm9iamVjdC5jbGVhcj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY2xlYXI7Z29vZy5vYmplY3QuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2Nsb25lO2dvb2cub2JqZWN0LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucztnb29nLm9iamVjdC5jb250YWluc0tleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNLZXk7Z29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZTtnb29nLm9iamVjdC5jcmVhdGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZTsKZ29vZy5vYmplY3QuY3JlYXRlSW1tdXRhYmxlVmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5jcmVhdGVTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldDtnb29nLm9iamVjdC5lcXVhbHM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2VxdWFscztnb29nLm9iamVjdC5ldmVyeT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXZlcnk7Z29vZy5vYmplY3QuZXh0ZW5kPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9leHRlbmQ7Z29vZy5vYmplY3QuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maWx0ZXI7Z29vZy5vYmplY3QuZmluZEtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleTtnb29nLm9iamVjdC5maW5kVmFsdWU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbmRWYWx1ZTtnb29nLm9iamVjdC5mb3JFYWNoPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9mb3JFYWNoOwpnb29nLm9iamVjdC5nZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldDtnb29nLm9iamVjdC5nZXRBbGxQcm9wZXJ0eU5hbWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzO2dvb2cub2JqZWN0LmdldEFueUtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0QW55S2V5O2dvb2cub2JqZWN0LmdldEFueVZhbHVlPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZTtnb29nLm9iamVjdC5nZXRDb3VudD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0Q291bnQ7Z29vZy5vYmplY3QuZ2V0S2V5cz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0S2V5cztnb29nLm9iamVjdC5nZXRTdXBlckNsYXNzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRTdXBlckNsYXNzO2dvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5czsKZ29vZy5vYmplY3QuZ2V0VmFsdWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZXM7Z29vZy5vYmplY3QuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNFbXB0eTtnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2lzSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5tYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcDtnb29nLm9iamVjdC5yZW1vdmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3JlbW92ZTtnb29nLm9iamVjdC5zZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldDtnb29nLm9iamVjdC5zZXRJZlVuZGVmaW5lZD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0SWZVbmRlZmluZWQ7Z29vZy5vYmplY3Quc2V0V2l0aFJldHVyblZhbHVlSWZOb3RTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0Owpnb29nLm9iamVjdC5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lO2dvb2cub2JqZWN0LnRyYW5zcG9zZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlO2dvb2cub2JqZWN0LnVuc2FmZUNsb25lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXR7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIGNyZWF0ZVJ1bGUoYSxiKXtpZigoMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYSwiPCIpKXRocm93IEVycm9yKGBTZWxlY3RvciBkb2VzIG5vdCBhbGxvdyAnPCcsIGdvdDogJHthfWApO2NvbnN0IGM9YS5yZXBsYWNlKC8oJ3wiKSgoPyFcMSlbXlxyXG5cZlxcXXxcXFtcc1xTXSkqXDEvZywKIiIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXSgpPV4kfF0rJC8udGVzdChjKSl0aHJvdyBFcnJvcigiU2VsZWN0b3IgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05Iy46KiAsPit+W1xcXSgpPV4kfF0gYW5kIHN0cmluZ3MsIGdvdDogIithKTtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5oYXNCYWxhbmNlZEJyYWNrZXRzXyhjKSl0aHJvdyBFcnJvcigiKCkgYW5kIFtdIGluIHNlbGVjdG9yIG11c3QgYmUgYmFsYW5jZWQsIGdvdDogIithKTtiIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlfHwoYj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlKGIpKTthPWAke2F9e2ArbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChiKS5yZXBsYWNlKC88L2csIlxcM0MgIikrIn0iOwpyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBoYXNCYWxhbmNlZEJyYWNrZXRzXyhhKXtjb25zdCBiPXsiKCI6IikiLCJbIjoiXSJ9LGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2NvbnN0IGU9YVtkXTtpZihiW2VdKWMucHVzaChiW2VdKTtlbHNlIGlmKG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhiLGUpJiZjLnBvcCgpIT1lKXJldHVybiExfXJldHVybiAwPT1jLmxlbmd0aH1zdGF0aWMgY29uY2F0KGEpe2xldCBiPSIiO2NvbnN0IGM9ZD0+e0FycmF5LmlzQXJyYXkoZCk/ZC5mb3JFYWNoKGMpOmIrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGQpfTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGFyZ3VtZW50cywKYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWTsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KSghKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsIjwiKSxgRm9yYmlkZGVuICc8JyBjaGFyYWN0ZXIgaW4gc3R5bGUgc2hlZXQgc3RyaW5nOiAke2F9YCk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX1nZXRUeXBlZFN0cmluZ1ZhbHVlKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffXN0YXRpYyB1bndyYXAoYSl7aWYoYSBpbnN0YW5jZW9mCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0KXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZVNoZWV0LCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlNhZmVTdHlsZVNoZWV0In1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKXtyZXR1cm4gbmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEUpfX0KbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0LmNyZWF0ZVNhZmVTdHlsZVNoZWV0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0O2dvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fTtnb29nLmRvbS5UYWdOYW1lPWNsYXNze3N0YXRpYyBjYXN0KGEsYil7cmV0dXJuIGF9Y29uc3RydWN0b3IoKXt9dG9TdHJpbmcoKXt9fTtnb29nLmRvbS5UYWdOYW1lLkE9IkEiO2dvb2cuZG9tLlRhZ05hbWUuQUJCUj0iQUJCUiI7Z29vZy5kb20uVGFnTmFtZS5BQ1JPTllNPSJBQ1JPTllNIjtnb29nLmRvbS5UYWdOYW1lLkFERFJFU1M9IkFERFJFU1MiO2dvb2cuZG9tLlRhZ05hbWUuQVBQTEVUPSJBUFBMRVQiO2dvb2cuZG9tLlRhZ05hbWUuQVJFQT0iQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5BUlRJQ0xFPSJBUlRJQ0xFIjtnb29nLmRvbS5UYWdOYW1lLkFTSURFPSJBU0lERSI7Z29vZy5kb20uVGFnTmFtZS5BVURJTz0iQVVESU8iO2dvb2cuZG9tLlRhZ05hbWUuQj0iQiI7Z29vZy5kb20uVGFnTmFtZS5CQVNFPSJCQVNFIjtnb29nLmRvbS5UYWdOYW1lLkJBU0VGT05UPSJCQVNFRk9OVCI7Z29vZy5kb20uVGFnTmFtZS5CREk9IkJESSI7Z29vZy5kb20uVGFnTmFtZS5CRE89IkJETyI7Cmdvb2cuZG9tLlRhZ05hbWUuQklHPSJCSUciO2dvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT0iQkxPQ0tRVU9URSI7Z29vZy5kb20uVGFnTmFtZS5CT0RZPSJCT0RZIjtnb29nLmRvbS5UYWdOYW1lLkJSPSJCUiI7Z29vZy5kb20uVGFnTmFtZS5CVVRUT049IkJVVFRPTiI7Z29vZy5kb20uVGFnTmFtZS5DQU5WQVM9IkNBTlZBUyI7Z29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPSJDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj0iQ0VOVEVSIjtnb29nLmRvbS5UYWdOYW1lLkNJVEU9IkNJVEUiO2dvb2cuZG9tLlRhZ05hbWUuQ09ERT0iQ09ERSI7Z29vZy5kb20uVGFnTmFtZS5DT0w9IkNPTCI7Z29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD0iQ09MR1JPVVAiO2dvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD0iQ09NTUFORCI7Z29vZy5kb20uVGFnTmFtZS5EQVRBPSJEQVRBIjtnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPSJEQVRBTElTVCI7Z29vZy5kb20uVGFnTmFtZS5ERD0iREQiOwpnb29nLmRvbS5UYWdOYW1lLkRFTD0iREVMIjtnb29nLmRvbS5UYWdOYW1lLkRFVEFJTFM9IkRFVEFJTFMiO2dvb2cuZG9tLlRhZ05hbWUuREZOPSJERk4iO2dvb2cuZG9tLlRhZ05hbWUuRElBTE9HPSJESUFMT0ciO2dvb2cuZG9tLlRhZ05hbWUuRElSPSJESVIiO2dvb2cuZG9tLlRhZ05hbWUuRElWPSJESVYiO2dvb2cuZG9tLlRhZ05hbWUuREw9IkRMIjtnb29nLmRvbS5UYWdOYW1lLkRUPSJEVCI7Z29vZy5kb20uVGFnTmFtZS5FTT0iRU0iO2dvb2cuZG9tLlRhZ05hbWUuRU1CRUQ9IkVNQkVEIjtnb29nLmRvbS5UYWdOYW1lLkZJRUxEU0VUPSJGSUVMRFNFVCI7Z29vZy5kb20uVGFnTmFtZS5GSUdDQVBUSU9OPSJGSUdDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkZJR1VSRT0iRklHVVJFIjtnb29nLmRvbS5UYWdOYW1lLkZPTlQ9IkZPTlQiO2dvb2cuZG9tLlRhZ05hbWUuRk9PVEVSPSJGT09URVIiO2dvb2cuZG9tLlRhZ05hbWUuRk9STT0iRk9STSI7Cmdvb2cuZG9tLlRhZ05hbWUuRlJBTUU9IkZSQU1FIjtnb29nLmRvbS5UYWdOYW1lLkZSQU1FU0VUPSJGUkFNRVNFVCI7Z29vZy5kb20uVGFnTmFtZS5IMT0iSDEiO2dvb2cuZG9tLlRhZ05hbWUuSDI9IkgyIjtnb29nLmRvbS5UYWdOYW1lLkgzPSJIMyI7Z29vZy5kb20uVGFnTmFtZS5IND0iSDQiO2dvb2cuZG9tLlRhZ05hbWUuSDU9Ikg1Ijtnb29nLmRvbS5UYWdOYW1lLkg2PSJINiI7Z29vZy5kb20uVGFnTmFtZS5IRUFEPSJIRUFEIjtnb29nLmRvbS5UYWdOYW1lLkhFQURFUj0iSEVBREVSIjtnb29nLmRvbS5UYWdOYW1lLkhHUk9VUD0iSEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLkhSPSJIUiI7Z29vZy5kb20uVGFnTmFtZS5IVE1MPSJIVE1MIjtnb29nLmRvbS5UYWdOYW1lLkk9IkkiO2dvb2cuZG9tLlRhZ05hbWUuSUZSQU1FPSJJRlJBTUUiO2dvb2cuZG9tLlRhZ05hbWUuSU1HPSJJTUciO2dvb2cuZG9tLlRhZ05hbWUuSU5QVVQ9IklOUFVUIjsKZ29vZy5kb20uVGFnTmFtZS5JTlM9IklOUyI7Z29vZy5kb20uVGFnTmFtZS5JU0lOREVYPSJJU0lOREVYIjtnb29nLmRvbS5UYWdOYW1lLktCRD0iS0JEIjtnb29nLmRvbS5UYWdOYW1lLktFWUdFTj0iS0VZR0VOIjtnb29nLmRvbS5UYWdOYW1lLkxBQkVMPSJMQUJFTCI7Z29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9IkxFR0VORCI7Z29vZy5kb20uVGFnTmFtZS5MST0iTEkiO2dvb2cuZG9tLlRhZ05hbWUuTElOSz0iTElOSyI7Z29vZy5kb20uVGFnTmFtZS5NQUlOPSJNQUlOIjtnb29nLmRvbS5UYWdOYW1lLk1BUD0iTUFQIjtnb29nLmRvbS5UYWdOYW1lLk1BUks9Ik1BUksiO2dvb2cuZG9tLlRhZ05hbWUuTUFUSD0iTUFUSCI7Z29vZy5kb20uVGFnTmFtZS5NRU5VPSJNRU5VIjtnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPSJNRU5VSVRFTSI7Z29vZy5kb20uVGFnTmFtZS5NRVRBPSJNRVRBIjtnb29nLmRvbS5UYWdOYW1lLk1FVEVSPSJNRVRFUiI7Cmdvb2cuZG9tLlRhZ05hbWUuTkFWPSJOQVYiO2dvb2cuZG9tLlRhZ05hbWUuTk9GUkFNRVM9Ik5PRlJBTUVTIjtnb29nLmRvbS5UYWdOYW1lLk5PU0NSSVBUPSJOT1NDUklQVCI7Z29vZy5kb20uVGFnTmFtZS5PQkpFQ1Q9Ik9CSkVDVCI7Z29vZy5kb20uVGFnTmFtZS5PTD0iT0wiO2dvb2cuZG9tLlRhZ05hbWUuT1BUR1JPVVA9Ik9QVEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLk9QVElPTj0iT1BUSU9OIjtnb29nLmRvbS5UYWdOYW1lLk9VVFBVVD0iT1VUUFVUIjtnb29nLmRvbS5UYWdOYW1lLlA9IlAiO2dvb2cuZG9tLlRhZ05hbWUuUEFSQU09IlBBUkFNIjtnb29nLmRvbS5UYWdOYW1lLlBJQ1RVUkU9IlBJQ1RVUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJFPSJQUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJPR1JFU1M9IlBST0dSRVNTIjtnb29nLmRvbS5UYWdOYW1lLlE9IlEiO2dvb2cuZG9tLlRhZ05hbWUuUlA9IlJQIjtnb29nLmRvbS5UYWdOYW1lLlJUPSJSVCI7Cmdvb2cuZG9tLlRhZ05hbWUuUlRDPSJSVEMiO2dvb2cuZG9tLlRhZ05hbWUuUlVCWT0iUlVCWSI7Z29vZy5kb20uVGFnTmFtZS5TPSJTIjtnb29nLmRvbS5UYWdOYW1lLlNBTVA9IlNBTVAiO2dvb2cuZG9tLlRhZ05hbWUuU0NSSVBUPSJTQ1JJUFQiO2dvb2cuZG9tLlRhZ05hbWUuU0VDVElPTj0iU0VDVElPTiI7Z29vZy5kb20uVGFnTmFtZS5TRUxFQ1Q9IlNFTEVDVCI7Z29vZy5kb20uVGFnTmFtZS5TTUFMTD0iU01BTEwiO2dvb2cuZG9tLlRhZ05hbWUuU09VUkNFPSJTT1VSQ0UiO2dvb2cuZG9tLlRhZ05hbWUuU1BBTj0iU1BBTiI7Z29vZy5kb20uVGFnTmFtZS5TVFJJS0U9IlNUUklLRSI7Z29vZy5kb20uVGFnTmFtZS5TVFJPTkc9IlNUUk9ORyI7Z29vZy5kb20uVGFnTmFtZS5TVFlMRT0iU1RZTEUiO2dvb2cuZG9tLlRhZ05hbWUuU1VCPSJTVUIiO2dvb2cuZG9tLlRhZ05hbWUuU1VNTUFSWT0iU1VNTUFSWSI7Z29vZy5kb20uVGFnTmFtZS5TVVA9IlNVUCI7Cmdvb2cuZG9tLlRhZ05hbWUuU1ZHPSJTVkciO2dvb2cuZG9tLlRhZ05hbWUuVEFCTEU9IlRBQkxFIjtnb29nLmRvbS5UYWdOYW1lLlRCT0RZPSJUQk9EWSI7Z29vZy5kb20uVGFnTmFtZS5URD0iVEQiO2dvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9IlRFTVBMQVRFIjtnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPSJURVhUQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5URk9PVD0iVEZPT1QiO2dvb2cuZG9tLlRhZ05hbWUuVEg9IlRIIjtnb29nLmRvbS5UYWdOYW1lLlRIRUFEPSJUSEVBRCI7Z29vZy5kb20uVGFnTmFtZS5USU1FPSJUSU1FIjtnb29nLmRvbS5UYWdOYW1lLlRJVExFPSJUSVRMRSI7Z29vZy5kb20uVGFnTmFtZS5UUj0iVFIiO2dvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9IlRSQUNLIjtnb29nLmRvbS5UYWdOYW1lLlRUPSJUVCI7Z29vZy5kb20uVGFnTmFtZS5VPSJVIjtnb29nLmRvbS5UYWdOYW1lLlVMPSJVTCI7Z29vZy5kb20uVGFnTmFtZS5WQVI9IlZBUiI7Cmdvb2cuZG9tLlRhZ05hbWUuVklERU89IlZJREVPIjtnb29nLmRvbS5UYWdOYW1lLldCUj0iV0JSIjtnb29nLmxhYnM9e307Z29vZy5sYWJzLnVzZXJBZ2VudD17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9VU0VfQ0xJRU5UX0hJTlRTX09WRVJSSURFPSIiLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFM9ITE7bGV0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X2ZvcmNlQ2xpZW50SGludHNJblRlc3RzPSExO2dvb2cubGFicy51c2VyQWdlbnQuc2V0VXNlQ2xpZW50SGludHNGb3JUZXN0aW5nPWE9Pnttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cz1hfTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfdXNlQ2xpZW50SGludHNSdW50aW1lT3ZlcnJpZGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfVVNFX0NMSUVOVF9ISU5UU19PVkVSUklERT8hIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFNfT1ZFUlJJREUpOiExO2dvb2cubGFicy51c2VyQWdlbnQudXNlQ2xpZW50SGludHM9KCk9Pm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFN8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X3VzZUNsaWVudEhpbnRzUnVudGltZU92ZXJyaWRlfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cztnb29nLmxhYnMudXNlckFnZW50LnV0aWw9e307Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9BU1NVTUVfQ0xJRU5UX0hJTlRTX1NVUFBPUlQ9ITE7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKXt2YXIgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdmlnYXRvcigpO3JldHVybiBhJiYoYT1hLnVzZXJBZ2VudCk/YToiIn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudERhdGEoKXtjb25zdCBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCk7cmV0dXJuIGE/YS51c2VyQWdlbnREYXRhfHxudWxsOm51bGx9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnRJbnRlcm5hbD1udWxsLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudChhKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsPSJzdHJpbmciPT09dHlwZW9mIGE/YTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZygpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCl7cmV0dXJuIG51bGw9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50SW50ZXJuYWw/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudERhdGEoYSl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnREYXRhSW50ZXJuYWw9YX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3Jlc2V0VXNlckFnZW50RGF0YSgpe21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudERhdGFJbnRlcm5hbH0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChhKXtpZighKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiBiP2IuYnJhbmRzLnNvbWUoKHticmFuZDpjfSk9PmMmJigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKShjLGEpKTohMX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KGEpe2NvbnN0IGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtyZXR1cm4oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYixhKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoYSl7Y29uc3QgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudCgpO3JldHVybigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zKShiLGEpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXMoYSl7Y29uc3QgYj1SZWdFeHAoIihbQS1aXVtcXHcgXSspLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/IiwiZyIpLGM9W107bGV0IGQ7Zm9yKDtkPWIuZXhlYyhhKTspYy5wdXNoKFtkWzFdLGRbMl0sZFszXXx8dm9pZCAwXSk7cmV0dXJuIGN9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLkFTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX0FTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmV4dHJhY3RWZXJzaW9uVHVwbGVzPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXM7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZztnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50O2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50RGF0YUJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50SWdub3JlQ2FzZTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwucmVzZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfcmVzZXRVc2VyQWdlbnREYXRhO2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5zZXRVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnNldFVzZXJBZ2VudERhdGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnREYXRhO3ZhciBtb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5VmFsdWU9e0FzeW5jVmFsdWU6Y2xhc3N7Z2V0SWZMb2FkZWQoKXt9bG9hZCgpe319LEhpZ2hFbnRyb3B5VmFsdWU6Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rZXlfPWE7dGhpcy5wcm9taXNlXz10aGlzLnZhbHVlXz12b2lkIDA7dGhpcy5wZW5kaW5nXz0hMX1nZXRJZkxvYWRlZCgpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpKXJldHVybiB0aGlzLnZhbHVlX31hc3luYyBsb2FkKCl7Y29uc3QgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKTtpZihhKXJldHVybiB0aGlzLnByb21pc2VffHwodGhpcy5wZW5kaW5nXz0hMCx0aGlzLnByb21pc2VfPShhc3luYygpPT57dHJ5e3JldHVybiB0aGlzLnZhbHVlXz0oYXdhaXQgYS5nZXRIaWdoRW50cm9weVZhbHVlcyhbdGhpcy5rZXlfXSkpW3RoaXMua2V5X119ZmluYWxseXt0aGlzLnBlbmRpbmdfPQohMX19KSgpKSxhd2FpdCB0aGlzLnByb21pc2VffXJlc2V0Rm9yVGVzdGluZygpe2lmKHRoaXMucGVuZGluZ18pdGhyb3cgRXJyb3IoIlVuc2FmZSBjYWxsIHRvIHJlc2V0Rm9yVGVzdGluZyIpO3RoaXMudmFsdWVfPXRoaXMucHJvbWlzZV89dm9pZCAwO3RoaXMucGVuZGluZ189ITF9fSxWZXJzaW9uOmNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmVyc2lvblN0cmluZ189YX10b1ZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvblN0cmluZ199aXNBdExlYXN0KGEpe3JldHVybiAwPD0oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlVmVyc2lvbnMpKHRoaXMudmVyc2lvblN0cmluZ18sYSl9fX07dmFyIG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhPXt9O21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdD1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoImZ1bGxWZXJzaW9uTGlzdCIpO21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLnBsYXRmb3JtVmVyc2lvbj1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoInBsYXRmb3JtVmVyc2lvbiIpO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kPXtBTkRST0lEX0JST1dTRVI6IkFuZHJvaWQgQnJvd3NlciIsQ0hST01JVU06IkNocm9taXVtIixFREdFOiJNaWNyb3NvZnQgRWRnZSIsRklSRUZPWDoiRmlyZWZveCIsSUU6IkludGVybmV0IEV4cGxvcmVyIixPUEVSQToiT3BlcmEiLFNBRkFSSToiU2FmYXJpIixTSUxLOiJTaWxrIn07Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLkJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKGE9ITEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfQVNTVU1FX0NMSUVOVF9ISU5UU19TVVBQT1JUKXJldHVybiEwO2lmKCFhJiYhKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTthPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiEhYSYmMDxhLmJyYW5kcy5sZW5ndGh9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaGFzRnVsbFZlcnNpb25MaXN0KCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdExlYXN0KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU0sOTgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIk9wZXJhIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlRyaWRlbnQiKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiTVNJRSIpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkVkZ2UiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5FREdFKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJFZGcvIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLk9QRVJBKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJPUFIiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiRmlyZWZveCIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJGeGlPUyIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoU2FmYXJpKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNhZmFyaSIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0KCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bSgpfHwKbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3QoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoKT8hMTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDb2FzdCIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldygpe3JldHVybihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJpUGFkIil8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoImlQaG9uZSIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hTYWZhcmkoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDb2FzdCgpJiYhbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5DSFJPTUlVTSk6KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkNocm9tZSIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDcmlPUyIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXIoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCkpfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNPcGVyYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmE7Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzSUU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzT3BlcmFDaHJvbWl1bT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYUNocm9taXVtPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRmlyZWZveD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRmlyZWZveDtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ29hc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0Owpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3Q7Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0lvc1dlYnZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElvc1dlYnZpZXc7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldztjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBbmRyb2lkQnJvd3Nlcj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXI7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQW5kcm9pZEJyb3dzZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEFuZHJvaWRCcm93c2VyO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNpbGsiKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2NyZWF0ZVZlcnNpb25NYXAoYSl7Y29uc3QgYj17fTthLmZvckVhY2goYz0+e2JbY1swXV09Y1sxXX0pO3JldHVybiBjPT5iW2MuZmluZChkPT5kIGluIGIpXXx8IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbigpe3ZhciBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCk7aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCkpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0SUVWZXJzaW9uKGEpO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9leHRyYWN0VmVyc2lvblR1cGxlcyhhKTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfY3JlYXRlVmVyc2lvbk1hcChhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCk/YihbIlZlcnNpb24iLCJPcGVyYSJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKT8KYihbIkVkZ2UiXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpP2IoWyJFZGciXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKT9iKFsiU2lsayJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ2hyb21lKCk/YihbIkNocm9tZSIsIkNyaU9TIiwiSGVhZGxlc3NDaHJvbWUiXSk6KGE9YVsyXSkmJmFbMV18fCIifWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcihhKXtyZXR1cm4gMDw9KDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKShtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb24oKSxhKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNWZXJzaW9uT3JIaWdoZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYSl7dmFyIGI9L3J2OiAqKFtcZFwuXSopLy5leGVjKGEpO2lmKGImJmJbMV0pcmV0dXJuIGJbMV07Yj0iIjtjb25zdCBjPS9NU0lFICsoW1xkXC5dKykvLmV4ZWMoYSk7aWYoYyYmY1sxXSlpZihhPS9UcmlkZW50XC8oXGQuXGQpLy5leGVjKGEpLCI3LjAiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgIjQuMCI6Yj0iOC4wIjticmVhaztjYXNlICI1LjAiOmI9IjkuMCI7YnJlYWs7Y2FzZSAiNi4wIjpiPSIxMC4wIjticmVhaztjYXNlICI3LjAiOmI9IjExLjAifWVsc2UgYj0iNy4wIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtpZihhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5JRSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYik6IiI7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2V4dHJhY3RWZXJzaW9uVHVwbGVzKGIpO2NvbnN0IGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9jcmVhdGVWZXJzaW9uTWFwKGIpO3N3aXRjaChhKXtjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuT1BFUkE6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCkpcmV0dXJuIGMoWyJWZXJzaW9uIiwKIk9wZXJhIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCkpcmV0dXJuIGMoWyJPUFIiXSk7YnJlYWs7Y2FzZSBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkVER0U6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VIdG1sKCkpcmV0dXJuIGMoWyJFZGdlIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlQ2hyb21pdW0oKSlyZXR1cm4gYyhbIkVkZyJdKTticmVhaztjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU06aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpKXJldHVybiBjKFsiQ2hyb21lIiwiQ3JpT1MiLCJIZWFkbGVzc0Nocm9tZSJdKX1yZXR1cm4gYT09PQptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkZJUkVGT1gmJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94KCl8fGE9PT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLlNBRkFSSSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaSgpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5BTkRST0lEX0JST1dTRVImJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hBbmRyb2lkQnJvd3NlcigpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLJiZtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpPyhhPWJbMl0pJiYKYVsxXXx8IiI6IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdmVyc2lvbk9mXyhhKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpJiZhIT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLKXt2YXIgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpO2lmKCFifHwhYi52ZXJzaW9uKXJldHVybiBOYU47Yj1iLnZlcnNpb24uc3BsaXQoIi4iKX1lbHNle2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSk7aWYoIiI9PT1iKXJldHVybiBOYU47Yj1iLnNwbGl0KCIuIil9cmV0dXJuIDA9PT1iLmxlbmd0aD9OYU46TnVtYmVyKGJbMF0pfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk+PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRMZWFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0F0TW9zdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk8PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRNb3N0PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdE1vc3Q7CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfSGlnaEVudHJvcHlCcmFuZFZlcnNpb257Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuYnJhbmRfPWE7dGhpcy52ZXJzaW9uXz1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYyk7dGhpcy51c2VVYWNoXz1ifWdldElmTG9hZGVkKCl7aWYodGhpcy51c2VVYWNoXyl7dmFyIGE9bW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmdldElmTG9hZGVkKCk7aWYodm9pZCAwIT09YSlyZXR1cm4gYT1hLmZpbmQoKHticmFuZDpifSk9PnRoaXMuYnJhbmRfPT09YiksKDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYSksbmV3IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlWYWx1ZS5WZXJzaW9uKGEudmVyc2lvbil9aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkKXJldHVybiB0aGlzLnZlcnNpb25ffWFzeW5jIGxvYWQoKXtpZih0aGlzLnVzZVVhY2hfKXt2YXIgYT0KYXdhaXQgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmxvYWQoKTtpZih2b2lkIDAhPT1hKXJldHVybiBhPWEuZmluZCgoe2JyYW5kOmJ9KT0+dGhpcy5icmFuZF89PT1iKSwoMCxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzKShhKSxuZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYS52ZXJzaW9uKX1lbHNlIGF3YWl0IDA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwO3JldHVybiB0aGlzLnZlcnNpb25ffX1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSExOwphc3luYyBmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2xvYWRGdWxsVmVyc2lvbnMoKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCghMCkmJmF3YWl0IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdC5sb2FkKCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwfWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5sb2FkRnVsbFZlcnNpb25zPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbG9hZEZ1bGxWZXJzaW9uczsKZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLnJlc2V0Rm9yVGVzdGluZz0oKT0+e21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfcHJlVWFjaEhhc0xvYWRlZD0hMTttb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5RGF0YS5mdWxsVmVyc2lvbkxpc3QucmVzZXRGb3JUZXN0aW5nKCl9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2Z1bGxWZXJzaW9uT2YoYSl7bGV0IGI9IiI7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9oYXNGdWxsVmVyc2lvbkxpc3QoKXx8KGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSkpO2NvbnN0IGM9YSE9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuU0lMSyYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoITApO2lmKGMpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmR9KT0+ZD09PWEpKXJldHVybn1lbHNlIGlmKCIiPT09YilyZXR1cm47cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0hpZ2hFbnRyb3B5QnJhbmRWZXJzaW9uKGEsCmMsYil9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmZ1bGxWZXJzaW9uT2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKGEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCEwKSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mKGEpO2lmKGIpe2lmKGI9Yi5nZXRJZkxvYWRlZCgpKXJldHVybiBiLnRvVmVyc2lvblN0cmluZ0ZvckxvZ2dpbmcoKTtiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpLmJyYW5kcy5maW5kKCh7YnJhbmQ6Y30pPT5jPT09YSk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYik7cmV0dXJuIGIudmVyc2lvbn1yZXR1cm4iIn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl9Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uU3RyaW5nRm9yTG9nZ2luZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nO2dvb2cuZG9tLnRhZ3M9e307Z29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07Z29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bYV19O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT17fTsKY2xhc3MgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWI9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU/YToiIjt0aGlzLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITB9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChhKS50b1N0cmluZygpfXN0YXRpYyB1bndyYXBUcnVzdGVkSFRNTChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbCYmCmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbChgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnJHthfScgb2YgdHlwZSBgK2dvb2cudHlwZU9mKGEpKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlSHRtbCJ9c3RhdGljIGh0bWxFc2NhcGUoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGEpKX1zdGF0aWMgaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcyhhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbClyZXR1cm4gYTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXMoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmh0bWxFc2NhcGUoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbW1lbnQoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiXHgzYyEtLSIrCmdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSkrIi0tXHgzZSIpfXN0YXRpYyBjcmVhdGUoYSxiLGMpe21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudmVyaWZ5VGFnTmFtZShTdHJpbmcoYSkpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGEpLGIsYyl9c3RhdGljIHZlcmlmeVRhZ05hbWUoYSl7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfVkFMSURfTkFNRVNfSU5fVEFHLnRlc3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YEludmFsaWQgdGFnIG5hbWUgPCR7YX0+LmA6IiIpO2lmKGEudG9VcHBlckNhc2UoKWluIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfTk9UX0FMTE9XRURfVEFHX05BTUVTKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgVGFnIG5hbWUgPCR7YX0+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5gOiIiKTt9c3RhdGljIGNyZWF0ZUlmcmFtZShhLGIsYyxkKXthJiZnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChhKTtjb25zdCBlPXt9O2Uuc3JjPWF8fG51bGw7ZS5zcmNkb2M9YiYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYik7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse3NhbmRib3g6IiJ9LGMpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoImlmcmFtZSIsYSxkKX1zdGF0aWMgY3JlYXRlU2FuZGJveElmcmFtZShhLGIsYyxkKXtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/CiJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLiI6IiIpO2NvbnN0IGU9e307ZS5zcmM9YT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoYSkpOm51bGw7ZS5zcmNkb2M9Ynx8bnVsbDtlLnNhbmRib3g9IiI7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse30sYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiaWZyYW1lIixhLGQpfXN0YXRpYyBjYW5Vc2VTYW5kYm94SWZyYW1lKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLkhUTUxJRnJhbWVFbGVtZW50JiYic2FuZGJveCJpbiBnb29nLmdsb2JhbC5IVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGV9c3RhdGljIGNyZWF0ZVNjcmlwdFNyYyhhLGIpe2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGEpOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3NyYzphfSx7fSxiKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGEpfXN0YXRpYyBjcmVhdGVTY3JpcHQoYSxiKXtmb3IodmFyIGMgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKSl7dmFyIGQ9Yy50b0xvd2VyQ2FzZSgpO2lmKCJsYW5ndWFnZSI9PWR8fCJzcmMiPT1kfHwidGV4dCI9PWQpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YENhbm5vdCBzZXQgIiR7ZH0iIGF0dHJpYnV0ZWA6IiIpO31jPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihkPTA7ZDwKYS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcChhW2RdKTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGIsYSl9c3RhdGljIGNyZWF0ZVN0eWxlKGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHt0eXBlOiJ0ZXh0L2NzcyJ9LHt9LGIpO2xldCBjPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGFbZF0pOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzdHlsZSIsYixhKX1zdGF0aWMgY3JlYXRlTWV0YVJlZnJlc2goYSxiKXthPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShhKSk7KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKSkmJmdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEsIjsiKSYmKGE9IiciK2EucmVwbGFjZSgvJy9nLCIlMjciKSsiJyIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIm1ldGEiLAp7Imh0dHAtZXF1aXYiOiJyZWZyZXNoIixjb250ZW50OihifHwwKSsiOyB1cmw9IithfSl9c3RhdGljIGpvaW4oYSxiKXthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtjb25zdCBjPVtdLGQ9ZT0+e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGQpOihlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxjLnB1c2gobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoZSkpKX07Yi5mb3JFYWNoKGQpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYy5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbmNhdChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU1QVFksCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXN0YXRpYyBjcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhLGIsYyl7Yj1gPCR7YX1gK21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpO251bGw9PWM/Yz1bXTpBcnJheS5pc0FycmF5KGMpfHwoYz1bY10pO2dvb2cuZG9tLnRhZ3MuaXNWb2lkVGFnKGEudG9Mb3dlckNhc2UoKSk/Cihnb29nLmFzc2VydHMuYXNzZXJ0KCFjLmxlbmd0aCxgVm9pZCB0YWcgPCR7YX0+IGRvZXMgbm90IGFsbG93IGNvbnRlbnQuYCksYis9Ij4iKTooYz1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbmNhdChjKSxiKz0iPiIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYykrIjwvIithKyI+Iik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpe2xldCBjPSIiO2lmKGIpZm9yKGxldCBkIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1ZBTElEX05BTUVTX0lOX1RBRy50ZXN0KGQpKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSAiJHtkfSIuYDoiIik7Y29uc3QgZT1iW2RdO251bGwhPWUmJihjKz0iICIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRBdHRyTmFtZUFuZFZhbHVlKGEsZCxlKSl9cmV0dXJuIGN9c3RhdGljIGNvbWJpbmVBdHRyaWJ1dGVzKGEsYixjKXtjb25zdCBkPXt9O2Zvcih2YXIgZSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpJiYoZ29vZy5hc3NlcnRzLmFzc2VydChlLnRvTG93ZXJDYXNlKCk9PWUsIk11c3QgYmUgbG93ZXIgY2FzZSIpLGRbZV09YVtlXSk7Zm9yKGNvbnN0IGYgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixmKSYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoZi50b0xvd2VyQ2FzZSgpPT1mLCJNdXN0IGJlIGxvd2VyIGNhc2UiKSxkW2ZdPWJbZl0pO2lmKGMpZm9yKGNvbnN0IGYgaW4gYylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYywKZikpe2U9Zi50b0xvd2VyQ2FzZSgpO2lmKGUgaW4gYSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz9gQ2Fubm90IG92ZXJyaWRlICIke2V9IiBhdHRyaWJ1dGUsIGdvdCAiYCtmKyciIHdpdGggdmFsdWUgIicrY1tmXSsnIic6IiIpO2UgaW4gYiYmZGVsZXRlIGRbZV07ZFtmXT1jW2ZdfXJldHVybiBkfX1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz1nb29nLkRFQlVHO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuU1VQUE9SVF9TVFlMRV9BVFRSSUJVVEU9ITA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5mcm9tPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9WQUxJRF9OQU1FU19JTl9UQUc9L15bYS16QS1aMC05LV0rJC8sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9OT1RfQUxMT1dFRF9UQUdfTkFNRVM9e1tnb29nLmRvbS5UYWdOYW1lLkFQUExFVF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuQkFTRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuRU1CRURdOiEwLFtnb29nLmRvbS5UYWdOYW1lLklGUkFNRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTElOS106ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUFUSF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUVUQV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuT0JKRUNUXTohMCxbZ29vZy5kb20uVGFnTmFtZS5TQ1JJUFRdOiEwLApbZ29vZy5kb20uVGFnTmFtZS5TVFlMRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuU1ZHXTohMCxbZ29vZy5kb20uVGFnTmFtZS5URU1QTEFURV06ITB9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldEF0dHJOYW1lQW5kVmFsdWUoYSxiLGMpe2lmKGMgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCljPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChjKTtlbHNlIGlmKCJzdHlsZSI9PWIudG9Mb3dlckNhc2UoKSlpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLlNVUFBPUlRfU1RZTEVfQVRUUklCVVRFKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRTdHlsZVZhbHVlKGMpO2Vsc2UgdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J0F0dHJpYnV0ZSAic3R5bGUiIG5vdCBzdXBwb3J0ZWQuJzoiIik7ZWxzZXtpZigvXm9uL2kudGVzdChiKSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz8KYEF0dHJpYnV0ZSAiJHtifWArJyIgcmVxdWlyZXMgZ29vZy5zdHJpbmcuQ29uc3QgdmFsdWUsICInK2MrJyIgZ2l2ZW4uJzoiIik7aWYoYi50b0xvd2VyQ2FzZSgpaW4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUylpZihjIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCljPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGMpO2Vsc2UgaWYoYyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKWM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGMpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYyljPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGMpLmdldFR5cGVkU3RyaW5nVmFsdWUoKTtlbHNlIHRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTP2BBdHRyaWJ1dGUgIiR7Yn0iIG9uIHRhZyAiJHthfWArJyIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlICInKwpjKyciIGdpdmVuLic6IiIpO31jLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmcmJihjPWMuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpKTtnb29nLmFzc2VydHMuYXNzZXJ0KCJzdHJpbmciPT09dHlwZW9mIGN8fCJudW1iZXIiPT09dHlwZW9mIGMsIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCAiK3R5cGVvZiBjKyIgd2l0aCB2YWx1ZTogIitjKTtyZXR1cm5gJHtifT0iYCtnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKFN0cmluZyhjKSkrJyInfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldFN0eWxlVmFsdWUoYSl7aWYoIWdvb2cuaXNPYmplY3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J1RoZSAic3R5bGUiIGF0dHJpYnV0ZSByZXF1aXJlcyBnb29nLmh0bWwuU2FmZVN0eWxlIG9yIG1hcCBvZiBzdHlsZSBwcm9wZXJ0aWVzLCAnK3R5cGVvZiBhKyIgZ2l2ZW46ICIrYToiIik7YSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXx8KGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLmNyZWF0ZShhKSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYSl9Cm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRE9DVFlQRV9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiPCFET0NUWVBFIGh0bWw+Iil9KCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbChnb29nLmdsb2JhbC50cnVzdGVkVHlwZXMmJmdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fCIiLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURSk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5CUj1mdW5jdGlvbigpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIjxicj4iKX0oKTsKZ29vZy5odG1sLlNhZmVIdG1sPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWw7Z29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zPXt9O2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU2NyaXB0RnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTdHlsZUZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnRydXN0ZWRSZXNvdXJjZVVybEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9O2dvb2cuZG9tLnNhZmU9e307Z29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjoiYWZ0ZXJiZWdpbiIsQUZURVJFTkQ6ImFmdGVyZW5kIixCRUZPUkVCRUdJTjoiYmVmb3JlYmVnaW4iLEJFRk9SRUVORDoiYmVmb3JlZW5kIn07Z29vZy5kb20uc2FmZS5pbnNlcnRBZGphY2VudEh0bWw9ZnVuY3Rpb24oYSxiLGMpe2EuaW5zZXJ0QWRqYWNlbnRIVE1MKGIsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChjKSl9O2dvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTXz17TUFUSDohMCxTQ1JJUFQ6ITAsU1RZTEU6ITAsU1ZHOiEwLFRFTVBMQVRFOiEwfTsKZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoZnVuY3Rpb24oKXtpZihnb29nLkRFQlVHJiYidW5kZWZpbmVkIj09PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2EuYXBwZW5kQ2hpbGQoYik7aWYoZ29vZy5ERUJVRyYmIWEuZmlyc3RDaGlsZClyZXR1cm4hMTtiPWEuZmlyc3RDaGlsZC5maXJzdENoaWxkO2EuaW5uZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWSk7cmV0dXJuIWIucGFyZW50RWxlbWVudH0pOwpnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDthLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5pbm5lckhUTUw9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0SW5uZXJIdG1sPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZhLnRhZ05hbWUpe3ZhciBjPWEudGFnTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGdvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTX1tjXSl0aHJvdyBFcnJvcigiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgIithLnRhZ05hbWUrIi4iKTt9Z29vZy5kb20uc2FmZS51bnNhZmVTZXRJbm5lckh0bWxEb05vdFVzZU9yRWxzZShhLGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWxGcm9tQ29uc3RhbnQ9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChhLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJDb25zdGFudCBIVE1MIHRvIGJlIGltbWVkaWF0ZWxseSB1c2VkLiIpLGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChiKSkpfTtnb29nLmRvbS5zYWZlLnNldE91dGVySHRtbD1mdW5jdGlvbihhLGIpe2Eub3V0ZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoYil9Owpnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGEsYil7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGEpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuc2V0QnV0dG9uRm9ybUFjdGlvbj1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2I6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQoYik7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxCdXR0b25FbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbnB1dEZvcm1BY3Rpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldFN0eWxlPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5jc3NUZXh0PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihhLGIpe2Eud3JpdGUobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSl9Owpnb29nLmRvbS5zYWZlLnNldEFuY2hvckhyZWY9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQoYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEF1ZGlvU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBdWRpb0VsZW1lbnQoYSk7aWYoIShiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpKXt2YXIgYz0vXmRhdGE6YXVkaW9cLy9pLnRlc3QoYik7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiLGMpfWEuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChhKTtpZighKGIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBjPS9eZGF0YTp2aWRlb1wvL2kudGVzdChiKTtiPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIsYyl9YS5zcmM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEVtYmVkU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldEZyYW1lU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYil9Owpnb29nLmRvbS5zYWZlLnNldElmcmFtZVNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudChhKTthLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKX07Z29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoYSk7YS5zcmNkb2M9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0TGlua0hyZWZBbmRSZWw9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MTGlua0VsZW1lbnQoYSk7YS5yZWw9Yztnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyhjLCJzdHlsZXNoZWV0Iik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQoYiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlICJyZWwiIGNvbnRhaW5zICJzdHlsZXNoZWV0IicpLGEuaHJlZj1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKSwoYj1nb29nLmRvbS5zYWZlLmdldFN0eWxlTm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKSk6YS5ocmVmPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsP2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGIpOgpiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKSl9O2dvb2cuZG9tLnNhZmUuc2V0T2JqZWN0RGF0YT1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudChhKTthLmRhdGE9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldFNjcmlwdFNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudChhKTtnb29nLmRvbS5zYWZlLnNldE5vbmNlRm9yU2NyaXB0RWxlbWVudF8oYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGEpO2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50XyhhKTthLnRleHRDb250ZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYil9O2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50Xz1mdW5jdGlvbihhKXtjb25zdCBiPWdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpO2ImJmEuc2V0QXR0cmlidXRlKCJub25jZSIsYil9Owpnb29nLmRvbS5zYWZlLnNldExvY2F0aW9uSHJlZj1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihhKTtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EuaHJlZj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuYXNzaWduTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmFzc2lnbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTsKZ29vZy5kb20uc2FmZS5yZXBsYWNlTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTtnb29nLmRvbS5zYWZlLm9wZW5JbldpbmRvdz1mdW5jdGlvbihhLGIsYyxkKXthPWEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9hOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGEpO2I9Ynx8Z29vZy5nbG9iYWw7Yz1jIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGMpOmN8fCIiO3JldHVybiB2b2lkIDAhPT1kP2Iub3Blbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYSksYyxkKTpiLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLGMpfTsKZ29vZy5kb20uc2FmZS5wYXJzZUZyb21TdHJpbmdIdG1sPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nKGEsYiwidGV4dC9odG1sIil9O2dvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5wYXJzZUZyb21TdHJpbmcobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSxjKX07Cmdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYj1mdW5jdGlvbihhKXtpZighL15pbWFnZVwvLiovZy50ZXN0KGEudHlwZSkpdGhyb3cgRXJyb3IoImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLiIpO3ZhciBiPWdvb2cuZ2xvYmFsLlVSTC5jcmVhdGVPYmplY3RVUkwoYSk7YT1uZXcgZ29vZy5nbG9iYWwuSW1hZ2U7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtnb29nLmdsb2JhbC5VUkwucmV2b2tlT2JqZWN0VVJMKGIpfTthLnNyYz1iO3JldHVybiBhfTtnb29nLmRvbS5zYWZlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKGIpKX07Cmdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLnNhZmUuZ2V0Tm9uY2VfKCJzY3JpcHRbbm9uY2VdIixhKX07Z29vZy5kb20uc2FmZS5nZXRTdHlsZU5vbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5zYWZlLmdldE5vbmNlXygnc3R5bGVbbm9uY2VdLGxpbmtbcmVsPSJzdHlsZXNoZWV0Il1bbm9uY2VdJyxhKX07Z29vZy5kb20uc2FmZS5OT05DRV9QQVRURVJOXz0vXltcdysvXy1dK1s9XXswLDJ9JC87Z29vZy5kb20uc2FmZS5nZXROb25jZV89ZnVuY3Rpb24oYSxiKXtiPShifHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuIGIucXVlcnlTZWxlY3Rvcj8oYT1iLnF1ZXJ5U2VsZWN0b3IoYSkpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZSgibm9uY2UiKSkmJmdvb2cuZG9tLnNhZmUuTk9OQ0VfUEFUVEVSTl8udGVzdChhKT9hOiIiOiIifTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLlVuaWNvZGU9e05CU1A6Ilx1MDBhMCIsWkVST19XSURUSF9TUEFDRToiXHUyMDBiIn07Z29vZy5zdHJpbmcuc3RhcnRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5zdGFydHNXaXRoO2dvb2cuc3RyaW5nLmVuZHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoO2dvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRXF1YWxzOwpnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hLnNwbGl0KCIlcyIpO2xldCBkPSIiO2NvbnN0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Zvcig7ZS5sZW5ndGgmJjE8Yy5sZW5ndGg7KWQrPWMuc2hpZnQoKStlLnNoaWZ0KCk7cmV0dXJuIGQrYy5qb2luKCIlcyIpfTtnb29nLnN0cmluZy5jb2xsYXBzZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rL2csIiAiKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9O2dvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2U9Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZTtnb29nLnN0cmluZy5pc0VtcHR5U3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiAwPT1hLmxlbmd0aH07Z29vZy5zdHJpbmcuaXNFbXB0eT1nb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlOwpnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShhKSl9O2dvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlO2dvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGEpe3JldHVybiEvW15cdFxuXHIgXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3JldHVybiEvW14wLTldLy50ZXN0KGEpfTtnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4iICI9PWF9Owpnb29nLnN0cmluZy5pc1VuaWNvZGVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiAxPT1hLmxlbmd0aCYmIiAiPD1hJiYifiI+PWF8fCJcdTAwODAiPD1hJiYiXHVmZmZkIj49YX07Z29vZy5zdHJpbmcuc3RyaXBOZXdsaW5lcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXHJcbnxccnxcbikrL2csIiAiKX07Z29vZy5zdHJpbmcuY2Fub25pY2FsaXplTmV3bGluZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIlxuIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHhhMHxccy9nLCIgIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVNwYWNlcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ceGEwfFsgXHRdKy9nLCIgIil9Owpnb29nLnN0cmluZy5jb2xsYXBzZUJyZWFraW5nU3BhY2VzPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcdFxyXG4gXSsvZywiICIpLnJlcGxhY2UoL15bXHRcclxuIF0rfFtcdFxyXG4gXSskL2csIiIpfTtnb29nLnN0cmluZy50cmltPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW07Z29vZy5zdHJpbmcudHJpbUxlZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfTtnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfTtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb21wYXJlPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU7Cmdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEpcmV0dXJuLTE7aWYoIWIpcmV0dXJuIDE7Y29uc3QgZD1hLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZT1iLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZj1NYXRoLm1pbihkLmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxmO2crKyl7Yz1kW2ddO2NvbnN0IGg9ZVtnXTtpZihjIT1oKXJldHVybiBhPXBhcnNlSW50KGMsMTApLCFpc05hTihhKSYmKGI9cGFyc2VJbnQoaCwxMCksIWlzTmFOKGIpJiZhLWIpP2EtYjpjPGg/LTE6MX1yZXR1cm4gZC5sZW5ndGghPWUubGVuZ3RoP2QubGVuZ3RoLWUubGVuZ3RoOmE8Yj8tMToxfTtnb29nLnN0cmluZy5pbnRBd2FyZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcubnVtYmVyQXdhcmVDb21wYXJlXyhhLGIsL1xkK3xcRCsvZyl9Owpnb29nLnN0cmluZy5mbG9hdEF3YXJlQ29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLnN0cmluZy5udW1iZXJBd2FyZUNvbXBhcmVfKGEsYiwvXGQrfFwuXGQrfFxEKy9nKX07Z29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlO2dvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9O2dvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07Z29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnI7Cmdvb2cuc3RyaW5nLmh0bWxFc2NhcGU9ZnVuY3Rpb24oYSxiKXthPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSxiKTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sIiYjMTAxOyIpKTtyZXR1cm4gYX07Z29vZy5zdHJpbmcuRV9SRV89L2UvZztnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhhLCImIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiYiZG9jdW1lbnQiaW4gZ29vZy5nbG9iYWw/Z29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXyhhKTpnb29nLnN0cmluZy51bmVzY2FwZVB1cmVYbWxFbnRpdGllc18oYSk6YX07Cmdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNXaXRoRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoYSwiJiIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oYSxiKTphfTsKZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXz1mdW5jdGlvbihhLGIpe2NvbnN0IGM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIid9O2xldCBkO2Q9Yj9iLmNyZWF0ZUVsZW1lbnQoImRpdiIpOmdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLnJlcGxhY2UoZ29vZy5zdHJpbmcuSFRNTF9FTlRJVFlfUEFUVEVSTl8sZnVuY3Rpb24oZSxmKXtsZXQgZz1jW2VdO2lmKGcpcmV0dXJuIGc7IiMiPT1mLmNoYXJBdCgwKSYmKGY9TnVtYmVyKCIwIitmLnNsaWNlKDEpKSxpc05hTihmKXx8KGc9U3RyaW5nLmZyb21DaGFyQ29kZShmKSkpO2d8fChnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChkLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJTaW5nbGUgSFRNTCBlbnRpdHkuIiksCmUrIiAiKSksZz1kLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnNsaWNlKDAsLTEpKTtyZXR1cm4gY1tlXT1nfSl9O2dvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIiMiIT1jLmNoYXJBdCgwKXx8KGM9TnVtYmVyKCIwIitjLnNsaWNlKDEpKSxpc05hTihjKSk/YjpTdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX0pfTtnb29nLnN0cmluZy5IVE1MX0VOVElUWV9QQVRURVJOXz0vJihbXjtcczwmXSspOz8vZztnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTsKZ29vZy5zdHJpbmcucHJlc2VydmVTcGFjZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xuIF0pIC9nLCIkMSIrZ29vZy5zdHJpbmcuVW5pY29kZS5OQlNQKX07Z29vZy5zdHJpbmcuc3RyaXBRdW90ZXM9ZnVuY3Rpb24oYSxiKXtjb25zdCBjPWIubGVuZ3RoO2ZvcihsZXQgZD0wO2Q8YztkKyspe2NvbnN0IGU9MT09Yz9iOmIuY2hhckF0KGQpO2lmKGEuY2hhckF0KDApPT1lJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09ZSlyZXR1cm4gYS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcudHJ1bmNhdGU9ZnVuY3Rpb24oYSxiLGMpe2MmJihhPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoYSkpO2EubGVuZ3RoPmImJihhPWEuc3Vic3RyaW5nKDAsYi0zKSsiLi4uIik7YyYmKGE9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShhKSk7cmV0dXJuIGF9Owpnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihhLGIsYyxkKXtjJiYoYT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGEpKTtpZihkJiZhLmxlbmd0aD5iKXtkPmImJihkPWIpO3ZhciBlPWEubGVuZ3RoLWQ7YT1hLnN1YnN0cmluZygwLGItZCkrIi4uLiIrYS5zdWJzdHJpbmcoZSl9ZWxzZSBhLmxlbmd0aD5iJiYoZD1NYXRoLmZsb29yKGIvMiksZT1hLmxlbmd0aC1kLGE9YS5zdWJzdHJpbmcoMCxkK2IlMikrIi4uLiIrYS5zdWJzdHJpbmcoZSkpO2MmJihhPWdvb2cuc3RyaW5nLmh0bWxFc2NhcGUoYSkpO3JldHVybiBhfTtnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfPXsiXHgwMCI6IlxcMCIsIlxiIjoiXFxiIiwiXGYiOiJcXGYiLCJcbiI6IlxcbiIsIlxyIjoiXFxyIiwiXHQiOiJcXHQiLCJcdiI6IlxceDBCIiwnIic6J1xcIicsIlxcIjoiXFxcXCIsIjwiOiJcXHUwMDNDIn07Z29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV89eyInIjoiXFwnIn07Cmdvb2cuc3RyaW5nLnF1b3RlPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2NvbnN0IGI9WyciJ107Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2NvbnN0IGQ9YS5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7YltjKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bZF18fCgzMTxlJiYxMjc+ZT9kOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZCkpfWIucHVzaCgnIicpO3JldHVybiBiLmpvaW4oIiIpfTtnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyliW2NdPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoYS5jaGFyQXQoYykpO3JldHVybiBiLmpvaW4oIiIpfTsKZ29vZy5zdHJpbmcuZXNjYXBlQ2hhcj1mdW5jdGlvbihhKXtpZihhIGluIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1thXTtpZihhIGluIGdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc18pcmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bYV07bGV0IGI7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMCk7aWYoMzE8YyYmMTI3PmMpYj1hO2Vsc2V7aWYoMjU2PmMpe2lmKGI9IlxceCIsMTY+Y3x8MjU2PGMpYis9IjAifWVsc2UgYj0iXFx1Iiw0MDk2PmMmJihiKz0iMCIpO2IrPWMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWJ9O2dvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zOwpnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucztnb29nLnN0cmluZy5jb3VudE9mPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmI/YS5zcGxpdChiKS5sZW5ndGgtMTowfTtnb29nLnN0cmluZy5yZW1vdmVBdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9YTswPD1iJiZiPGEubGVuZ3RoJiYwPGMmJihkPWEuc2xpY2UoMCxiKSthLnNsaWNlKGIrYykpO3JldHVybiBkfTtnb29nLnN0cmluZy5yZW1vdmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBsYWNlKGIsIiIpfTtnb29nLnN0cmluZy5yZW1vdmVBbGw9ZnVuY3Rpb24oYSxiKXtiPW5ldyBSZWdFeHAoZ29vZy5zdHJpbmcucmVnRXhwRXNjYXBlKGIpLCJnIik7cmV0dXJuIGEucmVwbGFjZShiLCIiKX07Cmdvb2cuc3RyaW5nLnJlcGxhY2VBbGw9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUoYiksImciKTtyZXR1cm4gYS5yZXBsYWNlKGIsYy5yZXBsYWNlKC9cJC9nLCIkJCQkIikpfTtnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4L2csIlxceDA4Iil9O2dvb2cuc3RyaW5nLnJlcGVhdD1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTsKZ29vZy5zdHJpbmcucGFkTnVtYmVyPWZ1bmN0aW9uKGEsYixjKXtpZighTnVtYmVyLmlzRmluaXRlKGEpKXJldHVybiBTdHJpbmcoYSk7YT12b2lkIDAhPT1jP2EudG9GaXhlZChjKTpTdHJpbmcoYSk7Yz1hLmluZGV4T2YoIi4iKTstMT09PWMmJihjPWEubGVuZ3RoKTtjb25zdCBkPSItIj09PWFbMF0/Ii0iOiIiO2QmJihhPWEuc3Vic3RyaW5nKDEpKTtyZXR1cm4gZCtnb29nLnN0cmluZy5yZXBlYXQoIjAiLE1hdGgubWF4KDAsYi1jKSkrYX07Z29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6U3RyaW5nKGEpfTtnb29nLnN0cmluZy5nZXRSYW5kb21TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleZ29vZy5ub3coKSkudG9TdHJpbmcoMzYpfTsKZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucztnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihhKXtsZXQgYj0wO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7KytjKWI9MzEqYithLmNoYXJDb2RlQXQoYyk+Pj4wO3JldHVybiBifTtnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXz0yMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCl8MDtnb29nLnN0cmluZy5jcmVhdGVVbmlxdWVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZ29vZ18iK2dvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfKyt9O2dvb2cuc3RyaW5nLnRvTnVtYmVyPWZ1bmN0aW9uKGEpe2NvbnN0IGI9TnVtYmVyKGEpO3JldHVybiAwPT1iJiZnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlKGEpP05hTjpifTtnb29nLnN0cmluZy5pc0xvd2VyQ2FtZWxDYXNlPWZ1bmN0aW9uKGEpe3JldHVybi9eW2Etel0rKFtBLVpdW2Etel0qKSokLy50ZXN0KGEpfTsKZ29vZy5zdHJpbmcuaXNVcHBlckNhbWVsQ2FzZT1mdW5jdGlvbihhKXtyZXR1cm4vXihbQS1aXVthLXpdKikrJC8udGVzdChhKX07Z29vZy5zdHJpbmcudG9DYW1lbENhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07Z29vZy5zdHJpbmcudG9TZWxlY3RvckNhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCl9O2dvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGEsYil7Yj0ic3RyaW5nIj09PXR5cGVvZiBiP2dvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZShiKToiXFxzIjtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIiheIisoYj8ifFsiK2IrIl0rIjoiIikrIikoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gZCtlLnRvVXBwZXJDYXNlKCl9KX07Cmdvb2cuc3RyaW5nLmNhcGl0YWxpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhLmNoYXJBdCgwKSkudG9VcHBlckNhc2UoKStTdHJpbmcoYS5zbGljZSgxKSkudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT8vXlxzKi0/MHgvaS50ZXN0KGEpP3BhcnNlSW50KGEsMTYpOnBhcnNlSW50KGEsMTApOk5hTn07Z29vZy5zdHJpbmcuc3BsaXRMaW1pdD1mdW5jdGlvbihhLGIsYyl7YT1hLnNwbGl0KGIpO2NvbnN0IGQ9W107Zm9yKDswPGMmJmEubGVuZ3RoOylkLnB1c2goYS5zaGlmdCgpKSxjLS07YS5sZW5ndGgmJmQucHVzaChhLmpvaW4oYikpO3JldHVybiBkfTsKZ29vZy5zdHJpbmcubGFzdENvbXBvbmVudD1mdW5jdGlvbihhLGIpe2lmKGIpInN0cmluZyI9PXR5cGVvZiBiJiYoYj1bYl0pO2Vsc2UgcmV0dXJuIGE7bGV0IGM9LTE7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKCIiPT1iW2RdKWNvbnRpbnVlO2NvbnN0IGU9YS5sYXN0SW5kZXhPZihiW2RdKTtlPmMmJihjPWUpfXJldHVybi0xPT1jP2E6YS5zbGljZShjKzEpfTsKZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1bXSxkPVtdO2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEubGVuZ3RofHwhYi5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoKzE7ZSsrKWNbZV09ZTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtkWzBdPWUrMTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylkW2YrMV09TWF0aC5taW4oZFtmXSsxLGNbZisxXSsxLGNbZl0rTnVtYmVyKGFbZV0hPWJbZl0pKTtmb3IoZj0wO2Y8Yy5sZW5ndGg7ZisrKWNbZl09ZFtmXX1yZXR1cm4gZFtiLmxlbmd0aF19O2dvb2cuc3RyaW5nLnBhdGg9e307Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZT1mdW5jdGlvbihhKXtjb25zdCBiPWEubGFzdEluZGV4T2YoIi8iKSsxO3JldHVybiBhLnNsaWNlKGIpfTtnb29nLnN0cmluZy5wYXRoLmJhc2VuYW1lPWdvb2cuc3RyaW5nLnBhdGguYmFzZU5hbWU7Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLyIpKzE7YT1hLnNsaWNlKDAsYik7L15cLyskLy50ZXN0KGEpfHwoYT1hLnJlcGxhY2UoL1wvKyQvLCIiKSk7cmV0dXJuIGF9O2dvb2cuc3RyaW5nLnBhdGguZXh0ZW5zaW9uPWZ1bmN0aW9uKGEpe2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKS5yZXBsYWNlKC9cLisvZywiLiIpO2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLiIpO3JldHVybiAwPj1iPyIiOmEuc2xpY2UoYisxKX07Cmdvb2cuc3RyaW5nLnBhdGguam9pbj1mdW5jdGlvbihhKXtsZXQgYj1hcmd1bWVudHNbMF07Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107Yj1nb29nLnN0cmluZy5zdGFydHNXaXRoKGQsIi8iKT9kOiIiPT1ifHxnb29nLnN0cmluZy5lbmRzV2l0aChiLCIvIik/YitkOmIrKCIvIitkKX1yZXR1cm4gYn07Cmdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aD1mdW5jdGlvbihhKXtpZigiIj09YSlyZXR1cm4iLiI7bGV0IGI9IiI7Z29vZy5zdHJpbmcuc3RhcnRzV2l0aChhLCIvIikmJihiPSIvIixnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vIikmJiFnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vLyIpJiYoYj0iLy8iKSk7YT1hLnNwbGl0KCIvIik7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdOyIiIT1lJiYiLiIhPWUmJigiLi4iIT1lfHwhYiYmIWMubGVuZ3RofHwiLi4iPT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGMpP2MucHVzaChlKTpjLnBvcCgpKX1yZXR1cm4gYitjLmpvaW4oIi8iKXx8Ii4ifTtnb29nLnN0cmluZy5wYXRoLnNwbGl0PWZ1bmN0aW9uKGEpe2NvbnN0IGI9Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lKGEpO2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKTtyZXR1cm5bYixhXX07Y29uc3QgREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ITE7ZnVuY3Rpb24gYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4vXlwvL2cudGVzdChhKT9hOmAvJHthfWB9ZnVuY3Rpb24gcmVtb3ZlTGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXC8vZywiIil9ZnVuY3Rpb24gc2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7cmV0dXJuKGEmKFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpKSE9PWdvb2cuZ2xvYmFsLkJpZ0ludCgwKX0KZnVuY3Rpb24gcGVyZm9ybWFuY2VOb3dQb2x5JCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHBlcmZvcm1hbmNlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe2NvbnN0IGE9RGF0ZS5ub3coKTtyZXR1cm4gRGF0ZS5ub3coKS1hfXJldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7dmFyIGI9YS5yZWR1Y2UoKGQsZSk9PmQrZS5sZW5ndGgsMCk7aWYoMCE9PWEubGVuZ3RoKXtiPW5ldyBVaW50OEFycmF5KGIpO3ZhciBjPTA7Zm9yKGNvbnN0IGQgb2YgYSliLnNldChkLGMpLGMrPWQubGVuZ3RoO3JldHVybiBifX0KY29uc3QgV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ZnVuY3Rpb24oe30pe3RoaXMuZmQ9QXJyYXkuZnJvbSh7bGVuZ3RoOjR9KTt0aGlzLmZkWzBdPXtmZDowLHBhdGg6Ii9kZXYvc3RkaW4iLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6W10sb3BlbjohMX07dGhpcy5mZFsxXT17ZmQ6MSxwYXRoOiIvZGV2L3N0ZG91dCIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmZkWzJdPXtmZDoyLHBhdGg6Ii9kZXYvc3RkZXJyIixzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltdLG9wZW46ITF9O3RoaXMuZmRbM109e2ZkOjMscGF0aDoiLyIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmdldE1lbW9yeT10aGlzLmdldE1lbW9yeS5iaW5kKHRoaXMpO3RoaXMuQ1BVVElNRV9TVEFSVD0wfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuQ1BVVElNRV9TVEFSVD1wZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCk7YS5leHBvcnRzLl9zdGFydCgpfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZ2V0SW1wb3J0cz1mdW5jdGlvbihhKXtjb25zdCBiPXt9O2E9V2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMoYSk7Zm9yKGNvbnN0IGMgb2YgYSkiZnVuY3Rpb24iPT09Yy5raW5kJiZjLm1vZHVsZS5zdGFydHNXaXRoKCJ3YXNpXyIpJiYoIm9iamVjdCIhPT10eXBlb2YgYltjLm1vZHVsZV0mJihiW2MubW9kdWxlXT17fSksYltjLm1vZHVsZV1bYy5uYW1lXT10aGlzW2MubmFtZV0uYmluZCh0aGlzKSk7cmV0dXJuIGJ9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3RoaXMubWVtb3J5PWF9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5nZXRNZW1vcnk9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJnRoaXMudmlldy5idWZmZXImJnRoaXMudmlldy5idWZmZXIuYnl0ZUxlbmd0aHx8KHRoaXMudmlldz1uZXcgRGF0YVZpZXcodGhpcy5tZW1vcnkuYnVmZmVyKSk7cmV0dXJuIHRoaXMudmlld307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLm1zVG9Ocz1mdW5jdGlvbihhKXtjb25zdCBiPU1hdGgudHJ1bmMoYSk7YT1nb29nLmdsb2JhbC5CaWdJbnQoTWF0aC5yb3VuZCgxRTYqKGEtYikpKTtyZXR1cm4gZ29vZy5nbG9iYWwuQmlnSW50KGIpKmdvb2cuZ2xvYmFsLkJpZ0ludCgxRTYpK2F9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUubm93PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFdBU0lfQ0xPQ0tfTU9OT1RPTklDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiBNYXRoLmZsb29yKHBlcmZvcm1hbmNlTm93UG9seSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKSk7Y2FzZSBXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiB0aGlzLm1zVG9OcyhEYXRlLm5vdygpKTtjYXNlIFdBU0lfQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOmNhc2UgV0FTSV9DTE9DS19USFJFQURfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpyZXR1cm4gTWF0aC5mbG9vcihwZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCktdGhpcy5DUFVUSU1FX1NUQVJUKTsKZGVmYXVsdDpyZXR1cm4gMH19O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5hcmdzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmFyZ3Nfc2l6ZXNfZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJhcmdzX3NpemVzX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfcmVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfdGltZV9nZXQ9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiY2xvY2tfdGltZV9nZXQiLGEsYixjLGFyZ3VtZW50cyk7Y29uc3QgZD10aGlzLmdldE1lbW9yeSgpLGU9dGhpcy5ub3coYSk7ZC5zZXRCaWdVaW50NjQoYyxnb29nLmdsb2JhbC5CaWdJbnQoZSksITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmVudmlyb25fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJlbnZpcm9uX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5lbnZpcm9uX3NpemVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZW52aXJvbl9zaXplc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FkdmlzZT1mdW5jdGlvbihhLGIsYyxkKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FkdmlzZSIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FsbG9jYXRlPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FsbG9jYXRlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9jbG9zZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Nsb3NlIixhLGFyZ3VtZW50cyk7dGhpcy5mZFthXSYmKHRoaXMuZmRbYV0ub3Blbj0hMSk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9kYXRhc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2RhdGFzeW5jIixhLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmRzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmRzdGF0X2dldCIsYSxiLGFyZ3VtZW50cyk7Y29uc3QgYz10aGlzLmdldE1lbW9yeSgpO2Muc2V0VWludDgoYis0LFdBU0lfRklMRVRZUEVfUkVHVUxBUl9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtjLnNldFVpbnQxNihiKzIsMCwhMCk7Yy5zZXRVaW50MTYoYis0LDAsITApO2Muc2V0QmlnVWludDY0KGIrOCxnb29nLmdsb2JhbC5CaWdJbnQoUklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKSwhMCk7Yy5zZXRCaWdVaW50NjQoYis4KzgsZ29vZy5nbG9iYWwuQmlnSW50KFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyksCiEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfZmxhZ3M9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfZmxhZ3MiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfcmlnaHRzPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfcmlnaHRzIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfZ2V0IixhLGIsYXJndW1lbnRzKTtsZXQgYz0wO3RoaXMuZmRbYV0mJihjPXRoaXMuZmRbYV0uYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24oZSxmKXtyZXR1cm4gZSsobnVsbD09Zj92b2lkIDA6Zi5ieXRlTGVuZ3RoKT9udWxsPT1mP3ZvaWQgMDpmLmJ5dGVMZW5ndGg6MH0sMCkpO2NvbnN0IGQ9dGhpcy5nZXRNZW1vcnkoKTtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldFVpbnQ4KGIsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2IrPTg7ZC5zZXRCaWdVaW50NjQoYiwKZ29vZy5nbG9iYWwuQmlnSW50KDEpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsZ29vZy5nbG9iYWwuQmlnSW50KGMpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsdGhpcy5tc1RvTnModGhpcy5DUFVUSU1FX1NUQVJUKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLHRoaXMubXNUb05zKHRoaXMuQ1BVVElNRV9TVEFSVCksITApO2Quc2V0QmlnVWludDY0KGIrOCx0aGlzLm1zVG9Ocyh0aGlzLkNQVVRJTUVfU1RBUlQpLCEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X3NldF9zaXplPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9maWxlc3RhdF9zZXRfc2l6ZSIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmlsZXN0YXRfc2V0X3RpbWVzPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9wcmVhZD1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlYWQiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3ByZXN0YXRfZGlyX25hbWU9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlc3RhdF9kaXJfbmFtZSIsYSxiLGMsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0mJiF0aGlzLmZkW2EtMV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7KHtwYXRoOmN9PXRoaXMuZmRbYV0pO2E9dGhpcy5nZXRNZW1vcnkoKTtjPWVuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoYyk7KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyKSkuc2V0KGMsYik7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcHJlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3ByZXN0YXRfZ2V0IixhLGIsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7dmFyIHtwYXRoOmN9PXRoaXMuZmRbYV07YT10aGlzLmdldE1lbW9yeSgpO2M9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShjKTthLnNldFVpbnQ4KGIsV0FTSV9QUkVPUEVOVFlQRV9ESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2Euc2V0VWludDMyKGIrNCxjLmJ5dGVMZW5ndGgsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3B3cml0ZT1mdW5jdGlvbihhLGIsYyxkLGUpe2NvbnNvbGUubG9nKCJmZF9wd3JpdGUiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3JlYWQ9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9yZWFkIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmZkW2FdJiZ0aGlzLmZkW2FdLmJ1ZmZlcnM7dmFyIGY9ZS5yZWR1Y2UoKG4scCk9Pm4rcC5sZW5ndGgsMCk7Y29uc3QgZz10aGlzLmdldE1lbW9yeSgpO2lmKGUmJjAhPT1lLmxlbmd0aCl7dmFyIGg9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyksaz0wLGw9ITE7aWYoaD49ZilyZXR1cm4gaz1nLmdldFVpbnQzMihiLCEwKSxnLnNldFVpbnQ4KGssIlx4MDAiKSxnLnNldFVpbnQzMihkLDAsITApLFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Zm9yKGY9MDtmPGM7ZisrKXt2YXIgbT1iKzgqZjtjb25zdCBuPWcuZ2V0VWludDMyKG0sITApO209Zy5nZXRVaW50MzIobSsKNCwhMCk7bHx8KGsrPW0sQXJyYXkuZnJvbSh7bGVuZ3RoOm19LChwLHEpPT5xKS5yZWR1Y2UoKHAscSk9PntpZihsKXJldHVybiBwO2NvbnN0IFt1LHRdPXA7bGV0IHY9cD0wLEE9ITEseT0wLHI7aWYoMD09PXEpZm9yKDshQTspcj1lW3BdP2VbcF0uYnl0ZUxlbmd0aDowLHk8PWgmJnIreT5oPyhBPSEwLHY9aC15KTooeSs9cixwKz0xKTtlbHNlIHA9dSx2PXQ7ZVtwXT8oZy5zZXRVaW50OChuK3EsZVtwXVt2XSksdisxPj1lW3BdLmJ5dGVMZW5ndGg/KHA9dSsxLHY9MCk6dis9MSk6KGcuc2V0VWludDgobitxLCJceDAwIiksaCs9cSxsPSEwKTtyZXR1cm5bcCx2XX0sWzAsMF0pLGx8fChoKz1tKSl9dGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludChoKTtnLnNldFVpbnQzMihkLGssITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfWNvbnNvbGUuZXJyb3IoIlJlYWRpbmcgbm9uIGV4aXN0ZW50IGZpbGUiLGEsdGhpcy5mZFthXSl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcmVhZGRpcj1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVhZGRpciIsYSxiLGMsZCxlLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9yZW51bWJlcj1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVudW1iZXIiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3NlZWs9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9zZWVrIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmdldE1lbW9yeSgpO3N3aXRjaChjKXtjYXNlIFdBU0lfV0hFTkNFX0NVUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czp2YXIgZjt0aGlzLmZkW2FdLnNlZWtQb3M9KG51bGwhPShmPXRoaXMuZmRbYV0uc2Vla1Bvcyk/Zjpnb29nLmdsb2JhbC5CaWdJbnQoMCkpK2dvb2cuZ2xvYmFsLkJpZ0ludChiKTticmVhaztjYXNlIFdBU0lfV0hFTkNFX0VORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpmPSh0aGlzLmZkW2FdLmJ1ZmZlcnN8fFtdKS5yZWR1Y2UoKGcsaCk9PmcraC5sZW5ndGgsMCk7dGhpcy5mZFthXS5zZWVrUG9zPUJpZ0ludChmKStCaWdJbnQoYik7YnJlYWs7CmNhc2UgV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnRoaXMuZmRbYV0uc2Vla1Bvcz1CaWdJbnQoYil9ZS5zZXRCaWdVaW50NjQoZCx0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3N5bmMiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF90ZWxsPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF90ZWxsIixhLGIsYXJndW1lbnRzKTtjb25zdCBjPXRoaXMuZ2V0TWVtb3J5KCk7dGhpcy5mZFthXS5zZWVrUG9zfHwodGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSk7Yy5zZXRCaWdVaW50NjQoYix0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3dyaXRlPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfd3JpdGUiLHtmZDphLGlvdnM6Yixpb3ZzTGVuZ3RoOmMsbndyaXR0ZW46ZH0pO2NvbnN0IGU9dGhpcy5nZXRNZW1vcnkoKTt0aGlzLmZkW2FdLmJ1ZmZlcnM9dGhpcy5mZFthXS5idWZmZXJzfHxbXTt0aGlzLmZkW2FdLmJ1ZmZlcnM9MDx0aGlzLmZkW2FdLmJ1ZmZlcnMubGVuZ3RoP1tjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kodGhpcy5mZFthXS5idWZmZXJzKV06dGhpcy5mZFthXS5idWZmZXJzO2xldCBmPTA7Zm9yKGxldCBrPTA7azxjO2srKyl7dmFyIGc9Yis4KmssaD1lLmdldFVpbnQzMihnLCEwKTtnPWUuZ2V0VWludDMyKGcrNCwhMCk7Zis9ZztoPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGgsZyk7aWYodGhpcy5mZFthXS5idWZmZXJzWzBdJiYKdGhpcy5mZFthXS5zZWVrUG9zPHRoaXMuZmRbYV0uYnVmZmVyc1swXS5sZW5ndGgpe2NvbnN0IGw9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyk7aC5zbGljZSgwLGcpLmZvckVhY2goKG0sbik9Pnt0aGlzLmZkW2FdLmJ1ZmZlcnNbMF1bbCtuXT1tfSl9ZWxzZSB0aGlzLmZkW2FdLmJ1ZmZlcnMucHVzaChoLnNsaWNlKDAsZykpfXRoaXMuZmRbYV0uc2Vla1Bvcys9Z29vZy5nbG9iYWwuQmlnSW50KGYpO2Uuc2V0VWludDMyKGQsZiwhMCk7WzEsMl0uaW5jbHVkZXMoYSkmJmNvbnNvbGUubG9nKGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGUoY29uY2F0VWludDhBcnJheXMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHRoaXMuZmRbYV0uYnVmZmVycykpKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2NyZWF0ZV9kaXJlY3Rvcnk9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9jcmVhdGVfZGlyZWN0b3J5IixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9maWxlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfZ2V0IixhLGIsYyxkLGUsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2ZpbGVzdGF0X3NldF90aW1lcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGUsZixnLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2xpbms9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX2xpbmsiLGEsYixjLGQsZSxmLGcsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX29wZW49ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9vcGVuIixhLGIsYyxkLGUsZixnLGgsayxhcmd1bWVudHMpO2NvbnN0IGw9dGhpcy5nZXRNZW1vcnkoKTt2YXIgbT0odGhpcy5mZFthXXx8e3BhdGg6Ii8ifSkucGF0aCxuPW5ldyBVaW50OEFycmF5KGwuYnVmZmVyLGMsZCk7bj1kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKG4pO2NvbnN0IHA9YXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGdvb2cuc3RyaW5nLnBhdGguam9pbigzPT09YT8iIjptLG4pKSk7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCI7OyBvcGVuaW5nIHBhdGgiLApwLCJ3aXRoUkVhZGVyIixzaG91bGRPcGVuUmVhZGVyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShmKSk7aWYocC5zdGFydHNXaXRoKCIvLi4iKXx8Ii8uXyI9PT1wfHwiLy5BcHBsZURvdWJsZSI9PT1wKXJldHVybiBXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOyhtPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZChxPT5xLnBhdGg9PT1wJiZBcnJheS5pc0FycmF5KHEuYnVmZmVycykpKT9uPW0uZmQ6KG49dGhpcy5mZC5sZW5ndGgsdGhpcy5mZFtuXT17ZmQ6bn0pO3RoaXMuZmRbbl09ey4uLnRoaXMuZmRbbl0scGF0aDpwLHR5cGU6ImZpbGUiLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6bT90aGlzLmZkW25dLmJ1ZmZlcnM6W10sb3BlbjohMH07c2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZikmJkRFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic2hvdWxkIG9wZW4gYSByZWFkIGhhbmRsZSBmb3IiLApwKTtsLnNldFVpbnQzMihrLG4sITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZWFkbGluaz1mdW5jdGlvbihhLGIsYyxkLGUsZil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3JlYWRsaW5rIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZW1vdmVfZGlyZWN0b3J5PWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVtb3ZlX2RpcmVjdG9yeSIsYSxiLGMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfcmVuYW1lPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVuYW1lIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9zeW1saW5rPWZ1bmN0aW9uKGEsYixjLGQsZSl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3N5bWxpbmsiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfdW5saW5rX2ZpbGU9ZnVuY3Rpb24oYSxiLGMpezM8YSYmREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3VubGlua19maWxlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucG9sbF9vbmVvZmY9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwb2xsX29uZW9mZiIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnByb2NfZXhpdD1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfZXhpdCIsYSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucHJvY19yYWlzZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfcmFpc2UiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yYW5kb21fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJyYW5kb21fZ2V0IixhLGIpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2NoZWRfeWllbGQ9ZnVuY3Rpb24oKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInNjaGVkX3lpZWxkIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfcmVjdj1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19yZWN2Iixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfc2VuZD1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19zZW5kIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5zb2NrX3NodXRkb3duPWZ1bmN0aW9uKCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJzb2NrX3NodXRkb3duIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZpbmRCdWZmZXJzPWZ1bmN0aW9uKGEpe2NvbnN0IGI9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDpjfSk9PmM9PT1hKTtyZXR1cm5bYiYmYi5idWZmZXJzLGIuZmRdfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24oYSl7Y29uc3QgYj0oYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGEpKSsiLyIpLnJlcGxhY2UoIi8vIiwiLyIpLGM9W107T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5mb3JFYWNoKCh7cGF0aDpkfSk9PiEvXC8vZy50ZXN0KGQucmVwbGFjZShiLCIiKSkmJmMucHVzaChkKSk7cmV0dXJuIGMubWFwKGQ9PnJlbW92ZUxlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZC5yZXBsYWNlKGIsIiIpKSkuZmlsdGVyKGQ9PiEhZCl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUud3JpdGVGaWxlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpO2E9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoO2NvbnN0IGQ9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDplfSk9PmU9PT1jKTt0aGlzLmZkW2FdPXtmZDphLHBhdGg6YyxzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltiXX07ZCYmZGVsZXRlIHRoaXMuZmRbZF19OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuYXBwZW5kRmlsZT1mdW5jdGlvbihhLGIpe3ZhciBjPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSk7W2NdPXRoaXMuZmluZEJ1ZmZlcnMoYyk7Yz9jLnB1c2goYik6Y29uc29sZS5lcnJvcihgQ2FuJ3QgYXBwZW5kIHRvIG5vbi1leGlzdGluZyBmaWxlICR7YX1gKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkRmlsZT1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksW2MsZF09dGhpcy5maW5kQnVmZmVycyhiKTt0aGlzLmZkW2RdJiZ0aGlzLmZkW2RdLm9wZW4mJmNvbnNvbGUud2FybihgcmVhZEZpbGU6IGZpbGUgJHthfSBoYXNuJ3QgYmVlbiBjbG9zZWQgeWV0IWApO2lmKGMpcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShjKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkU3RkT3V0PWZ1bmN0aW9uKCl7Y29uc3QgYT1PYmplY3QudmFsdWVzKHRoaXMuZmRbMF0pO3JldHVybiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSYmYS5idWZmZXJzfHxbXSl9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS51bmxpbms9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpOyhhPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZCgoe3BhdGg6Y30pPT5jPT09YikpP2RlbGV0ZSB0aGlzLmZkW2FdOmNvbnNvbGUuZXJyb3IoYFdoaWxlIHRyeWluZyB0byB1bmxpbmsgJHtifSwgcGF0aCBub3QgZm91bmRgKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5ta2Rpcj1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksYz1bXTtPYmplY3QudmFsdWVzKHRoaXMuZmQpLmZvckVhY2goKHtwYXRoOmR9KT0+ZC5zdGFydHNXaXRoKGIpJiZjLnB1c2goZCkpOzA8Yy5sZW5ndGg/Y29uc29sZS53YXJuKGBta2RpcjogcGF0aCAke2F9IGFscmVhZHkgZXhpc3RzYCk6KGE9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoLHRoaXMuZmRbYV09e2ZkOmEscGF0aDpifSl9O3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaT17fTttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5XQVNJPVdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpO2Z1bmN0aW9uIGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYSl7Zm9yKDswPGEubGVuZ3RoOylhLnBvcCgpfXZhciBtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5PXt9O21vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkuY2xlYXJBcnJheT1jbGVhckFycmF5JCRtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5O3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9e2RlZmF1bHQ6e319O21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0Ll9fZXNNb2R1bGU9ITA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuTG9nZ2VyRmFjdG9yeT1tb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHM9dm9pZCAwO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz17bG9nX3JhaXNlX2Vycm9yOjEsbG9nX3dpdGhfd2FybmluZ3M6Mix0cmFjZTozLGRlYnVnOjQsaW5mbzo1LHdhcm46NixlcnJvcjo3LGRpc2FibGU6OH07CnZhciBMb2dnZXJGYWN0b3J5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7aWYodm9pZCAwPT09YiYmKGI9ImxvZ193aXRoX3dhcm5pbmdzIiksdm9pZCAwPT09YyYmKGM9bnVsbCksdGhpcy5sb2dMZXZlbD1iLCFtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbYl0pdGhyb3cgRXJyb3IoIkludmFsaWQgbG9nIGxldmVsICIrYisiIGFsbG93ZWQ6ICIrSlNPTi5zdHJpbmdpZnkobW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzKSk7dGhpcy5tb2NrQ29uc29sZT1jfHxjb25zb2xlfXJldHVybiBhLnByb3RvdHlwZS5kdW1teT1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUuc2V0TG9nV2FybmluZ3M9ZnVuY3Rpb24oYil7dGhpcy5sb2dMZXZlbD1ifSxhLnByb3RvdHlwZS5nZXRMb2dXYXJuaW5ncz0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2dMZXZlbH0sYS5wcm90b3R5cGUuZ2V0U2luZ2xlTG9nZ2VyQ29sb3I9ZnVuY3Rpb24oYixjLGQpe3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpLGQpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXI9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLmdldFJhbmRvbUNvbG9yKGIpO3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGQpLGMpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJTdHlsZT1mdW5jdGlvbihiLGMsZCxlKXt2YXIgZj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT0ibG9nX3dpdGhfd2FybmluZ3MiKSxmdW5jdGlvbigpe2Zvcih2YXIgZz1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylnW2hdPWFyZ3VtZW50c1toXTtpZihtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbZi5sb2dMZXZlbF0+Cm1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tlXSlyZXR1cm4gZi5kdW1teTtnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcpO2g9Zy5zaGlmdCgpLnNwbGl0KCJ7fSIpO2Zvcih2YXIgaz1bZi5tb2NrQ29uc29sZSwiJWMiK2IsY10sbD0wO2w8aC5sZW5ndGg7bCsrKWsucHVzaChoW2xdKSx2b2lkIDAhPT1nW2xdJiZrLnB1c2goZ1tsXSk7aWYoaC5sZW5ndGgtMSE9PWcubGVuZ3RoKWlmKCJsb2dfd2l0aF93YXJuaW5ncyI9PT1mLmxvZ0xldmVsKWYubW9ja0NvbnNvbGUuZXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7ZWxzZSBpZigibG9nX3JhaXNlX2Vycm9yIj09PWYubG9nTGV2ZWwpdGhyb3cgRXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KGQsayl9fSxhLnByb3RvdHlwZS5nZXRMb2dnZXJDb2xvcj1mdW5jdGlvbihiLApjKXtyZXR1cm4gdGhpcy5nZXRMb2dnZXJTdHlsZShiLHRoaXMuZ2V0Q29sb3JTdHlsZShjKSl9LGEucHJvdG90eXBlLmdldENvbG9yU3R5bGU9ZnVuY3Rpb24oYil7cmV0dXJuImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogIitiKyI7IHBhZGRpbmc6IDJweCA2cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZm9udC1zaXplOiAxMHB4In0sYS5nZXRIYXNoPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9MCk7dmFyIGQ9MzczNTkyODU1OV5jO2NePTExMDM1NDc5OTE7Zm9yKHZhciBlPTAsZjtlPGIubGVuZ3RoO2UrKylmPWIuY2hhckNvZGVBdChlKSxkPU1hdGguaW11bChkXmYsMjY1NDQzNTc2MSksYz1NYXRoLmltdWwoY15mLDE1OTczMzQ2NzcpO3JldHVybiBkPU1hdGguaW11bChkXmQ+Pj4xNiwyMjQ2ODIyNTA3KV5NYXRoLmltdWwoY15jPj4+MTMsMzI2NjQ4OTkwOSksNDI5NDk2NzI5NiooMjA5NzE1MSYoTWF0aC5pbXVsKGNeYz4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChkXgpkPj4+MTMsMzI2NjQ4OTkwOSkpKSsoZD4+PjApfSxhLnByb3RvdHlwZS5nZXRSYW5kb21Db2xvcj1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYoYj0iIik7Yj1hLmdldEhhc2goYik7Zm9yKHZhciBjPSIjIixkPTA7Mz5kO2QrKyljKz0oIjAwIisoOCsoYj4+NypkJjEyNykpLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC0yKTtyZXR1cm4gY30sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmdldExvZ2dlckNvbG9yKGIsdGhpcy5nZXRSYW5kb21Db2xvcihiKSl9LGEucHJvdG90eXBlLmdldExvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJue3RyYWNlOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUudHJhY2UsInRyYWNlIiksZGVidWc6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5kZWJ1ZywiZGVidWciKSxsb2c6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5sb2csCiJpbmZvIiksd2Fybjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLndhcm4sIndhcm4iKSxlcnJvcjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmVycm9yLCJlcnJvciIpfX0sYX0oKTttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PUxvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleDtsZXQgbG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ01pZGlSZXF1ZXN0JCRtb2R1bGUkc3JjJGxvZ2dlcjsKY29uc3QgaXNQcm9kJCRtb2R1bGUkc3JjJGxvZ2dlcj0xO2xvZ1dvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dJbmRleCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307CmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e30sbW9kdWxlJHNyYyRsb2dnZXI9e307bW9kdWxlJHNyYyRsb2dnZXIuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nQ29tbW9uVXRpbHM9bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ0luZGV4PWxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nTWlkaVJlcXVlc3Q9bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ09sZFNwbk1haW49bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuV29ya2VyPWxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU0FCTWFpbj1sb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJXb3JrZXI9bG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTUE5NYWluU2luZ2xlPWxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlcj1sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dWQU5NYWluPWxvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTldvcmtlcj1sb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dhc21Nb2R1bGU9bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldE1haW49bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dvcmtsZXRXb3JrZXI9bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7Y29uc3QgQ29tcHJlc3Npb25NZXRob2QkJG1vZHVsZSRzcmMkemxpYiR6bGliPXtERUZMQVRFOjgsUkVTRVJWRUQ6MTV9O3ZhciBtb2R1bGUkc3JjJHpsaWIkemxpYj17fTttb2R1bGUkc3JjJHpsaWIkemxpYi5Db21wcmVzc2lvbk1ldGhvZD1Db21wcmVzc2lvbk1ldGhvZCQkbW9kdWxlJHNyYyR6bGliJHpsaWI7LyoKIHpsaWIuanMgMjAxMiAtIGltYXlhIFsgaHR0cHM6Ly9naXRodWIuY29tL2ltYXlhL3psaWIuanMgXSBUaGUgTUlUIExpY2Vuc2UgKi8KZnVuY3Rpb24gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl7Y29uc3QgYj1hLmxlbmd0aDtsZXQgYz0wLGQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGUsZixnLGg7bGV0IGssbDtmb3Ioaz0wO2s8YjsrK2spYVtrXT5jJiYoYz1hW2tdKSxhW2tdPGQmJihkPWFba10pO2NvbnN0IG09MTw8YyxuPW5ldyBVaW50MzJBcnJheShtKTtlPTE7Zj0wO2ZvcihnPTI7ZTw9Yzspe2ZvcihrPTA7azxiOysraylpZihhW2tdPT09ZSl7aD0wO3ZhciBwPWY7Zm9yKGw9MDtsPGU7KytsKWg9aDw8MXxwJjEscD4+PTE7cD1lPDwxNnxrO2ZvcihsPWg7bDxtO2wrPWcpbltsXT1wOysrZn0rK2U7Zjw8PTE7Zzw8PTF9cmV0dXJuW24sYyxkXX12YXIgbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW49e307bW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4uSHVmZm1hbj1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbjtjb25zdCBaTElCX1JBV19JTkZMQVRFX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT0zMjc2ODsKZnVuY3Rpb24gUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUoYSxiKXt0aGlzLmJsb2Nrcz1bXTt0aGlzLmJ1ZmZlclNpemU9WkxJQl9SQVdfSU5GTEFURV9CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGU7dGhpcy5iaXRzYnVmbGVuPXRoaXMuYml0c2J1Zj10aGlzLmlwPXRoaXMudG90YWxwb3M9MDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KGEpO3RoaXMuYmZpbmFsPSExO3RoaXMuYnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFO3RoaXMucmVzaXplPSExO2lmKGJ8fCEoYj17fSkpYi5pbmRleCYmKHRoaXMuaXA9Yi5pbmRleCksYi5idWZmZXJTaXplJiYodGhpcy5idWZmZXJTaXplPWIuYnVmZmVyU2l6ZSksYi5idWZmZXJUeXBlJiYodGhpcy5idWZmZXJUeXBlPWIuYnVmZmVyVHlwZSksYi5yZXNpemUmJih0aGlzLnJlc2l6ZT1iLnJlc2l6ZSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMub3A9ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoK3RoaXMuYnVmZmVyU2l6ZStSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5vcD0wO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGU9e0JMT0NLOjAsQURBUFRJVkU6MX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5kZWNvbXByZXNzPWZ1bmN0aW9uKCl7Zm9yKDshdGhpcy5iZmluYWw7KXRoaXMucGFyc2VCbG9jaygpO3N3aXRjaCh0aGlzLmJ1ZmZlclR5cGUpe2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5CTE9DSzpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJCbG9jaygpO2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5BREFQVElWRTpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJEeW5hbWljKCk7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aD0zMjc2ODtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoPTI1ODsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMjU4LDI1OF0pO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkxlbmd0aEV4dHJhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEpfShbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMF0pOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0Q29kZVRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDE2QXJyYXkoYSl9KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzddKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9KFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSk7ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkTGl0ZXJhbExlbmd0aFRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhfShmdW5jdGlvbigpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMjg4KTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09MTQzPj1iPzg6MjU1Pj1iPzk6Mjc5Pj1iPzc6ODtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkRGlzdGFuY2VUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gYX0oZnVuY3Rpb24oKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KDMwKTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09NTtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucGFyc2VCbG9jaz1mdW5jdGlvbigpe2xldCBhPXRoaXMucmVhZEJpdHMoMyk7YSYxJiYodGhpcy5iZmluYWw9ITApO2E+Pj49MTtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMucGFyc2VVbmNvbXByZXNzZWRCbG9jaygpO2JyZWFrO2Nhc2UgMTp0aGlzLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2soKTticmVhaztjYXNlIDI6dGhpcy5wYXJzZUR5bmFtaWNIdWZmbWFuQmxvY2soKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bmtub3duIEJUWVBFOiAiK2EpO319OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucmVhZEJpdHM9ZnVuY3Rpb24oYSl7bGV0IGI9dGhpcy5iaXRzYnVmLGM9dGhpcy5iaXRzYnVmbGVuO2NvbnN0IGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO2lmKGUrKGEtYys3Pj4zKT49ZC5sZW5ndGgpdGhyb3cgRXJyb3IoImlucHV0IGJ1ZmZlciBpcyBicm9rZW4iKTtmb3IoO2M8YTspYnw9ZFtlKytdPDxjLGMrPTg7dGhpcy5iaXRzYnVmPWI+Pj5hO3RoaXMuYml0c2J1Zmxlbj1jLWE7dGhpcy5pcD1lO3JldHVybiBiJigxPDxhKS0xfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnJlYWRDb2RlQnlUYWJsZT1mdW5jdGlvbihhKXtsZXQgYj10aGlzLmJpdHNidWYsYz10aGlzLmJpdHNidWZsZW47dmFyIGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO3ZhciBmPWQubGVuZ3RoO2NvbnN0IGc9YVswXTtmb3IoYT1hWzFdO2M8YSYmIShlPj1mKTspYnw9ZFtlKytdPDxjLGMrPTg7ZD1nW2ImKDE8PGEpLTFdO2Y9ZD4+PjE2O2lmKGY+Yyl0aHJvdyBFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aDogIitmKTt0aGlzLmJpdHNidWY9Yj4+Zjt0aGlzLmJpdHNidWZsZW49Yy1mO3RoaXMuaXA9ZTtyZXR1cm4gZCY2NTUzNX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5wYXJzZVVuY29tcHJlc3NlZEJsb2NrPWZ1bmN0aW9uKCl7Y29uc3QgYT10aGlzLmlucHV0O2xldCBiPXRoaXMuaXAsYz10aGlzLm91dHB1dCxkPXRoaXMub3A7dmFyIGU9YS5sZW5ndGg7bGV0IGY7Y29uc3QgZz1jLmxlbmd0aDt0aGlzLmJpdHNidWZsZW49dGhpcy5iaXRzYnVmPTA7aWYoYisxPj1lKXRocm93IEVycm9yKCJpbnZhbGlkIHVuY29tcHJlc3NlZCBibG9jayBoZWFkZXI6IExFTiIpO2Y9YVtiKytdfGFbYisrXTw8ODtpZihiKzE+PWUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogTkxFTiIpO2U9YVtiKytdfGFbYisrXTw8ODtpZihmPT09fmUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogbGVuZ3RoIHZlcmlmeSIpO2lmKGIrZj5hLmxlbmd0aCl0aHJvdyBFcnJvcigiaW5wdXQgYnVmZmVyIGlzIGJyb2tlbiIpOwpzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6Zm9yKDtkK2Y+Yy5sZW5ndGg7KWU9Zy1kLGYtPWUsYy5zZXQoYS5zdWJhcnJheShiLGIrZSksZCksZCs9ZSxiKz1lLHRoaXMub3A9ZCxjPXRoaXMuZXhwYW5kQnVmZmVyQmxvY2soKSxkPXRoaXMub3A7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOmZvcig7ZCtmPmMubGVuZ3RoOyljPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoe2ZpeFJhdGlvOjJ9KTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbnZhbGlkIGluZmxhdGUgbW9kZSIpO31jLnNldChhLnN1YmFycmF5KGIsYitmKSxkKTt0aGlzLmlwPWIrZjt0aGlzLm9wPWQrZjt0aGlzLm91dHB1dD1jfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2s9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5kZWNvZGVIdWZmbWFuQWRhcHRpdmUoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6dGhpcy5kZWNvZGVIdWZmbWFuQmxvY2soUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTsKYnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRHluYW1pY0h1ZmZtYW5CbG9jaz1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEJpdHMoNSkrMjU3LGI9dGhpcy5yZWFkQml0cyg1KSsxLGM9dGhpcy5yZWFkQml0cyg0KSs0LGQ9bmV3IFVpbnQ4QXJyYXkoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXIubGVuZ3RoKTtsZXQgZTtmb3IoZT0wO2U8YzsrK2UpZFtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5PcmRlcltlXV09dGhpcy5yZWFkQml0cygzKTtkPUh1ZmZtYW4kJG1vZHVsZSRzcmMkemxpYiRodWZmbWFuKGQpO2M9bmV3IFVpbnQ4QXJyYXkoYStiKTtlPTA7Zm9yKGI9YStiO2U8Yjspe3ZhciBmPXRoaXMucmVhZENvZGVCeVRhYmxlKGQpO3N3aXRjaChmKXtjYXNlIDE2OmZvcihmPTMrdGhpcy5yZWFkQml0cygyKTtmLS07KWNbZSsrXT1nO2JyZWFrO2Nhc2UgMTc6Zm9yKGY9CjMrdGhpcy5yZWFkQml0cygzKTtmLS07KWNbZSsrXT0wO3ZhciBnPTA7YnJlYWs7Y2FzZSAxODpmb3IoZj0xMSt0aGlzLnJlYWRCaXRzKDcpO2YtLTspY1tlKytdPTA7Zz0wO2JyZWFrO2RlZmF1bHQ6Zz1jW2UrK109Zn19Zz1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbihjLnN1YmFycmF5KDAsYSkpO2E9SHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYy5zdWJhcnJheShhKSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOnRoaXMuZGVjb2RlSHVmZm1hbkFkYXB0aXZlKGcsYSk7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMuZGVjb2RlSHVmZm1hbkJsb2NrKGcsYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5CbG9jaz1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2NvbnN0IGU9Yy5sZW5ndGgtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4Q29weUxlbmd0aDt2YXIgZjtsZXQgZyxoO2NvbnN0IGs9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoQ29kZVRhYmxlLGw9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoRXh0cmFUYWJsZSxtPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RDb2RlVGFibGUsbj1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZTtmb3IoOzI1NiE9PShmPXRoaXMucmVhZENvZGVCeVRhYmxlKGEpKTspaWYoMjU2PmYpZD49CmUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKSxjW2QrK109ZjtlbHNlIGZvcihmLT0yNTcsaD1rW2ZdLDA8bFtmXSYmKGgrPXRoaXMucmVhZEJpdHMobFtmXSkpLGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYiksZz1tW2ZdLDA8bltmXSYmKGcrPXRoaXMucmVhZEJpdHMobltmXSkpLGQ+PWUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5BZGFwdGl2ZT1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2xldCBlPWMubGVuZ3RoO3ZhciBmO2xldCBnLGg7Y29uc3Qgaz1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGUsbD1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhFeHRyYVRhYmxlLG09UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRGlzdENvZGVUYWJsZSxuPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RFeHRyYVRhYmxlO2Zvcig7MjU2IT09KGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYSkpOylpZigyNTY+ZilkPj1lJiYoYz10aGlzLmV4cGFuZEJ1ZmZlckFkYXB0aXZlKCksZT1jLmxlbmd0aCksY1tkKytdPQpmO2Vsc2UgZm9yKGYtPTI1NyxoPWtbZl0sMDxsW2ZdJiYoaCs9dGhpcy5yZWFkQml0cyhsW2ZdKSksZj10aGlzLnJlYWRDb2RlQnlUYWJsZShiKSxnPW1bZl0sMDxuW2ZdJiYoZys9dGhpcy5yZWFkQml0cyhuW2ZdKSksZCtoPmUmJihjPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoKSxlPWMubGVuZ3RoKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckJsb2NrPWZ1bmN0aW9uKGEpe2E9bmV3IFVpbnQ4QXJyYXkodGhpcy5vcC1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCk7Y29uc3QgYj10aGlzLm9wLVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLGM9dGhpcy5vdXRwdXQ7YS5zZXQoYy5zdWJhcnJheShSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCxhLmxlbmd0aCkpO3RoaXMuYmxvY2tzLnB1c2goYSk7dGhpcy50b3RhbHBvcys9YS5sZW5ndGg7Yy5zZXQoYy5zdWJhcnJheShiLGIrUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTt0aGlzLm9wPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoOwpyZXR1cm4gY307UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckFkYXB0aXZlPWZ1bmN0aW9uKGEpe2xldCBiPU1hdGgudHJ1bmModGhpcy5pbnB1dC5sZW5ndGgvdGhpcy5pcCsxKTtjb25zdCBjPXRoaXMuaW5wdXQsZD10aGlzLm91dHB1dDthJiYoIm51bWJlciI9PT10eXBlb2YgYS5maXhSYXRpbyYmKGI9YS5maXhSYXRpbyksIm51bWJlciI9PT10eXBlb2YgYS5hZGRSYXRpbyYmKGIrPWEuYWRkUmF0aW8pKTsyPmI/KGE9KGMubGVuZ3RoLXRoaXMuaXApL3RoaXMuY3VycmVudExpdGxlblRhYmxlWzJdLGE9TWF0aC50cnVuYyhhLzIqMjU4KSxhPWE8ZC5sZW5ndGg/ZC5sZW5ndGgrYTpkLmxlbmd0aDw8MSk6YT1kLmxlbmd0aCpiO2E9bmV3IFVpbnQ4QXJyYXkoYSk7YS5zZXQoZCk7cmV0dXJuIHRoaXMub3V0cHV0PWF9OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUuY29uY2F0QnVmZmVyQmxvY2s9ZnVuY3Rpb24oKXtsZXQgYT0wO2NvbnN0IGI9dGhpcy5vdXRwdXQsYz10aGlzLmJsb2NrcztsZXQgZDtjb25zdCBlPW5ldyBVaW50OEFycmF5KHRoaXMudG90YWxwb3MrKHRoaXMub3AtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTtsZXQgZixnLGgsaztpZigwPT09Yy5sZW5ndGgpcmV0dXJuIHRoaXMub3V0cHV0LnN1YmFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLHRoaXMub3ApO2Y9MDtmb3IoZz1jLmxlbmd0aDtmPGc7KytmKWZvcihkPWNbZl0saD0wLGs9ZC5sZW5ndGg7aDxrOysraCllW2ErK109ZFtoXTtmPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO2ZvcihnPXRoaXMub3A7ZjwKZzsrK2YpZVthKytdPWJbZl07dGhpcy5ibG9ja3M9W107cmV0dXJuIHRoaXMuYnVmZmVyPWV9O1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5jb25jYXRCdWZmZXJEeW5hbWljPWZ1bmN0aW9uKCl7bGV0IGE7Y29uc3QgYj10aGlzLm9wO3RoaXMucmVzaXplPyhhPW5ldyBVaW50OEFycmF5KGIpLGEuc2V0KHRoaXMub3V0cHV0LnN1YmFycmF5KDAsYikpKTphPXRoaXMub3V0cHV0LnN1YmFycmF5KDAsYik7cmV0dXJuIHRoaXMuYnVmZmVyPWF9O3ZhciBtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5SYXdJbmZsYXRlPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlO2Z1bmN0aW9uIFV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsKCl7fVV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsLnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGEpe2E9Wy4uLmFdO2xldCBiLGM7Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspYVtiXT0oYVtiXS5jaGFyUG9pbnRBdCgwKSYyNTUpPj4+MDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2FdKX07dmFyIG1vZHVsZSRzcmMkemxpYiR1dGlsPXt9O21vZHVsZSRzcmMkemxpYiR1dGlsLlV0aWw9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWw7ZnVuY3Rpb24gQWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWwuc3RyaW5nVG9CeXRlQXJyYXkoYSkpO3JldHVybiBBZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGUoMSxhKX1BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGU9ZnVuY3Rpb24oYSxiKXtsZXQgYz1hJjY1NTM1O2E9YT4+PjE2JjY1NTM1O2xldCBkPWIubGVuZ3RoLGUsZj0wO2Zvcig7MDxkOyl7ZT1kPkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj9BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5PcHRpbWl6YXRpb25QYXJhbWV0ZXI6ZDtkLT1lO2RvIGMrPWJbZisrXSxhKz1jO3doaWxlKC0tZSk7YyU9NjU1MjE7YSU9NjU1MjF9cmV0dXJuKGE8PDE2fGMpPj4+MH07CkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj0xMDI0O3ZhciBtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMj17fTttb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5BZGxlcjMyPUFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyO2Z1bmN0aW9uIEluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlKGEsYil7dGhpcy5pbnB1dD1hO3RoaXMuaXA9MDtpZihifHwhKGI9e30pKWIuaW5kZXgmJih0aGlzLmlwPWIuaW5kZXgpLGIudmVyaWZ5JiYodGhpcy52ZXJpZnk9Yi52ZXJpZnkpO2NvbnN0IGM9YVt0aGlzLmlwKytdLGQ9YVt0aGlzLmlwKytdO3N3aXRjaChjJjE1KXtjYXNlIENvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFOnRoaXMubWV0aG9kPUNvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCIpO31pZigwIT09KChjPDw4KStkKSUzMSl0aHJvdyBFcnJvcigiaW52YWxpZCBmY2hlY2sgZmxhZzoiKygoYzw8OCkrZCklMzEpO2lmKGQmMzIpdGhyb3cgRXJyb3IoImZkaWN0IGZsYWcgaXMgbm90IHN1cHBvcnRlZCIpO3RoaXMucmF3aW5mbGF0ZT0KbmV3IFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlKGEse2luZGV4OnRoaXMuaXAsYnVmZmVyU2l6ZTpiLmJ1ZmZlclNpemUsYnVmZmVyVHlwZTpiLmJ1ZmZlclR5cGUscmVzaXplOmIucmVzaXplfSl9SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJGluZmxhdGUuQnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlOwpJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5wcm90b3R5cGUuZGVjb21wcmVzcz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5wdXQ7Y29uc3QgYj10aGlzLnJhd2luZmxhdGUuZGVjb21wcmVzcygpO3RoaXMuaXA9dGhpcy5yYXdpbmZsYXRlLmlwO2lmKHRoaXMudmVyaWZ5JiYoYT0oYVt0aGlzLmlwKytdPDwyNHxhW3RoaXMuaXArK108PDE2fGFbdGhpcy5pcCsrXTw8OHxhW3RoaXMuaXArK10pPj4+MCxhIT09QWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYikpKXRocm93IEVycm9yKCJpbnZhbGlkIGFkbGVyLTMyIGNoZWNrc3VtIik7cmV0dXJuIGJ9O3ZhciBtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5JbmZsYXRlPUluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlO2NvbnN0IFBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGU9NjU1MzYsUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZT0xNixjc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlPSh7bWVtb3J5OmEsbWVzc2FnZVBvcnQ6YixzdHJlYW1CdWZmZXI6Y30pPT5mdW5jdGlvbihkLGUsZixnKXtpZihhKXtkPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGcsZik7ZD11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGQpO3ZhciBoPS9cbiQvZy50ZXN0KGQpO2U9L15cbi9nLnRlc3QoZCk7dmFyIGs9ZC5zcGxpdCgiXG4iKS5maWx0ZXIobT0+MDxtLmxlbmd0aCksbD1bXTtpZigwPT09ay5sZW5ndGgmJmh8fGUpbC5wdXNoKGMuam9pbigiIikpLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYyk7ay5mb3JFYWNoKChtLG4pPT57bisxPT09ay5sZW5ndGg/aD8wPT09bj8obC5wdXNoKGMuam9pbigiIikrbSksCmNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKTpjLnB1c2gobSk6MD09PW4/KGwucHVzaChjLmpvaW4oIiIpK20pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKX0pO2wuZm9yRWFjaChtPT57bS5yZXBsYWNlKC8oXHJcbnxcbnxccikvZ20sIiIpJiZiLnBvc3Qoe2xvZzptfSl9KX19LGFzc2VydFBsdWdpbkV4cG9ydHMkJG1vZHVsZSRzcmMkbW9kdWxlPWE9PntpZihhJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYib2JqZWN0Ij09PXR5cGVvZiBhLmV4cG9ydHMpe2lmKGEuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycyl7aWYoYS5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZXx8YS5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8YS5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQpcmV0dXJuITA7Y29uc29sZS5lcnJvcihhLmV4cG9ydHMsIkEgY3NvdW5kIHBsdWdpbiB0dXJucyBvdXQgdG8gYmUgbmVpdGhlciBhIHBsdWdpbiwgb3Bjb2RlIG9yIG1vZHVsZS5cblBlcmhhcHMgY3NkbC5oIG9yIG1vZHVsZS5oIHdhc24ndCBpbXBvcnRlZCBjb3JyZWN0bHk/Iik7CnJldHVybiExfWNvbnNvbGUuZXJyb3IoIkEgY3NvdW5kIHBsdWdpbiBkaWRuJ3QgZXhwb3J0IF9fd2FzbV9jYWxsX2N0b3JzLlxuUGxlYXNlIHJlLXJ1biB3YXNtLWxkIHdpdGggZWl0aGVyIC0tZXhwb3J0LWFsbCBvciBpbmNsdWRlIC0tZXhwb3J0PV9fd2FzbV9jYWxsX2N0b3JzIik7cmV0dXJuITF9Y29uc29sZS5lcnJvcigiRXJyb3IgaW5zdGFudGlhdGluZyBhIGNzb3VuZCBwbHVnaW4sIGluc3RhbmNlIGFuZC9vciBleHBvcnQgaXMgbWlzc2luZyEiKTtyZXR1cm4hMX0sZ2V0QmluYXJ5SGVhZGVyRGF0YSQkbW9kdWxlJHNyYyRtb2R1bGU9YT0+e2Z1bmN0aW9uIGIoKXtsZXQgbD0wLG09MTtmb3IoOzspe2NvbnN0IG49YVtjKytdO2wrPShuJjEyNykqbTttKj0xMjg7aWYoIShuJjEyOCkpYnJlYWt9cmV0dXJuIGx9MTgzNjI3ODAxNiE9PShuZXcgVWludDMyQXJyYXkoKG5ldyBVaW50OEFycmF5KGEuc3ViYXJyYXkoMCwyNCkpKS5idWZmZXIpKVswXSYmY29uc29sZS5lcnJvcigiV2FzbSBtYWdpYyBudW1iZXIgaXMgbWlzc2luZyEiKTsKaWYoMCE9PWFbOF0pcmV0dXJuIGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyKCJEeWxpbmsgc2VjdGlvbiB3YXNuJ3QgZm91bmQgaW4gd2FzbSBiaW5hcnksIGFzc3VtaW5nIHN0YXRpYyB3YXNtLiIpLCJzdGF0aWMiO2xldCBjPTk7Y29uc3QgZD1iKCk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iZCIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09InkiLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJsIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iaSIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09Im4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJrIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0KIi4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSIwIi5jb2RlUG9pbnRBdCgwKSk7Yys9Mztjb25zdCBlPWIoKSxmPWIoKSxnPWIoKSxoPWIoKSxrPWIoKTtyZXR1cm57c2VjdGlvblNpemU6ZCxtZW1vcnlTaXplOmUsbWVtb3J5QWxpZ246ZixuZWVkZWREeW5saWJzQ291bnQ6ayx0YWJsZVNpemU6Zyx0YWJsZUFsaWduOmh9fSxsb2FkU3RhdGljV2FzbSQkbW9kdWxlJHNyYyRtb2R1bGU9YXN5bmMoe3dhc21CeXRlczphLHdhc2k6YixtZXNzYWdlUG9ydDpjfSk9Pntjb25zdCBkPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoYSk7YT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjE2Mzg0fSk7Y29uc3QgZT1iLmdldEltcG9ydHMoZCk7ZS5lbnY9ZS5lbnZ8fHt9O2UuZW52LmNzb3VuZExvYWRNb2R1bGVzPSgpPT4wO2UuZW52Lm1lbW9yeT1hO2UuZW52LmNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjaz1jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlKHttZW1vcnk6ZS5lbnYubWVtb3J5LApzdHJlYW1CdWZmZXI6W10sbWVzc2FnZVBvcnQ6Y30pO2M9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCxlKTtiLnNldE1lbW9yeShhKTtiLnN0YXJ0KGMpO2MuZXhwb3J0cy5fX3dhc2lfanNfY3NvdW5kU2V0TWVzc2FnZVN0cmluZ0NhbGxiYWNrKCk7cmV0dXJuW2MsYl19Owp2YXIgJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHt3YXNtRGF0YVVSSTphLHdpdGhQbHVnaW5zOmI9W10sbWVzc2FnZVBvcnQ6Y30pe3ZhciBkPXt9O2NvbnN0IGU9bmV3IFdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHtwcmVvcGVuczp7Ii8iOiIvIn19KTthPW5ldyBVaW50OEFycmF5KGEpO2E9KG5ldyBJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZShhKSkuZGVjb21wcmVzcygpO3ZhciBmPWdldEJpbmFyeUhlYWRlckRhdGEkJG1vZHVsZSRzcmMkbW9kdWxlKGEpO2lmKCJzdGF0aWMiPT09ZilyZXR1cm4gYXdhaXQgbG9hZFN0YXRpY1dhc20kJG1vZHVsZSRzcmMkbW9kdWxlKHttZXNzYWdlUG9ydDpjLHdhc21CeXRlczphLHdhc21GczpkLHdhc2k6ZX0pO2NvbnN0IHttZW1vcnlTaXplOmcsbWVtb3J5QWxpZ246aCx0YWJsZVNpemU6a309ZjtiPWF3YWl0IGIucmVkdWNlKGFzeW5jKHIsdyk9PntyPWF3YWl0IHI7CmxldCBCLHo7dHJ5e0I9bmV3IFVpbnQ4QXJyYXkodyksej1nZXRCaW5hcnlIZWFkZXJEYXRhJCRtb2R1bGUkc3JjJG1vZHVsZShCKX1jYXRjaChDKXtjb25zb2xlLmVycm9yKCJFcnJvciBpbiBwbHVnaW4iLEMpfXomJnIucHVzaCh7aGVhZGVyRGF0YTp6LHdhc21QbHVnaW5CeXRlczpCfSk7cmV0dXJuIHJ9LFtdKTt2YXIgbD0xMjgqUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZTtkPU1hdGguY2VpbCgoZytoKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPU1hdGguY2VpbChiLnJlZHVjZSgocix7aGVhZGVyRGF0YTp3fSk9PiJzdGF0aWMiPT09dz8wOnIrKHcubWVtb3J5U2l6ZStoKSwwKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPWQrZitsO2NvbnN0IG09bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpmLG1heGltdW06MTAyNCpQQUdFU19QRVJfTUIkJG1vZHVsZSRzcmMkbW9kdWxlfSksbj1uZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6aysKMSxlbGVtZW50OiJhbnlmdW5jIn0pO2Uuc2V0TWVtb3J5KG0pO2NvbnN0IHA9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sZipQQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LGYqUEFHRV9TSVpFJCRtb2R1bGUkc3JjJG1vZHVsZSk7bD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxsKTtjb25zdCBxPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITF9LDEpLHU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7YT1hd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGEpO2NvbnN0IHQ9ZS5nZXRJbXBvcnRzKGEpO2xldCB2PVtdLEE9ZDt0LmVudj10LmVudnx8e307dC5lbnYubWVtb3J5PW07dC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT0Kbjt0LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt0LmVudi5fX21lbW9yeV9iYXNlPWw7dC5lbnYuX190YWJsZV9iYXNlPXE7dC5lbnYuY3NvdW5kTG9hZE1vZHVsZXM9cj0+e3YuZm9yRWFjaCh3PT57dm9pZCAwPT09eT9jb25zb2xlLmVycm9yKCJjc291bmQtd2FzbSBpbnRlcm5hbDogdGltaW5nIHByb2JsZW0gZGV0ZWN0ZWQhIik6ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdCh5LHcsbixyKX0pO3JldHVybiAwfTt0LmVudi5fWlRINWVycm5vPWZ1bmN0aW9uKCl7fTt0LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s9Y3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrJCRtb2R1bGUkc3JjJG1vZHVsZSh7bWVtb3J5Om0sbWVzc2FnZVBvcnQ6YyxzdHJlYW1CdWZmZXI6W119KTt0LmVudi5wcmludERlYnVnQ2FsbGJhY2s9KHIsdyk9PntyPW5ldyBVaW50OEFycmF5KG0uYnVmZmVyLHIsdyk7cj11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKHIpO2NvbnNvbGUubG9nKHIpfTsKdFsiR09ULm1lbSJdPXRbIkdPVC5tZW0iXXx8e307dFsiR09ULm1lbSJdLl9faGVhcF9iYXNlPWY7dFsiR09ULmZ1bmMiXT10WyJHT1QuZnVuYyJdfHx7fTtjb25zdCB5PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCk7Yz1PYmplY3QuYXNzaWduKHt9LHkuZXhwb3J0cyk7YT17fTthLmV4cG9ydHM9T2JqZWN0LmFzc2lnbihjLHttZW1vcnk6bX0pO3Y9YXdhaXQgYi5yZWR1Y2UoYXN5bmMocix7aGVhZGVyRGF0YTp3LHdhc21QbHVnaW5CeXRlczpCfSk9PntyPWF3YWl0IHI7dHJ5e2NvbnN0IHttZW1vcnlTaXplOnosbWVtb3J5QWxpZ246Qyx0YWJsZVNpemU6Rn09dyxFPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoQikseD1lLmdldEltcG9ydHMoRSksRz1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxBKlBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO24uZ3JvdyhGKTt4LmVudj1PYmplY3QuYXNzaWduKHt9LHguZW52KTt4LmVudi5tZW1vcnk9Cm07eC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT1uO3guZW52Ll9fbWVtb3J5X2Jhc2U9Rzt4LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt4LmVudi5fX3RhYmxlX2Jhc2U9cTt4LmVudi5jc291bmRMb2FkTW9kdWxlcz11O2RlbGV0ZSB4LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s7QSs9TWF0aC5jZWlsKCh6K0MpL1BBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO2NvbnN0IEQ9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSx4KTthc3NlcnRQbHVnaW5FeHBvcnRzJCRtb2R1bGUkc3JjJG1vZHVsZShEKSYmKEQuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycygpLHIucHVzaChEKSl9Y2F0Y2goeil7Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY29tcGlsaW5nIGNzb3VuZC1wbHVnaW4iLHopfXJldHVybiByfSxbXSk7ZS5zdGFydChhKTthLmV4cG9ydHMuX193YXNpX2pzX2Nzb3VuZFNldE1lc3NhZ2VTdHJpbmdDYWxsYmFjaygpO3JldHVyblthLGVdfSwKbW9kdWxlJHNyYyRtb2R1bGU9e307bW9kdWxlJHNyYyRtb2R1bGUuY3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrPWNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjayQkbW9kdWxlJHNyYyRtb2R1bGU7bW9kdWxlJHNyYyRtb2R1bGUuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGU7Y29uc3QgaGFuZGxlQ3NvdW5kU3RhcnQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KGEsYixjLGQsZSk9PmY9Pntjb25zdCB7Y3NvdW5kOmd9PWYsaD0xPT09Yi5jc291bmRTaG91bGREYWVtb25pemUoZyk7aCYmKGIuY3NvdW5kU2V0T3B0aW9uKGcsIi0tZGFlbW9uIiksYi5jc291bmRTZXRPcHRpb24oZywiLW9kYWMiKSk7Y29uc3Qgaz1iLmNzb3VuZFN0YXJ0KGcpLGw9Yi5jc291bmRHZXRPdXRwdXROYW1lKGcpfHwidGVzdC53YXYiO2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcihgaGFuZGxlQ3NvdW5kU3RhcnQ6IGFjdHVhbCBjc291bmRTdGFydCByZXN1bHQgJHtrfSwgb3V0cHV0TmFtZTogJHtsfWApKCk7MCE9PWsmJmEucG9zdChgZXJyb3I6IGNzb3VuZFN0YXJ0IGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVuZGVyICR7bH0sYCsiIGxvb2sgb3V0IGZvciBlcnJvcnMgaW4gb3B0aW9ucyBhbmQgc3ludGF4Iik7c2V0VGltZW91dCgoKT0+e2NvbnN0IG09CmIuX2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0KGcpO2lmKGh8fG18fGwuaW5jbHVkZXMoImRhYyIpKWQoZik7ZWxzZSBpZihhLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLGUpZShmKTtlbHNlIGZvcig7MD09PWIuY3NvdW5kUGVyZm9ybUtzbXBzKGcpOyk7fSwwKTtyZXR1cm4ga30saW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiKT0+e2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhO2QrKyljLnB1c2gobmV3IEZsb2F0NjRBcnJheShiKSk7cmV0dXJuIGN9LHJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPSh7bGlicmFyeUNzb3VuZDphLHdvcmtlck1lc3NhZ2VQb3J0OmJ9KT0+YXN5bmMoe2Nzb3VuZDpjfSk9Pntjb25zdCBkPWEuY3NvdW5kR2V0S3IoYyk7bGV0IGU9MCxmPTA7Zm9yKDsoInJlbmRlclN0YXJ0ZWQiPT09Yi52YW5pbGxhV29ya2VyU3RhdGV8fCJyZW5kZXJTdGFydGVkIj09PQpiLndvcmtlclN0YXRlKSYmMD09PWU7KWU9YS5jc291bmRQZXJmb3JtS3NtcHMoYyksZis9MSwiZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQmJjA9PT1lJiYwPT09ZiUoMipkKSYmYXdhaXQgbmV3IFByb21pc2UoZz0+c2V0VGltZW91dChnLDApKTtiLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKX07dmFyIG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9e307bW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscy5oYW5kbGVDc291bmRTdGFydD1oYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmluc3RhbnRpYXRlQXVkaW9QYWNrZXQ9aW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLnJlbmRlckZ1bmN0aW9uPXJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO2xldCBsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLGNvbWJpbmVkJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyO2NvbnN0IHJ0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyPVtdLGNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1hc3luYyhhLGIpPT4oYT1jb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5nZXQoYSkpJiZhLmFwcGx5KHt9LGJ8fFtdKTsKY2xhc3MgV29ya2xldFNpbmdsZXRocmVhZFdvcmtlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvcntzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCl7cmV0dXJuW119Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5zYW1wbGVSYXRlPXNhbXBsZVJhdGU7dGhpcy5vcHRpb25zPWE7dGhpcy5pbml0aWFsaXplPXRoaXMuaW5pdGlhbGl6ZS5iaW5kKHRoaXMpO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucHJvY2Vzcz10aGlzLnByb2Nlc3MuYmluZCh0aGlzKTt0aGlzLnJlc3VtZT10aGlzLnJlc3VtZS5iaW5kKHRoaXMpO3RoaXMuc3RhcnQ9dGhpcy5zdGFydC5iaW5kKHRoaXMpO3RoaXMuaXNQYXVzZWQ9dGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPSExO3RoaXMuY2FsbFVuY2xvbmVkPSgpPT5jb25zb2xlLmVycm9yKCJDc291bmQgd29ya2xldCB0aHJlYWQgaXMgc3RpbGwgdW5pbml0aWFsaXplZCEiKTsKdGhpcy5wb3J0LnN0YXJ0KCk7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanModGhpcyx0aGlzLnBvcnQpO3RoaXMud29ya2VyTWVzc2FnZVBvcnQ9bmV3ICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTt0aGlzLmluaXRpYWxpemVNZXNzYWdlUG9ydD0oe21lc3NhZ2VQb3J0OmIscnRtaWRpUG9ydDpjfSk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LnBvc3Q9ZD0+Yi5wb3N0TWVzc2FnZSh7bG9nOmR9KTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZT1kPT57dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSE9PWQmJih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LndvcmtlclN0YXRlPWQpO2IucG9zdE1lc3NhZ2Uoe3BsYXlTdGF0ZUNoYW5nZTpkfSl9O3RoaXMud29ya2VyTWVzc2FnZVBvcnQucmVhZHk9ITA7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRSdE1pZGlFdmVudFBvcnQiKSgpOwp0aGlzLnJ0bWlkaVBvcnQ9Yzt0aGlzLnJ0bWlkaVBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtkYXRhOmR9KT0+e3J0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLnB1c2goZCl9KTt0aGlzLnJ0bWlkaVBvcnQuc3RhcnQoKX19YXN5bmMgaW5pdGlhbGl6ZShhLGIpe2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0aWFsaXppbmcgd29ya2xldC5zaW5nbGV0aHJlYWQud29ya2VyIikoKTtsZXQgYztjb25zdCBkPW5ldyBQcm9taXNlKGU9PntjPWV9KTskanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGUoe3dhc21EYXRhVVJJOmEsd2l0aFBsdWdpbnM6YixtZXNzYWdlUG9ydDp0aGlzLndvcmtlck1lc3NhZ2VQb3J0fSkudGhlbigoW2UsZl0pPT57dGhpcy53YXNtPWU7dGhpcy53YXNpPWY7ZS53YXNpPWY7bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj0KJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbGliY3NvdW5kKGUpO3RoaXMuY2FsbFVuY2xvbmVkPWNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcjt0aGlzLmNzb3VuZD1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZENyZWF0ZSgwKTt0aGlzLnJlc3VsdD0wO3RoaXMuc3RhcnRlZD10aGlzLmlzUmVuZGVyaW5nPXRoaXMucnVubmluZz0hMTt0aGlzLnJlc2V0Q3NvdW5kKCExKTtlPXBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRDcmVhdGUiLGFzeW5jIGc9PnRoaXMuY3NvdW5kKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRSZXNldCIsdGhpcy5yZXNldENzb3VuZC5iaW5kKHRoaXMpKSwKYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RhcnQiLHRoaXMuc3RhcnQuYmluZCh0aGlzKSksYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RvcCIsdGhpcy5zdG9wLmJpbmQodGhpcykpLGFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoIndhc20iLGUpKShsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTtjb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGUpKTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigid2FzbSBpbml0aWFsaXplZCBhbmQgYXBpIGdlbmVyYXRlZCIpKCk7YygpfSk7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoIndhaXRpbmcgb24gd2FzbSBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZSIpKCk7CmF3YWl0IGR9YXN5bmMgcmVzZXRDc291bmQoYSl7aWYoYSYmIXRoaXMud29ya2VyTWVzc2FnZVBvcnR8fGEmJiJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiIT09dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIiE9PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUpcmV0dXJuLTE7YSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIj09PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUmJnRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiKTt0aGlzLnN0YXJ0ZWQ9dGhpcy5ydW5uaW5nPSExO3RoaXMucmVzdWx0PTA7Y29uc3QgYj10aGlzLmNzb3VuZDthJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFJlc2V0KGIpO2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyhiKTsKdGhpcy5zYW1wbGVSYXRlJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFNldE9wdGlvbihiLCItLXNhbXBsZS1yYXRlPSIrdGhpcy5zYW1wbGVSYXRlKTt0aGlzLm5jaG5sc19pPXRoaXMubmNobmxzPS0xO2RlbGV0ZSB0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcn1zdG9wKCl7dGhpcy5jc291bmQmJmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU3RvcCh0aGlzLmNzb3VuZCk7dGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpfXBhdXNlKCl7dGhpcy5pc1BhdXNlZHx8KHRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIiksdGhpcy5pc1BhdXNlZD0hMCl9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZCYmCih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKSx0aGlzLmlzUGF1c2VkPSExKX1wcm9jZXNzKGEsYil7aWYoISh0aGlzLmlzUmVuZGVyaW5nfHwhdGhpcy5pc1BhdXNlZCYmdGhpcy5jc291bmRPdXRwdXRCdWZmZXImJnRoaXMucnVubmluZykpe2E9YlswXTtiPWFbMF0ubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YjtjKyspZm9yKHZhciBkPTA7ZDxhLm51bWJlck9mQ2hhbm5lbHM7ZCsrKWFbZF1bY109MDtyZXR1cm4hMH10aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb24mJih0aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb249ITEsdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIikpOzA8cnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIubGVuZ3RoJiYocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuZm9yRWFjaChxPT4Ke2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kUHVzaE1pZGlNZXNzYWdlKHRoaXMuY3NvdW5kLHFbMF0scVsxXSxxWzJdKX0pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIpKTthPWFbMF07Yj1iWzBdO2M9YlswXS5sZW5ndGg7ZD10aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcjtsZXQgZT10aGlzLmNzb3VuZElucHV0QnVmZmVyO2NvbnN0IGY9dGhpcy5rc21wcyxnPXRoaXMuemVyb2RCRlM7bGV0IGg9dGhpcy5jbnQ7Y29uc3Qgaz10aGlzLm5jaG5scyxsPXRoaXMubmNobmxzX2k7bGV0IG09dGhpcy5yZXN1bHQ7Zm9yKGxldCBxPTA7cTxjO3ErKyxoKyspe2g+PWYmJjA9PT1tJiYobT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFBlcmZvcm1Lc21wcyh0aGlzLmNzb3VuZCksCmg9MCwwIT09bSYmKHRoaXMuc3RhcnRlZD10aGlzLnJ1bm5pbmc9ITEsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRDbGVhbnVwKHRoaXMuY3NvdW5kKSx0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIikpKTtkJiYwIT09ZC5sZW5ndGh8fChkPXRoaXMuY3NvdW5kT3V0cHV0QnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtLndhc2kubWVtb3J5LmJ1ZmZlcixsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldFNwb3V0KHRoaXMuY3NvdW5kKSxmKmspKTtlJiYwIT09ZS5sZW5ndGh8fChlPXRoaXMuY3NvdW5kSW5wdXRCdWZmZXI9bmV3IEZsb2F0NjRBcnJheSh0aGlzLndhc20ud2FzaS5tZW1vcnkuYnVmZmVyLGxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3Bpbih0aGlzLmNzb3VuZCksCmYqbCkpO3ZhciBuPU1hdGgubWluKHRoaXMubmNobmxzX2ksYS5sZW5ndGgpO2Zvcih2YXIgcD0wO3A8bjtwKyspZVtoKmwrcF09YVtwXVtxXSpnO2lmKHRoaXMubmNobmxzPT09Yi5sZW5ndGgpZm9yKGNvbnN0IFt1LHRdb2YgYi5lbnRyaWVzKCkpdFtxXT0wPT09bT9kW2gqayt1XS9nOjA7ZWxzZSBpZigyPT09dGhpcy5uY2hubHMmJjE9PT1iLmxlbmd0aCliWzBdW3FdPTA9PT1tPy41KihkW2gqa10vZytkW2gqaysxXS9nKTowO2Vsc2UgaWYoMT09PXRoaXMubmNobmxzJiYyPT09Yi5sZW5ndGgpaWYobj1iWzBdLHA9YlsxXSwwPT09bSl7Y29uc3QgdT1kW2gqa10vZztuW3FdPXU7cFtxXT11fWVsc2UgbltxXT0wLHBbcV09MH10aGlzLmNudD1oO3RoaXMucmVzdWx0PW07cmV0dXJuITB9YXN5bmMgaXNSZXF1ZXN0aW5nSW5wdXQoKXtyZXR1cm4obGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRJbnB1dE5hbWUodGhpcy5jc291bmQpfHwKIiIpLmluY2x1ZGVzKCJhZGMiKX1hc3luYyBpc1JlcXVlc3RpbmdSZWFsdGltZU91dHB1dCgpe3JldHVybihsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldE91dHB1dE5hbWUodGhpcy5jc291bmQpfHwiIikuaW5jbHVkZXMoImRhYyIpfWFzeW5jIHN0YXJ0KCl7bGV0IGE9LTE7aWYodGhpcy5zdGFydGVkKWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHdhcyBhc2tlZCB0byBzdGFydCBidXQgaXQgYWxyZWFkeSBoYXMhIikoKTtlbHNle2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHRocmVhZCBpcyBzdGFydGluZy4uIikoKTtjb25zdCBiPXRoaXMuY3NvdW5kLGM9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRLc21wcyhiKTsKdGhpcy5jbnQ9dGhpcy5rc21wcz1jO3RoaXMubmNobmxzPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0TmNobmxzKGIpO3RoaXMubmNobmxzX2k9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXROY2hubHNJbnB1dChiKTt0aGlzLnplcm9kQkZTPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0MGRCRlMoYik7YT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFN0YXJ0KGIpO2lmKDAhPT1hKXJldHVybiBhO2lmKGF3YWl0IHRoaXMuaXNSZXF1ZXN0aW5nUmVhbHRpbWVPdXRwdXQoKSl0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsCmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3BvdXQoYiksYyp0aGlzLm5jaG5scyksdGhpcy5jc291bmRJbnB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRTcGluKGIpLGMqdGhpcy5uY2hubHNfaSksbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImNzb3VuZFN0YXJ0IGNhbGxlZCB3aXRoIHt9IHJldHVybiB2YWwiLGEpKCksdGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPXRoaXMuc3RhcnRlZD0hMDtlbHNlIHJldHVybiB0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLHRoaXMuaXNSZW5kZXJpbmc9ITAscmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoe2xpYnJhcnlDc291bmQ6bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciwKd29ya2VyTWVzc2FnZVBvcnQ6dGhpcy53b3JrZXJNZXNzYWdlUG9ydCx3YXNpOnRoaXMud2FzaX0pKHtjc291bmQ6Yn0pLnRoZW4oKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSkuY2F0Y2goKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSksMH10aGlzLnJ1bm5pbmc9ITA7cmV0dXJuIGF9fXJlZ2lzdGVyUHJvY2Vzc29yKCJjc291bmQtc2luZ2xldGhyZWFkLXdvcmtsZXQtcHJvY2Vzc29yIixXb3JrbGV0U2luZ2xldGhyZWFkV29ya2VyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj17fTsKLy8jIHNvdXJjZVVSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcwovLyMgc291cmNlTWFwcGluZ1VSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcy5tYXAK", +module$dist$__compiled_worklet_singlethread_worker_inline={};module$dist$__compiled_worklet_singlethread_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline;const initializeModule$$module$src$mains$worklet_singlethread_main=async a=>{logSinglethreadWorkletMain$$module$src$logger("Initialize Module")();try{await a.audioWorklet.addModule($jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline())}catch(b){return console.error("Error calling audioWorklet.addModule",b),!1}return!0}; +class SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.exportApi={};this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.inputChannelCount=b;this.outputChannelCount=c;this.messageCallbacks=[];this.onPlayStateChange= +this.onPlayStateChange.bind(this);this.currentPlayState=void 0}async terminateInstance(){this.node&&(this.node.disconnect(),delete this.node);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.workletProxy);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=> +delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.currentPlayState!==a&&this.publicEvents)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.eventPromises.isWaitingToStart()&&(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.eventPromises.releaseStartPromise());this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.midiPortStarted=!1;this.currentPlayState= +void 0;this.publicEvents&&this.publicEvents.triggerRealtimePerformanceEnded(this);this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise();this.eventPromises&&this.eventPromises.releaseStartPromise();break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.eventPromises.isWaitingToStart()&& +(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.publicEvents.triggerRenderStarted(this),this.eventPromises.releaseStartPromise());break;case "renderEnded":this.publicEvents.triggerRenderEnded(this),this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise(),this.eventPromises&&this.eventPromises.releaseStartPromise()}}async csoundPause(){void 0!==this.workletProxy&&await this.workletProxy.pause()}async csoundResume(){void 0!==this.workletProxy&& +await this.workletProxy.resume()}handleMidiInput({data:a}){this.ipcMessagePorts.csoundMainRtMidiPort.postMessage&&this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(a)}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){b&&0this.audioContext;this.exportApi.getNode=async()=>this.node;this.exportApi.enableAudioInput=enableAudioInput$$module$src$mains$io_utils.bind(this.exportApi);this.exportApi.name="Csound: Audio Worklet, Single-threaded";this.exportApi=this.publicEvents.decorateAPI(this.exportApi); +this.exportApi.addListener("message",console.log);for(const e of Object.keys(api$$module$src$libcsound)){const f=api$$module$src$libcsound[e],g=makeProxyCallback$$module$src$utils(this.workletProxy,d,e,this.currentPlayState);switch(e){case "csoundCreate":break;case "csoundStart":a=async function(){this.eventPromises.createStartPromise();var h=await this.workletProxy.isRequestingInput();if(await this.workletProxy.isRequestingRealtimeOutput())return h&&this.exportApi.enableAudioInput(),await this.exportApi._isRequestingRtMidiInput(d)&& +requestMidi$$module$src$utils$request_midi({onMidiMessage:this.handleMidiInput.bind(this)}),h=await g({csound:d}),this.publicEvents.triggerOnAudioNodeCreated(this.node),await this.eventPromises.waitForStart(),h;g({csound:d});this.publicEvents.triggerOnAudioNodeCreated(this.node);await this.eventPromises.waitForStart();return 0};a.toString=()=>f.toString();this.exportApi.start=a.bind(this);break;case "csoundStop":a=async()=>{if(this.eventPromises.isWaitingToStop())return logSinglethreadWorkletMain$$module$src$logger("already waiting to stop, doing nothing")(), +-1;this.eventPromises.createStopPromise();const h=await g();await this.eventPromises.waitForStop();return h};a.toString=()=>f.toString();this.exportApi.stop=a.bind(this);break;case "fs":this.exportApi.fs={};Object.keys(f).forEach(h=>{const k=makeProxyCallback$$module$src$utils(this.workletProxy,d,h,this.currentPlayState);k.toString=()=>f[h].toString();this.exportApi.fs[h]=k});break;default:g.toString=()=>f.toString(),this.exportApi[csoundApiRename$$module$src$utils(e)]=g}}return this.exportApi}} +var $jscompDefaultExport$$module$src$mains$worklet_singlethread_main=SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main,module$src$mains$worklet_singlethread_main={};module$src$mains$worklet_singlethread_main.default=$jscompDefaultExport$$module$src$mains$worklet_singlethread_main;(0,module$node_modules$unmute_ios_audio$index.default)(); +const Csound$$module$src$index=async function({audioContext:a,inputChannelCount:b,outputChannelCount:c,autoConnect:d=!0,withPlugins:e=[],useWorker:f=!1,useSAB:g=!0,useSPN:h=!1}={}){const k=a&&WebkitAudioContext$$module$src$utils()&&a instanceof WebkitAudioContext$$module$src$utils();k||(a=a||new (WebkitAudioContext$$module$src$utils())({latencyHint:"interactive"}));isSafari$$module$src$utils()&&a.resume();const n=areWorkletsSupported$$module$src$utils(),m=isScriptProcessorNodeSupported$$module$src$utils(); +if(f){n?logIndex$$module$src$logger("worklet support detected")():m?logIndex$$module$src$logger("scriptProcessorNode support detected")():console.error("No WebAudio Support detected");var l;!h&&n?l=new $jscompDefaultExport$$module$src$mains$worklet_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}):m&&(l=new $jscompDefaultExport$$module$src$mains$old_spn_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}));if(l)return(d=isSabSupported$$module$src$utils())?g&&logIndex$$module$src$logger("using SharedArrayBuffers")(): +logIndex$$module$src$logger("SharedArrayBuffers not found, falling back to Vanilla concurrency")(),a=d&&n&&g?new $jscompDefaultExport$$module$src$mains$sab_main({audioWorker:l,audioContext:a,audioContextIsProvided:k,inputChannelCount:b,outputChannelCount:c}):new $jscompDefaultExport$$module$src$mains$vanilla_main({audioWorker:l,audioContextIsProvided:k}),logIndex$$module$src$logger("starting Csound thread initialization via WebWorker")(),await a.initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline, +withPlugins:e}),e=a.api}else{if(n&&!h)return logIndex$$module$src$logger("Single Thread AudioWorklet")(),(new $jscompDefaultExport$$module$src$mains$worklet_singlethread_main({audioContext:a,inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d});if(m)return logIndex$$module$src$logger("Single Thread ScriptProcessorNode")(),await (new $jscompDefaultExport$$module$src$mains$spn_main({audioContext:a, +inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d})}console.error("No detectable WebAudioAPI in current environment")};goog.exportSymbol("Csound$$module$src$index",Csound$$module$src$index);var module$src$index={};module$src$index.Csound=Csound$$module$src$index; +const Csound = Csound$$module$src$index; +Csound.toString = () => 'async (options) => CsoundObj;'; +export { Csound } +export default Csound +//# sourceMappingURL=csound.js.map diff --git a/site/code/csound.js.map b/site/code/csound.js.map new file mode 100644 index 0000000..e123831 --- /dev/null +++ b/site/code/csound.js.map @@ -0,0 +1,9 @@ +{ +"version":3, +"file":"/Users/hlolli/csound/csound/wasm/browser/dist/csound.js", +"lineCount":898, +"mappings":"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", +"sources":["src/com/google/javascript/jscomp/js/base.js","./node_modules/google-closure-library/closure/goog/base.js","./dist/__csound_wasm.inline.js","node_modules/comlink/src/comlink.ts","./node_modules/lines-logger/lib/index.js","./src/logger.js","./src/modules/instantiation.js","./src/utils/text-encoders.js","./src/utils/trim-null.js","./src/utils/string-pointers.js","./src/modules/performance.js","./src/utils/native-sizes.js","./src/utils/structure-buffer-to-object.js","./src/structures.js","./src/modules/attributes.js","./src/modules/rtaudio.js","./node_modules/rambda/dist/rambda.mjs","./src/modules/rtmidi.js","./src/modules/control-events.js","./src/modules/general-io.js","./src/modules/extra.js","./src/modules/score-handling.js","./src/modules/table.js","./src/filesystem/worker-fs.js","./src/libcsound.js","./src/utils.js","./src/mains/messages.main.js","./src/utils/clear-array.js","./src/utils/event-promises.js","./node_modules/eventemitter3/umd/eventemitter3.min.js","./src/events.js","./dist/__compiled.vanilla.worker.inline.js","./src/mains/vanilla.main.js","./node_modules/unmute-ios-audio/index.js","./src/constants.js","./dist/__compiled.sab.worker.inline.js","./src/mains/sab.main.js","./src/utils/request-midi.js","./dist/__compiled.worklet.worker.inline.js","./src/mains/worklet.main.js","./src/mains/io.utils.js","./dist/__compiled.old-spn.worker.inline.js","./src/mains/old-spn.main.js","./src/dlinit.js","./src/filesystem/constants.js","./node_modules/google-closure-library/closure/goog/debug/error.js","./node_modules/google-closure-library/closure/goog/dom/nodetype.js","./node_modules/google-closure-library/closure/goog/asserts/asserts.js","./node_modules/google-closure-library/closure/goog/array/array.js","./node_modules/google-closure-library/closure/goog/dom/asserts.js","./node_modules/google-closure-library/closure/goog/functions/functions.js","./node_modules/google-closure-library/closure/goog/string/typedstring.js","./node_modules/google-closure-library/closure/goog/string/const.js","./node_modules/google-closure-library/closure/goog/html/trustedtypes.js","./node_modules/google-closure-library/closure/goog/html/safescript.js","./node_modules/google-closure-library/closure/goog/fs/url.js","./node_modules/google-closure-library/closure/goog/fs/blob.js","./node_modules/google-closure-library/closure/goog/html/trustedresourceurl.js","./node_modules/google-closure-library/closure/goog/string/internal.js","./node_modules/google-closure-library/closure/goog/html/safeurl.js","./node_modules/google-closure-library/closure/goog/html/safestyle.js","./node_modules/google-closure-library/closure/goog/object/object.js","./node_modules/google-closure-library/closure/goog/html/safestylesheet.js","./node_modules/google-closure-library/closure/goog/dom/htmlelement.js","./node_modules/google-closure-library/closure/goog/dom/tagname.js","./node_modules/google-closure-library/closure/goog/labs/useragent/useragent.js","./node_modules/google-closure-library/closure/goog/labs/useragent/util.js","./node_modules/google-closure-library/closure/goog/labs/useragent/highentropy/highentropyvalue.js","./node_modules/google-closure-library/closure/goog/labs/useragent/highentropy/highentropydata.js","./node_modules/google-closure-library/closure/goog/labs/useragent/browser.js","./node_modules/google-closure-library/closure/goog/dom/tags.js","./node_modules/google-closure-library/closure/goog/html/safehtml.js","./node_modules/google-closure-library/closure/goog/html/uncheckedconversions.js","./node_modules/google-closure-library/closure/goog/dom/safe.js","./node_modules/google-closure-library/closure/goog/string/string.js","./node_modules/google-closure-library/closure/goog/string/path.js","./src/filesystem/wasi.js","./src/zlib/zlib.js","./src/zlib/huffman.js","./src/zlib/rawinflate.js","./src/zlib/util.js","./src/zlib/adler32.js","./src/zlib/inflate.js","./src/module.js","./src/utils/message-port-state.js","./src/mains/spn.main.js","./dist/__compiled.worklet.singlethread.worker.inline.js","./src/mains/worklet.singlethread.main.js","./src/index.js"], +"sourcesContent":["","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Bootstrap for the Google JS Library (Closure).\n *\n * In uncompiled mode base.js will attempt to load Closure's deps file, unless\n * the global CLOSURE_NO_DEPS is set to true. This allows projects\n * to include their own deps file(s) from different locations.\n *\n * Avoid including base.js more than once. This is strictly discouraged and not\n * supported. goog.require(...) won't work properly in that case.\n *\n * @provideGoog\n */\n\n\n/**\n * @define {boolean} Overridden to true by the compiler.\n */\nvar COMPILED = false;\n\n\n/**\n * Base namespace for the Closure library. Checks to see goog is already\n * defined in the current scope before assigning to prevent clobbering if\n * base.js is loaded more than once.\n *\n * @const\n */\nvar goog = goog || {};\n\n/**\n * Reference to the global object.\n * https://www.ecma-international.org/ecma-262/9.0/index.html#sec-global-object\n *\n * More info on this implementation here:\n * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI/edit\n *\n * @const\n * @suppress {undefinedVars} self won't be referenced unless `this` is falsy.\n * @type {!Global}\n */\ngoog.global =\n // Check `this` first for backwards compatibility.\n // Valid unless running as an ES module or in a function wrapper called\n // without setting `this` properly.\n // Note that base.js can't usefully be imported as an ES module, but it may\n // be compiled into bundles that are loadable as ES modules.\n this ||\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/self\n // For in-page browser environments and workers.\n self;\n\n\n/**\n * A hook for overriding the define values in uncompiled mode.\n *\n * In uncompiled mode, `CLOSURE_UNCOMPILED_DEFINES` may be defined before\n * loading base.js. If a key is defined in `CLOSURE_UNCOMPILED_DEFINES`,\n * `goog.define` will use the value instead of the default value. This\n * allows flags to be overwritten without compilation (this is normally\n * accomplished with the compiler's \"define\" flag).\n *\n * Example:\n *
\n *   var CLOSURE_UNCOMPILED_DEFINES = {'goog.DEBUG': false};\n * 
\n *\n * @type {Object|undefined}\n */\ngoog.global.CLOSURE_UNCOMPILED_DEFINES;\n\n\n/**\n * A hook for overriding the define values in uncompiled or compiled mode,\n * like CLOSURE_UNCOMPILED_DEFINES but effective in compiled code. In\n * uncompiled code CLOSURE_UNCOMPILED_DEFINES takes precedence.\n *\n * Also unlike CLOSURE_UNCOMPILED_DEFINES the values must be number, boolean or\n * string literals or the compiler will emit an error.\n *\n * While any @define value may be set, only those set with goog.define will be\n * effective for uncompiled code.\n *\n * Example:\n *
\n *   var CLOSURE_DEFINES = {'goog.DEBUG': false} ;\n * 
\n *\n * Currently the Closure Compiler will only recognize very simple definitions of\n * this value when looking for values to apply to compiled code and ignore all\n * other references. Specifically, it looks the value defined at the variable\n * declaration, as with the example above.\n *\n * TODO(user): Improve the recognized definitions.\n *\n * @type {!Object|null|undefined}\n */\ngoog.global.CLOSURE_DEFINES;\n\n\n/**\n * Builds an object structure for the provided namespace path, ensuring that\n * names that already exist are not overwritten. For example:\n * \"a.b.c\" -> a = {};a.b={};a.b.c={};\n * Used by goog.provide and goog.exportSymbol.\n * @param {string} name The name of the object that this file defines.\n * @param {*=} object The object to expose at the end of the path.\n * @param {boolean=} overwriteImplicit If object is set and a previous call\n * implicitly constructed the namespace given by name, this parameter\n * controls whether object should overwrite the implicitly constructed\n * namespace or be merged into it. Defaults to false.\n * @param {?Object=} objectToExportTo The object to add the path to; if this\n * field is not specified, its value defaults to `goog.global`.\n * @private\n */\ngoog.exportPath_ = function(name, object, overwriteImplicit, objectToExportTo) {\n var parts = name.split('.');\n var cur = objectToExportTo || goog.global;\n\n // Internet Explorer exhibits strange behavior when throwing errors from\n // methods externed in this manner. See the testExportSymbolExceptions in\n // base_test.html for an example.\n if (!(parts[0] in cur) && typeof cur.execScript != 'undefined') {\n cur.execScript('var ' + parts[0]);\n }\n\n for (var part; parts.length && (part = parts.shift());) {\n if (!parts.length && object !== undefined) {\n if (!overwriteImplicit && goog.isObject(object) &&\n goog.isObject(cur[part])) {\n // Merge properties on object (the input parameter) with the existing\n // implicitly defined namespace, so as to not clobber previously\n // defined child namespaces.\n for (var prop in object) {\n if (object.hasOwnProperty(prop)) {\n cur[part][prop] = object[prop];\n }\n }\n } else {\n // Either there is no existing implicit namespace, or overwriteImplicit\n // is set to true, so directly assign object (the input parameter) to\n // the namespace.\n cur[part] = object;\n }\n } else if (cur[part] && cur[part] !== Object.prototype[part]) {\n cur = cur[part];\n } else {\n cur = cur[part] = {};\n }\n }\n};\n\n\n/**\n * Defines a named value. In uncompiled mode, the value is retrieved from\n * CLOSURE_DEFINES or CLOSURE_UNCOMPILED_DEFINES if the object is defined and\n * has the property specified, and otherwise used the defined defaultValue.\n * When compiled the default can be overridden using the compiler options or the\n * value set in the CLOSURE_DEFINES object. Returns the defined value so that it\n * can be used safely in modules. Note that the value type MUST be either\n * boolean, number, or string.\n *\n * @param {string} name The distinguished name to provide.\n * @param {T} defaultValue\n * @return {T} The defined value.\n * @template T\n */\ngoog.define = function(name, defaultValue) {\n var value = defaultValue;\n if (!COMPILED) {\n var uncompiledDefines = goog.global.CLOSURE_UNCOMPILED_DEFINES;\n var defines = goog.global.CLOSURE_DEFINES;\n if (uncompiledDefines &&\n // Anti DOM-clobbering runtime check (b/37736576).\n /** @type {?} */ (uncompiledDefines).nodeType === undefined &&\n Object.prototype.hasOwnProperty.call(uncompiledDefines, name)) {\n value = uncompiledDefines[name];\n } else if (\n defines &&\n // Anti DOM-clobbering runtime check (b/37736576).\n /** @type {?} */ (defines).nodeType === undefined &&\n Object.prototype.hasOwnProperty.call(defines, name)) {\n value = defines[name];\n }\n }\n return value;\n};\n\n\n/**\n * @define {number} Integer year indicating the set of browser features that are\n * guaranteed to be present. This is defined to include exactly features that\n * work correctly on all \"modern\" browsers that are stable on January 1 of the\n * specified year. For example,\n * ```js\n * if (goog.FEATURESET_YEAR >= 2019) {\n * // use APIs known to be available on all major stable browsers Jan 1, 2019\n * } else {\n * // polyfill for older browsers\n * }\n * ```\n * This is intended to be the primary define for removing\n * unnecessary browser compatibility code (such as ponyfills and workarounds),\n * and should inform the default value for most other defines:\n * ```js\n * const ASSUME_NATIVE_PROMISE =\n * goog.define('ASSUME_NATIVE_PROMISE', goog.FEATURESET_YEAR >= 2016);\n * ```\n *\n * The default assumption is that IE9 is the lowest supported browser, which was\n * first available Jan 1, 2012.\n *\n * TODO(user): Reference more thorough documentation when it's available.\n */\ngoog.FEATURESET_YEAR = goog.define('goog.FEATURESET_YEAR', 2012);\n\n\n/**\n * @define {boolean} DEBUG is provided as a convenience so that debugging code\n * that should not be included in a production. It can be easily stripped\n * by specifying --define goog.DEBUG=false to the Closure Compiler aka\n * JSCompiler. For example, most toString() methods should be declared inside an\n * \"if (goog.DEBUG)\" conditional because they are generally used for debugging\n * purposes and it is difficult for the JSCompiler to statically determine\n * whether they are used.\n */\ngoog.DEBUG = goog.define('goog.DEBUG', true);\n\n\n/**\n * @define {string} LOCALE defines the locale being used for compilation. It is\n * used to select locale specific data to be compiled in js binary. BUILD rule\n * can specify this value by \"--define goog.LOCALE=\" as a compiler\n * option.\n *\n * Take into account that the locale code format is important. You should use\n * the canonical Unicode format with hyphen as a delimiter. Language must be\n * lowercase, Language Script - Capitalized, Region - UPPERCASE.\n * There are few examples: pt-BR, en, en-US, sr-Latin-BO, zh-Hans-CN.\n *\n * See more info about locale codes here:\n * http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers\n *\n * For language codes you should use values defined by ISO 693-1. See it here\n * http://www.w3.org/WAI/ER/IG/ert/iso639.htm. There is only one exception from\n * this rule: the Hebrew language. For legacy reasons the old code (iw) should\n * be used instead of the new code (he).\n *\n */\ngoog.LOCALE = goog.define('goog.LOCALE', 'en'); // default to en\n\n\n/**\n * Same as `goog.LOCALE`, which should be used instead.\n *\n * Using this method just makes it harder for closure-compiler to optimize\n * your locale-specific code, since it has to take the extra step of inlining\n * this function to discover and remove code that is not used for the target\n * locale.\n *\n * @return {string}\n * @deprecated use `goog.LOCALE`\n */\ngoog.getLocale = function() {\n return goog.LOCALE;\n};\n\n\n/**\n * @define {boolean} Whether this code is running on trusted sites.\n *\n * On untrusted sites, several native functions can be defined or overridden by\n * external libraries like Prototype, Datejs, and JQuery and setting this flag\n * to false forces closure to use its own implementations when possible.\n *\n * If your JavaScript can be loaded by a third party site and you are wary about\n * relying on non-standard implementations, specify\n * \"--define goog.TRUSTED_SITE=false\" to the compiler.\n */\ngoog.TRUSTED_SITE = goog.define('goog.TRUSTED_SITE', true);\n\n\n/**\n * @define {boolean} Whether code that calls {@link goog.setTestOnly} should\n * be disallowed in the compilation unit.\n */\ngoog.DISALLOW_TEST_ONLY_CODE =\n goog.define('goog.DISALLOW_TEST_ONLY_CODE', COMPILED && !goog.DEBUG);\n\n\n/**\n * @define {boolean} Whether to use a Chrome app CSP-compliant method for\n * loading scripts via goog.require. @see appendScriptSrcNode_.\n */\ngoog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING =\n goog.define('goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING', false);\n\n\n/**\n * Defines a namespace in Closure.\n *\n * A namespace may only be defined once in a codebase. It may be defined using\n * goog.provide() or goog.module().\n *\n * The presence of one or more goog.provide() calls in a file indicates\n * that the file defines the given objects/namespaces.\n * Provided symbols must not be null or undefined.\n *\n * In addition, goog.provide() creates the object stubs for a namespace\n * (for example, goog.provide(\"goog.foo.bar\") will create the object\n * goog.foo.bar if it does not already exist).\n *\n * Build tools also scan for provide/require/module statements\n * to discern dependencies, build dependency files (see deps.js), etc.\n *\n * @see goog.require\n * @see goog.module\n * @param {string} name Namespace provided by this file in the form\n * \"goog.package.part\".\n * deprecated Use goog.module (see b/159289405)\n */\ngoog.provide = function(name) {\n if (goog.isInModuleLoader_()) {\n throw new Error('goog.provide cannot be used within a module.');\n }\n if (!COMPILED) {\n // Ensure that the same namespace isn't provided twice.\n // A goog.module/goog.provide maps a goog.require to a specific file\n if (goog.isProvided_(name)) {\n throw new Error('Namespace \"' + name + '\" already declared.');\n }\n }\n\n goog.constructNamespace_(name);\n};\n\n\n/**\n * @param {string} name Namespace provided by this file in the form\n * \"goog.package.part\".\n * @param {?Object=} object The object to embed in the namespace.\n * @param {boolean=} overwriteImplicit If object is set and a previous call\n * implicitly constructed the namespace given by name, this parameter\n * controls whether opt_obj should overwrite the implicitly constructed\n * namespace or be merged into it. Defaults to false.\n * @private\n */\ngoog.constructNamespace_ = function(name, object, overwriteImplicit) {\n if (!COMPILED) {\n delete goog.implicitNamespaces_[name];\n\n var namespace = name;\n while ((namespace = namespace.substring(0, namespace.lastIndexOf('.')))) {\n if (goog.getObjectByName(namespace)) {\n break;\n }\n goog.implicitNamespaces_[namespace] = true;\n }\n }\n\n goog.exportPath_(name, object, overwriteImplicit);\n};\n\n\n/**\n * According to the CSP3 spec a nonce must be a valid base64 string.\n * @see https://www.w3.org/TR/CSP3/#grammardef-base64-value\n * @private @const\n */\ngoog.NONCE_PATTERN_ = /^[\\w+/_-]+[=]{0,2}$/;\n\n\n/**\n * Returns CSP nonce, if set for any script tag.\n * @param {?Window=} opt_window The window context used to retrieve the nonce.\n * Defaults to global context.\n * @return {string} CSP nonce or empty string if no nonce is present.\n * @private\n */\ngoog.getScriptNonce_ = function(opt_window) {\n var doc = (opt_window || goog.global).document;\n var script = doc.querySelector && doc.querySelector('script[nonce]');\n if (script) {\n // Try to get the nonce from the IDL property first, because browsers that\n // implement additional nonce protection features (currently only Chrome) to\n // prevent nonce stealing via CSS do not expose the nonce via attributes.\n // See https://github.com/whatwg/html/issues/2369\n var nonce = script['nonce'] || script.getAttribute('nonce');\n if (nonce && goog.NONCE_PATTERN_.test(nonce)) {\n return nonce;\n }\n }\n return '';\n};\n\n\n/**\n * Module identifier validation regexp.\n * Note: This is a conservative check, it is very possible to be more lenient,\n * the primary exclusion here is \"/\" and \"\\\" and a leading \".\", these\n * restrictions are intended to leave the door open for using goog.require\n * with relative file paths rather than module identifiers.\n * @private\n */\ngoog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\n\n\n/**\n * Defines a module in Closure.\n *\n * Marks that this file must be loaded as a module and claims the namespace.\n *\n * A namespace may only be defined once in a codebase. It may be defined using\n * goog.provide() or goog.module().\n *\n * goog.module() has three requirements:\n * - goog.module may not be used in the same file as goog.provide.\n * - goog.module must be the first statement in the file.\n * - only one goog.module is allowed per file.\n *\n * When a goog.module annotated file is loaded, it is enclosed in\n * a strict function closure. This means that:\n * - any variables declared in a goog.module file are private to the file\n * (not global), though the compiler is expected to inline the module.\n * - The code must obey all the rules of \"strict\" JavaScript.\n * - the file will be marked as \"use strict\"\n *\n * NOTE: unlike goog.provide, goog.module does not declare any symbols by\n * itself. If declared symbols are desired, use\n * goog.module.declareLegacyNamespace().\n *\n *\n * See the public goog.module proposal: http://goo.gl/Va1hin\n *\n * @param {string} name Namespace provided by this file in the form\n * \"goog.package.part\", is expected but not required.\n * @return {void}\n */\ngoog.module = function(name) {\n if (typeof name !== 'string' || !name ||\n name.search(goog.VALID_MODULE_RE_) == -1) {\n throw new Error('Invalid module identifier');\n }\n if (!goog.isInGoogModuleLoader_()) {\n throw new Error(\n 'Module ' + name + ' has been loaded incorrectly. Note, ' +\n 'modules cannot be loaded as normal scripts. They require some kind of ' +\n 'pre-processing step. You\\'re likely trying to load a module via a ' +\n 'script tag or as a part of a concatenated bundle without rewriting the ' +\n 'module. For more info see: ' +\n 'https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.');\n }\n if (goog.moduleLoaderState_.moduleName) {\n throw new Error('goog.module may only be called once per module.');\n }\n\n // Store the module name for the loader.\n goog.moduleLoaderState_.moduleName = name;\n if (!COMPILED) {\n // Ensure that the same namespace isn't provided twice.\n // A goog.module/goog.provide maps a goog.require to a specific file\n if (goog.isProvided_(name)) {\n throw new Error('Namespace \"' + name + '\" already declared.');\n }\n delete goog.implicitNamespaces_[name];\n }\n};\n\n\n/**\n * @param {string} name The module identifier.\n * @return {?} The module exports for an already loaded module or null.\n *\n * Note: This is not an alternative to goog.require, it does not\n * indicate a hard dependency, instead it is used to indicate\n * an optional dependency or to access the exports of a module\n * that has already been loaded.\n * @suppress {missingProvide}\n */\ngoog.module.get = function(name) {\n return goog.module.getInternal_(name);\n};\n\n\n/**\n * @param {string} name The module identifier.\n * @return {?} The module exports for an already loaded module or null.\n * @private\n */\ngoog.module.getInternal_ = function(name) {\n if (!COMPILED) {\n if (name in goog.loadedModules_) {\n return goog.loadedModules_[name].exports;\n } else if (!goog.implicitNamespaces_[name]) {\n var ns = goog.getObjectByName(name);\n return ns != null ? ns : null;\n }\n }\n return null;\n};\n\n/**\n * Types of modules the debug loader can load.\n * @enum {string}\n */\ngoog.ModuleType = {\n ES6: 'es6',\n GOOG: 'goog'\n};\n\n\n/**\n * @private {?{\n * moduleName: (string|undefined),\n * declareLegacyNamespace:boolean,\n * type: ?goog.ModuleType\n * }}\n */\ngoog.moduleLoaderState_ = null;\n\n\n/**\n * @private\n * @return {boolean} Whether a goog.module or an es6 module is currently being\n * initialized.\n */\ngoog.isInModuleLoader_ = function() {\n return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_();\n};\n\n\n/**\n * @private\n * @return {boolean} Whether a goog.module is currently being initialized.\n */\ngoog.isInGoogModuleLoader_ = function() {\n return !!goog.moduleLoaderState_ &&\n goog.moduleLoaderState_.type == goog.ModuleType.GOOG;\n};\n\n\n/**\n * @private\n * @return {boolean} Whether an es6 module is currently being initialized.\n */\ngoog.isInEs6ModuleLoader_ = function() {\n var inLoader = !!goog.moduleLoaderState_ &&\n goog.moduleLoaderState_.type == goog.ModuleType.ES6;\n\n if (inLoader) {\n return true;\n }\n\n var jscomp = goog.global['$jscomp'];\n\n if (jscomp) {\n // jscomp may not have getCurrentModulePath if this is a compiled bundle\n // that has some of the runtime, but not all of it. This can happen if\n // optimizations are turned on so the unused runtime is removed but renaming\n // and Closure pass are off (so $jscomp is still named $jscomp and the\n // goog.provide/require calls still exist).\n if (typeof jscomp.getCurrentModulePath != 'function') {\n return false;\n }\n\n // Bundled ES6 module.\n return !!jscomp.getCurrentModulePath();\n }\n\n return false;\n};\n\n\n/**\n * Provide the module's exports as a globally accessible object under the\n * module's declared name. This is intended to ease migration to goog.module\n * for files that have existing usages.\n * @suppress {missingProvide}\n */\ngoog.module.declareLegacyNamespace = function() {\n if (!COMPILED && !goog.isInGoogModuleLoader_()) {\n throw new Error(\n 'goog.module.declareLegacyNamespace must be called from ' +\n 'within a goog.module');\n }\n if (!COMPILED && !goog.moduleLoaderState_.moduleName) {\n throw new Error(\n 'goog.module must be called prior to ' +\n 'goog.module.declareLegacyNamespace.');\n }\n goog.moduleLoaderState_.declareLegacyNamespace = true;\n};\n\n\n/**\n * Associates an ES6 module with a Closure module ID so that is available via\n * goog.require. The associated ID acts like a goog.module ID - it does not\n * create any global names, it is merely available via goog.require /\n * goog.module.get / goog.forwardDeclare / goog.requireType. goog.require and\n * goog.module.get will return the entire module as if it was import *'d. This\n * allows Closure files to reference ES6 modules for the sake of migration.\n *\n * @param {string} namespace\n * @suppress {missingProvide}\n */\ngoog.declareModuleId = function(namespace) {\n if (!COMPILED) {\n if (!goog.isInEs6ModuleLoader_()) {\n throw new Error(\n 'goog.declareModuleId may only be called from ' +\n 'within an ES6 module');\n }\n if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName) {\n throw new Error(\n 'goog.declareModuleId may only be called once per module.');\n }\n if (namespace in goog.loadedModules_) {\n throw new Error(\n 'Module with namespace \"' + namespace + '\" already exists.');\n }\n }\n if (goog.moduleLoaderState_) {\n // Not bundled - debug loading.\n goog.moduleLoaderState_.moduleName = namespace;\n } else {\n // Bundled - not debug loading, no module loader state.\n var jscomp = goog.global['$jscomp'];\n if (!jscomp || typeof jscomp.getCurrentModulePath != 'function') {\n throw new Error(\n 'Module with namespace \"' + namespace +\n '\" has been loaded incorrectly.');\n }\n var exports = jscomp.require(jscomp.getCurrentModulePath());\n goog.loadedModules_[namespace] = {\n exports: exports,\n type: goog.ModuleType.ES6,\n moduleId: namespace\n };\n }\n};\n\n\n/**\n * Marks that the current file should only be used for testing, and never for\n * live code in production.\n *\n * In the case of unit tests, the message may optionally be an exact namespace\n * for the test (e.g. 'goog.stringTest'). The linter will then ignore the extra\n * provide (if not explicitly defined in the code).\n *\n * @param {string=} opt_message Optional message to add to the error that's\n * raised when used in production code.\n */\ngoog.setTestOnly = function(opt_message) {\n if (goog.DISALLOW_TEST_ONLY_CODE) {\n opt_message = opt_message || '';\n throw new Error(\n 'Importing test-only code into non-debug environment' +\n (opt_message ? ': ' + opt_message : '.'));\n }\n};\n\n\n/**\n * Forward declares a symbol. This is an indication to the compiler that the\n * symbol may be used in the source yet is not required and may not be provided\n * in compilation.\n *\n * The most common usage of forward declaration is code that takes a type as a\n * function parameter but does not need to require it. By forward declaring\n * instead of requiring, no hard dependency is made, and (if not required\n * elsewhere) the namespace may never be required and thus, not be pulled\n * into the JavaScript binary. If it is required elsewhere, it will be type\n * checked as normal.\n *\n * Before using goog.forwardDeclare, please read the documentation at\n * https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation to\n * understand the options and tradeoffs when working with forward declarations.\n *\n * @param {string} name The namespace to forward declare in the form of\n * \"goog.package.part\".\n * @deprecated See go/noforwarddeclaration, Use `goog.requireType` instead.\n */\ngoog.forwardDeclare = function(name) {};\n\n\n/**\n * Forward declare type information. Used to assign types to goog.global\n * referenced object that would otherwise result in unknown type references\n * and thus block property disambiguation.\n */\ngoog.forwardDeclare('Document');\ngoog.forwardDeclare('HTMLScriptElement');\ngoog.forwardDeclare('XMLHttpRequest');\n\n\nif (!COMPILED) {\n /**\n * Check if the given name has been goog.provided. This will return false for\n * names that are available only as implicit namespaces.\n * @param {string} name name of the object to look for.\n * @return {boolean} Whether the name has been provided.\n * @private\n */\n goog.isProvided_ = function(name) {\n return (name in goog.loadedModules_) ||\n (!goog.implicitNamespaces_[name] && goog.getObjectByName(name) != null);\n };\n\n /**\n * Namespaces implicitly defined by goog.provide. For example,\n * goog.provide('goog.events.Event') implicitly declares that 'goog' and\n * 'goog.events' must be namespaces.\n *\n * @type {!Object}\n * @private\n */\n goog.implicitNamespaces_ = {'goog.module': true};\n\n // NOTE: We add goog.module as an implicit namespace as goog.module is defined\n // here and because the existing module package has not been moved yet out of\n // the goog.module namespace. This satisifies both the debug loader and\n // ahead-of-time dependency management.\n}\n\n\n/**\n * Returns an object based on its fully qualified external name. The object\n * is not found if null or undefined. If you are using a compilation pass that\n * renames property names beware that using this function will not find renamed\n * properties.\n *\n * @param {string} name The fully qualified name.\n * @param {Object=} opt_obj The object within which to look; default is\n * |goog.global|.\n * @return {?} The value (object or primitive) or, if not found, null.\n */\ngoog.getObjectByName = function(name, opt_obj) {\n var parts = name.split('.');\n var cur = opt_obj || goog.global;\n for (var i = 0; i < parts.length; i++) {\n cur = cur[parts[i]];\n if (cur == null) {\n return null;\n }\n }\n return cur;\n};\n\n\n/**\n * Adds a dependency from a file to the files it requires.\n * @param {string} relPath The path to the js file.\n * @param {!Array} provides An array of strings with\n * the names of the objects this file provides.\n * @param {!Array} requires An array of strings with\n * the names of the objects this file requires.\n * @param {boolean|!Object=} opt_loadFlags Parameters indicating\n * how the file must be loaded. The boolean 'true' is equivalent\n * to {'module': 'goog'} for backwards-compatibility. Valid properties\n * and values include {'module': 'goog'} and {'lang': 'es6'}.\n */\ngoog.addDependency = function(relPath, provides, requires, opt_loadFlags) {\n if (!COMPILED && goog.DEPENDENCIES_ENABLED) {\n goog.debugLoader_.addDependency(relPath, provides, requires, opt_loadFlags);\n }\n};\n\n\n// NOTE(nnaze): The debug DOM loader was included in base.js as an original way\n// to do \"debug-mode\" development. The dependency system can sometimes be\n// confusing, as can the debug DOM loader's asynchronous nature.\n//\n// With the DOM loader, a call to goog.require() is not blocking -- the script\n// will not load until some point after the current script. If a namespace is\n// needed at runtime, it needs to be defined in a previous script, or loaded via\n// require() with its registered dependencies.\n//\n// User-defined namespaces may need their own deps file. For a reference on\n// creating a deps file, see:\n// Externally: https://developers.google.com/closure/library/docs/depswriter\n//\n// Because of legacy clients, the DOM loader can't be easily removed from\n// base.js. Work was done to make it disableable or replaceable for\n// different environments (DOM-less JavaScript interpreters like Rhino or V8,\n// for example). See bootstrap/ for more information.\n\n\n/**\n * @define {boolean} Whether to enable the debug loader.\n *\n * If enabled, a call to goog.require() will attempt to load the namespace by\n * appending a script tag to the DOM (if the namespace has been registered).\n *\n * If disabled, goog.require() will simply assert that the namespace has been\n * provided (and depend on the fact that some outside tool correctly ordered\n * the script).\n */\ngoog.ENABLE_DEBUG_LOADER = goog.define('goog.ENABLE_DEBUG_LOADER', true);\n\n\n/**\n * @param {string} msg\n * @private\n */\ngoog.logToConsole_ = function(msg) {\n if (goog.global.console) {\n goog.global.console['error'](msg);\n }\n};\n\n\n/**\n * Implements a system for the dynamic resolution of dependencies that works in\n * parallel with the BUILD system.\n *\n * Note that all calls to goog.require will be stripped by the compiler.\n *\n * @see goog.provide\n * @param {string} namespace Namespace (as was given in goog.provide,\n * goog.module, or goog.declareModuleId) in the form\n * \"goog.package.part\".\n * @return {?} If called within a goog.module or ES6 module file, the associated\n * namespace or module otherwise null.\n */\ngoog.require = function(namespace) {\n if (!COMPILED) {\n // Might need to lazy load on old IE.\n if (goog.ENABLE_DEBUG_LOADER) {\n goog.debugLoader_.requested(namespace);\n }\n\n // If the object already exists we do not need to do anything.\n if (goog.isProvided_(namespace)) {\n if (goog.isInModuleLoader_()) {\n return goog.module.getInternal_(namespace);\n }\n } else if (goog.ENABLE_DEBUG_LOADER) {\n var moduleLoaderState = goog.moduleLoaderState_;\n goog.moduleLoaderState_ = null;\n try {\n goog.debugLoader_.load_(namespace);\n } finally {\n goog.moduleLoaderState_ = moduleLoaderState;\n }\n }\n\n return null;\n }\n};\n\n\n/**\n * Requires a symbol for its type information. This is an indication to the\n * compiler that the symbol may appear in type annotations, yet it is not\n * referenced at runtime.\n *\n * When called within a goog.module or ES6 module file, the return value may be\n * assigned to or destructured into a variable, but it may not be otherwise used\n * in code outside of a type annotation.\n *\n * Note that all calls to goog.requireType will be stripped by the compiler.\n *\n * @param {string} namespace Namespace (as was given in goog.provide,\n * goog.module, or goog.declareModuleId) in the form\n * \"goog.package.part\".\n * @return {?}\n */\ngoog.requireType = function(namespace) {\n // Return an empty object so that single-level destructuring of the return\n // value doesn't crash at runtime when using the debug loader. Multi-level\n // destructuring isn't supported.\n return {};\n};\n\n\n/**\n * Path for included scripts.\n * @type {string}\n */\ngoog.basePath = '';\n\n\n/**\n * A hook for overriding the base path.\n * @type {string|undefined}\n */\ngoog.global.CLOSURE_BASE_PATH;\n\n\n/**\n * Whether to attempt to load Closure's deps file. By default, when uncompiled,\n * deps files will attempt to be loaded.\n * @type {boolean|undefined}\n */\ngoog.global.CLOSURE_NO_DEPS;\n\n\n/**\n * A function to import a single script. This is meant to be overridden when\n * Closure is being run in non-HTML contexts, such as web workers. It's defined\n * in the global scope so that it can be set before base.js is loaded, which\n * allows deps.js to be imported properly.\n *\n * The first parameter the script source, which is a relative URI. The second,\n * optional parameter is the script contents, in the event the script needed\n * transformation. It should return true if the script was imported, false\n * otherwise.\n * @type {(function(string, string=): boolean)|undefined}\n */\ngoog.global.CLOSURE_IMPORT_SCRIPT;\n\n\n/**\n * When defining a class Foo with an abstract method bar(), you can do:\n * Foo.prototype.bar = goog.abstractMethod\n *\n * Now if a subclass of Foo fails to override bar(), an error will be thrown\n * when bar() is invoked.\n *\n * @type {!Function}\n * @throws {Error} when invoked to indicate the method should be overridden.\n * @deprecated Use \"@abstract\" annotation instead of goog.abstractMethod in new\n * code. See\n * https://github.com/google/closure-compiler/wiki/@abstract-classes-and-methods\n */\ngoog.abstractMethod = function() {\n throw new Error('unimplemented abstract method');\n};\n\n\n/**\n * Adds a `getInstance` static method that always returns the same\n * instance object.\n * @param {!Function} ctor The constructor for the class to add the static\n * method to.\n * @suppress {missingProperties} 'instance_' isn't a property on 'Function'\n * but we don't have a better type to use here.\n */\ngoog.addSingletonGetter = function(ctor) {\n // instance_ is immediately set to prevent issues with sealed constructors\n // such as are encountered when a constructor is returned as the export object\n // of a goog.module in unoptimized code.\n // Delcare type to avoid conformance violations that ctor.instance_ is unknown\n /** @type {undefined|!Object} @suppress {underscore} */\n ctor.instance_ = undefined;\n ctor.getInstance = function() {\n if (ctor.instance_) {\n return ctor.instance_;\n }\n if (goog.DEBUG) {\n // NOTE: JSCompiler can't optimize away Array#push.\n goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor;\n }\n // Cast to avoid conformance violations that ctor.instance_ is unknown\n return /** @type {!Object|undefined} */ (ctor.instance_) = new ctor;\n };\n};\n\n\n/**\n * All singleton classes that have been instantiated, for testing. Don't read\n * it directly, use the `goog.testing.singleton` module. The compiler\n * removes this variable if unused.\n * @type {!Array}\n * @private\n */\ngoog.instantiatedSingletons_ = [];\n\n\n/**\n * @define {boolean} Whether to load goog.modules using `eval` when using\n * the debug loader. This provides a better debugging experience as the\n * source is unmodified and can be edited using Chrome Workspaces or similar.\n * However in some environments the use of `eval` is banned\n * so we provide an alternative.\n */\ngoog.LOAD_MODULE_USING_EVAL = goog.define('goog.LOAD_MODULE_USING_EVAL', true);\n\n\n/**\n * @define {boolean} Whether the exports of goog.modules should be sealed when\n * possible.\n */\ngoog.SEAL_MODULE_EXPORTS = goog.define('goog.SEAL_MODULE_EXPORTS', goog.DEBUG);\n\n\n/**\n * The registry of initialized modules:\n * The module identifier or path to module exports map.\n * @private @const {!Object}\n */\ngoog.loadedModules_ = {};\n\n\n/**\n * True if the debug loader enabled and used.\n * @const {boolean}\n */\ngoog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;\n\n\n/**\n * @define {string} How to decide whether to transpile. Valid values\n * are 'always', 'never', and 'detect'. The default ('detect') is to\n * use feature detection to determine which language levels need\n * transpilation.\n */\n// NOTE(sdh): we could expand this to accept a language level to bypass\n// detection: e.g. goog.TRANSPILE == 'es5' would transpile ES6 files but\n// would leave ES3 and ES5 files alone.\ngoog.TRANSPILE = goog.define('goog.TRANSPILE', 'detect');\n\n/**\n * @define {boolean} If true assume that ES modules have already been\n * transpiled by the jscompiler (in the same way that transpile.js would\n * transpile them - to jscomp modules). Useful only for servers that wish to use\n * the debug loader and transpile server side. Thus this is only respected if\n * goog.TRANSPILE is \"never\".\n */\ngoog.ASSUME_ES_MODULES_TRANSPILED =\n goog.define('goog.ASSUME_ES_MODULES_TRANSPILED', false);\n\n\n/**\n * @define {string} Trusted Types policy name. If non-empty then Closure will\n * use Trusted Types.\n */\ngoog.TRUSTED_TYPES_POLICY_NAME =\n goog.define('goog.TRUSTED_TYPES_POLICY_NAME', 'goog');\n\n\n/**\n * @package {?boolean}\n * Visible for testing.\n */\ngoog.hasBadLetScoping = null;\n\n\n/**\n * @param {function(?):?|string} moduleDef The module definition.\n */\ngoog.loadModule = function(moduleDef) {\n // NOTE: we allow function definitions to be either in the from\n // of a string to eval (which keeps the original source intact) or\n // in a eval forbidden environment (CSP) we allow a function definition\n // which in its body must call `goog.module`, and return the exports\n // of the module.\n var previousState = goog.moduleLoaderState_;\n try {\n goog.moduleLoaderState_ = {\n moduleName: '',\n declareLegacyNamespace: false,\n type: goog.ModuleType.GOOG\n };\n var origExports = {};\n var exports = origExports;\n if (typeof moduleDef === 'function') {\n exports = moduleDef.call(undefined, exports);\n } else if (typeof moduleDef === 'string') {\n exports = goog.loadModuleFromSource_.call(undefined, exports, moduleDef);\n } else {\n throw new Error('Invalid module definition');\n }\n\n var moduleName = goog.moduleLoaderState_.moduleName;\n if (typeof moduleName === 'string' && moduleName) {\n // Don't seal legacy namespaces as they may be used as a parent of\n // another namespace\n if (goog.moduleLoaderState_.declareLegacyNamespace) {\n // Whether exports was overwritten via default export assignment.\n // This is important for legacy namespaces as it dictates whether\n // previously a previously loaded implicit namespace should be clobbered\n // or not.\n var isDefaultExport = origExports !== exports;\n goog.constructNamespace_(moduleName, exports, isDefaultExport);\n } else if (\n goog.SEAL_MODULE_EXPORTS && Object.seal &&\n typeof exports == 'object' && exports != null) {\n Object.seal(exports);\n }\n\n var data = {\n exports: exports,\n type: goog.ModuleType.GOOG,\n moduleId: goog.moduleLoaderState_.moduleName\n };\n goog.loadedModules_[moduleName] = data;\n } else {\n throw new Error('Invalid module name \\\"' + moduleName + '\\\"');\n }\n } finally {\n goog.moduleLoaderState_ = previousState;\n }\n};\n\n\n/**\n * @private @const\n */\ngoog.loadModuleFromSource_ =\n /** @type {function(!Object, string):?} */ (function(exports) {\n // NOTE: we avoid declaring parameters or local variables here to avoid\n // masking globals or leaking values into the module definition.\n 'use strict';\n eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(arguments[1]));\n return exports;\n });\n\n\n/**\n * Normalize a file path by removing redundant \"..\" and extraneous \".\" file\n * path components.\n * @param {string} path\n * @return {string}\n * @private\n */\ngoog.normalizePath_ = function(path) {\n var components = path.split('/');\n var i = 0;\n while (i < components.length) {\n if (components[i] == '.') {\n components.splice(i, 1);\n } else if (\n i && components[i] == '..' && components[i - 1] &&\n components[i - 1] != '..') {\n components.splice(--i, 2);\n } else {\n i++;\n }\n }\n return components.join('/');\n};\n\n\n/**\n * Provides a hook for loading a file when using Closure's goog.require() API\n * with goog.modules. In particular this hook is provided to support Node.js.\n *\n * @type {(function(string):string)|undefined}\n */\ngoog.global.CLOSURE_LOAD_FILE_SYNC;\n\n\n/**\n * Loads file by synchronous XHR. Should not be used in production environments.\n * @param {string} src Source URL.\n * @return {?string} File contents, or null if load failed.\n * @private\n */\ngoog.loadFileSync_ = function(src) {\n if (goog.global.CLOSURE_LOAD_FILE_SYNC) {\n return goog.global.CLOSURE_LOAD_FILE_SYNC(src);\n } else {\n try {\n /** @type {XMLHttpRequest} */\n var xhr = new goog.global['XMLHttpRequest']();\n xhr.open('get', src, false);\n xhr.send();\n // NOTE: Successful http: requests have a status of 200, but successful\n // file: requests may have a status of zero. Any other status, or a\n // thrown exception (particularly in case of file: requests) indicates\n // some sort of error, which we treat as a missing or unavailable file.\n return xhr.status == 0 || xhr.status == 200 ? xhr.responseText : null;\n } catch (err) {\n // No need to rethrow or log, since errors should show up on their own.\n return null;\n }\n }\n};\n\n//==============================================================================\n// Language Enhancements\n//==============================================================================\n\n\n/**\n * This is a \"fixed\" version of the typeof operator. It differs from the typeof\n * operator in such a way that null returns 'null' and arrays return 'array'.\n * @param {?} value The value to get the type of.\n * @return {string} The name of the type.\n */\ngoog.typeOf = function(value) {\n var s = typeof value;\n\n if (s != 'object') {\n return s;\n }\n\n if (!value) {\n return 'null';\n }\n\n if (Array.isArray(value)) {\n return 'array';\n }\n return s;\n};\n\n\n/**\n * Returns true if the object looks like an array. To qualify as array like\n * the value needs to be either a NodeList or an object with a Number length\n * property. Note that for this function neither strings nor functions are\n * considered \"array-like\".\n *\n * @param {?} val Variable to test.\n * @return {boolean} Whether variable is an array.\n */\ngoog.isArrayLike = function(val) {\n var type = goog.typeOf(val);\n // We do not use goog.isObject here in order to exclude function values.\n return type == 'array' || type == 'object' && typeof val.length == 'number';\n};\n\n\n/**\n * Returns true if the object looks like a Date. To qualify as Date-like the\n * value needs to be an object and have a getFullYear() function.\n * @param {?} val Variable to test.\n * @return {boolean} Whether variable is a like a Date.\n */\ngoog.isDateLike = function(val) {\n return goog.isObject(val) && typeof val.getFullYear == 'function';\n};\n\n\n/**\n * Returns true if the specified value is an object. This includes arrays and\n * functions.\n * @param {?} val Variable to test.\n * @return {boolean} Whether variable is an object.\n */\ngoog.isObject = function(val) {\n var type = typeof val;\n return type == 'object' && val != null || type == 'function';\n // return Object(val) === val also works, but is slower, especially if val is\n // not an object.\n};\n\n\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. The unique ID is\n * guaranteed to be unique across the current session amongst objects that are\n * passed into `getUid`. There is no guarantee that the ID is unique or\n * consistent across sessions. It is unsafe to generate unique ID for function\n * prototypes.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {number} The unique ID for the object.\n */\ngoog.getUid = function(obj) {\n // TODO(arv): Make the type stricter, do not accept null.\n return Object.prototype.hasOwnProperty.call(obj, goog.UID_PROPERTY_) &&\n obj[goog.UID_PROPERTY_] ||\n (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_);\n};\n\n\n/**\n * Whether the given object is already assigned a unique ID.\n *\n * This does not modify the object.\n *\n * @param {!Object} obj The object to check.\n * @return {boolean} Whether there is an assigned unique id for the object.\n */\ngoog.hasUid = function(obj) {\n return !!obj[goog.UID_PROPERTY_];\n};\n\n\n/**\n * Removes the unique ID from an object. This is useful if the object was\n * previously mutated using `goog.getUid` in which case the mutation is\n * undone.\n * @param {Object} obj The object to remove the unique ID field from.\n */\ngoog.removeUid = function(obj) {\n // TODO(arv): Make the type stricter, do not accept null.\n\n // In IE, DOM nodes are not instances of Object and throw an exception if we\n // try to delete. Instead we try to use removeAttribute.\n if (obj !== null && 'removeAttribute' in obj) {\n obj.removeAttribute(goog.UID_PROPERTY_);\n }\n\n try {\n delete obj[goog.UID_PROPERTY_];\n } catch (ex) {\n }\n};\n\n\n/**\n * Name for unique ID property. Initialized in a way to help avoid collisions\n * with other closure JavaScript on the same page.\n * @type {string}\n * @private\n */\ngoog.UID_PROPERTY_ = 'closure_uid_' + ((Math.random() * 1e9) >>> 0);\n\n\n/**\n * Counter for UID.\n * @type {number}\n * @private\n */\ngoog.uidCounter_ = 0;\n\n\n/**\n * Clones a value. The input may be an Object, Array, or basic type. Objects and\n * arrays will be cloned recursively.\n *\n * WARNINGS:\n * goog.cloneObject does not detect reference loops. Objects that\n * refer to themselves will cause infinite recursion.\n *\n * goog.cloneObject is unaware of unique identifiers, and copies\n * UIDs created by getUid into cloned results.\n *\n * @param {*} obj The value to clone.\n * @return {*} A clone of the input value.\n * @deprecated goog.cloneObject is unsafe. Prefer the goog.object methods.\n */\ngoog.cloneObject = function(obj) {\n var type = goog.typeOf(obj);\n if (type == 'object' || type == 'array') {\n if (typeof obj.clone === 'function') {\n return obj.clone();\n }\n if (typeof Map !== 'undefined' && obj instanceof Map) {\n return new Map(obj);\n } else if (typeof Set !== 'undefined' && obj instanceof Set) {\n return new Set(obj);\n }\n var clone = type == 'array' ? [] : {};\n for (var key in obj) {\n clone[key] = goog.cloneObject(obj[key]);\n }\n return clone;\n }\n\n return obj;\n};\n\n\n/**\n * A native implementation of goog.bind.\n * @param {?function(this:T, ...)} fn A function to partially apply.\n * @param {T} selfObj Specifies the object which this should point to when the\n * function is run.\n * @param {...*} var_args Additional arguments that are partially applied to the\n * function.\n * @return {!Function} A partially-applied form of the function goog.bind() was\n * invoked as a method of.\n * @template T\n * @private\n */\ngoog.bindNative_ = function(fn, selfObj, var_args) {\n return /** @type {!Function} */ (fn.call.apply(fn.bind, arguments));\n};\n\n\n/**\n * A pure-JS implementation of goog.bind.\n * @param {?function(this:T, ...)} fn A function to partially apply.\n * @param {T} selfObj Specifies the object which this should point to when the\n * function is run.\n * @param {...*} var_args Additional arguments that are partially applied to the\n * function.\n * @return {!Function} A partially-applied form of the function goog.bind() was\n * invoked as a method of.\n * @template T\n * @private\n */\ngoog.bindJs_ = function(fn, selfObj, var_args) {\n if (!fn) {\n throw new Error();\n }\n\n if (arguments.length > 2) {\n var boundArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n // Prepend the bound arguments to the current arguments.\n var newArgs = Array.prototype.slice.call(arguments);\n Array.prototype.unshift.apply(newArgs, boundArgs);\n return fn.apply(selfObj, newArgs);\n };\n\n } else {\n return function() {\n return fn.apply(selfObj, arguments);\n };\n }\n};\n\n\n/**\n * Partially applies this function to a particular 'this object' and zero or\n * more arguments. The result is a new function with some arguments of the first\n * function pre-filled and the value of this 'pre-specified'.\n *\n * Remaining arguments specified at call-time are appended to the pre-specified\n * ones.\n *\n * Also see: {@link #partial}.\n *\n * Usage:\n *
var barMethBound = goog.bind(myFunction, myObj, 'arg1', 'arg2');\n * barMethBound('arg3', 'arg4');
\n *\n * @param {?function(this:T, ...)} fn A function to partially apply.\n * @param {T} selfObj Specifies the object which this should point to when the\n * function is run.\n * @param {...*} var_args Additional arguments that are partially applied to the\n * function.\n * @return {!Function} A partially-applied form of the function goog.bind() was\n * invoked as a method of.\n * @template T\n * @suppress {deprecated} See above.\n * @deprecated use `=> {}` or Function.prototype.bind instead.\n */\ngoog.bind = function(fn, selfObj, var_args) {\n // TODO(nicksantos): narrow the type signature.\n if (Function.prototype.bind &&\n // NOTE(nicksantos): Somebody pulled base.js into the default Chrome\n // extension environment. This means that for Chrome extensions, they get\n // the implementation of Function.prototype.bind that calls goog.bind\n // instead of the native one. Even worse, we don't want to introduce a\n // circular dependency between goog.bind and Function.prototype.bind, so\n // we have to hack this to make sure it works correctly.\n Function.prototype.bind.toString().indexOf('native code') != -1) {\n goog.bind = goog.bindNative_;\n } else {\n goog.bind = goog.bindJs_;\n }\n return goog.bind.apply(null, arguments);\n};\n\n\n/**\n * Like goog.bind(), except that a 'this object' is not required. Useful when\n * the target function is already bound.\n *\n * Usage:\n * var g = goog.partial(f, arg1, arg2);\n * g(arg3, arg4);\n *\n * @param {Function} fn A function to partially apply.\n * @param {...*} var_args Additional arguments that are partially applied to fn.\n * @return {!Function} A partially-applied form of the function goog.partial()\n * was invoked as a method of.\n */\ngoog.partial = function(fn, var_args) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n // Clone the array (with slice()) and append additional arguments\n // to the existing arguments.\n var newArgs = args.slice();\n newArgs.push.apply(newArgs, arguments);\n return fn.apply(/** @type {?} */ (this), newArgs);\n };\n};\n\n\n/**\n * @return {number} An integer value representing the number of milliseconds\n * between midnight, January 1, 1970 and the current time.\n * @deprecated Use Date.now\n */\ngoog.now = function() {\n return Date.now();\n};\n\n\n/**\n * Evals JavaScript in the global scope.\n *\n * Throws an exception if neither execScript or eval is defined.\n * @param {string|!TrustedScript} script JavaScript string.\n */\ngoog.globalEval = function(script) {\n (0, eval)(script);\n};\n\n\n/**\n * Optional map of CSS class names to obfuscated names used with\n * goog.getCssName().\n * @private {!Object|undefined}\n * @see goog.setCssNameMapping\n */\ngoog.cssNameMapping_;\n\n\n/**\n * Optional obfuscation style for CSS class names. Should be set to either\n * 'BY_WHOLE' or 'BY_PART' if defined.\n * @type {string|undefined}\n * @private\n * @see goog.setCssNameMapping\n */\ngoog.cssNameMappingStyle_;\n\n\n\n/**\n * A hook for modifying the default behavior goog.getCssName. The function\n * if present, will receive the standard output of the goog.getCssName as\n * its input.\n *\n * @type {(function(string):string)|undefined}\n */\ngoog.global.CLOSURE_CSS_NAME_MAP_FN;\n\n\n/**\n * Handles strings that are intended to be used as CSS class names.\n *\n * This function works in tandem with @see goog.setCssNameMapping.\n *\n * Without any mapping set, the arguments are simple joined with a hyphen and\n * passed through unaltered.\n *\n * When there is a mapping, there are two possible styles in which these\n * mappings are used. In the BY_PART style, each part (i.e. in between hyphens)\n * of the passed in css name is rewritten according to the map. In the BY_WHOLE\n * style, the full css name is looked up in the map directly. If a rewrite is\n * not specified by the map, the compiler will output a warning.\n *\n * When the mapping is passed to the compiler, it will replace calls to\n * goog.getCssName with the strings from the mapping, e.g.\n * var x = goog.getCssName('foo');\n * var y = goog.getCssName(this.baseClass, 'active');\n * becomes:\n * var x = 'foo';\n * var y = this.baseClass + '-active';\n *\n * If one argument is passed it will be processed, if two are passed only the\n * modifier will be processed, as it is assumed the first argument was generated\n * as a result of calling goog.getCssName.\n *\n * @param {string} className The class name.\n * @param {string=} opt_modifier A modifier to be appended to the class name.\n * @return {string} The class name or the concatenation of the class name and\n * the modifier.\n */\ngoog.getCssName = function(className, opt_modifier) {\n // String() is used for compatibility with compiled soy where the passed\n // className can be non-string objects.\n if (String(className).charAt(0) == '.') {\n throw new Error(\n 'className passed in goog.getCssName must not start with \".\".' +\n ' You passed: ' + className);\n }\n\n var getMapping = function(cssName) {\n return goog.cssNameMapping_[cssName] || cssName;\n };\n\n var renameByParts = function(cssName) {\n // Remap all the parts individually.\n var parts = cssName.split('-');\n var mapped = [];\n for (var i = 0; i < parts.length; i++) {\n mapped.push(getMapping(parts[i]));\n }\n return mapped.join('-');\n };\n\n var rename;\n if (goog.cssNameMapping_) {\n rename =\n goog.cssNameMappingStyle_ == 'BY_WHOLE' ? getMapping : renameByParts;\n } else {\n rename = function(a) {\n return a;\n };\n }\n\n var result =\n opt_modifier ? className + '-' + rename(opt_modifier) : rename(className);\n\n // The special CLOSURE_CSS_NAME_MAP_FN allows users to specify further\n // processing of the class name.\n if (goog.global.CLOSURE_CSS_NAME_MAP_FN) {\n return goog.global.CLOSURE_CSS_NAME_MAP_FN(result);\n }\n\n return result;\n};\n\n\n/**\n * Sets the map to check when returning a value from goog.getCssName(). Example:\n *
\n * goog.setCssNameMapping({\n *   \"goog\": \"a\",\n *   \"disabled\": \"b\",\n * });\n *\n * var x = goog.getCssName('goog');\n * // The following evaluates to: \"a a-b\".\n * goog.getCssName('goog') + ' ' + goog.getCssName(x, 'disabled')\n * 
\n * When declared as a map of string literals to string literals, the JSCompiler\n * will replace all calls to goog.getCssName() using the supplied map if the\n * --process_closure_primitives flag is set.\n *\n * @param {!Object} mapping A map of strings to strings where keys are possible\n * arguments to goog.getCssName() and values are the corresponding values\n * that should be returned.\n * @param {string=} opt_style The style of css name mapping. There are two valid\n * options: 'BY_PART', and 'BY_WHOLE'.\n * @see goog.getCssName for a description.\n */\ngoog.setCssNameMapping = function(mapping, opt_style) {\n goog.cssNameMapping_ = mapping;\n goog.cssNameMappingStyle_ = opt_style;\n};\n\n\n/**\n * To use CSS renaming in compiled mode, one of the input files should have a\n * call to goog.setCssNameMapping() with an object literal that the JSCompiler\n * can extract and use to replace all calls to goog.getCssName(). In uncompiled\n * mode, JavaScript code should be loaded before this base.js file that declares\n * a global variable, CLOSURE_CSS_NAME_MAPPING, which is used below. This is\n * to ensure that the mapping is loaded before any calls to goog.getCssName()\n * are made in uncompiled mode.\n *\n * A hook for overriding the CSS name mapping.\n * @type {!Object|undefined}\n */\ngoog.global.CLOSURE_CSS_NAME_MAPPING;\n\n\nif (!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) {\n // This does not call goog.setCssNameMapping() because the JSCompiler\n // requires that goog.setCssNameMapping() be called with an object literal.\n goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING;\n}\n\n/**\n * Options bag type for `goog.getMsg()` third argument.\n *\n * It is important to note that these options need to be known at compile time,\n * so they must always be provided to `goog.getMsg()` as an actual object\n * literal in the function call. Otherwise, closure-compiler will report an\n * error.\n * @record\n */\ngoog.GetMsgOptions = function() {};\n\n/**\n * If `true`, escape '<' in the message string to '<'.\n *\n * Used by Closure Templates where the generated code size and performance is\n * critical which is why {@link goog.html.SafeHtmlFormatter} is not used.\n * The value must be literal `true` or `false`.\n * @type {boolean|undefined}\n */\ngoog.GetMsgOptions.prototype.html;\n\n/**\n * If `true`, unescape common html entities: >, <, ', " and\n * &.\n *\n * Used for messages not in HTML context, such as with the `textContent`\n * property.\n * The value must be literal `true` or `false`.\n * @type {boolean|undefined}\n */\ngoog.GetMsgOptions.prototype.unescapeHtmlEntities;\n\n/**\n * Associates placeholder names with strings showing how their values are\n * obtained.\n *\n * This field is intended for use in automatically generated JS code.\n * Human-written code should use meaningful placeholder names instead.\n *\n * closure-compiler uses this as the contents of the `` tag in the\n * XMB file it generates or defaults to `-` for historical reasons.\n *\n * Must be an object literal.\n * Ignored at runtime.\n * Keys are placeholder names.\n * Values are string literals indicating how the value is obtained.\n * Typically this is a snippet of source code.\n * @type {!Object|undefined}\n */\ngoog.GetMsgOptions.prototype.original_code;\n\n/**\n * Associates placeholder names with example values.\n *\n * closure-compiler uses this as the contents of the `` tag in the\n * XMB file it generates or defaults to `-` for historical reasons.\n *\n * Must be an object literal.\n * Ignored at runtime.\n * Keys are placeholder names.\n * Values are string literals containing example placeholder values.\n * (e.g. \"George McFly\" for a name placeholder)\n * @type {!Object|undefined}\n */\ngoog.GetMsgOptions.prototype.example;\n\n/**\n * Gets a localized message.\n *\n * This function is a compiler primitive. If you give the compiler a localized\n * message bundle, it will replace the string at compile-time with a localized\n * version, and expand goog.getMsg call to a concatenated string.\n *\n * Messages must be initialized in the form:\n * \n * var MSG_NAME = goog.getMsg('Hello {$placeholder}', {'placeholder': 'world'});\n * \n *\n * This function produces a string which should be treated as plain text. Use\n * {@link goog.html.SafeHtmlFormatter} in conjunction with goog.getMsg to\n * produce SafeHtml.\n *\n * @param {string} str Translatable string, places holders in the form {$foo}.\n * @param {!Object=} opt_values Maps place holder name to value.\n * @param {!goog.GetMsgOptions=} opt_options see `goog.GetMsgOptions`\n * @return {string} message with placeholders filled.\n */\ngoog.getMsg = function(str, opt_values, opt_options) {\n if (opt_options && opt_options.html) {\n // Note that '&' is not replaced because the translation can contain HTML\n // entities.\n str = str.replace(/')\n .replace(/'/g, '\\'')\n .replace(/"/g, '\"')\n .replace(/&/g, '&');\n }\n if (opt_values) {\n str = str.replace(/\\{\\$([^}]+)}/g, function(match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] :\n match;\n });\n }\n return str;\n};\n\n\n/**\n * Gets a localized message. If the message does not have a translation, gives a\n * fallback message.\n *\n * This is useful when introducing a new message that has not yet been\n * translated into all languages.\n *\n * This function is a compiler primitive. Must be used in the form:\n * var x = goog.getMsgWithFallback(MSG_A, MSG_B);\n * where MSG_A and MSG_B were initialized with goog.getMsg.\n *\n * @param {string} a The preferred message.\n * @param {string} b The fallback message.\n * @return {string} The best translated message.\n */\ngoog.getMsgWithFallback = function(a, b) {\n return a;\n};\n\n\n/**\n * Exposes an unobfuscated global namespace path for the given object.\n * Note that fields of the exported object *will* be obfuscated, unless they are\n * exported in turn via this function or goog.exportProperty.\n *\n * Also handy for making public items that are defined in anonymous closures.\n *\n * ex. goog.exportSymbol('public.path.Foo', Foo);\n *\n * ex. goog.exportSymbol('public.path.Foo.staticFunction', Foo.staticFunction);\n * public.path.Foo.staticFunction();\n *\n * ex. goog.exportSymbol('public.path.Foo.prototype.myMethod',\n * Foo.prototype.myMethod);\n * new public.path.Foo().myMethod();\n *\n * @param {string} publicPath Unobfuscated name to export.\n * @param {*} object Object the name should point to.\n * @param {?Object=} objectToExportTo The object to add the path to; default\n * is goog.global.\n */\ngoog.exportSymbol = function(publicPath, object, objectToExportTo) {\n goog.exportPath_(\n publicPath, object, /* overwriteImplicit= */ true, objectToExportTo);\n};\n\n\n/**\n * Exports a property unobfuscated into the object's namespace.\n * ex. goog.exportProperty(Foo, 'staticFunction', Foo.staticFunction);\n * ex. goog.exportProperty(Foo.prototype, 'myMethod', Foo.prototype.myMethod);\n * @param {Object} object Object whose static property is being exported.\n * @param {string} publicName Unobfuscated name to export.\n * @param {*} symbol Object the name should point to.\n */\ngoog.exportProperty = function(object, publicName, symbol) {\n object[publicName] = symbol;\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * Usage:\n *
\n * function ParentClass(a, b) { }\n * ParentClass.prototype.foo = function(a) { };\n *\n * function ChildClass(a, b, c) {\n *   ChildClass.base(this, 'constructor', a, b);\n * }\n * goog.inherits(ChildClass, ParentClass);\n *\n * var child = new ChildClass('a', 'b', 'see');\n * child.foo(); // This works.\n * 
\n *\n * @param {!Function} childCtor Child class.\n * @param {!Function} parentCtor Parent class.\n * @suppress {strictMissingProperties} superClass_ and base is not defined on\n * Function.\n * @deprecated Use ECMAScript class syntax instead.\n */\ngoog.inherits = function(childCtor, parentCtor) {\n /** @constructor */\n function tempCtor() {}\n tempCtor.prototype = parentCtor.prototype;\n childCtor.superClass_ = parentCtor.prototype;\n childCtor.prototype = new tempCtor();\n /** @override */\n childCtor.prototype.constructor = childCtor;\n\n /**\n * Calls superclass constructor/method.\n *\n * This function is only available if you use goog.inherits to\n * express inheritance relationships between classes.\n *\n * NOTE: This is a replacement for goog.base and for superClass_\n * property defined in childCtor.\n *\n * @param {!Object} me Should always be \"this\".\n * @param {string} methodName The method name to call. Calling\n * superclass constructor can be done with the special string\n * 'constructor'.\n * @param {...*} var_args The arguments to pass to superclass\n * method/constructor.\n * @return {*} The return value of the superclass method/constructor.\n */\n childCtor.base = function(me, methodName, var_args) {\n // Copying using loop to avoid deop due to passing arguments object to\n // function. This is faster in many JS engines as of late 2014.\n var args = new Array(arguments.length - 2);\n for (var i = 2; i < arguments.length; i++) {\n args[i - 2] = arguments[i];\n }\n return parentCtor.prototype[methodName].apply(me, args);\n };\n};\n\n\n/**\n * Allow for aliasing within scope functions. This function exists for\n * uncompiled code - in compiled code the calls will be inlined and the aliases\n * applied. In uncompiled code the function is simply run since the aliases as\n * written are valid JavaScript.\n *\n *\n * @param {function()} fn Function to call. This function can contain aliases\n * to namespaces (e.g. \"var dom = goog.dom\") or classes\n * (e.g. \"var Timer = goog.Timer\").\n * @deprecated Use goog.module instead.\n */\ngoog.scope = function(fn) {\n if (goog.isInModuleLoader_()) {\n throw new Error('goog.scope is not supported within a module.');\n }\n fn.call(goog.global);\n};\n\n\n/*\n * To support uncompiled, strict mode bundles that use eval to divide source\n * like so:\n * eval('someSource;//# sourceUrl sourcefile.js');\n * We need to export the globally defined symbols \"goog\" and \"COMPILED\".\n * Exporting \"goog\" breaks the compiler optimizations, so we required that\n * be defined externally.\n * NOTE: We don't use goog.exportSymbol here because we don't want to trigger\n * extern generation when that compiler option is enabled.\n */\nif (!COMPILED) {\n goog.global['COMPILED'] = COMPILED;\n}\n\n\n//==============================================================================\n// goog.defineClass implementation\n//==============================================================================\n\n\n/**\n * Creates a restricted form of a Closure \"class\":\n * - from the compiler's perspective, the instance returned from the\n * constructor is sealed (no new properties may be added). This enables\n * better checks.\n * - the compiler will rewrite this definition to a form that is optimal\n * for type checking and optimization (initially this will be a more\n * traditional form).\n *\n * @param {Function} superClass The superclass, Object or null.\n * @param {goog.defineClass.ClassDescriptor} def\n * An object literal describing\n * the class. It may have the following properties:\n * \"constructor\": the constructor function\n * \"statics\": an object literal containing methods to add to the constructor\n * as \"static\" methods or a function that will receive the constructor\n * function as its only parameter to which static properties can\n * be added.\n * all other properties are added to the prototype.\n * @return {!Function} The class constructor.\n * @deprecated Use ECMAScript class syntax instead.\n */\ngoog.defineClass = function(superClass, def) {\n // TODO(johnlenz): consider making the superClass an optional parameter.\n var constructor = def.constructor;\n var statics = def.statics;\n // Wrap the constructor prior to setting up the prototype and static methods.\n if (!constructor || constructor == Object.prototype.constructor) {\n constructor = function() {\n throw new Error(\n 'cannot instantiate an interface (no constructor defined).');\n };\n }\n\n var cls = goog.defineClass.createSealingConstructor_(constructor, superClass);\n if (superClass) {\n goog.inherits(cls, superClass);\n }\n\n // Remove all the properties that should not be copied to the prototype.\n delete def.constructor;\n delete def.statics;\n\n goog.defineClass.applyProperties_(cls.prototype, def);\n if (statics != null) {\n if (statics instanceof Function) {\n statics(cls);\n } else {\n goog.defineClass.applyProperties_(cls, statics);\n }\n }\n\n return cls;\n};\n\n\n/**\n * @typedef {{\n * constructor: (!Function|undefined),\n * statics: (Object|undefined|function(Function):void)\n * }}\n */\ngoog.defineClass.ClassDescriptor;\n\n\n/**\n * @define {boolean} Whether the instances returned by goog.defineClass should\n * be sealed when possible.\n *\n * When sealing is disabled the constructor function will not be wrapped by\n * goog.defineClass, making it incompatible with ES6 class methods.\n */\ngoog.defineClass.SEAL_CLASS_INSTANCES =\n goog.define('goog.defineClass.SEAL_CLASS_INSTANCES', goog.DEBUG);\n\n\n/**\n * If goog.defineClass.SEAL_CLASS_INSTANCES is enabled and Object.seal is\n * defined, this function will wrap the constructor in a function that seals the\n * results of the provided constructor function.\n *\n * @param {!Function} ctr The constructor whose results maybe be sealed.\n * @param {Function} superClass The superclass constructor.\n * @return {!Function} The replacement constructor.\n * @private\n */\ngoog.defineClass.createSealingConstructor_ = function(ctr, superClass) {\n if (!goog.defineClass.SEAL_CLASS_INSTANCES) {\n // Do now wrap the constructor when sealing is disabled. Angular code\n // depends on this for injection to work properly.\n return ctr;\n }\n\n // NOTE: The sealing behavior has been removed\n\n /**\n * @this {Object}\n * @return {?}\n */\n var wrappedCtr = function() {\n // Don't seal an instance of a subclass when it calls the constructor of\n // its super class as there is most likely still setup to do.\n var instance = ctr.apply(this, arguments) || this;\n instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_];\n\n return instance;\n };\n\n return wrappedCtr;\n};\n\n\n\n// TODO(johnlenz): share these values with the goog.object\n/**\n * The names of the fields that are defined on Object.prototype.\n * @type {!Array}\n * @private\n * @const\n */\ngoog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n\n// TODO(johnlenz): share this function with the goog.object\n/**\n * @param {!Object} target The object to add properties to.\n * @param {!Object} source The object to copy properties from.\n * @private\n */\ngoog.defineClass.applyProperties_ = function(target, source) {\n // TODO(johnlenz): update this to support ES5 getters/setters\n\n var key;\n for (key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n // For IE the for-in-loop does not contain any properties that are not\n // enumerable on the prototype object (for example isPrototypeOf from\n // Object.prototype) and it will also not include 'replace' on objects that\n // extend String and change 'replace' (not that it is common for anyone to\n // extend anything except Object).\n for (var i = 0; i < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; i++) {\n key = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[i];\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n};\n\n/**\n * Returns the parameter.\n * @param {string} s\n * @return {string}\n * @private\n */\ngoog.identity_ = function(s) {\n return s;\n};\n\n\n/**\n * Creates Trusted Types policy if Trusted Types are supported by the browser.\n * The policy just blesses any string as a Trusted Type. It is not visibility\n * restricted because anyone can also call trustedTypes.createPolicy directly.\n * However, the allowed names should be restricted by a HTTP header and the\n * reference to the created policy should be visibility restricted.\n * @param {string} name\n * @return {?TrustedTypePolicy}\n */\ngoog.createTrustedTypesPolicy = function(name) {\n var policy = null;\n var policyFactory = goog.global.trustedTypes;\n if (!policyFactory || !policyFactory.createPolicy) {\n return policy;\n }\n // trustedTypes.createPolicy throws if called with a name that is already\n // registered, even in report-only mode. Until the API changes, catch the\n // error not to break the applications functionally. In such case, the code\n // will fall back to using regular Safe Types.\n // TODO(koto): Remove catching once createPolicy API stops throwing.\n try {\n policy = policyFactory.createPolicy(name, {\n createHTML: goog.identity_,\n createScript: goog.identity_,\n createScriptURL: goog.identity_\n });\n } catch (e) {\n goog.logToConsole_(e.message);\n }\n return policy;\n};\n\n// There's a bug in the compiler where without collapse properties the\n// Closure namespace defines do not guard code correctly. To help reduce code\n// size also check for !COMPILED even though it redundant until this is fixed.\nif (!COMPILED && goog.DEPENDENCIES_ENABLED) {\n\n\n /**\n * Tries to detect whether the current browser is Edge, based on the user\n * agent. This matches only pre-Chromium Edge.\n * @see https://docs.microsoft.com/en-us/microsoft-edge/web-platform/user-agent-string\n * @return {boolean} True if the current browser is Edge.\n * @private\n */\n goog.isEdge_ = function() {\n var userAgent = goog.global.navigator && goog.global.navigator.userAgent ?\n goog.global.navigator.userAgent :\n '';\n var edgeRe = /Edge\\/(\\d+)(\\.\\d)*/i;\n return !!userAgent.match(edgeRe);\n };\n\n\n /**\n * Tries to detect whether is in the context of an HTML document.\n * @return {boolean} True if it looks like HTML document.\n * @private\n */\n goog.inHtmlDocument_ = function() {\n /** @type {!Document} */\n var doc = goog.global.document;\n return doc != null && 'write' in doc; // XULDocument misses write.\n };\n\n\n /**\n * We'd like to check for if the document readyState is 'loading'; however\n * there are bugs on IE 10 and below where the readyState being anything other\n * than 'complete' is not reliable.\n * @return {boolean}\n * @private\n */\n goog.isDocumentLoading_ = function() {\n // attachEvent is available on IE 6 thru 10 only, and thus can be used to\n // detect those browsers.\n /** @type {!HTMLDocument} */\n var doc = goog.global.document;\n return doc.attachEvent ? doc.readyState != 'complete' :\n doc.readyState == 'loading';\n };\n\n\n /**\n * Tries to detect the base path of base.js script that bootstraps Closure.\n * @private\n */\n goog.findBasePath_ = function() {\n if (goog.global.CLOSURE_BASE_PATH != undefined &&\n // Anti DOM-clobbering runtime check (b/37736576).\n typeof goog.global.CLOSURE_BASE_PATH === 'string') {\n goog.basePath = goog.global.CLOSURE_BASE_PATH;\n return;\n } else if (!goog.inHtmlDocument_()) {\n return;\n }\n /** @type {!Document} */\n var doc = goog.global.document;\n // If we have a currentScript available, use it exclusively.\n var currentScript = doc.currentScript;\n if (currentScript) {\n var scripts = [currentScript];\n } else {\n var scripts = doc.getElementsByTagName('SCRIPT');\n }\n // Search backwards since the current script is in almost all cases the one\n // that has base.js.\n for (var i = scripts.length - 1; i >= 0; --i) {\n var script = /** @type {!HTMLScriptElement} */ (scripts[i]);\n var src = script.src;\n var qmark = src.lastIndexOf('?');\n var l = qmark == -1 ? src.length : qmark;\n if (src.slice(l - 7, l) == 'base.js') {\n goog.basePath = src.slice(0, l - 7);\n return;\n }\n }\n };\n\n goog.findBasePath_();\n\n /**\n * Rewrites closing script tags in input to avoid ending an enclosing script\n * tag.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n goog.protectScriptTag_ = function(str) {\n return str.replace(/<\\/(SCRIPT)/ig, '\\\\x3c/$1');\n };\n\n\n /**\n * A debug loader is responsible for downloading and executing javascript\n * files in an unbundled, uncompiled environment.\n *\n * This can be custimized via the setDependencyFactory method, or by\n * CLOSURE_IMPORT_SCRIPT/CLOSURE_LOAD_FILE_SYNC.\n *\n * @struct @constructor @final @private\n */\n goog.DebugLoader_ = function() {\n /** @private @const {!Object} */\n this.dependencies_ = {};\n /** @private @const {!Object} */\n this.idToPath_ = {};\n /** @private @const {!Object} */\n this.written_ = {};\n /** @private @const {!Array} */\n this.loadingDeps_ = [];\n /** @private {!Array} */\n this.depsToLoad_ = [];\n /** @private {boolean} */\n this.paused_ = false;\n /** @private {!goog.DependencyFactory} */\n this.factory_ = new goog.DependencyFactory();\n /** @private @const {!Object} */\n this.deferredCallbacks_ = {};\n /** @private @const {!Array} */\n this.deferredQueue_ = [];\n };\n\n /**\n * @param {!Array} namespaces\n * @param {function(): undefined} callback Function to call once all the\n * namespaces have loaded.\n */\n goog.DebugLoader_.prototype.bootstrap = function(namespaces, callback) {\n var cb = callback;\n function resolve() {\n if (cb) {\n goog.global.setTimeout(cb, 0);\n cb = null;\n }\n }\n\n if (!namespaces.length) {\n resolve();\n return;\n }\n\n var deps = [];\n for (var i = 0; i < namespaces.length; i++) {\n var path = this.getPathFromDeps_(namespaces[i]);\n if (!path) {\n throw new Error('Unregonized namespace: ' + namespaces[i]);\n }\n deps.push(this.dependencies_[path]);\n }\n\n var require = goog.require;\n var loaded = 0;\n for (var i = 0; i < namespaces.length; i++) {\n require(namespaces[i]);\n deps[i].onLoad(function() {\n if (++loaded == namespaces.length) {\n resolve();\n }\n });\n }\n };\n\n\n /**\n * Loads the Closure Dependency file.\n *\n * Exposed a public function so CLOSURE_NO_DEPS can be set to false, base\n * loaded, setDependencyFactory called, and then this called. i.e. allows\n * custom loading of the deps file.\n */\n goog.DebugLoader_.prototype.loadClosureDeps = function() {\n // Circumvent addDependency, which would try to transpile deps.js if\n // transpile is set to always.\n var relPath = 'deps.js';\n this.depsToLoad_.push(this.factory_.createDependency(\n goog.normalizePath_(goog.basePath + relPath), relPath, [], [], {}));\n this.loadDeps_();\n };\n\n\n /**\n * Notifies the debug loader when a dependency has been requested.\n *\n * @param {string} absPathOrId Path of the dependency or goog id.\n * @param {boolean=} opt_force\n */\n goog.DebugLoader_.prototype.requested = function(absPathOrId, opt_force) {\n var path = this.getPathFromDeps_(absPathOrId);\n if (path &&\n (opt_force || this.areDepsLoaded_(this.dependencies_[path].requires))) {\n var callback = this.deferredCallbacks_[path];\n if (callback) {\n delete this.deferredCallbacks_[path];\n callback();\n }\n }\n };\n\n\n /**\n * Sets the dependency factory, which can be used to create custom\n * goog.Dependency implementations to control how dependencies are loaded.\n *\n * @param {!goog.DependencyFactory} factory\n */\n goog.DebugLoader_.prototype.setDependencyFactory = function(factory) {\n this.factory_ = factory;\n };\n\n\n /**\n * Travserses the dependency graph and queues the given dependency, and all of\n * its transitive dependencies, for loading and then starts loading if not\n * paused.\n *\n * @param {string} namespace\n * @private\n */\n goog.DebugLoader_.prototype.load_ = function(namespace) {\n if (!this.getPathFromDeps_(namespace)) {\n var errorMessage = 'goog.require could not find: ' + namespace;\n goog.logToConsole_(errorMessage);\n } else {\n var loader = this;\n\n var deps = [];\n\n /** @param {string} namespace */\n var visit = function(namespace) {\n var path = loader.getPathFromDeps_(namespace);\n\n if (!path) {\n throw new Error('Bad dependency path or symbol: ' + namespace);\n }\n\n if (loader.written_[path]) {\n return;\n }\n\n loader.written_[path] = true;\n\n var dep = loader.dependencies_[path];\n for (var i = 0; i < dep.requires.length; i++) {\n if (!goog.isProvided_(dep.requires[i])) {\n visit(dep.requires[i]);\n }\n }\n\n deps.push(dep);\n };\n\n visit(namespace);\n\n var wasLoading = !!this.depsToLoad_.length;\n this.depsToLoad_ = this.depsToLoad_.concat(deps);\n\n if (!this.paused_ && !wasLoading) {\n this.loadDeps_();\n }\n }\n };\n\n\n /**\n * Loads any queued dependencies until they are all loaded or paused.\n *\n * @private\n */\n goog.DebugLoader_.prototype.loadDeps_ = function() {\n var loader = this;\n var paused = this.paused_;\n\n while (this.depsToLoad_.length && !paused) {\n (function() {\n var loadCallDone = false;\n var dep = loader.depsToLoad_.shift();\n\n var loaded = false;\n loader.loading_(dep);\n\n var controller = {\n pause: function() {\n if (loadCallDone) {\n throw new Error('Cannot call pause after the call to load.');\n } else {\n paused = true;\n }\n },\n resume: function() {\n if (loadCallDone) {\n loader.resume_();\n } else {\n // Some dep called pause and then resume in the same load call.\n // Just keep running this same loop.\n paused = false;\n }\n },\n loaded: function() {\n if (loaded) {\n throw new Error('Double call to loaded.');\n }\n\n loaded = true;\n loader.loaded_(dep);\n },\n pending: function() {\n // Defensive copy.\n var pending = [];\n for (var i = 0; i < loader.loadingDeps_.length; i++) {\n pending.push(loader.loadingDeps_[i]);\n }\n return pending;\n },\n /**\n * @param {goog.ModuleType} type\n */\n setModuleState: function(type) {\n goog.moduleLoaderState_ = {\n type: type,\n moduleName: '',\n declareLegacyNamespace: false\n };\n },\n /** @type {function(string, string, string=)} */\n registerEs6ModuleExports: function(\n path, exports, opt_closureNamespace) {\n if (opt_closureNamespace) {\n goog.loadedModules_[opt_closureNamespace] = {\n exports: exports,\n type: goog.ModuleType.ES6,\n moduleId: opt_closureNamespace || ''\n };\n }\n },\n /** @type {function(string, ?)} */\n registerGoogModuleExports: function(moduleId, exports) {\n goog.loadedModules_[moduleId] = {\n exports: exports,\n type: goog.ModuleType.GOOG,\n moduleId: moduleId\n };\n },\n clearModuleState: function() {\n goog.moduleLoaderState_ = null;\n },\n defer: function(callback) {\n if (loadCallDone) {\n throw new Error(\n 'Cannot register with defer after the call to load.');\n }\n loader.defer_(dep, callback);\n },\n areDepsLoaded: function() {\n return loader.areDepsLoaded_(dep.requires);\n }\n };\n\n try {\n dep.load(controller);\n } finally {\n loadCallDone = true;\n }\n })();\n }\n\n if (paused) {\n this.pause_();\n }\n };\n\n\n /** @private */\n goog.DebugLoader_.prototype.pause_ = function() {\n this.paused_ = true;\n };\n\n\n /** @private */\n goog.DebugLoader_.prototype.resume_ = function() {\n if (this.paused_) {\n this.paused_ = false;\n this.loadDeps_();\n }\n };\n\n\n /**\n * Marks the given dependency as loading (load has been called but it has not\n * yet marked itself as finished). Useful for dependencies that want to know\n * what else is loading. Example: goog.modules cannot eval if there are\n * loading dependencies.\n *\n * @param {!goog.Dependency} dep\n * @private\n */\n goog.DebugLoader_.prototype.loading_ = function(dep) {\n this.loadingDeps_.push(dep);\n };\n\n\n /**\n * Marks the given dependency as having finished loading and being available\n * for require.\n *\n * @param {!goog.Dependency} dep\n * @private\n */\n goog.DebugLoader_.prototype.loaded_ = function(dep) {\n for (var i = 0; i < this.loadingDeps_.length; i++) {\n if (this.loadingDeps_[i] == dep) {\n this.loadingDeps_.splice(i, 1);\n break;\n }\n }\n\n for (var i = 0; i < this.deferredQueue_.length; i++) {\n if (this.deferredQueue_[i] == dep.path) {\n this.deferredQueue_.splice(i, 1);\n break;\n }\n }\n\n if (this.loadingDeps_.length == this.deferredQueue_.length &&\n !this.depsToLoad_.length) {\n // Something has asked to load these, but they may not be directly\n // required again later, so load them now that we know we're done loading\n // everything else. e.g. a goog module entry point.\n while (this.deferredQueue_.length) {\n this.requested(this.deferredQueue_.shift(), true);\n }\n }\n\n dep.loaded();\n };\n\n\n /**\n * @param {!Array} pathsOrIds\n * @return {boolean}\n * @private\n */\n goog.DebugLoader_.prototype.areDepsLoaded_ = function(pathsOrIds) {\n for (var i = 0; i < pathsOrIds.length; i++) {\n var path = this.getPathFromDeps_(pathsOrIds[i]);\n if (!path ||\n (!(path in this.deferredCallbacks_) &&\n !goog.isProvided_(pathsOrIds[i]))) {\n return false;\n }\n }\n\n return true;\n };\n\n\n /**\n * @param {string} absPathOrId\n * @return {?string}\n * @private\n */\n goog.DebugLoader_.prototype.getPathFromDeps_ = function(absPathOrId) {\n if (absPathOrId in this.idToPath_) {\n return this.idToPath_[absPathOrId];\n } else if (absPathOrId in this.dependencies_) {\n return absPathOrId;\n } else {\n return null;\n }\n };\n\n\n /**\n * @param {!goog.Dependency} dependency\n * @param {!Function} callback\n * @private\n */\n goog.DebugLoader_.prototype.defer_ = function(dependency, callback) {\n this.deferredCallbacks_[dependency.path] = callback;\n this.deferredQueue_.push(dependency.path);\n };\n\n\n /**\n * Interface for goog.Dependency implementations to have some control over\n * loading of dependencies.\n *\n * @record\n */\n goog.LoadController = function() {};\n\n\n /**\n * Tells the controller to halt loading of more dependencies.\n */\n goog.LoadController.prototype.pause = function() {};\n\n\n /**\n * Tells the controller to resume loading of more dependencies if paused.\n */\n goog.LoadController.prototype.resume = function() {};\n\n\n /**\n * Tells the controller that this dependency has finished loading.\n *\n * This causes this to be removed from pending() and any load callbacks to\n * fire.\n */\n goog.LoadController.prototype.loaded = function() {};\n\n\n /**\n * List of dependencies on which load has been called but which have not\n * called loaded on their controller. This includes the current dependency.\n *\n * @return {!Array}\n */\n goog.LoadController.prototype.pending = function() {};\n\n\n /**\n * Registers an object as an ES6 module's exports so that goog.modules may\n * require it by path.\n *\n * @param {string} path Full path of the module.\n * @param {?} exports\n * @param {string=} opt_closureNamespace Closure namespace to associate with\n * this module.\n */\n goog.LoadController.prototype.registerEs6ModuleExports = function(\n path, exports, opt_closureNamespace) {};\n\n\n /**\n * Sets the current module state.\n *\n * @param {goog.ModuleType} type Type of module.\n */\n goog.LoadController.prototype.setModuleState = function(type) {};\n\n\n /**\n * Clears the current module state.\n */\n goog.LoadController.prototype.clearModuleState = function() {};\n\n\n /**\n * Registers a callback to call once the dependency is actually requested\n * via goog.require + all of the immediate dependencies have been loaded or\n * all other files have been loaded. Allows for lazy loading until\n * require'd without pausing dependency loading, which is needed on old IE.\n *\n * @param {!Function} callback\n */\n goog.LoadController.prototype.defer = function(callback) {};\n\n\n /**\n * @return {boolean}\n */\n goog.LoadController.prototype.areDepsLoaded = function() {};\n\n\n /**\n * Basic super class for all dependencies Closure Library can load.\n *\n * This default implementation is designed to load untranspiled, non-module\n * scripts in a web broswer.\n *\n * For goog.modules see {@see goog.GoogModuleDependency}.\n * For untranspiled ES6 modules {@see goog.Es6ModuleDependency}.\n *\n * @param {string} path Absolute path of this script.\n * @param {string} relativePath Path of this script relative to goog.basePath.\n * @param {!Array} provides goog.provided or goog.module symbols\n * in this file.\n * @param {!Array} requires goog symbols or relative paths to Closure\n * this depends on.\n * @param {!Object} loadFlags\n * @struct @constructor\n */\n goog.Dependency = function(\n path, relativePath, provides, requires, loadFlags) {\n /** @const */\n this.path = path;\n /** @const */\n this.relativePath = relativePath;\n /** @const */\n this.provides = provides;\n /** @const */\n this.requires = requires;\n /** @const */\n this.loadFlags = loadFlags;\n /** @private {boolean} */\n this.loaded_ = false;\n /** @private {!Array} */\n this.loadCallbacks_ = [];\n };\n\n\n /**\n * @return {string} The pathname part of this dependency's path if it is a\n * URI.\n */\n goog.Dependency.prototype.getPathName = function() {\n var pathName = this.path;\n var protocolIndex = pathName.indexOf('://');\n if (protocolIndex >= 0) {\n pathName = pathName.substring(protocolIndex + 3);\n var slashIndex = pathName.indexOf('/');\n if (slashIndex >= 0) {\n pathName = pathName.substring(slashIndex + 1);\n }\n }\n return pathName;\n };\n\n\n /**\n * @param {function()} callback Callback to fire as soon as this has loaded.\n * @final\n */\n goog.Dependency.prototype.onLoad = function(callback) {\n if (this.loaded_) {\n callback();\n } else {\n this.loadCallbacks_.push(callback);\n }\n };\n\n\n /**\n * Marks this dependency as loaded and fires any callbacks registered with\n * onLoad.\n * @final\n */\n goog.Dependency.prototype.loaded = function() {\n this.loaded_ = true;\n var callbacks = this.loadCallbacks_;\n this.loadCallbacks_ = [];\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i]();\n }\n };\n\n\n /**\n * Whether or not document.written / appended script tags should be deferred.\n *\n * @private {boolean}\n */\n goog.Dependency.defer_ = false;\n\n\n /**\n * Map of script ready / state change callbacks. Old IE cannot handle putting\n * these properties on goog.global.\n *\n * @private @const {!Object}\n */\n goog.Dependency.callbackMap_ = {};\n\n\n /**\n * @param {function(...?):?} callback\n * @return {string}\n * @private\n */\n goog.Dependency.registerCallback_ = function(callback) {\n var key = Math.random().toString(32);\n goog.Dependency.callbackMap_[key] = callback;\n return key;\n };\n\n\n /**\n * @param {string} key\n * @private\n */\n goog.Dependency.unregisterCallback_ = function(key) {\n delete goog.Dependency.callbackMap_[key];\n };\n\n\n /**\n * @param {string} key\n * @param {...?} var_args\n * @private\n * @suppress {unusedPrivateMembers}\n */\n goog.Dependency.callback_ = function(key, var_args) {\n if (key in goog.Dependency.callbackMap_) {\n var callback = goog.Dependency.callbackMap_[key];\n var args = [];\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n callback.apply(undefined, args);\n } else {\n var errorMessage = 'Callback key ' + key +\n ' does not exist (was base.js loaded more than once?).';\n throw Error(errorMessage);\n }\n };\n\n\n /**\n * Starts loading this dependency. This dependency can pause loading if it\n * needs to and resume it later via the controller interface.\n *\n * When this is loaded it should call controller.loaded(). Note that this will\n * end up calling the loaded method of this dependency; there is no need to\n * call it explicitly.\n *\n * @param {!goog.LoadController} controller\n */\n goog.Dependency.prototype.load = function(controller) {\n if (goog.global.CLOSURE_IMPORT_SCRIPT) {\n if (goog.global.CLOSURE_IMPORT_SCRIPT(this.path)) {\n controller.loaded();\n } else {\n controller.pause();\n }\n return;\n }\n\n if (!goog.inHtmlDocument_()) {\n goog.logToConsole_(\n 'Cannot use default debug loader outside of HTML documents.');\n if (this.relativePath == 'deps.js') {\n // Some old code is relying on base.js auto loading deps.js failing with\n // no error before later setting CLOSURE_IMPORT_SCRIPT.\n // CLOSURE_IMPORT_SCRIPT should be set *before* base.js is loaded, or\n // CLOSURE_NO_DEPS set to true.\n goog.logToConsole_(\n 'Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, ' +\n 'or setting CLOSURE_NO_DEPS to true.');\n controller.loaded();\n } else {\n controller.pause();\n }\n return;\n }\n\n /** @type {!HTMLDocument} */\n var doc = goog.global.document;\n\n // If the user tries to require a new symbol after document load,\n // something has gone terribly wrong. Doing a document.write would\n // wipe out the page. This does not apply to the CSP-compliant method\n // of writing script tags.\n if (doc.readyState == 'complete' &&\n !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) {\n // Certain test frameworks load base.js multiple times, which tries\n // to write deps.js each time. If that happens, just fail silently.\n // These frameworks wipe the page between each load of base.js, so this\n // is OK.\n var isDeps = /\\bdeps.js$/.test(this.path);\n if (isDeps) {\n controller.loaded();\n return;\n } else {\n throw Error('Cannot write \"' + this.path + '\" after document load');\n }\n }\n\n var nonce = goog.getScriptNonce_();\n if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING &&\n goog.isDocumentLoading_()) {\n var key;\n var callback = function(script) {\n if (script.readyState && script.readyState != 'complete') {\n script.onload = callback;\n return;\n }\n goog.Dependency.unregisterCallback_(key);\n controller.loaded();\n };\n key = goog.Dependency.registerCallback_(callback);\n\n var defer = goog.Dependency.defer_ ? ' defer' : '';\n var nonceAttr = nonce ? ' nonce=\"' + nonce + '\"' : '';\n var script = '`,""].join("\n");b=new Blob([b],{type:"text/html"});this.iFrameElement=document.createElement("iframe");this.iFrameElement.src=URL.createObjectURL(b);this.iFrameElement.sandbox.add("allow-scripts","allow-same-origin");this.iFrameElement.style.cssText="position:absolute;left:0;top:-999px;width:1px;height:1px;"; +b=new Promise(c=>{this.iFrameElement.onload=()=>{c()}});a.body.append(this.iFrameElement);try{await b}catch(c){console.error(c)}spnWorker$$module$src$mains$old_spn_main=this.iFrameElement.contentWindow}async initialize(){if(!spnWorker$$module$src$mains$old_spn_main&&(await this.initIframe(),!spnWorker$$module$src$mains$old_spn_main)){console.error("SPN FATAL: Couldn't create iFrame");return}var a=`audioWorklet${UID$$module$src$mains$old_spn_main}`;this.contextUid=a;UID$$module$src$mains$old_spn_main+= +1;proxyPort$$module$src$mains$old_spn_main||(proxyPort$$module$src$mains$old_spn_main=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(spnWorker$$module$src$mains$old_spn_main)));this.audioContext||(this.audioContextIsProvided&&console.error("fatal: the provided AudioContext was undefined"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));"closed"===this.audioContext.state&&(this.audioContextIsProvided&& +console.error("fatal: the provided AudioContext was closed, falling back new AudioContext"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));this.audioContextIsProvided||this.sampleRate===this.audioContext.sampleRate||(this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));spnWorker$$module$src$mains$old_spn_main[a]=this.audioContext;window[`__csound_wasm_iframe_parent_${a}`]=this.audioContext;let b;this.isRequestingInput&& +await new Promise(c=>{requestMicrophoneNode$$module$src$mains$io_utils(d=>{d&&(b=this.audioContext.createMediaStreamSource(d));c()})});logOldSpnMain$$module$src$logger("initializing proxyPort")();await proxyPort$$module$src$mains$old_spn_main.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({contextUid:a,hardwareBufferSize:32768,softwareBufferSize:2048,inputsCount:this.inputsCount,outputsCount:this.outputsCount,sampleRate:this.sampleRate,audioInputPort:this.ipcMessagePorts.audioWorkerAudioInputPort, +messagePort:this.ipcMessagePorts.workerMessagePort2,requestPort:this.ipcMessagePorts.audioWorkerFrameRequestPort,audioContextIsProvided:this.audioContextIsProvided,autoConnect:this.autoConnect,initialPlayState:this.currentPlayState},[this.ipcMessagePorts.audioWorkerAudioInputPort,this.ipcMessagePorts.workerMessagePort2,this.ipcMessagePorts.audioWorkerFrameRequestPort]));logOldSpnMain$$module$src$logger("done initializing proxyPort")();(a=spnWorker$$module$src$mains$old_spn_main[`${a}Node`]||window[`__csound_wasm_iframe_parent_${a}Node`])&& +b&&b.connect(a);this.publicEvents.triggerOnAudioNodeCreated(a);this.isRequestingMidi&&this.csoundWorkerMain&&this.csoundWorkerMain.handleMidiInput&&(logOldSpnMain$$module$src$logger("requesting for web-midi connection")(),requestMidi$$module$src$utils$request_midi({onMidiMessage:this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain)}))}}var $jscompDefaultExport$$module$src$mains$old_spn_main=ScriptProcessorNodeMainThread$$module$src$mains$old_spn_main,module$src$mains$old_spn_main={}; +module$src$mains$old_spn_main.default=$jscompDefaultExport$$module$src$mains$old_spn_main;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k, +b.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length, +"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn't export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt); +const WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants= +10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants= +20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants= +31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41, +WASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants= +52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants= +62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants= +73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants= +7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants= +18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants= +3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants= +16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants= +goog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants= +goog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants= +goog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants= +goog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants| +WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants| +WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants| +WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants| +WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants= +WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants| +WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants| +WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants| +WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants| +WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants| +WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants, +RIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants= +1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants= +0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants; +module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants; +module$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants; +module$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants; +module$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError"; +goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;ec?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;cc&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1}; +goog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;fb?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find; +function module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;fb?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight; +function module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty; +function module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt; +function module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore; +function module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast; +function module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf; +function module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)} +goog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice; +function module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e>>1);let n;n=c?b.call(e,a[k],k,a):b(d,a[k]);0b?1:ac?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove; +function module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;ec*(f-e))return[];if(0f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;db&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}}; +goog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}}; +goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}}; +goog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_}; +goog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got '"+a+"'");return"type_error:Const"}; +goog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={}; +class module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof +module$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))}; +goog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a":"
")}; +goog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&").replace(goog.string.internal.LT_RE_,"<").replace(goog.string.internal.GT_RE_,">").replace(goog.string.internal.QUOT_RE_,""").replace(goog.string.internal.SINGLE_QUOTE_RE_,"'").replace(goog.string.internal.NULL_RE_,"�");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_, +"<"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,">"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.internal.QUOT_RE_,"""));-1!=a.indexOf("'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"'"));-1!=a.indexOf("\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"�"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=//g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g; +goog.string.internal.NULL_RE_=/\x00/g;goog.string.internal.ALL_RE_=/[\x00&<>"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g,"  "),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())}; +goog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&gb?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}; +goog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))}; +goog.html.SAFE_MIME_TYPE_PATTERN_=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\w+=(?:\\w+|"[\\w;,= ]+"))*$',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)}; +goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)}; +goog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\/]+=*$/i; +goog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)}; +goog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)}; +goog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)}; +goog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c); +return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez"; +function module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return'url("'+goog.html.SafeUrl.unwrap(a).replace(/{let f="";d=d.replace(/^(['"])(.*)\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})} +goog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1} +function module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)} +function module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c+~[\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments, +c);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden '<' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof +module$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}} +module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO"; +goog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD"; +goog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM"; +goog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT"; +goog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER"; +goog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT"; +goog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP"; +goog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR"; +goog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a}; +const module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null} +function module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData(); +function module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal} +function module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal} +function module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)} +function module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT; +goog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent; +goog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_= +!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand; +function module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""} +function module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()? +b(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion; +function module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher; +function module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\d\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\d\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b} +function module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version", +"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a=== +module$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&& +a[1]||"":""} +function module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])} +function module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast; +function module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost; +class module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a= +await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1; +async function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions; +goog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()}; +function module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a, +c,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf; +function module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)} +goog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={}; +class module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&& +a.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got '${a}' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof +module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--"+ +goog.string.internal.htmlEscape(a)+"--\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a); +a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d< +a.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c, +f)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+'" with value "'+c[f]+'"':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape; +const module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0, +[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0}; +function module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'Attribute "style" not supported.':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES? +`Attribute "${b}`+'" requires goog.string.Const value, "'+c+'" given.':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+'" requires goog.html.SafeUrl, goog.string.Const, or string, value "'+ +c+'" given.':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+'"'} +function module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'The "style" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)} +module$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("
")}(); +goog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)}; +goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0}; +goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement}); +goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)}; +goog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)}; +goog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)}; +goog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)}; +goog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))}; +goog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)}; +goog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)}; +goog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)}; +goog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b): +b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)}; +goog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)}; +goog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))}; +goog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)}; +goog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)}; +goog.dom.safe.createImageFromBlob=function(a){if(!/^image\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))}; +goog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_('style[nonce],link[rel="stylesheet"][nonce]',a)};goog.dom.safe.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\u00a0",ZERO_WIDTH_SPACE:"\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals; +goog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")}; +goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare; +goog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g",""":'"'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."), +e+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,"  "),b)}; +goog.string.preserveSpaces=function(a){return a.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;db&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a}; +goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\x0B",'"':'\\"',"\\":"\\\\","<":"\\u003C"};goog.string.jsEscapeCache_={"'":"\\'"}; +goog.string.quote=function(a){a=String(a);const b=['"'];for(let c=0;ce?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;cc)b=a;else{if(256>c){if(b="\\x",16>c||256c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains; +goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)}; +goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})}; +goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0c&&(c=e)}return-1==c?a:a.slice(c+1)}; +goog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e=b?"":a.slice(b+1)}; +goog.string.path.join=function(a){let b=arguments[0];for(let c=1;cd+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}} +const WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0}; +WASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b}; +WASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a}; +WASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START); +default:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants), +!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b, +goog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((l,p)=>l+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,n=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;fq).reduce((p,q)=>{if(n)return p;const [u,t]=p;let x=p=0,r=!1,y=0,v;if(0===q)for(;!r;)v=e[p]?e[p].byteLength:0,y<=h&&v+y>h?(r=!0,x=h-y):(y+=v,p+=1);else p=u,x=t;e[p]?(g.setUint8(l+q,e[p][x]),x+1>=e[p].byteLength?(p=u+1,x=0):x+=1):(g.setUint8(l+q,"\x00"),h+=q,n=!0);return[p,x]},[0,0]),n||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])}; +WASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break; +case WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0{this.fd[a].buffers[0][n+l]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const n=this.getMemory();var m=(this.fd[a]||{path:"/"}).path,l=new Uint8Array(n.buffer,c,d);l=decoder$$module$src$utils$text_encoders.decode(l);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":m,l)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path", +p,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?l=m.fd:(l=this.fd.length,this.fd[l]={fd:l});this.fd[l]={...this.fd[l],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:m?this.fd[l].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for", +p);n.setUint32(k,l,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants}; +WASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3c===a);return[b&&b.buffers,b.fd]}; +WASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)}; +WASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]}; +WASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can't append to non-existing file ${a}`)}; +WASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn't been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)}; +WASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)}; +WASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0c&&(c=a[k]),a[k]>=1;p=e<<16|k;for(n=h;n=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}}; +RawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<=f);)b|=d[e++]<>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535}; +RawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken"); +switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c}; +RawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable); +break;default:throw Error("invalid inflate mode");}}; +RawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;ef)d>= +e&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d}; +RawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,n=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,l=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]= +f;else for(f-=257,h=k[f],0e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d}; +RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength; +return c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0}; +Adler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate= +new RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType; +Inflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\n$/g.test(d);e=/^\n/g.test(d);var k=d.split("\n").filter(m=>0{l+1===k.length?h?0===l?(n.push(c.join("")+m), +clearArray$$module$src$utils$clear_array(c)):n.push(m):c.push(m):0===l?(n.push(c.join("")+m),clearArray$$module$src$utils$clear_array(c)):n.push(m)});n.forEach(m=>{m.replace(/(\r\n|\n|\r)/gm,"")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\nPerhaps csdl.h or module.h wasn't imported correctly?"); +return!1}console.error("A csound plugin didn't export __wasm_call_ctors.\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let n=0,m=1;for(;;){const l=a[c++];n+=(l&127)*m;m*=128;if(!(l&128))break}return n}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!"); +if(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn't found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]=== +".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory, +streamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]}; +var $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(v,z)=>{v=await v; +let B,w;try{B=new Uint8Array(z),w=getBinaryHeaderData$$module$src$module(B)}catch(C){console.error("Error in plugin",C)}w&&v.push({headerData:w,wasmPluginBytes:B});return v},[]);var n=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((v,{headerData:z})=>"static"===z?0:v+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+n;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),l=new WebAssembly.Table({initial:k+ +1,element:"anyfunc"});e.setMemory(m);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);n=new WebAssembly.Global({value:"i32",mutable:!1},n);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),u=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const t=e.getImports(a);let x=[],r=d;t.env=t.env||{};t.env.memory=m;t.env.__indirect_function_table= +l;t.env.__stack_pointer=p;t.env.__memory_base=n;t.env.__table_base=q;t.env.csoundLoadModules=v=>{x.forEach(z=>{void 0===y?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(y,z,l,v)});return 0};t.env._ZTH5errno=function(){};t.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});t.env.printDebugCallback=(v,z)=>{v=new Uint8Array(m.buffer,v,z);v=uint2String$$module$src$utils$text_encoders(v);console.log(v)}; +t["GOT.mem"]=t["GOT.mem"]||{};t["GOT.mem"].__heap_base=f;t["GOT.func"]=t["GOT.func"]||{};const y=await WebAssembly.instantiate(a,t);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:m});x=await b.reduce(async(v,{headerData:z,wasmPluginBytes:B})=>{v=await v;try{const {memorySize:w,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(B),A=e.getImports(E),G=new WebAssembly.Global({value:"i32",mutable:!1},r*PAGE_SIZE$$module$src$module);l.grow(F);A.env=Object.assign({},A.env);A.env.memory= +m;A.env.__indirect_function_table=l;A.env.__memory_base=G;A.env.__stack_pointer=p;A.env.__table_base=q;A.env.csoundLoadModules=u;delete A.env.csoundWasiJsMessageCallback;r+=Math.ceil((w+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,A);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),v.push(D))}catch(w){console.error("Error while compiling csound-plugin",w)}return v},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]}, +module$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0; +MessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;class ScriptProcessorNodeSingleThread$$module$src$mains$spn_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.onaudioprocess=this.onaudioprocess.bind(this);this.currentPlayState=void 0;this.onPlayStateChange=this.onPlayStateChange.bind(this);this.start=this.start.bind(this);this.stop=this.stop.bind(this);this.pause= +this.pause.bind(this);this.resume=this.resume.bind(this);this.csoundApi=this.csoundInstance=this.wasm=void 0;this.exportApi={};this.spn=a.createScriptProcessor(0,b,c);this.spn.audioContext=a;this.spn.inputChannelCount=b;this.spn.outputChannelCount=c;this.spn.onaudioprocess=this.onaudioprocess;this.node=this.spn;this.exportApi.getNode=async()=>this.spn;this.sampleRate=a.sampleRate;this.messagePort=new $jscompDefaultExport$$module$src$utils$message_port_state;this.messagePort.post=d=>messageEventHandler$$module$src$mains$messages_main(this)({data:{log:d}}); +this.messagePort.ready=!0;this.started=this.running=!1}async terminateInstance(){this.spn&&(this.spn.disconnect(),delete this.spn);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.publicEvents&&this.currentPlayState!== +a)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.publicEvents.triggerRealtimePerformanceEnded(this);break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.publicEvents.triggerRenderStarted(this);break;case "renderEnded":this.publicEvents.triggerRenderEnded(this)}}async pause(){this.started&& +this.running&&(this.running=!1,this.onPlayStateChange("realtimePerformancePaused"))}async resume(){this.started&&!this.running&&(this.running=!0,this.onPlayStateChange("realtimePerformanceResumed"))}async stop(){if(this.started){this.eventPromises.createStopPromise();const a=this.csoundApi.csoundStop(this.csoundInstance);await this.eventPromises.waitForStop();this.watcherStdOut&&(this.watcherStdOut.close(),delete this.watcherStdOut);this.watcherStdErr&&(this.watcherStdErr.close(),delete this.watcherStdErr); +delete this.csoundInputBuffer;delete this.csoundOutputBuffer;delete this.currentPlayState;return a}}async start(){if(this.csoundApi){var a=(this.csoundApi.csoundGetOutputName(this.csoundInstance)||"test.wav").includes("dac");if(a&&"realtimePerformanceStarted"!==this.currentPlayState){this.result=0;this.csoundApi.csoundSetOption(this.csoundInstance,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;this.cnt=this.ksmps=a=this.csoundApi.csoundGetKsmps(this.csoundInstance);this.nchnls=this.csoundApi.csoundGetNchnls(this.csoundInstance); +this.nchnls_i=this.csoundApi.csoundGetNchnlsInput(this.csoundInstance);var b=this.csoundApi.csoundGetSpout(this.csoundInstance);this.csoundOutputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls);b=this.csoundApi.csoundGetSpin(this.csoundInstance);this.csoundInputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls_i);this.zerodBFS=this.csoundApi.csoundGet0dBFS(this.csoundInstance);this.publicEvents.triggerOnAudioNodeCreated(this.spn);this.eventPromises.createStartPromise(); +a=this.csoundApi.csoundStart(this.csoundInstance);this.csoundApi._isRequestingRtMidiInput(this.csoundInstance)&&requestMidi$$module$src$utils$request_midi({onMidiMessage:({data:c})=>this.csoundApi.csoundPushMidiMessage(this.csoundInstance,c[0],c[1],c[2])});this.running=!0;await this.eventPromises.waitForStart();return a}if(!a&&"renderStarted"!==this.currentPlayState)return a=this.csoundApi.csoundStart(this.csoundInstance),this.onPlayStateChange("renderStarted"),setTimeout(()=>{let c=0;for(;0===c&& +this.csoundApi&&this.csoundInstance;)c=this.csoundApi.csoundPerformKsmps(this.csoundInstance);this.onPlayStateChange&&this.onPlayStateChange("renderEnded")},0),a}else console.error("starting csound failed because csound instance wasn't created")}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){this.plugins||!b||isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)||(b=await fetchPlugins$$module$src$utils(b));if(!this.wasm){const [f,g]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a(), +withPlugins:b,messagePort:this.messagePort});this.wasm=f;this.wasi=g;f.wasi=g}const d=$jscompDefaultExport$$module$src$libcsound(this.wasm);this.csoundApi=d;const e=await d.csoundCreate(0);this.csoundInstance=e;c&&this.spn.connect(this.audioContext.destination);this.resetCsound(!1);Object.keys(d).reduce((f,g)=>{if(["mkdir","readdir","writeFile"].includes(g)){f.fs=f.fs||{};var h=async(...k)=>makeSingleThreadCallback$$module$src$utils(this.wasm,d[g]).apply({},k);h.toString=d[g].toString;f.fs[g]=h}else h= +csoundApiRename$$module$src$utils(g),f[h]=(...k)=>makeSingleThreadCallback$$module$src$utils(e,d[g]).apply({},k),f[h].toString=d[g].toString;return f},this.exportApi);this.exportApi.pause=this.pause.bind(this);this.exportApi.resume=this.resume.bind(this);this.exportApi.start=this.start.bind(this);this.exportApi.stop=this.stop.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioContext;this.exportApi.name="Csound: ScriptProcessor Node, Single-threaded"; +this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.reset=()=>this.resetCsound(!0);this.exportApi.addListener("message",console.log);return this.exportApi}async resetCsound(a){if(a&&"realtimePerformanceEnded"!==this.currentPlayState&&"realtimePerformanceStarted"!==this.currentPlayState)return-1;if("realtimePerformanceStarted"===this.currentPlayState)this.onPlayStateChange("realtimePerformanceEnded");this.started=this.running=!1;this.result=0;const b=this.csoundInstance,c=this.csoundApi; +a&&c.csoundReset(b);c.csoundSetOption(b,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;delete this.csoundOutputBuffer;delete this.csoundInputBuffer}onaudioprocess(a){if(this.csoundApi&&!["renderStarted","renderEnded"].includes(this.currentPlayState)){if(null===this.csoundOutputBuffer||!1===this.running){var b=a.outputBuffer,c=b.getChannelData(0);if(c){c=c.length;for(var d=0;d"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGspe2smJihnb29nLmxvYWRlZE1vZHVsZXNfW2tdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmt8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGwsbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2w9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2wrJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChsKTpsKX1mdW5jdGlvbiBjKGwsbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChsKTpsO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihsKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsbCxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGs9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oayk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwprKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgbD1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChsKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGw9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7bC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgaz1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQprLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGsmJmsuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGs9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBsPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKbD0hMDticmVhaztjYXNlICJBUFBMWSI6bD1uLmFwcGx5KG0sayk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmspO2w9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6dX09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsdSk7bD10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjpsPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7bD17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbayxsXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTprfSxsKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtrLGxdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omt9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxrXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGw9PmwudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBjc291bmRDcmVhdGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uPWE9PigpPT5hLmV4cG9ydHMuY3NvdW5kQ3JlYXRlV2FzaSgpO2Nzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJjcmVhdGUgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kRGVzdHJveShiKTtjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi50b1N0cmluZz0oKT0+ImRlc3Ryb3kgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmRHZXRBUElWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT4oKT0+YS5leHBvcnRzLmNzb3VuZEdldEFQSVZlcnNpb24oKTsKY3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRBUElWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KCk9PmEuZXhwb3J0cy5jc291bmRHZXRWZXJzaW9uKCk7Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kSW5pdGlhbGl6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KGIsYyk9PmEuZXhwb3J0cy5jc291bmRJbml0aWFsaXplKGMpO2Nzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLnRvU3RyaW5nPSgpPT4iaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwp2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249e307bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kQ3JlYXRlPWNzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kRGVzdHJveT1jc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjttb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi5jc291bmRHZXRBUElWZXJzaW9uPWNzb3VuZEdldEFQSVZlcnNpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uO21vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLmNzb3VuZEdldFZlcnNpb249Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kSW5pdGlhbGl6ZT1jc291bmRJbml0aWFsaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjtjb25zdCBXSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzPTE7ZnVuY3Rpb24gVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoKXt0aGlzLmVuY29kaW5nPSJ1dGY4IjtyZXR1cm4gdGhpc31UZXh0RW5jb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigicGFzc2VkIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgIithKyIgIit0eXBlb2YgYSk7YT11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpO2NvbnN0IGI9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgpO1suLi5hXS5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7YltkXT1jLmNvZGVQb2ludEF0KDApfSk7cmV0dXJuIGJ9OwpmdW5jdGlvbiBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycygpe3RoaXMuZW5jb2Rpbmc9InV0ZjgiO3RoaXMuaWdub3JlQk9NPSExO3RoaXMudHJpbU51bGw9YT0+e2NvbnN0IGI9YS5pbmRleE9mKCJceDAwIik7cmV0dXJuLTE8Yj9hLnNsaWNlKDAsTWF0aC5tYXgoMCxiKSk6YX07dGhpcy5kZWNvZGU9ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDA9PT1hKXJldHVybiIiO2lmKCJib29sZWFuIiE9PXR5cGVvZih2b2lkIDAhPT1iJiYic3RyZWFtImluIGI/Yi5zdHJlYW06ITEpKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBvcHRpb24gbXVzdCBiZSBib29sZWFuIik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGEpKXthPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpO2NvbnN0IGM9QXJyYXkuZnJvbSh7bGVuZ3RoOmEubGVuZ3RofSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7Y1tlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChkKX0pOwpyZXR1cm4gdGhpcy50cmltTnVsbChjLmpvaW4oIiIpKX10aHJvdyBuZXcgVHlwZUVycm9yKCJwYXNzZWQgYXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpO319CmNvbnN0IGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1XSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzP25ldyBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczpuZXcgVGV4dERlY29kZXIoInV0ZjgiKSxlbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9V0lUSF9URVhUX0VOQ09ERVJfUE9MWUZJTEwkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz9uZXcgVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM6bmV3IFRleHRFbmNvZGVyKCJ1dGY4IiksdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1hPT5kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKGEpO3ZhciBtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9e307Cm1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGVyPWRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczttb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2Rlcj1lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7bW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLnVpbnQyU3RyaW5nPXVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7Y29uc3QgdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsPWE9Pntjb25zdCBiPWEuaW5kZXhPZigiXHgwMCIpO3JldHVybi0xPGI/YS5zdWJzdHIoMCxiKTphfTt2YXIgbW9kdWxlJHNyYyR1dGlscyR0cmltX251bGw9e307bW9kdWxlJHNyYyR1dGlscyR0cmltX251bGwudHJpbU51bGw9dHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsO2NvbnN0IGZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57YS5leHBvcnRzLmZyZWVTdHJpbmdNZW0oYil9LHB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57KHtidWZmZXI6YX09YS53YXNpLm1lbW9yeSk7Yj1uZXcgVWludDhBcnJheShhLGIpO2I9dWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhiKTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKGIpfSxzdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycz0oYSxiKT0+e2lmKCJzdHJpbmciIT09dHlwZW9mIGIpY29uc29sZS5lcnJvcigiRXhwZWN0ZWQgc3RyaW5nIGJ1dCBnb3QiLHR5cGVvZiBiKTtlbHNle2I9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShiKTt2YXIgYz1hLmV4cG9ydHMuYWxsb2NTdHJpbmdNZW0oYi5sZW5ndGgpOwooe2J1ZmZlcjphfT1hLndhc2kubWVtb3J5KTsobmV3IFVpbnQ4QXJyYXkoYSxjLGIubGVuZ3RoKzEpKS5zZXQoYik7cmV0dXJuIGN9fTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM9e307bW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMuZnJlZVN0cmluZ1B0cj1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVyczttb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycy5wdHIyc3RyaW5nPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzO21vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzLnN0cmluZzJwdHI9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM7Y29uc3QgY3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFBhcnNlT3JjKGIsYyk7Y3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBhcnNlT3JjID0gYXN5bmMgKG9yY2hlc3RyYSkgPT4gT2JqZWN0OyI7Y29uc3QgY3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZENvbXBpbGVUcmVlKGIsYyk7Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVUcmVlID0gYXN5bmMgKHRyZWUpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kQ29tcGlsZU9yYyhiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVPcmMgPSBhc3luYyAob3JjaGVzdHJhKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+e2M9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtiPWEuZXhwb3J0cy5jc291bmRFdmFsQ29kZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZEV2YWxDb2RlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjc291bmRFdmFsQ29kZSA9IGFzeW5jIChvcmNoZXN0cmEpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFN0YXJ0V2FzaShiKTtjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4ic3RhcnQgPSBhc3luYyAoKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2xldCBkO3RyeXtkPWEuZXhwb3J0cy5jc291bmRDb21waWxlQ3NkKGIsYyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBkfTtjc291bmRDb21waWxlQ3NkJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjb21waWxlQ3NkID0gYXN5bmMgKHBhdGgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlQ3NkVGV4dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZENvbXBpbGVDc2RUZXh0KGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVDc2RUZXh0ID0gYXN5bmMgKGNzb3VuZERvY3VtZW50KSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFBlcmZvcm0oYik7Y3NvdW5kUGVyZm9ybSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4icGVyZm9ybSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUtzbXBzV2FzaShiKTtjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBlcmZvcm1Lc21wcyA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFBlcmZvcm1CdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUJ1ZmZlcihiKTtjc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJwZXJmb3JtQnVmZmVyID0gYXN5bmMgKGNzb3VuZCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTdG9wKGIpOwpjc291bmRTdG9wJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJzdG9wID0gYXN5bmMgKCkgPT4gdW5kZWZpbmVkOyI7Y29uc3QgY3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRDbGVhbnVwKGIpO2Nzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNsZWFudXAgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRSZXNldFdhc2koYik7Y3NvdW5kUmVzZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InJlc2V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENsZWFudXA9Y3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRDb21waWxlQ3NkPWNzb3VuZENvbXBpbGVDc2QkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZUNzZFRleHQ9Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZU9yYz1jc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENvbXBpbGVUcmVlPWNzb3VuZENvbXBpbGVUcmVlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7Cm1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRFdmFsQ29kZT1jc291bmRFdmFsQ29kZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQYXJzZU9yYz1jc291bmRQYXJzZU9yYyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQZXJmb3JtPWNzb3VuZFBlcmZvcm0kJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kUGVyZm9ybUJ1ZmZlcj1jc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFBlcmZvcm1Lc21wcz1jc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFJlc2V0PWNzb3VuZFJlc2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0YXJ0PWNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0b3A9Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO2NvbnN0IHNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXM9e2ludDo0LE1ZRkxUOjQsY2hhcjoxfSxzaXplb2ZTdHJ1Y3QkJG1vZHVsZSRzcmMkdXRpbHMkbmF0aXZlX3NpemVzPWE9PmEucmVkdWNlKChiLFssYywuLi5kXSk9PmIrKCJjaGFyIj09PWM/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tjXSpkWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbY10pLDApO3ZhciBtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcz17fTttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplT2ZQcmltaXRpdmU9c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplczttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplb2ZTdHJ1Y3Q9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcztjb25zdCBzdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD0oYSxiKT0+e1thXT1hLnJlZHVjZSgoW2MsZF0sW2UsZiwuLi5nXSk9PntnPSJjaGFyIj09PWY/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tmXSpnWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbZl07Zj0iY2hhciI9PT1mP3RyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGIuc3ViYXJyYXkoZCxnKSkpfHwiIjpiW2RdO2NbZV09ZjtyZXR1cm5bYyxkK2ddfSxbe30sMF0pO3JldHVybiBhfTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD17fTsKbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdC5zdHJ1Y3RCdWZmZXJUb09iamVjdD1zdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdDtjb25zdCBDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGVidWdfbW9kZSIsImludCJdLFsiYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiaGFyZHdhcmVfYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiZGlzcGxheXMiLCJpbnQiXSxbImFzY2lpX2dyYXBocyIsImludCJdLFsicG9zdHNjcmlwdF9ncmFwaHMiLCJpbnQiXSxbIm1lc3NhZ2VfbGV2ZWwiLCJpbnQiXSxbInRlbXBvIiwiaW50Il0sWyJyaW5nX2JlbGwiLCJpbnQiXSxbInVzZV9jc2NvcmUiLCJpbnQiXSxbInRlcm1pbmF0ZV9vbl9taWRpIiwiaW50Il0sWyJoZWFydGJlYXQiLCJpbnQiXSxbImRlZmVyX2dlbjAxX2xvYWQiLCJpbnQiXSxbIm1pZGlfa2V5IiwiaW50Il0sWyJtaWRpX2tleV9jcHMiLCJpbnQiXSxbIm1pZGlfa2V5X29jdCIsImludCJdLFsibWlkaV9rZXlfcGNoIiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5IiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5X2FtcCIsImludCJdLFsibm9fZGVmYXVsdF9wYXRocyIsCiJpbnQiXSxbIm51bWJlcl9vZl90aHJlYWRzIiwiaW50Il0sWyJzeW50YXhfY2hlY2tfb25seSIsImludCJdLFsiY3NkX2xpbmVfY291bnRzIiwiaW50Il0sWyJjb21wdXRlX3dlaWdodHMiLCJpbnQiXSxbInJlYWx0aW1lX21vZGUiLCJpbnQiXSxbInNhbXBsZV9hY2N1cmF0ZSIsImludCJdLFsic2FtcGxlX3JhdGVfb3ZlcnJpZGUiLCJNWUZMVCJdLFsiY29udHJvbF9yYXRlX292ZXJyaWRlIiwiTVlGTFQiXSxbIm5jaG5sc19vdmVycmlkZSIsImludCJdLFsibmNobmxzX2lfb3ZlcnJpZGUiLCJpbnQiXSxbImUwZGJmc19vdmVycmlkZSIsIk1ZRkxUIl0sWyJkYWVtb24iLCJpbnQiXSxbImtzbXBzX292ZXJyaWRlIiwiaW50Il0sWyJGRlRfbGlicmFyeSIsImludCJdXSxDU19NSURJREVWSUNFJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGV2aWNlX25hbWUiLCJjaGFyIiw2NF0sWyJpbnRlcmZhY2VfbmFtZSIsImNoYXIiLDY0XSxbImRldmljZV9pZCIsImNoYXIiLDY0XSxbIm1pZGlfbW9kdWxlIiwKImNoYXIiLDY0XSxbImlzT3V0cHV0IiwiaW50Il1dO3ZhciBtb2R1bGUkc3JjJHN0cnVjdHVyZXM9e307Y29uc3QgY3NvdW5kR2V0U3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcihiKTtjc291bmRHZXRTciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRTciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEtyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0S3IoYik7Y3NvdW5kR2V0S3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0S3IgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRLc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEtzbXBzKGIpO2Nzb3VuZEdldEtzbXBzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldEtzbXBzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldE5jaG5scyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE5jaG5scyhiKTtjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0TmNobmxzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0TmNobmxzSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXROY2hubHNJbnB1dChiKTtjc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXROY2hubHNJbnB1dCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0MGRCRlMoYik7CmNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldDBkQkZTID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRBNChiKTtjc291bmRHZXRBNCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRBNCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyhiKTtjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0Q3VycmVudFRpbWVTYW1wbGVzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNpemVPZk1ZRkxUJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQoYik7Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0U2l6ZU9mTVlGTFQgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFNldE9wdGlvbihiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJzZXRPcHRpb24gPSBhc3luYyAob3B0aW9uKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT4oYixjKT0+e2EuZXhwb3J0cy5jc291bmRTZXRQYXJhbXMoYixjKX07Y3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldFBhcmFtcyA9IGFzeW5jIChjc291bmRQYXJhbXMpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2NvbnN0IGQ9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcyhDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXMpLGU9YS5leHBvcnRzLmFsbG9jQ3NvdW5kUGFyYW1zU3RydWN0KCk7Yz1uZXcgVWludDhBcnJheShjLGUsZCk7YS5leHBvcnRzLmNzb3VuZEdldFBhcmFtcyhiLGUpO2I9c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NPVU5EX1BBUkFNUyQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGMpO2EuZXhwb3J0cy5mcmVlQ3NvdW5kUGFyYW1zKGUpO3JldHVybiBifTtjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0UGFyYW1zID0gYXN5bmMgKCkgPT4gQ1NPVU5EX1BBUkFNUzsiOwpjb25zdCBjc291bmRHZXREZWJ1ZyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldERlYnVnKGIpO2Nzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldERlYnVnID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57YS5leHBvcnRzLmNzb3VuZFNldERlYnVnKGIsYyl9O2Nzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldERlYnVnID0gYXN5bmMgKG51bWJlcikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldDBkQkZTPWNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0QTQ9Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcz1jc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldERlYnVnPWNzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXRLcj1jc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0S3NtcHM9Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzOwptb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHM9Y3NvdW5kR2V0TmNobmxzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHNJbnB1dD1jc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0UGFyYW1zPWNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQ9Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldFNyPWNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kU2V0RGVidWc9Y3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldE9wdGlvbj1jc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldFBhcmFtcz1jc291bmRTZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO2NvbnN0IGNzb3VuZEdldElucHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldElucHV0QnVmZmVyU2l6ZShiKTtjc291bmRHZXRJbnB1dEJ1ZmZlclNpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE91dHB1dEJ1ZmZlclNpemUoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRJbnB1dEJ1ZmZlcihiKTsKY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXIgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRPdXRwdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXRCdWZmZXIoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldE91dHB1dEJ1ZmZlciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcGluKGIpO2Nzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0U3BpbiA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldFNwb3V0KGIpO2Nzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldFNwb3V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldElucHV0QnVmZmVyPWNzb3VuZEdldElucHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRJbnB1dEJ1ZmZlclNpemU9Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRPdXRwdXRCdWZmZXI9Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzsKbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8uY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZT1jc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRTcGluPWNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvO21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldFNwb3V0PWNzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbztmdW5jdGlvbiBhZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5hZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOk51bWJlcihhKStOdW1iZXIoYil9Y29uc3QgY2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7ZnVuY3Rpb24gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9W10pe3JldHVybiguLi5jKT0+e2M9Wy4uLmIsLi4uY107cmV0dXJuIGMubGVuZ3RoPj1hLmxlbmd0aD9hKC4uLmMpOmN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKX19CmZ1bmN0aW9uIGFkanVzdEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2NvbnN0IGQ9MD5hP2MubGVuZ3RoK2E6YTtpZihhPj1jLmxlbmd0aHx8MD5kKXJldHVybiBjO2E9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7YVtkXT1iKGFbZF0pO3JldHVybiBhfWNvbnN0IGFkanVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYWRqdXN0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspaWYoIWEoYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYWxsUGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+e2xldCBjPTA7Zm9yKDtjPGEubGVuZ3RoOyl7aWYoIWFbY10oLi4uYikpcmV0dXJuITE7YysrfXJldHVybiEwfX1mdW5jdGlvbiBhbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYj0+YX0KZnVuY3Rpb24gYW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJiZifWZ1bmN0aW9uIGFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9MDtmb3IoO2M8Yi5sZW5ndGg7KXtpZihhKGJbY10sYykpcmV0dXJuITA7YysrfXJldHVybiExfQpmdW5jdGlvbiBhbnlQYXNzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuKC4uLmIpPT57bGV0IGM9MDtmb3IoO2M8YS5sZW5ndGg7KXtpZihhW2NdKC4uLmIpKXJldHVybiEwO2MrK31yZXR1cm4hMX19ZnVuY3Rpb24gYXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLnNwbGl0KCIiKS5jb25jYXQoYSk7Y29uc3QgYz1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjLnB1c2goYSk7cmV0dXJuIGN9CmZ1bmN0aW9uIGFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmEuYXBwbHkodGhpcyxiKX1jb25zdCB7aXNBcnJheTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN9PUFycmF5OwpmdW5jdGlvbiBfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9MCl7Zm9yKGNvbnN0IGMgaW4gYSkhMSE9PWEuaGFzT3duUHJvcGVydHkoYykmJiJjb25zdHJ1Y3RvciIhPT1jJiYoIm9iamVjdCI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2NdKSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixhW2NdLmxlbmd0aCkpKTtyZXR1cm4gYn0KZnVuY3Rpb24gX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2NvbnN0IGE9W107bGV0IGI9MDtjb25zdCBjPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtiPGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFyZ3VtZW50c1tiXTspYVtiXT1hcmd1bWVudHNbYl0sYisrO3JldHVybiBhfQpmdW5jdGlvbiBfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXt2YXIgZD1iLWMubGVuZ3RoO2lmKDE9PT1kKXJldHVybiBmPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZikpO2lmKDI9PT1kKXJldHVybihmLGcpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZixnKSk7aWYoMz09PWQpcmV0dXJuKGYsZyxoKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLApiLF9fZmlsdGVyVW5kZWZpbmVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoLi4uYyxmLGcsaCkpO2lmKDQ9PT1kKXJldHVybihmLGcsaCxrKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyguLi5jLGYsZyxoLGspKTtpZig0PGQpcmV0dXJuKC4uLmYpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsLi4uZikpO2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSl7dmFyIGU9W107ZD0wO2NvbnN0IGY9YS5sZW5ndGg7CmZvcig7ZDxmO2QrKyl7aWYoIm9iamVjdCI9PT10eXBlb2YgYVtkXXx8aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pKWVbZF09X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdLGIsYyk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhW2RdJiYoZVtkXT1hW2RdKC4uLmMpKX1yZXR1cm4gZX1kPXt9O2ZvcihlIGluIGEpITEhPT1hLmhhc093blByb3BlcnR5KGUpJiYiY29uc3RydWN0b3IiIT09ZSYmKCJvYmplY3QiPT09dHlwZW9mIGFbZV0/ZFtlXT1fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZV0sYixjKToiZnVuY3Rpb24iPT09dHlwZW9mIGFbZV0mJihkW2VdPWFbZV0oLi4uYykpKTtyZXR1cm4gZH0KZnVuY3Rpb24gYXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPV9fZmluZEhpZ2hlc3RBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpO3JldHVybiAwPT09Yz8oKT0+KHt9KTpfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyxiKX1mdW5jdGlvbiBhc3NvY0ZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGMse1thXTpifSl9Y29uc3QgYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIF9pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYTw8MD09PWF9Y29uc3QgaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9TnVtYmVyLmlzSW50ZWdlcnx8X2lzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBhc3NvY1BhdGhGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtjb25zdCBkPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiLiIpLm1hcChlPT5pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhOdW1iZXIoZSkpP051bWJlcihlKTplKTphO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gYjthPWRbMF07aWYoMTxkLmxlbmd0aCl7Y29uc3QgZT0ib2JqZWN0Ij09PXR5cGVvZiBjJiZudWxsIT09YyYmYy5oYXNPd25Qcm9wZXJ0eShhKT9jW2FdOmlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGRbMV0pP1tdOnt9O2I9YXNzb2NQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkLDEpLGIsZSl9cmV0dXJuIGlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpJiYKaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpPyhjPWNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpLGNbYV09YixjKTphc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKX1jb25zdCBhc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jUGF0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPTA7bGV0IGU9MDtjb25zdCBmPWIubGVuZ3RoLGc9YXJndW1lbnRzLmxlbmd0aCxoPUFycmF5KGYrZyk7Zm9yKDtkPGY7KWhbZF09YltkXSxkKys7Zm9yKDtlPGc7KWhbZitlXT1hcmd1bWVudHNbZV0sZSsrO2Q9YS1oLmxlbmd0aDtyZXR1cm4gaC5sZW5ndGg+PWE/Yy5hcHBseSh0aGlzLGgpOl9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxoLGMpKX19CmZ1bmN0aW9uIF9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihjLGQsZSxmKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07CmNhc2UgNzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDg6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDk6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtLG4pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fQpmdW5jdGlvbiBjdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5jdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKDEwPGEpdGhyb3cgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIF9hcml0eSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpO3JldHVybiBfYXJpdHkkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsX2N1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsW10sYikpfQpmdW5jdGlvbiBiaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS5sZW5ndGgsKC4uLmMpPT5hLmFwcGx5KGIsYykpfWZ1bmN0aW9uIGJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5ib3RoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTooLi4uYyk9PmEoLi4uYykmJmIoLi4uYyl9CmZ1bmN0aW9uIGNoYWluJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOltdLmNvbmNhdCguLi5iLm1hcChhKSl9ZnVuY3Rpb24gY2xhbXBGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZihhPmIpdGhyb3cgRXJyb3IoIm1pbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4IGluIGNsYW1wKG1pbiwgbWF4LCB2YWx1ZSkiKTtpZihjPj1hJiZjPD1iKXJldHVybiBjO2lmKGM+YilyZXR1cm4gYjtpZihjPGEpcmV0dXJuIGF9Y29uc3QgY2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGNsYW1wRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGNsb25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk/QXJyYXkoYS5sZW5ndGgpOnt9O2lmKGEmJmEuZ2V0VGltZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2Zvcihjb25zdCBjIGluIGEpe2NvbnN0IGQ9YVtjXTtiW2NdPSJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kP2QuZ2V0VGltZT9uZXcgRGF0ZShkLmdldFRpbWUoKSk6Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkKTpkfXJldHVybiBifWZ1bmN0aW9uIGNvbXBsZW1lbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PiFhKC4uLmIpfQpjbGFzcyBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN7Y29uc3RydWN0b3IoYSl7dGhpcy52YWx1ZT1hfX1mdW5jdGlvbiByZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZTogbGlzdCBtdXN0IGJlIGFycmF5IG9yIGl0ZXJhYmxlIik7bGV0IGQ9MDtjb25zdCBlPWMubGVuZ3RoO2Zvcig7ZDxlOyl7Yj1hKGIsY1tkXSxkLGMpO2lmKGIgaW5zdGFuY2VvZiBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpcmV0dXJuIGIudmFsdWU7ZCsrfXJldHVybiBifQpjb25zdCByZWR1Y2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpLHJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT5uZXcgUmVkdWNlU3RvcHBlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpOwpmdW5jdGlvbiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihjLGQpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTsKY2FzZSA3OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCxrKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0sbil7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKTt9fQpmdW5jdGlvbiBfcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2FsbCh0aGlzLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19CmZ1bmN0aW9uIHBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJwaXBlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhcmd1bWVudHNbMF0ubGVuZ3RoLHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX3BpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyxhcmd1bWVudHNbMF0sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEsSW5maW5pdHkpKSl9CmZ1bmN0aW9uIGNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJjb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBwaXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkucmV2ZXJzZSgpKX1mdW5jdGlvbiBjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5jb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOiJzdHJpbmciPT09dHlwZW9mIGE/YCR7YX0ke2J9YDpbLi4uYSwuLi5iXX0KZnVuY3Rpb24gY29uZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBiPT57bGV0IGM9ITEsZDthLmZvckVhY2goKFtlLGZdKT0+eyFjJiZlKGIpJiYoYz0hMCxkPWYoYikpfSk7cmV0dXJuIGR9fWNvbnN0IHtrZXlzOmtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzfT1PYmplY3Q7ZnVuY3Rpb24gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYz0hMSl7bGV0IGQ9MDtjb25zdCBlPUFycmF5KGIubGVuZ3RoKTtmb3IoO2Q8Yi5sZW5ndGg7KWVbZF09Yz9hKGJbZF0sZCk6YShiW2RdKSxkKys7cmV0dXJuIGV9CmZ1bmN0aW9uIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGc9Pm1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZyk7bGV0IGM9MDtjb25zdCBkPWtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLGU9ZC5sZW5ndGgsZj17fTtmb3IoO2M8ZTspe2NvbnN0IGc9ZFtjXTtmW2ddPWEoYltnXSxnLGIpO2MrK31yZXR1cm4gZn1jb25zdCBtYXBPYmpJbmRleGVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7CmZ1bmN0aW9uIG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9Pm1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoIWIpdGhyb3cgRXJyb3IoSU5DT1JSRUNUX0lURVJBQkxFX0lOUFVUKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP21hcEFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTptYXBPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBtYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmI+YT9iOmF9CmZ1bmN0aW9uIGNvbnZlcmdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9Pm1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsZS5sZW5ndGgpLDAsYik7cmV0dXJuIGN1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQ9PmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGIpKX0pfQpmdW5jdGlvbiBjb3VudCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmNvdW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/Yi5maWx0ZXIoYz0+YShjKSkubGVuZ3RoOjB9ZnVuY3Rpb24gY291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmNvdW50QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9e307Yi5mb3JFYWNoKGQ9PntkPWEoZCk7Y1tkXT9jW2RdKys6Y1tkXT0xfSk7cmV0dXJuIGN9CmNvbnN0IGRlYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PmEtMTtmdW5jdGlvbiBpc0ZhbHN5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIHZvaWQgMD09PWF8fG51bGw9PT1hfHwhMD09PU51bWJlci5pc05hTihhKX1mdW5jdGlvbiBkZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5kZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzRmFsc3kkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKT9hOmJ9CmZ1bmN0aW9uIHR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtpZihudWxsPT09YSlyZXR1cm4iTnVsbCI7aWYodm9pZCAwPT09YSlyZXR1cm4iVW5kZWZpbmVkIjtpZihOdW1iZXIuaXNOYU4oYSkpcmV0dXJuIk5hTiI7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkuc2xpY2UoOCwtMSk7cmV0dXJuIkFzeW5jRnVuY3Rpb24iPT09YT8iUHJvbWlzZSI6YX0KZnVuY3Rpb24gX2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpKXRocm93IEVycm9yKGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnaW5kZXhPZicgb2YgJHtifWApO3ZhciBjPXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtpZighWyJPYmplY3QiLCJBcnJheSIsIk5hTiIsIlJlZ0V4cCJdLmluY2x1ZGVzKGMpKXJldHVybiBiLmxhc3RJbmRleE9mKGEpOyh7bGVuZ3RoOmN9PWIpO2xldCBkPS0xO2Zvcig7LTE8LS1jJiYtMT09PWQ7KWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGJbY10sYSkmJihkPWMpO3JldHVybiBkfQpmdW5jdGlvbiBfaW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ2luZGV4T2YnIG9mICR7Yn1gKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoIVsiT2JqZWN0IiwiQXJyYXkiLCJOYU4iLCJSZWdFeHAiXS5pbmNsdWRlcyhjKSlyZXR1cm4gYi5pbmRleE9mKGEpO2xldCBkPWM9LTE7Y29uc3Qge2xlbmd0aDplfT1iO2Zvcig7KytjPGUmJi0xPT09ZDspZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYltjXSxhKSYmKGQ9Yyk7cmV0dXJuIGR9CmZ1bmN0aW9uIF9hcnJheUZyb21JdGVyYXRvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2NvbnN0IGI9W107bGV0IGM7Zm9yKDshKGM9YS5uZXh0KCkpLmRvbmU7KWIucHVzaChjLnZhbHVlKTtyZXR1cm4gYn1mdW5jdGlvbiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoYS5zaXplIT09Yi5zaXplKXJldHVybiExO2E9X2FycmF5RnJvbUl0ZXJhdG9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS52YWx1ZXMoKSk7Y29uc3QgYz1fYXJyYXlGcm9tSXRlcmF0b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLnZhbHVlcygpKTtyZXR1cm4gMD09PWEuZmlsdGVyKGQ9Pi0xPT09X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkLGMpKS5sZW5ndGh9CmZ1bmN0aW9uIHBhcnNlRXJyb3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPWEuX19wcm90b19fLnRvU3RyaW5nKCk7cmV0dXJuWyJFcnJvciIsIlR5cGVFcnJvciJdLmluY2x1ZGVzKGIpP1tiLGEubWVzc2FnZV06W119ZnVuY3Rpb24gcGFyc2VEYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9EYXRlU3RyaW5nP1shMCxhLmdldFRpbWUoKV06WyExXX1mdW5jdGlvbiBwYXJzZVJlZ2V4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEuY29uc3RydWN0b3IhPT1SZWdFeHA/WyExXTpbITAsYS50b1N0cmluZygpXX0KZnVuY3Rpb24gZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoYyE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlyZXR1cm4hMTtpZigiRnVuY3Rpb24iPT09YylyZXR1cm4gdm9pZCAwPT09YS5uYW1lPyExOmEubmFtZT09PWIubmFtZTtpZihbIk5hTiIsIlVuZGVmaW5lZCIsIk51bGwiXS5pbmNsdWRlcyhjKSlyZXR1cm4hMDtpZigiTnVtYmVyIj09PWMpcmV0dXJuIE9iamVjdC5pcygtMCxhKSE9PU9iamVjdC5pcygtMCxiKT8hMTphLnRvU3RyaW5nKCk9PT1iLnRvU3RyaW5nKCk7aWYoWyJTdHJpbmciLCJCb29sZWFuIl0uaW5jbHVkZXMoYykpcmV0dXJuIGEudG9TdHJpbmcoKT09PQpiLnRvU3RyaW5nKCk7aWYoIkFycmF5Ij09PWMpe2M9QXJyYXkuZnJvbShhKTtjb25zdCBmPUFycmF5LmZyb20oYik7aWYoYy50b1N0cmluZygpIT09Zi50b1N0cmluZygpKXJldHVybiExO2xldCBnPSEwO2MuZm9yRWFjaCgoaCxrKT0+e2cmJihoPT09ZltrXXx8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxmW2tdKXx8KGc9ITEpKX0pO3JldHVybiBnfXZhciBkPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxlPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtpZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZURhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtlPXBhcnNlRGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpOwppZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7ZT1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZFswXSlyZXR1cm4gZVswXT9kWzBdPT09ZVswXSYmZFsxXT09PWVbMV06ITE7aWYoIlNldCI9PT1jKXJldHVybiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYik7aWYoIk9iamVjdCI9PT1jKXtjPU9iamVjdC5rZXlzKGEpO2lmKGMubGVuZ3RoIT09T2JqZWN0LmtleXMoYikubGVuZ3RoKXJldHVybiExO2xldCBmPSEwO2MuZm9yRWFjaChnPT57aWYoZil7Y29uc3QgaD1hW2ddO2c9YltnXTtoPT09Z3x8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxnKXx8KGY9ITEpfX0pOwpyZXR1cm4gZn1yZXR1cm4hMX1mdW5jdGlvbiBpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmluY2x1ZGVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLmluY2x1ZGVzKGEpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5IFwnaW5kZXhPZlwnIG9mICR7Yn1gKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpPy0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTohMX0KY2xhc3MgX1NldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpze2NvbnN0cnVjdG9yKCl7dGhpcy5zZXQ9bmV3IFNldDt0aGlzLml0ZW1zPXt9fWNoZWNrVW5pcXVlbmVzcyhhKXt2YXIgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJOdWxsIiwiVW5kZWZpbmVkIiwiTmFOIl0uaW5jbHVkZXMoYik/YiBpbiB0aGlzLml0ZW1zPyExOnRoaXMuaXRlbXNbYl09ITA6WyJPYmplY3QiLCJBcnJheSJdLmluY2x1ZGVzKGIpP2IgaW4gdGhpcy5pdGVtcz8tMT09PV9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSx0aGlzLml0ZW1zW2JdKT8odGhpcy5pdGVtc1tiXS5wdXNoKGEpLCEwKTohMToodGhpcy5pdGVtc1tiXT1bYV0sITApOihiPXRoaXMuc2V0LnNpemUsdGhpcy5zZXQuYWRkKGEpLHRoaXMuc2V0LnNpemUhPT1iKX19CmZ1bmN0aW9uIHVuaXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPW5ldyBfU2V0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMsYz1bXTthLmZvckVhY2goZD0+e2IuY2hlY2tVbmlxdWVuZXNzKGQpJiZjLnB1c2goZCl9KTtyZXR1cm4gY31mdW5jdGlvbiBkaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZGlmZmVyZW5jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6dW5pcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLmZpbHRlcihjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpKX0KZnVuY3Rpb24gZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+ZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZihudWxsPT09Ynx8dm9pZCAwPT09YilyZXR1cm57fTtjb25zdCBjPXt9O2Zvcihjb25zdCBkIGluIGIpY1tkXT1iW2RdO2RlbGV0ZSBjW2FdO3JldHVybiBjfWZ1bmN0aW9uIGRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS9ifQpmdW5jdGlvbiBkcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Yi5zbGljZSgwPGE/YTowKX1mdW5jdGlvbiBkcm9wTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRyb3BMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPGE/Yi5zbGljZSgwLC1hKTpiLnNsaWNlKCl9CmZ1bmN0aW9uIGRyb3BMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxnKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7Y29uc3QgYz1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKGAncHJlZGljYXRlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYX1gKTtpZighYyYmInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYn1gKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPWIubGVuZ3RoO2Zvcig7MDxmOylmLS0sZHx8ITEhPT1hKGJbZl0pP2QmJmUucHVzaChiW2ZdKToKKGQ9ITAsZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lLnJldmVyc2UoKTplLnJldmVyc2UoKS5qb2luKCIiKX1mdW5jdGlvbiBkcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYCR7YX0gaXMgbm90IGEgbGlzdGApO2NvbnN0IGI9W107YS5yZWR1Y2UoKGMsZCk9PntlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGQpfHxiLnB1c2goZCk7cmV0dXJuIGR9LHZvaWQgMCk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgJHtifSBpcyBub3QgYSBsaXN0YCk7Y29uc3QgYz1bXTtiLnJlZHVjZSgoZCxlKT0+e2lmKHZvaWQgMD09PWQpcmV0dXJuIGMucHVzaChlKSxlO2EoZCxlKXx8Yy5wdXNoKGUpO3JldHVybiBlfSx2b2lkIDApO3JldHVybiBjfQpmdW5jdGlvbiBkcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWQ/ZS5wdXNoKGJbZl0pOmEoYltmXSl8fChkfHwoZD0hMCksZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIGVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6KC4uLmMpPT4hKCFhKC4uLmMpJiYhYiguLi5jKSl9CmZ1bmN0aW9uIGVuZHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKCJzdHJpbmciPT09dHlwZW9mIGIpcmV0dXJuIGIuZW5kc1dpdGgoYSk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSlyZXR1cm4hMTtjb25zdCBjPWIubGVuZ3RoLWEubGVuZ3RoO2xldCBkPSEwO3JldHVybiBhLmZpbHRlcigoZSxmKT0+e2lmKCFkKXJldHVybiExOyhlPWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGUsYltmK2NdKSl8fChkPSExKTtyZXR1cm4gZX0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoYilyZXR1cm4gYlthXX1mdW5jdGlvbiBlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKX1jb25zdCBlcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGV2b2x2ZUFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygoYyxkKT0+IkZ1bmN0aW9uIj09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9hW2RdKGMpOmMsYiwhMCl9CmZ1bmN0aW9uIGV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChjLGQpPT57aWYoIk9iamVjdCI9PT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYykpe2NvbnN0IGU9dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pO3JldHVybiJGdW5jdGlvbiI9PT1lP2FbZF0oYyk6Ik9iamVjdCI9PT1lP2V2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0sYyk6Y31yZXR1cm4iRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pP2FbZF0oYyk6Y30sYil9CmZ1bmN0aW9uIGV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7Y29uc3QgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSksZD10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZCE9PWMpdGhyb3cgRXJyb3IoIml0ZXJhYmxlVHlwZSAhPT0gcnVsZXNUeXBlIik7aWYoIVsiT2JqZWN0IiwiQXJyYXkiXS5pbmNsdWRlcyhjKSl0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBhbmQgJ3J1bGVzJyBhcmUgZnJvbSB3cm9uZyB0eXBlICR7Y31gKTtyZXR1cm4iT2JqZWN0Ij09PWQ/ZXZvbHZlT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTpldm9sdmVBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsCmIpfWZ1bmN0aW9uIEYkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe3JldHVybiExfWZ1bmN0aW9uIGZpbHRlck9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBiKWEoYltkXSxkLGIpJiYoY1tkXT1iW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBmaWx0ZXJBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjPSExKXtsZXQgZD0wO2NvbnN0IGU9Yi5sZW5ndGgsZj1bXTtmb3IoO2Q8ZTspKGM/YShiW2RdLGQpOmEoYltkXSkpJiZmLnB1c2goYltkXSksZCsrO3JldHVybiBmfQpmdW5jdGlvbiBmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5maWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFiKXRocm93IEVycm9yKCJJbmNvcnJlY3QgaXRlcmFibGUgaW5wdXQiKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2ZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLCExKTpmaWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBmaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9MDtjb25zdCBkPWIubGVuZ3RoO2Zvcig7YzxkOyl7Y29uc3QgZT1iW2NdO2lmKGEoZSkpcmV0dXJuIGU7YysrfX1mdW5jdGlvbiBmaW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5maW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2NvbnN0IGM9Yi5sZW5ndGg7bGV0IGQ9LTE7Zm9yKDsrK2Q8YzspaWYoYShiW2RdKSlyZXR1cm4gZDtyZXR1cm4tMX0KZnVuY3Rpb24gZmluZExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5maW5kTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9Yi5sZW5ndGg7Zm9yKDswPD0tLWM7KWlmKGEoYltjXSkpcmV0dXJuIGJbY119ZnVuY3Rpb24gZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmZpbmRMYXN0SW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2xldCBjPWIubGVuZ3RoO2Zvcig7MDw9LS1jOylpZihhKGJbY10pKXJldHVybiBjO3JldHVybi0xfQpmdW5jdGlvbiBmbGF0dGVuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtiPXZvaWQgMD09PWI/W106Yjtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKylpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtjXSk/ZmxhdHRlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbY10sYik6Yi5wdXNoKGFbY10pO3JldHVybiBifQpmdW5jdGlvbiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PntpZigxPT09Yi5sZW5ndGgpcmV0dXJuIGM9PmEoYyxiWzBdKTtpZigyPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdKTtpZigzPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdLGJbMl0pO2lmKDQ9PT1iLmxlbmd0aClyZXR1cm4gYShiWzFdLGJbMF0sYlsyXSxiWzNdKTt0aHJvdyBFcnJvcigiUi5mbGlwIGRvZXNuJ3Qgd29yayB3aXRoIGFyaXR5ID4gNCIpO319ZnVuY3Rpb24gZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0KZnVuY3Rpb24gZm9yRWFjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKHZvaWQgMCE9PWIpe2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDspYShiW2NdKSxjKys7ZWxzZXtjPTA7ZD1rZXlzJDEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjb25zdCBlPWQubGVuZ3RoO2Zvcig7YzxlOyl7Y29uc3QgZj1kW2NdO2EoYltmXSxmLGIpO2MrK319cmV0dXJuIGJ9fQpmdW5jdGlvbiBmcm9tUGFpcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPXt9O2EuZm9yRWFjaCgoW2MsZF0pPT5iW2NdPWQpO3JldHVybiBifWZ1bmN0aW9uIGdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5ncm91cEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF0sZj1hKGUpO2NbZl18fChjW2ZdPVtdKTtjW2ZdLnB1c2goZSl9cmV0dXJuIGN9CmZ1bmN0aW9uIGdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJsaXN0LnJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoMT09PWIubGVuZ3RoKXJldHVybltjXTtjb25zdCBkPVtdO2xldCBlPVtdO2MucmVkdWNlKChmLGcsaCk9PntpZigwPT09aClyZXR1cm4gZztjb25zdCBrPWEoZixnKSxsPTA9PT1lLmxlbmd0aDtoPWg9PT1iLmxlbmd0aC0xO2lmKGspcmV0dXJuIGwmJmUucHVzaChmKSxlLnB1c2goZyksaCYmZC5wdXNoKGUpLGc7aWYobClyZXR1cm4gZC5wdXNoKFtmXSksaCYmZC5wdXNoKFtnXSksZztkLnB1c2goZSk7aCYmZC5wdXNoKFtnXSk7ZT1bXTtyZXR1cm4gZ30sCnZvaWQgMCk7cmV0dXJuIGR9ZnVuY3Rpb24gaGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+aGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiP2IuaGFzT3duUHJvcGVydHkoYSk6ITF9ZnVuY3Rpb24gY3JlYXRlUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYj0iLiIpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdChiKTphfQpmdW5jdGlvbiBwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1iLGQ9MCxlPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtkPGUubGVuZ3RoOyl7aWYobnVsbD09PWN8fHZvaWQgMD09PWN8fG51bGw9PT1jW2VbZF1dKXJldHVybjtjPWNbZVtkXV07ZCsrfXJldHVybiBjfX0KZnVuY3Rpb24gaGFzUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pmhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnZvaWQgMCE9PXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfWZ1bmN0aW9uIGhlYWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2FbMF18fCIiOmFbMF19ZnVuY3Rpb24gX29iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYT09PWI/MCE9PWF8fDEvYT09PTEvYjphIT09YSYmYiE9PWJ9Y29uc3Qgb2JqZWN0SXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1PYmplY3QuaXN8fF9vYmplY3RJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBpZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOm9iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBpZGVudGl0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBhfWZ1bmN0aW9uIGlmRWxzZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiguLi5kKT0+ITA9PT0oImJvb2xlYW4iPT09dHlwZW9mIGE/YTphKC4uLmQpKT9iKC4uLmQpOmMoLi4uZCl9CmNvbnN0IGlmRWxzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaWZFbHNlRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyksaW5jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+YSsxO2Z1bmN0aW9uIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1twYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKV09ZX1yZXR1cm4gY30KZnVuY3Rpb24gaW5kZXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1thKGUpXT1lfXJldHVybiBjfQpmdW5jdGlvbiBpbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOl9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBiYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7bGV0IGQ9LTEse2xlbmd0aDplfT1hO2M9Yz5lP2U6YzswPmMmJihjKz1lKTtlPWI+Yz8wOmMtYj4+PjA7Yj4+Pj0wO2ZvcihjPUFycmF5KGUpOysrZDxlOyljW2RdPWFbZCtiXTtyZXR1cm4gY30KZnVuY3Rpb24gaW5pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zbGljZSgwLC0xKTphLmxlbmd0aD9iYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLDAsLTEpOltdfWZ1bmN0aW9uIGludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+aW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGEpLGIpfQpmdW5jdGlvbiBpbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGY9PmludGVyc3BlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtsZXQgYz0tMTtjb25zdCBkPWIubGVuZ3RoLGU9W107Zm9yKDsrK2M8ZDspYz09PWQtMT9lLnB1c2goYltjXSk6ZS5wdXNoKGJbY10sYSk7cmV0dXJuIGV9ZnVuY3Rpb24gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bnVsbCE9YiYmYi5jb25zdHJ1Y3Rvcj09PWF8fGIgaW5zdGFuY2VvZiBhfQpmdW5jdGlvbiBpc0VtcHR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJVbmRlZmluZWQiLCJOYU4iLCJOdW1iZXIiLCJOdWxsIl0uaW5jbHVkZXMoYik/ITE6YT8iT2JqZWN0Ij09PWI/MD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aDoiQXJyYXkiPT09Yj8wPT09YS5sZW5ndGg6ITE6ITB9ZnVuY3Rpb24gaXNOaWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09PWF9CmZ1bmN0aW9uIGpvaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5qb2luJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiLmpvaW4oYSl9ZnVuY3Rpb24ganV4dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+YS5tYXAoYz0+YyguLi5iKSl9ZnVuY3Rpb24ga2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKX1mdW5jdGlvbiBsYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hW2EubGVuZ3RoLTFdfHwiIjphW2EubGVuZ3RoLTFdfQpmdW5jdGlvbiBsYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pl9sYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBsZW5ndGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2EubGVuZ3RoOk5hTn0KZnVuY3Rpb24gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gYyhhKGQpKS5tYXAoZT0+YihlLGQpKX19fWZ1bmN0aW9uIG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz0wPmE/Yi5sZW5ndGgrYTphO3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP2IuY2hhckF0KGMpOmJbY119CmZ1bmN0aW9uIHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2M9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7cmV0dXJuLTE9PT1hP2MuZmlsbChiLGEpOmMuZmlsbChiLGEsYSsxKX1jb25zdCB1cGRhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBsZW5zSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLHVwZGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBsZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBsZW5zJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLGFzc29jUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX0KZnVuY3Rpb24gbGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBtYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm1hdGNoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPWIubWF0Y2goYSk7cmV0dXJuIG51bGw9PT1jP1tdOmN9CmZ1bmN0aW9uIG1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXRoTW9kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTohaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl8fCFpc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKXx8MT5iP05hTjooYSViK2IpJWJ9ZnVuY3Rpb24gbWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT5hKGIpP2M6Yn1jb25zdCBtYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gc3VtJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEucmVkdWNlKChiLGMpPT5iK2MsMCl9ZnVuY3Rpb24gbWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBzdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKS9hLmxlbmd0aH1mdW5jdGlvbiBtZWRpYW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT09YilyZXR1cm4gTmFOO2NvbnN0IGM9Mi1iJTI7Yj0oYi1jKS8yO3JldHVybiBtZWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKS5zb3J0KChkLGUpPT5kPT09ZT8wOmQ8ZT8tMToxKS5zbGljZShiLGIrYykpfQpmdW5jdGlvbiBtZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6T2JqZWN0LmFzc2lnbih7fSxhfHx7fSxifHx7fSl9ZnVuY3Rpb24gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtsZXQgYj17fTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT57Yj1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKX0sYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIG1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGQ9PnsiT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2RdKT8iT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9jW2RdPW1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtkXSxiW2RdKTpjW2RdPWJbZF06Y1tkXT1iW2RdfSk7cmV0dXJuIGN9CmZ1bmN0aW9uIG1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsYSl9ZnVuY3Rpb24gbWVyZ2VXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Y29uc3QgZD17fTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGU9PntkW2VdPXZvaWQgMD09PWNbZV0/YltlXTphKGJbZV0sY1tlXSl9KTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGU9Pnt2b2lkIDA9PT1kW2VdJiYoZFtlXT12b2lkIDA9PT1iW2VdP2NbZV06YShiW2VdLGNbZV0pKX0pO3JldHVybiBkfQpjb25zdCBtZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1lcmdlV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIG1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YjxhP2I6YX1mdW5jdGlvbiBtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGMpPGEoYik/YzpifWNvbnN0IG1pbkJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBvd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXt2YXIgYz1PYmplY3Qua2V5cyhhKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGEpO2ImJihkPWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZSkuZW51bWVyYWJsZX0pKTtjLnB1c2guYXBwbHkoYyxkKX1yZXR1cm4gY30KZnVuY3Rpb24gX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtmb3IodmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz1udWxsIT1hcmd1bWVudHNbYl0/YXJndW1lbnRzW2JdOnt9O2IlMj9vd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoT2JqZWN0KGMpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe19kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCxjW2RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGEsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYykpOm93bktleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhPYmplY3QoYykpLmZvckVhY2goZnVuY3Rpb24oZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsCmQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGQpKX0pfXJldHVybiBhfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtiIGluIGE/T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7dmFsdWU6YyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmFbYl09YztyZXR1cm4gYX1mdW5jdGlvbiBpc0l0ZXJhYmxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSl8fCJPYmplY3QiPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfQpmdW5jdGlvbiBtb2RpZnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXNJdGVyYWJsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpJiZ2b2lkIDAhPT1jW2FdP2lzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT91cGRhdGVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYihjW2FdKSxjKTpfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thXTpiKGNbYV0pfSk6Y31jb25zdCBtb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZGlmeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7YT1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoMT09PWEubGVuZ3RoKXJldHVybiBfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thWzBdXTpiKGNbYVswXV0pfSk7aWYodm9pZCAwPT09cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYykpcmV0dXJuIGM7Yj1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwxKSxiLGNbYVswXV0pO3JldHVybiBiPT09Y1thWzBdXT9jOmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVswXSwKYixjKX1jb25zdCBtb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gbW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJWJ9CmZ1bmN0aW9uIG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZigwPmF8fDA+Yil0aHJvdyBFcnJvcigiUmFtYmRhLm1vdmUgZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbmRleGVzIik7aWYoYT5jLmxlbmd0aC0xfHxiPmMubGVuZ3RoLTEpcmV0dXJuIGM7Y29uc3QgZD1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKTtkW2FdPWNbYl07ZFtiXT1jW2FdO3JldHVybiBkfWNvbnN0IG1vdmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gbXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tdWx0aXBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YSpifWZ1bmN0aW9uIG5lZ2F0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybi1hfWZ1bmN0aW9uIG5vbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylpZihhKGJbY10pKXJldHVybiExO3JldHVybiEwfQpmdW5jdGlvbiBub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4hYX1mdW5jdGlvbiBvYmpPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9iak9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTp7W2FdOmJ9fWZ1bmN0aW9uIG9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuW2FdfQpmdW5jdGlvbiBvbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+b21pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe3ZhciBjPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLCIsIiksZD17fTtmb3IoY29uc3QgZSBpbiBiKWMuaW5jbHVkZXMoZSl8fChkW2VdPWJbZV0pO3JldHVybiBkfX0KZnVuY3Rpb24gb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxkKXtyZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGg/ZT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxlKToyPT09YXJndW1lbnRzLmxlbmd0aD8oZSxmKT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsZSxmKTphKGIoYyksYihkKSl9ZnVuY3Rpb24gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oKXthJiYoYz1hLmFwcGx5KGJ8fHRoaXMsYXJndW1lbnRzKSxhPW51bGwpO3JldHVybiBjfX0KZnVuY3Rpb24gb25jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2NvbnN0IGM9b25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtyZXR1cm4gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKX1yZXR1cm4gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphfHxifWNvbnN0IElkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+KHt4OmEsbWFwOmI9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihhKSl9KTsKZnVuY3Rpb24gb3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGQ9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihkKSkpKGMpLnh9Y29uc3Qgb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMob3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXJ0aWFsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPWEubGVuZ3RoO3JldHVybiguLi5kKT0+Yi5sZW5ndGgrZC5sZW5ndGg+PWM/YSguLi5iLC4uLmQpOnBhcnRpYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLC4uLlsuLi5iLC4uLmRdKX1mdW5jdGlvbiBwYXJ0aWFsT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYz0+YShtZXJnZURlZXBSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwYXJ0aXRpb25PYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2NvbnN0IGM9e30sZD17fTtPYmplY3QuZW50cmllcyhiKS5mb3JFYWNoKChbZSxmXSk9PnthKGYsZSk/Y1tlXT1mOmRbZV09Zn0pO3JldHVybltjLGRdfWZ1bmN0aW9uIHBhcnRpdGlvbkFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGM9ITEpe2NvbnN0IGQ9W10sZT1bXTtsZXQgZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOykoYz9hKGJbZl0sZik6YShiW2ZdKSk/ZC5wdXNoKGJbZl0pOmUucHVzaChiW2ZdKTtyZXR1cm5bZCxlXX0KZnVuY3Rpb24gcGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpOnBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil9CmZ1bmN0aW9uIHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKSxiKX1jb25zdCBwYXRoRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9Y29uc3QgcGF0aE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcGF0aHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS5tYXAoYz0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwaWNrJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGljayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWNbZV1pbiBiJiYoZFtjW2VdXT1iW2NbZV1dKSxlKys7cmV0dXJuIGR9fQpmdW5jdGlvbiBwaWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGlja0FsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWRbY1tlXV09Y1tlXWluIGI/YltjW2VdXTp2b2lkIDAsZSsrO3JldHVybiBkfX0KZnVuY3Rpb24gcGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5wbHVjayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz1bXTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkPT57dm9pZCAwIT09ZFthXSYmYy5wdXNoKGRbYV0pfSxiKTtyZXR1cm4gY31mdW5jdGlvbiBwcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cHJlcGVuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6InN0cmluZyI9PT10eXBlb2YgYj9bYV0uY29uY2F0KGIuc3BsaXQoIiIpKTpbYV0uY29uY2F0KGIpfQpjb25zdCBwcm9kdWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcywxKTtmdW5jdGlvbiBwcm9wRXFGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYz9lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKTohMX1jb25zdCBwcm9wRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwcm9wSXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGNbYl0pfWNvbnN0IHByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcElzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gcHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGM/ZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjW2JdKTphfWNvbnN0IHByb3BPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIHByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoInByb3BzVG9QaWNrIGlzIG5vdCBhIGxpc3QiKTtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT5iW2NdLGEpfWZ1bmN0aW9uIHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9CmNvbnN0IHByb3BTYXRpc2ZpZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYoTnVtYmVyLmlzTmFOKE51bWJlcihhKSl8fE51bWJlci5pc05hTihOdW1iZXIoYikpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIHJhbmdlIG11c3QgYmUgbnVtYmVycyIpO2lmKGI8YSlyZXR1cm5bXTtjb25zdCBjPWItYSxkPUFycmF5KGMpO2ZvcihsZXQgZT0wO2U8YztlKyspZFtlXT1hK2U7cmV0dXJuIGR9CmZ1bmN0aW9uIHJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+IWEoYyksYil9ZnVuY3Rpb24gcmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpBcnJheShiKS5maWxsKGEpfWZ1bmN0aW9uIHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5yZXBsYWNlKGEsYil9CmNvbnN0IHJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTtmdW5jdGlvbiByZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6YS5zbGljZSgpLnJldmVyc2UoKX1mdW5jdGlvbiBzZXRGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYWx3YXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYiksYyl9CmNvbnN0IHNldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoc2V0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gc2xpY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5zbGljZShhLGIpfWNvbnN0IHNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhzbGljZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBzb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c29ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikuc29ydChhKX1mdW5jdGlvbiBzb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLnNvcnQoKGMsZCk9PntjPWEoYyk7ZD1hKGQpO3JldHVybiBjPT09ZD8wOmM8ZD8tMToxfSl9CmZ1bmN0aW9uIHNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c3BsaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmIuc3BsaXQoYSl9ZnVuY3Rpb24gbWF5YmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Yj1hJiYiRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2IoKTpiO2M9YXx8IkZ1bmN0aW9uIiE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT9jOmMoKTtyZXR1cm4gYT9iOmN9CmZ1bmN0aW9uIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT50YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPmE/Yi5zbGljZSgpOiJzdHJpbmciPT09dHlwZW9mIGI/Yi5zbGljZSgwLGEpOmJhc2VTbGljZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsMCxhKX0KZnVuY3Rpb24gc3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PnNwbGl0QXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdzbGljZScgb2YgJHtifWApO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikmJiJzdHJpbmciIT09dHlwZW9mIGIpcmV0dXJuW1tdLFtdXTtjb25zdCBjPW1heWJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoMD5hLDA+Yi5sZW5ndGgrYT8wOmIubGVuZ3RoK2EsYSk7cmV0dXJuW3Rha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLApiKV19ZnVuY3Rpb24gc3BsaXRFdmVyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKDE+YSl0aHJvdyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gc3BsaXRFdmVyeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2NvbnN0IGM9W107bGV0IGQ9MDtmb3IoO2Q8Yi5sZW5ndGg7KWMucHVzaChiLnNsaWNlKGQsZCs9YSkpO3JldHVybiBjfQpmdW5jdGlvbiBzcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5zcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdsZW5ndGgnIG9mICR7Yn1gKTtjb25zdCBjPVtdLGQ9W107bGV0IGU9ITEsZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOyllP2QucHVzaChiW2ZdKTphKGJbZl0pPyhkLnB1c2goYltmXSksZT0hMCk6Yy5wdXNoKGJbZl0pO3JldHVybltjLGRdfQpmdW5jdGlvbiBzdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+c3RhcnRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoInN0cmluZyI9PT10eXBlb2YgYilyZXR1cm4gYi5zdGFydHNXaXRoKGEpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpcmV0dXJuITE7bGV0IGM9ITA7cmV0dXJuIGEuZmlsdGVyKChkLGUpPT57aWYoIWMpcmV0dXJuITE7KGQ9ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxiW2VdKSl8fChjPSExKTtyZXR1cm4gZH0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBzdWJ0cmFjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphLWJ9CmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGEpLGZpbHRlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9PiFpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYSksYikpfQpmdW5jdGlvbiBUJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKXtyZXR1cm4hMH1mdW5jdGlvbiB0YWlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygxLGEpfQpmdW5jdGlvbiB0YWtlTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPWIubGVuZ3RoO2lmKDA+YSlyZXR1cm4gYi5zbGljZSgpO2xldCBkPWE+Yz9jOmE7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYj9iLnNsaWNlKGMtZCk6YmFzZVNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjLWQsYyl9CmZ1bmN0aW9uIHRha2VMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBmPT50YWtlTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7bGV0IGM9ITE7Y29uc3QgZD1bXTtsZXQgZT1iLmxlbmd0aDtmb3IoOyFjfHwwPT09ZTspZS0tLCExPT09YShiW2VdKT9jPSEwOmN8fGQucHVzaChiW2VdKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2QucmV2ZXJzZSgpOmQucmV2ZXJzZSgpLmpvaW4oIiIpfQpmdW5jdGlvbiB0YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT50YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMDtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWEoYltmXSk/ZCYmZS5wdXNoKGJbZl0pOmQmJihkPSExKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIHRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7YShiKTtyZXR1cm4gYn1mdW5jdGlvbiB0ZXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoInN0cmluZyI9PT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGBcdTIwMTh0ZXN0XHUyMDE5IHJlcXVpcmVzIGEgdmFsdWUgb2YgdHlwZSBSZWdFeHAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50OyByZWNlaXZlZCAiJHthfSJgKTtyZXR1cm4tMSE9PWIuc2VhcmNoKGEpfQpmdW5jdGlvbiB0aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRpbWVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZighaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYil8fDA+Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGFuIGludGVnZXIiKTtyZXR1cm4gbWFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxyYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKDAsYikpfWZ1bmN0aW9uIHRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfQpmdW5jdGlvbiB0b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGEpfWZ1bmN0aW9uIHRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9TdHJpbmcoKX1mdW5jdGlvbiB0b1VwcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9VcHBlckNhc2UoKX1mdW5jdGlvbiB0cmFuc3Bvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS5yZWR1Y2UoKGIsYyk9PntjLmZvckVhY2goKGQsZSk9PmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2VdKT9iW2VdLnB1c2goZCk6Yi5wdXNoKFtkXSkpO3JldHVybiBifSxbXSl9CmZ1bmN0aW9uIHRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50cmltKCl9Y29uc3QgaXNGdW5jdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PlsiUHJvbWlzZSIsIkZ1bmN0aW9uIl0uaW5jbHVkZXModHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKTsKZnVuY3Rpb24gdHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKCFpc0Z1bmN0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYFIudHJ5Q2F0Y2ggfCBmbiAnJHthfSdgKTtjb25zdCBjPWlzRnVuY3Rpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtyZXR1cm4oLi4uZCk9Pnt0cnl7cmV0dXJuIGEoLi4uZCl9Y2F0Y2goZSl7cmV0dXJuIGM/YihlLC4uLmQpOmJ9fX1mdW5jdGlvbiB1bmFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3JldHVybiBhLmNhbGwodGhpcyxiKX19CmZ1bmN0aW9uIHVuaW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7Yi5mb3JFYWNoKGQ9PntpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYSl8fGMucHVzaChkKX0pO3JldHVybiBjfQpmdW5jdGlvbiB1bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT51bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9bmV3IFNldDtyZXR1cm4gYi5maWx0ZXIoZD0+e2lmKGMuaGFzKGEoZCkpKXJldHVybiExO2MuYWRkKGEoZCkpO3JldHVybiEwfSl9ZnVuY3Rpb24gaW5jbHVkZXNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2xldCBkPSExLGU9LTE7Zm9yKDsrK2U8Yy5sZW5ndGgmJiFkOylhKGIsY1tlXSkmJihkPSEwKTtyZXR1cm4gZH0KZnVuY3Rpb24gdW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT51bmlxV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9LTE7Y29uc3QgZD1bXTtmb3IoOysrYzxiLmxlbmd0aDspe2NvbnN0IGU9YltjXTtpbmNsdWRlc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUsZCl8fGQucHVzaChlKX1yZXR1cm4gZH1mdW5jdGlvbiB1bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmM9PmEoYyk/YzpiKGMpfQpmdW5jdGlvbiB1bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2FdKT9tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9Pl9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyh7fSxiKSx7fSx7W2FdOmN9KSxiW2FdKTpbYl19CmZ1bmN0aW9uIHZhbHVlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJPYmplY3QiIT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpP1tdOk9iamVjdC52YWx1ZXMoYSl9Y29uc3QgQ29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT4oe3g6YSxtYXA6Yj0+Q29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0pO2Z1bmN0aW9uIHZpZXckJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT52aWV3JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphKENvbnN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpKGIpLnh9CmZ1bmN0aW9uIHdoZW5GbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT9iKGMpOmN9Y29uc3Qgd2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMod2hlbkZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIHdoZXJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZih2b2lkIDA9PT1iKXJldHVybiBkPT53aGVyZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9ITA7Zm9yKGNvbnN0IGQgaW4gYSl7aWYoIWMpY29udGludWU7Y29uc3QgZT1hW2RdKGJbZF0pO2MmJiExPT09ZSYmKGM9ITEpfXJldHVybiBjfQpmdW5jdGlvbiB3aGVyZUFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYodm9pZCAwPT09YilyZXR1cm4gYz0+d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2Zvcihjb25zdCBjIGluIGEpaWYoYVtjXShiW2NdKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gd2hlcmVFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PndoZXJlRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9PmVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYltlXSksYSk7cmV0dXJuIE9iamVjdC5rZXlzKGMpLmxlbmd0aD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aH0KZnVuY3Rpb24gd2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/Yz0+d2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGMsZCk9Pi0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxhKT9jOmMuY29uY2F0KGQpLFtdLGIpfWZ1bmN0aW9uIHhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ISFhJiYhYnx8ISFiJiYhYX0KZnVuY3Rpb24gemlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPVtdLGQ9TWF0aC5taW4oYS5sZW5ndGgsYi5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8ZDtlKyspY1tlXT1bYVtlXSxiW2VdXTtyZXR1cm4gY31mdW5jdGlvbiB6aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT56aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aCxhKS5yZWR1Y2UoKGMsZCxlKT0+e2NbZF09YltlXTtyZXR1cm4gY30se30pfQpmdW5jdGlvbiB6aXBXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aD5jLmxlbmd0aD9jLmxlbmd0aDpiLmxlbmd0aCxiKS5tYXAoKGQsZSk9PmEoZCxjW2VdKSl9Y29uc3QgemlwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoemlwV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9e307bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLkY9RiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuVD1UJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLl9fZmluZEhpZ2hlc3RBcml0eT1fX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuX2FyaXR5PV9hcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5faW5kZXhPZj1faW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fbGFzdEluZGV4T2Y9X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fcGlwZT1fcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hZGQ9YWRkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFkanVzdD1hZGp1c3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYWxsPWFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbGxQYXNzPWFsbFBhc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFsd2F5cz1hbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYW5kPWFuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbnk9YW55JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFueVBhc3M9YW55UGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBlbmQ9YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseT1hcHBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseVNwZWM9YXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jPWFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jUGF0aD1hc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYmluZD1iaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ib3RoPWJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2hhaW49Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xhbXA9Y2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xvbmU9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29tcGxlbWVudD1jb21wbGVtZW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb21wb3NlPWNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29uY2F0PWNvbmNhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb25kPWNvbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29udmVyZ2U9Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY291bnQ9Y291bnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmNvdW50Qnk9Y291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeT1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeU49Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRlYz1kZWMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGVmYXVsdFRvPWRlZmF1bHRUbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGlmZmVyZW5jZT1kaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRpc3NvYz1kaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGl2aWRlPWRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wPWRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZHJvcExhc3Q9ZHJvcExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BMYXN0V2hpbGU9ZHJvcExhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0cz1kcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0c1dpdGg9ZHJvcFJlcGVhdHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BXaGlsZT1kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVpdGhlcj1laXRoZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZW5kc1dpdGg9ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXFQcm9wcz1lcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVxdWFscz1lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlPWV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlQXJyYXk9ZXZvbHZlQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlT2JqZWN0PWV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maWx0ZXI9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlckFycmF5PWZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlck9iamVjdD1maWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmQ9ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maW5kSW5kZXg9ZmluZEluZGV4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0PWZpbmRMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0SW5kZXg9ZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mbGF0dGVuPWZsYXR0ZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZsaXA9ZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mb3JFYWNoPWZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZnJvbVBhaXJzPWZyb21QYWlycyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ncm91cEJ5PWdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZ3JvdXBXaXRoPWdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGFzPWhhcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5oYXNQYXRoPWhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGVhZD1oZWFkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlkZW50aWNhbD1pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaWRlbnRpdHk9aWRlbnRpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlmRWxzZT1pZkVsc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5jPWluYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmNsdWRlcz1pbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmRleEJ5PWluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5kZXhPZj1pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbml0PWluaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW50ZXJzZWN0aW9uPWludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbnRlcnNwZXJzZT1pbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pcz1pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pc0VtcHR5PWlzRW1wdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlzTmlsPWlzTmlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmpvaW49am9pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5qdXh0PWp1eHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMua2V5cz1rZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmxhc3Q9bGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGFzdEluZGV4T2Y9bGFzdEluZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuZ3RoPWxlbmd0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zPWxlbnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc0luZGV4PWxlbnNJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zUGF0aD1sZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc1Byb3A9bGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWFwPW1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBBcnJheT1tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmpJbmRleGVkPW1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmplY3Q9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRjaD1tYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRoTW9kPW1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWF4PW1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeT1tYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeUZuPW1heEJ5Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lYW49bWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tZWRpYW49bWVkaWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlPW1lcmdlUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VBbGw9bWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VEZWVwUmlnaHQ9bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlTGVmdD1tZXJnZUxlZnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VSaWdodD1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlV2l0aD1tZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluPW1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5taW5CeT1taW5CeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluQnlGbj1taW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeT1tb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kaWZ5UGF0aD1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeVBhdGhGbj1tb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kdWxvPW1vZHVsbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW92ZT1tb3ZlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm11bHRpcGx5PW11bHRpcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5lZ2F0ZT1uZWdhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubm9uZT1ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5vdD1ub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm50aD1udGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2JqT2Y9b2JqT2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2Y9b2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub21pdD1vbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm9uPW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5vbmNlPW9uY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3I9b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3Zlcj1vdmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpYWw9cGFydGlhbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXJ0aWFsT2JqZWN0PXBhcnRpYWxPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpdGlvbj1wYXJ0aXRpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uQXJyYXk9cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uT2JqZWN0PXBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRoPXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aEVxPXBhdGhFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aE9yPXBhdGhPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRocz1wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5waWNrPXBpY2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGlja0FsbD1waWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBpcGU9cGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGx1Y2s9cGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJlcGVuZD1wcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb2R1Y3Q9cHJvZHVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wPXByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcEVxPXByb3BFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcElzPXByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wT3I9cHJvcE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb3BTYXRpc2ZpZXM9cHJvcFNhdGlzZmllcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wcz1wcm9wcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yYW5nZT1yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVkdWNlPXJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VGbj1yZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VTdG9wcGVyPXJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVqZWN0PXJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBlYXQ9cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBsYWNlPXJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmV2ZXJzZT1yZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNldD1zZXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc2xpY2U9c2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc29ydD1zb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zb3J0Qnk9c29ydEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0PXNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0QXQ9c3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zcGxpdEV2ZXJ5PXNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3BsaXRXaGVuPXNwbGl0V2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3RhcnRzV2l0aD1zdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1YnRyYWN0PXN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1bT1zdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3ltbWV0cmljRGlmZmVyZW5jZT1zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhaWw9dGFpbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudGFrZT10YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0PXRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0V2hpbGU9dGFrZUxhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50YWtlV2hpbGU9dGFrZVdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhcD10YXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRlc3Q9dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50aW1lcz10aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b0xvd2VyPXRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudG9QYWlycz10b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRvU3RyaW5nPXRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b1VwcGVyPXRvVXBwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJhbnNwb3NlPXRyYW5zcG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50cmltPXRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJ5Q2F0Y2g9dHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHlwZT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51bmFwcGx5PXVuYXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pb249dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcT11bmlxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVuaXFCeT11bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcVdpdGg9dW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVubGVzcz11bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW53aW5kPXVud2luZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51cGRhdGU9dXBkYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVwZGF0ZUZuPXVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZhbHVlcz12YWx1ZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZpZXc9dmlldyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aGVuPXdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmU9d2hlcmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVBbnk9d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVFcT13aGVyZUVxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aXRob3V0PXdpdGhvdXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMueG9yPXhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy56aXA9emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnppcE9iaj16aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuemlwV2l0aD16aXBXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Y29uc3QgY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT57YS5leHBvcnRzLmNzb3VuZFNldE1pZGlDYWxsYmFja3MoYil9LGNzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMpPT57Y29uc3Qge2J1ZmZlcjpkfT1hLndhc2kubWVtb3J5LGU9YS5leHBvcnRzLmNzb3VuZEdldE1JRElEZXZMaXN0KGIsdm9pZCAwLGM/MTowKTtpZigwPT09ZSlyZXR1cm5bXTtjb25zdCBmPXNpemVvZlN0cnVjdCQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXMoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzKSxnPWEuZXhwb3J0cy5hbGxvY0NzTWlkaURldmljZVN0cnVjdChlKTthLmV4cG9ydHMuY3NvdW5kR2V0TUlESURldkxpc3QoYixnLGM/MTowKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KGQsZyxmKmUpO2I9cmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygwLAplKS5tYXAoaz0+c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGguc3ViYXJyYXkoaypmLGYpKSk7YS5leHBvcnRzLmZyZWVDc01pZGlEZXZpY2VTdHJ1Y3QoZyk7cmV0dXJuIGJ9O2Nzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLnRvU3RyaW5nPSgpPT4iZ2V0TUlESURldkxpc3QgPSBhc3luYyAoaXNPdXRwdXQpID0+IE9iamVjdDsiOwpjb25zdCBjc291bmRHZXRSdE1pZGlOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldFJ0TWlkaU5hbWUoYik7Yz1uZXcgVWludDhBcnJheShjLGIsMTI4KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS50b1N0cmluZz0oKT0+ImdldFJ0TWlkaU5hbWUgPSBhc3luYyAoKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldE1pZGlPdXRGaWxlTmFtZShiKTtjPW5ldyBVaW50OEFycmF5KGMsYiwxMjgpO2ImJjA8Yi5sZW5ndGgmJmZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7cmV0dXJuIHRyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGMpKXx8IiJ9LF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT5hLmV4cG9ydHMuaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoYiksY3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMsZCxlKT0+e2EuZXhwb3J0cy5wdXNoTWlkaU1lc3NhZ2UoYiwKYyxkLGUpfTtjc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkudG9TdHJpbmc9KCk9PiJtaWRpTWVzc2FnZSA9IGFzeW5jIChzdGF0dXMsIGRhdGExLCBkYXRhMikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk9e307bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQ9X2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpO21vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkuY3NvdW5kR2V0TUlESURldkxpc3Q9Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRHZXRNaWRpT3V0RmlsZU5hbWU9Y3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpOwptb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZEdldFJ0TWlkaU5hbWU9Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaTttb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZFB1c2hNaWRpTWVzc2FnZT1jc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRTZXRNaWRpQ2FsbGJhY2tzPWNzb3VuZFNldE1pZGlDYWxsYmFja3MkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7Y29uc3QgY3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJpbnB1dE1lc3NhZ2UgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlQXN5bmMoYixjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBifTtjc291bmRJbnB1dE1lc3NhZ2VBc3luYyQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLnRvU3RyaW5nPSgpPT4iaW5wdXRNZXNzYWdlQXN5bmMgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0Q29udHJvbENoYW5uZWxXYXNpKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+ImdldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2EuZXhwb3J0cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbChiLGMsZCk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKX07Y3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lLCB2YWx1ZSkgPT4gdm9pZDsiOwpjb25zdCBjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0U3RyaW5nQ2hhbm5lbFdhc2koYixjKTtjb25zdCBkPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGIpO3JldHVybiBkfTtjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJnZXRTdHJpbmdDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kU2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzPWE9PihiLGMsZCk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZD1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGQpO2EuZXhwb3J0cy5jc291bmRTZXRTdHJpbmdDaGFubmVsKGIsYyxkKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsZCl9O2Nzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldFN0cmluZ0NoYW5uZWwgPSBhc3luYyAoY2hhbm5lbE5hbWUsIHZhbHVlKSA9PiB2b2lkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldENvbnRyb2xDaGFubmVsPWNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldFN0cmluZ0NoYW5uZWw9Y3NvdW5kR2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRJbnB1dE1lc3NhZ2U9Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZElucHV0TWVzc2FnZUFzeW5jPWNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7Cm1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbD1jc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRTdHJpbmdDaGFubmVsPWNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cztjb25zdCBjc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz1hPT5iPT57dmFyIHtidWZmZXI6Y309YS53YXNpLm1lbW9yeTtiPWEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0T3V0cHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXROYW1lID0gYXN5bmMgKCkgPT4gU3RyaW5nOyI7CmNvbnN0IGNzb3VuZEdldElucHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW89YT0+Yj0+e3ZhciB7YnVmZmVyOmN9PWEud2FzaS5tZW1vcnk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0SW5wdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby50b1N0cmluZz0oKT0+ImdldElucHV0TmFtZSA9IGFzeW5jIChjc291bmQpID0+IFN0cmluZzsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz17fTttb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby5jc291bmRHZXRJbnB1dE5hbWU9Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbzsKbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8uY3NvdW5kR2V0T3V0cHV0TmFtZT1jc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbztjb25zdCBjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYT1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2Q9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtiPWEuZXhwb3J0cy5jc291bmRBcHBlbmRFbnYoYixjLGQpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtyZXR1cm4gYn07Y3NvdW5kQXBwZW5kRW52JCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEudG9TdHJpbmc9KCk9PiJhcHBlbmRFbnYgPSBhc3luYyAoY3NvdW5kLCB2YXJpYWJsZSwgdmFsdWUpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTaG91bGREYWVtb25pemUoYik7CnZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmE9e307bW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhLmNzb3VuZEFwcGVuZEVudj1jc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYTttb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEuY3NvdW5kU2hvdWxkRGFlbW9uaXplPWNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhO2NvbnN0IGNzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZElzU2NvcmVQZW5kaW5nKGIpO2Nzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJpc1Njb3JlUGVuZGluZyA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kU2V0U2NvcmVQZW5kaW5nKGIsYyk7Y3NvdW5kU2V0U2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJzZXRTY29yZVBlbmRpbmcgPSBhc3luYyAocGVuZGluZykgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFJlYWRTY29yZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4icmVhZFNjb3JlID0gYXN5bmMgKHNjb3JlKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRTY29yZVRpbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2NvcmVUaW1lKGIpO2Nzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4iZ2V0U2NvcmVUaW1lID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMoYik7Y3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJnZXRTY29yZU9mZnNldFNlY29uZHMgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyhiLGMpO2Nzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4ic2V0U2NvcmVPZmZzZXRTZWNvbmRzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFJld2luZFNjb3JlKGIpO2Nzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJyZXdpbmRTY29yZSA9IGFzeW5jICgpID0+IHVuZGVmaW5lZDsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9e307bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcz1jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kR2V0U2NvcmVUaW1lPWNzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nOwptb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kSXNTY29yZVBlbmRpbmc9Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kUmVhZFNjb3JlPWNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRSZXdpbmRTY29yZT1jc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRTZXRTY29yZU9mZnNldFNlY29uZHM9Y3NvdW5kU2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc7bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZFNldFNjb3JlUGVuZGluZz1jc291bmRTZXRTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZztjb25zdCBjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVMZW5ndGgoYixjKTtjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVMZW5ndGggPSBhc3luYyAodGFibGVOdW0pID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+YS5leHBvcnRzLmNzb3VuZFRhYmxlR2V0KGIsYyxkKTtjc291bmRUYWJsZUdldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVHZXQgPSBhc3luYyAodGFibGVOdW0sIHRhYmxlSW5kZXgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkLGUpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVTZXQoYixjLGQsZSk7CmNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJ0YWJsZVNldCA9IGFzeW5jICh0YWJsZU51bSwgdGFibGVJbmRleCwgdmFsdWUpID0+IHVuZGVmaW5lZDsiO2NvbnN0IGNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+e2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jRmxvYXRBcnJheShkLmxlbmd0aCk7KG5ldyBGbG9hdDY0QXJyYXkoYS53YXNpLm1lbW9yeS5idWZmZXIsZSxkLmxlbmd0aCkpLnNldChkKTthLmV4cG9ydHMuY3NvdW5kVGFibGVDb3B5SW4oYixjLGUpO2EuZXhwb3J0cy5mcmVlRmxvYXRBcnJheU1lbShlKX07Y3NvdW5kVGFibGVDb3B5SW4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS50b1N0cmluZz0oKT0+InRhYmxlQ29weUluID0gYXN5bmMgKHRhYmxlTnVtLCBmbG9hdDY0QXJyYXkpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+e3ZhciBkPWEuZXhwb3J0cy5jc291bmRUYWJsZUxlbmd0aChiLGMpO2lmKDA8ZCl7Y29uc3QgZT1hLmV4cG9ydHMuYWxsb2NGbG9hdEFycmF5KGQpO2EuZXhwb3J0cy5jc291bmRUYWJsZUNvcHlPdXQoYixjLGUpOyh7YnVmZmVyOmJ9PWEud2FzaS5tZW1vcnkpO2Q9bmV3IEZsb2F0NjRBcnJheShiLGUsZCk7YS5leHBvcnRzLmZyZWVGbG9hdEFycmF5TWVtKGUpO3JldHVybiBGbG9hdDY0QXJyYXkuZnJvbShkKX19O2Nzb3VuZFRhYmxlQ29weU91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVDb3B5T3V0ID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7Y29uc3QgY3NvdW5kR2V0VGFibGUkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKY3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9Y3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc7Y29uc3QgY3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyk9Pntjb25zdCBkPWEuZXhwb3J0cy5hbGxvY0Zsb2F0QXJyYXkoMTAyNCk7YS5leHBvcnRzLmNzb3VuZEdldFRhYmxlQXJncyhiLGQsYyk7KHtidWZmZXI6Yn09YS53YXNpLm1lbW9yeSk7Yj1uZXcgRmxvYXQ2NEFycmF5KGIsZCwxMDI0KTthLmV4cG9ydHMuZnJlZUZsb2F0QXJyYXlNZW0oZCk7cmV0dXJuIGJ9O2Nzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0VGFibGVBcmdzID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7CmNvbnN0IGNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJpc05hbWVkR0VOID0gYXN5bmMgKHRhYmxlTnVtKSA9PiBudW1iZXI7Ijtjb25zdCBjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT57dmFyIGQ9YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtpZigwPGQpe2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jU3RyaW5nTWVtKGQpO2EuZXhwb3J0cy5jc291bmRHZXROYW1lZEdFTihiLGUsYyxkKTsoe2J1ZmZlcjpifT1hLndhc2kubWVtb3J5KTtkPW5ldyBVaW50OEFycmF5KGIsZSxkKTtyZXR1cm4gdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhkKX19Owpjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0TmFtZWRHRU4gPSBhc3luYyAodGFibGVOdW0pID0+ID9zdHJpbmc7Ijt2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPXt9O21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXROYW1lZEdFTj1jc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXRUYWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kR2V0VGFibGVBcmdzPWNzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRJc05hbWVkR0VOPWNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weUluPWNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU7bW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weU91dD1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVHZXQ9Y3NvdW5kVGFibGVHZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVMZW5ndGg9Y3NvdW5kVGFibGVMZW5ndGgkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVTZXQ9Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTtmdW5jdGlvbiB3cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyxkKT0+e2I9InN0cmluZyI9PT10eXBlb2YgZD9lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2RlKGQpOmQ7YS53YXNpLndyaXRlRmlsZShjLGIpfX13cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCwgZGF0YSkgPT4gdm9pZCI7ZnVuY3Rpb24gYXBwZW5kRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjLGQpPT57Yj0ic3RyaW5nIj09PXR5cGVvZiBkP2VuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoZCk6ZDthLndhc2kuYXBwZW5kRmlsZShjLGIpfX1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgsIGRhdGEpID0+IHZvaWQiOwpmdW5jdGlvbiByZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLnJlYWRGaWxlKGMpfXJlYWRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+ID9VaW50OEFycmF5IjtmdW5jdGlvbiB1bmxpbmskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS51bmxpbmsoYyl9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO2Z1bmN0aW9uIHJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS5yZWFkZGlyKGMpfXJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCkgPT4gc3RyaW5nW10iOwpmdW5jdGlvbiBta2RpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLm1rZGlyKGMpfW1rZGlyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzPXt9O21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMuYXBwZW5kRmlsZT1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMubWtkaXI9bWtkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy5yZWFkRmlsZT1yZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnJlYWRkaXI9cmVhZGRpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy51bmxpbms9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMud3JpdGVGaWxlPXdyaXRlRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcztjb25zdCBhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kPXtjc291bmRDcmVhdGU6Y3NvdW5kQ3JlYXRlJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmREZXN0cm95OmNzb3VuZERlc3Ryb3kkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZEdldEFQSVZlcnNpb246Y3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24sY3NvdW5kR2V0VmVyc2lvbjpjc291bmRHZXRWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmRJbml0aWFsaXplOmNzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZFBhcnNlT3JjOmNzb3VuZFBhcnNlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kQ29tcGlsZVRyZWU6Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRDb21waWxlT3JjOmNzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSwKY3NvdW5kRXZhbENvZGU6Y3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRTdGFydDpjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2Q6Y3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2RUZXh0OmNzb3VuZENvbXBpbGVDc2RUZXh0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybTpjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybUtzbXBzOmNzb3VuZFBlcmZvcm1Lc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFBlcmZvcm1CdWZmZXI6Y3NvdW5kUGVyZm9ybUJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFN0b3A6Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLApjc291bmRDbGVhbnVwOmNzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRSZXNldDpjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZEdldFNyOmNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRLcjpjc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0S3NtcHM6Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sczpjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sc0lucHV0OmNzb3VuZEdldE5jaG5sc0lucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXQwZEJGUzpjc291bmRHZXQwZEJGUyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0QTQ6Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLApjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXM6Y3NvdW5kR2V0Q3VycmVudFRpbWVTYW1wbGVzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRTaXplT2ZNWUZMVDpjc291bmRHZXRTaXplT2ZNWUZMVCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0T3B0aW9uOmNzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0UGFyYW1zOmNzb3VuZFNldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0UGFyYW1zOmNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0RGVidWc6Y3NvdW5kR2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZFNldERlYnVnOmNzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRJbnB1dEJ1ZmZlclNpemU6Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbywKY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZTpjc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRJbnB1dEJ1ZmZlcjpjc291bmRHZXRJbnB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0T3V0cHV0QnVmZmVyOmNzb3VuZEdldE91dHB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0U3Bpbjpjc291bmRHZXRTcGluJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRTcG91dDpjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0TUlESURldkxpc3Q6Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kU2V0TWlkaUNhbGxiYWNrczpjc291bmRTZXRNaWRpQ2FsbGJhY2tzJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLGNzb3VuZEdldFJ0TWlkaU5hbWU6Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSwKY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lOmNzb3VuZEdldE1pZGlPdXRGaWxlTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSxjc291bmRQdXNoTWlkaU1lc3NhZ2U6Y3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dDpfaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kSW5wdXRNZXNzYWdlOmNzb3VuZElucHV0TWVzc2FnZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLGNzb3VuZElucHV0TWVzc2FnZUFzeW5jOmNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMsY3NvdW5kR2V0Q29udHJvbENoYW5uZWw6Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRDb250cm9sQ2hhbm5lbDpjc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLApjc291bmRHZXRTdHJpbmdDaGFubmVsOmNzb3VuZEdldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRTdHJpbmdDaGFubmVsOmNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRHZXRJbnB1dE5hbWU6Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbyxjc291bmRHZXRPdXRwdXROYW1lOmNzb3VuZEdldE91dHB1dE5hbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRnZW5lcmFsX2lvLGNzb3VuZEFwcGVuZEVudjpjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYSxjc291bmRTaG91bGREYWVtb25pemU6Y3NvdW5kU2hvdWxkRGFlbW9uaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEsY3NvdW5kSXNTY29yZVBlbmRpbmc6Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZywKY3NvdW5kU2V0U2NvcmVQZW5kaW5nOmNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFJlYWRTY29yZTpjc291bmRSZWFkU2NvcmUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRHZXRTY29yZVRpbWU6Y3NvdW5kR2V0U2NvcmVUaW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcsY3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzOmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kczpjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRSZXdpbmRTY29yZTpjc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFRhYmxlTGVuZ3RoOmNzb3VuZFRhYmxlTGVuZ3RoJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsCmNzb3VuZFRhYmxlR2V0OmNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kVGFibGVTZXQ6Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRUYWJsZUNvcHlJbjpjc291bmRUYWJsZUNvcHlJbiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLGNzb3VuZFRhYmxlQ29weU91dDpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZTpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZUFyZ3M6Y3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kSXNOYW1lZEdFTjpjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kR2V0TmFtZWRHRU46Y3NvdW5kR2V0TmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxmczptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzfTsKdmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZD1mdW5jdGlvbihhKXtyZXR1cm4gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhbcmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGIsYyk9PmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyxhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kW2NdKGEpLGIpLHt9LGtleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiZnMiKShhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kKSkpLHJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChiLGMpPT5hc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsCmFwaSQkbW9kdWxlJHNyYyRsaWJjc291bmQuZnNbY10oYSksYikse30sa2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMpKV0pfSxtb2R1bGUkc3JjJGxpYmNzb3VuZD17fTttb2R1bGUkc3JjJGxpYmNzb3VuZC5hcGk9YXBpJCRtb2R1bGUkc3JjJGxpYmNzb3VuZDttb2R1bGUkc3JjJGxpYmNzb3VuZC5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZDtjb25zdCBkbGluaXQkJG1vZHVsZSRzcmMkZGxpbml0PShhLGIsYyxkKT0+e2lmKGIuZXhwb3J0cy5jc291bmRNb2R1bGVJbml0KXt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LDApLGc9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7Y29uc3QgaD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKTtsZXQgaz1jLmxlbmd0aDsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRNb2R1bGVDcmVhdGUmJihjLmdyb3coMSksZS52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZSksays9MSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kTW9kdWxlSW5pdCYmKGMuZ3JvdygxKSxmLnZhbHVlPWssYy5zZXQoaywKYi5leHBvcnRzLmNzb3VuZE1vZHVsZUluaXQpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kmJihjLmdyb3coMSksZy52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZUVycm9yQ29kZVRvU3RyaW5nJiYoYy5ncm93KDEpLGgudmFsdWU9ayxjLnNldChrLGIuZXhwb3J0cy5jc291bmRNb2R1bGVFcnJvckNvZGVUb1N0cmluZykpO2EuZXhwb3J0cy5jc291bmRXYXNpTG9hZFBsdWdpbihkLGUsZixnLGgpfWVsc2UgYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8Yi5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQ/KGU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCksZj1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxnPWMubGVuZ3RoLAoiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRfb3Bjb2RlX2luaXQmJihlLnZhbHVlPWcsYy5ncm93KDEpLGMuc2V0KGcsYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdCksZys9MSksImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCYmKGYudmFsdWU9ZyxjLmdyb3coMSksYy5zZXQoZyxiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCkpLGEuZXhwb3J0cy5jc291bmRXYXNpTG9hZE9wY29kZUxpYnJhcnkoZCxmLGUpKTpjb25zb2xlLmVycm9yKCJQbHVnaW4gZG9lc24ndCBleHBvcnQgbmVjZWNjYXJ5IGZ1bmN0aW9ucyB0byBxdWFsaXR5IGFzIGNzb3VuZCBwbHVnaW4uIil9O3ZhciBtb2R1bGUkc3JjJGRsaW5pdD17fTttb2R1bGUkc3JjJGRsaW5pdC5kbGluaXQ9ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdDt2b2lkIDAhPT1nb29nLmdsb2JhbCYmKGdvb2cuZ2xvYmFsPXt9KTtnb29nLmdsb2JhbC5CaWdJbnR8fChnb29nLmdsb2JhbC5CaWdJbnQ9dm9pZCAwPT09QmlnSW50P051bWJlcjpCaWdJbnQpOwpjb25zdCBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9FQUREUklOVVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMsV0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NSxXQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRUFMUkVBRFkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NyxXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTgsV0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTksV0FTSV9FQlVTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTAsV0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTEsV0FTSV9FQ0hJTEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTIsV0FTSV9FQ09OTkFCT1JURUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9FQ09OTlJFRlVTRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTQsV0FTSV9FQ09OTlJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE1LFdBU0lfRURFQURMSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNixXQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNyxXQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTgsV0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9FRVhJU1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjIwLFdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIxLFdBU0lfRUZCSUckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjIsV0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9FSURSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNCxXQVNJX0VJTFNFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNSxXQVNJX0VJTlBST0dSRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI2LFdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjcsV0FTSV9FSU5WQUwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjgsV0FTSV9FSU8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjksV0FTSV9FSVNDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMwLFdBU0lfRUlTRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQozMSxXQVNJX0VMT09QJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMyLFdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMzLFdBU0lfRU1MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTM0LFdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzUsV0FTSV9FTVVMVElIT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzYsV0FTSV9FTkFNRVRPT0xPTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzcsV0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOCxXQVNJX0VORVRSRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOSxXQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQwLFdBU0lfRU5GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQxLApXQVNJX0VOT0JVRlMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDIsV0FTSV9FTk9ERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDMsV0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDQsV0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ1LFdBU0lfRU5PTENLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ2LFdBU0lfRU5PTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00NyxXQVNJX0VOT01FTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OCxXQVNJX0VOT01TRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OSxXQVNJX0VOT1BST1RPT1BUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUwLFdBU0lfRU5PU1BDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUxLFdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQo1MixXQVNJX0VOT1RDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUzLFdBU0lfRU5PVERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NCxXQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NSxXQVNJX0VOT1RSRUNPVkVSQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NixXQVNJX0VOT1RTT0NLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTU3LFdBU0lfRU5PVFNVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OCxXQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OSxXQVNJX0VOWElPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYwLFdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYxLFdBU0lfRU9XTkVSREVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KNjIsV0FTSV9FUEVSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02MyxXQVNJX0VQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY0LFdBU0lfRVBST1RPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY1LFdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY2LFdBU0lfRVBST1RPVFlQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02NyxXQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02OCxXQVNJX0VST0ZTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY5LFdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTcwLFdBU0lfRVNSQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzEsV0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzIsV0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjczLFdBU0lfRVRYVEJTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03NCxXQVNJX0VYREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTc1LFdBU0lfRU5PVENBUEFCTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzYsV0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TSUdBTFJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TSUdCVVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX1NJR0NITEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfU0lHSFVQJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYsV0FTSV9TSUdJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjcsV0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1NJR0tJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OSxXQVNJX1NJR1BJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTAsV0FTSV9TSUdRVUlUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTExLFdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xMixXQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE0LFdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNSxXQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTYsV0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE3LFdBU0lfU0lHVFRPVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTgsV0FTSV9TSUdVUkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9TSUdVU1IxJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIwLFdBU0lfU0lHVVNSMiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMSxXQVNJX1NJR1ZUQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMixXQVNJX1NJR1hDUFUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9TSUdYRlNaJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI0LFdBU0lfRklMRVRZUEVfVU5LTk9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRklMRVRZUEVfQkxPQ0tfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjMsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRklMRVRZUEVfU1lNQk9MSUNfTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03LFdBU0lfRkRGTEFHX0FQUEVORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRkRGTEFHX0RTWU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GREZMQUdfTk9OQkxPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz04LFdBU0lfRkRGTEFHX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjE2LFdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEpLFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMiksV0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0KSxXQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgpLFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYpLFdBU0lfUklHSFRfRkRfVEVMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzIpLFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCg2NCksV0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEyOCksV0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjU2KSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoNTEyKSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwMjQpLFdBU0lfUklHSFRfUEFUSF9MSU5LX1NPVVJDRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjA0OCksV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQpnb29nLmdsb2JhbC5CaWdJbnQoNDA5NiksV0FTSV9SSUdIVF9QQVRIX09QRU4kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgxOTIpLFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYzODQpLFdBU0lfUklHSFRfUEFUSF9SRUFETElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzI3NjgpLFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg2NTUzNiksV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEzMTA3MiksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KZ29vZy5nbG9iYWwuQmlnSW50KDI2MjE0NCksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg1MjQyODgpLFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwNDg1NzYpLFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgyMDk3MTUyKSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0MTk0MzA0KSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoODM4ODYwOCksV0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCgxNjc3NzIxNiksV0FTSV9SSUdIVF9QQVRIX1JFTU9WRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDMzNTU0NDMyKSxXQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDY3MTA4ODY0KSxXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgxMzQyMTc3MjgpLFdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjY4NDM1NDU2KSxSSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX0ZEX1NFRUskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FEVklTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FMTE9DQVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfT1BFTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFQURMSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQ0hBUkFDVEVSX0RFVklDRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMsUklHSFRTX0NIQVJBQ1RFUl9ERVZJQ0VfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KV0FTSV9SSUdIVF9GRF9EQVRBU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9URUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMCksUklHSFRTX0RJUkVDVE9SWV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19ESVJFQ1RPUllfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8UklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cywKUklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX0VWRU5UVFlQRV9DTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0VWRU5UVFlQRV9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfRklMRVNUQVRfU0VUX0FUSU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjEsV0FTSV9GSUxFU1RBVF9TRVRfQVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9GSUxFU1RBVF9TRVRfTVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX09fQ1JFQVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX09fVFJVTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1BSRU9QRU5UWVBFX0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRElSQ09PS0lFX1NUQVJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjAsV0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9XSEVOQ0VfQ1VSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI7dmFyIG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9e307bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQUxMPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19ESVJFQ1RPUllfQkFTRT1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfRElSRUNUT1JZX0lOSEVSSVRJTkc9UklHSFRTX0RJUkVDVE9SWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRT1SSUdIVFNfUkVHVUxBUl9GSUxFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfUkVHVUxBUl9GSUxFX0lOSEVSSVRJTkc9UklHSFRTX1JFR1VMQVJfRklMRV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1NPQ0tFVF9CQVNFPVJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19TT0NLRVRfSU5IRVJJVElORz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1RUWV9CQVNFPVJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfVFRZX0lOSEVSSVRJTkc9UklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9DTE9DS19NT05PVE9OSUM9V0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRD1XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfQ0xPQ0tfUkVBTFRJTUU9V0FTSV9DTE9DS19SRUFMVElNRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1RIUkVBRF9DUFVUSU1FX0lEPVdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0RJUkNPT0tJRV9TVEFSVD1XQVNJX0RJUkNPT0tJRV9TVEFSVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRTJCSUc9V0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFDQ0VTPVdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUREUklOVVNFPVdBU0lfRUFERFJJTlVTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBRERSTk9UQVZBSUw9V0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUZOT1NVUFBPUlQ9V0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBR0FJTj1XQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFMUkVBRFk9V0FTSV9FQUxSRUFEWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUJBREY9V0FTSV9FQkFERiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VCQURNU0c9V0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQlVTWT1XQVNJX0VCVVNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ0FOQ0VMRUQ9V0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VDSElMRD1XQVNJX0VDSElMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5BQk9SVEVEPVdBU0lfRUNPTk5BQk9SVEVEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5SRUZVU0VEPVdBU0lfRUNPTk5SRUZVU0VEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ09OTlJFU0VUPVdBU0lfRUNPTk5SRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURFQURMSz1XQVNJX0VERUFETEskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VERVNUQUREUlJFUT1XQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURPTT1XQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRFFVT1Q9V0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VFWElTVD1XQVNJX0VFWElTVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUZBVUxUPVdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRkJJRz1XQVNJX0VGQklHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSE9TVFVOUkVBQ0g9V0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJRFJNPVdBU0lfRUlEUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSUxTRVE9V0FTSV9FSUxTRVEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlBST0dSRVNTPVdBU0lfRUlOUFJPR1JFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlRSPVdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlZBTD1XQVNJX0VJTlZBTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUlPPVdBU0lfRUlPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSVNDT05OPVdBU0lfRUlTQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJU0RJUj1XQVNJX0VJU0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUxPT1A9V0FTSV9FTE9PUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU1GSUxFPVdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTUxJTks9V0FTSV9FTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNU0dTSVpFPVdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNVUxUSUhPUD1XQVNJX0VNVUxUSUhPUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOQU1FVE9PTE9ORz1XQVNJX0VOQU1FVE9PTE9ORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVERPV049V0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVFJFU0VUPVdBU0lfRU5FVFJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkVUVU5SRUFDSD1XQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkZJTEU9V0FTSV9FTkZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9CVUZTPVdBU0lfRU5PQlVGUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PREVWPVdBU0lfRU5PREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9FTlQ9V0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0VYRUM9V0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9MQ0s9V0FTSV9FTk9MQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0xJTks9V0FTSV9FTk9MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PTUVNPVdBU0lfRU5PTUVNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9NU0c9V0FTSV9FTk9NU0ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1BST1RPT1BUPVdBU0lfRU5PUFJPVE9PUFQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1NQQz1XQVNJX0VOT1NQQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PU1lTPVdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENBUEFCTEU9V0FTSV9FTk9UQ0FQQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENPTk49V0FTSV9FTk9UQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVERJUj1XQVNJX0VOT1RESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RFTVBUWT1XQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFJFQ09WRVJBQkxFPVdBU0lfRU5PVFJFQ09WRVJBQkxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNPQ0s9V0FTSV9FTk9UU09DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNVUD1XQVNJX0VOT1RTVVAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RUWT1XQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5YSU89V0FTSV9FTlhJTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9WRVJGTE9XPVdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9XTkVSREVBRD1XQVNJX0VPV05FUkRFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQRVJNPVdBU0lfRVBFUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQSVBFPVdBU0lfRVBJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQUk9UTz1XQVNJX0VQUk9UTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPTk9TVVBQT1JUPVdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPVFlQRT1XQVNJX0VQUk9UT1RZUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VSQU5HRT1XQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVJPRlM9V0FTSV9FUk9GUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVNQSVBFPVdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1JDSD1XQVNJX0VTUkNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1RBTEU9V0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1VDQ0VTUz1XQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVElNRURPVVQ9V0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VUWFRCU1k9V0FTSV9FVFhUQlNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfQ0xPQ0s9V0FTSV9FVkVOVFRZUEVfQ0xPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VWRU5UVFlQRV9GRF9SRUFEPVdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfRkRfV1JJVEU9V0FTSV9FVkVOVFRZUEVfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VYREVWPVdBU0lfRVhERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19BUFBFTkQ9V0FTSV9GREZMQUdfQVBQRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GREZMQUdfRFNZTkM9V0FTSV9GREZMQUdfRFNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19OT05CTE9DSz1XQVNJX0ZERkxBR19OT05CTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19SU1lOQz1XQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRkRGTEFHX1NZTkM9V0FTSV9GREZMQUdfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU09V0FTSV9GSUxFU1RBVF9TRVRfQVRJTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFU1RBVF9TRVRfTVRJTT1XQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0U9V0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX0NIQVJBQ1RFUl9ERVZJQ0U9V0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlk9V0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEU9V0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9TVFJFQU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NZTUJPTElDX0xJTks9V0FTSV9GSUxFVFlQRV9TWU1CT0xJQ19MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfVU5LTk9XTj1XQVNJX0ZJTEVUWVBFX1VOS05PV04kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fQ1JFQVQ9V0FTSV9PX0NSRUFUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0RJUkVDVE9SWT1XQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0VYQ0w9V0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fVFJVTkM9V0FTSV9PX1RSVU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUFJFT1BFTlRZUEVfRElSPVdBU0lfUFJFT1BFTlRZUEVfRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9BRFZJU0U9V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0FMTE9DQVRFPVdBU0lfUklHSFRfRkRfQUxMT0NBVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0RBVEFTWU5DPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1M9V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUPVdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRT1XQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVM9V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1JFQUQ9V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfUkVBRERJUj1XQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1NFRUs9V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9TWU5DPVdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfVEVMTD1XQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1dSSVRFPVdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlk9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVD1XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0U9V0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUPVdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9PUEVOPVdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRUFETElOSz1XQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWT1XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFPVdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQ9V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1NZTUxJTks9V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURT1XQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOPVdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0FCUlQ9V0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdBTFJNPVdBU0lfU0lHQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQlVTPVdBU0lfU0lHQlVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdDSExEPVdBU0lfU0lHQ0hMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQ09OVD1XQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0ZQRT1XQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0hVUD1XQVNJX1NJR0hVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHSUxMPVdBU0lfU0lHSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdJTlQ9V0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0tJTEw9V0FTSV9TSUdLSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdQSVBFPVdBU0lfU0lHUElQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHUVVJVD1XQVNJX1NJR1FVSVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdTRUdWPVdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHU1RPUD1XQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RFUk09V0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdUUkFQPVdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFNUUD1XQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RUSU49V0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFRPVT1XQVNJX1NJR1RUT1UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VSRz1XQVNJX1NJR1VSRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVVNSMT1XQVNJX1NJR1VTUjEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VTUjI9V0FTSV9TSUdVU1IyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdWVEFMUk09V0FTSV9TSUdWVEFMUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdYQ1BVPVdBU0lfU0lHWENQVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHWEZTWj1XQVNJX1NJR1hGU1okJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NUREVSUl9GSUxFTk89V0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TVERJTl9GSUxFTk89V0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NURE9VVF9GSUxFTk89V0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfV0hFTkNFX0NVUj1XQVNJX1dIRU5DRV9DVVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1dIRU5DRV9FTkQ9V0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9XSEVOQ0VfU0VUPVdBU0lfV0hFTkNFX1NFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cztnb29nLmRlYnVnPXt9O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IoYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IpO2Vsc2V7Y29uc3QgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTt2b2lkIDAhPT1iJiYodGhpcy5jYXVzZT1iKTt0aGlzLnJlcG9ydEVycm9yVG9TZXJ2ZXI9ITB9Z29vZy5pbmhlcml0cyhtb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLEVycm9yKTttb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7Z29vZy5kZWJ1Zy5FcnJvcj1tb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yO2dvb2cuZG9tPXt9O2dvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9O2dvb2cuYXNzZXJ0cz17fTtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX0Fzc2VydGlvbkVycm9yKGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvci5jYWxsKHRoaXMsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYikpO3RoaXMubWVzc2FnZVBhdHRlcm49YX1nb29nLmluaGVyaXRzKG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IsbW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvcik7Z29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yPW1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3I7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvci5wcm90b3R5cGUubmFtZT0iQXNzZXJ0aW9uRXJyb3IiOwpnb29nLmFzc2VydHMuREVGQVVMVF9FUlJPUl9IQU5ETEVSPWZ1bmN0aW9uKGEpe3Rocm93IGE7fTtsZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19lcnJvckhhbmRsZXJfPWdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYil7YT1hLnNwbGl0KCIlcyIpO2xldCBjPSIiO2NvbnN0IGQ9YS5sZW5ndGgtMTtmb3IobGV0IGU9MDtlPGQ7ZSsrKWMrPWFbZV0rKGU8Yi5sZW5ndGg/YltlXToiJXMiKTtyZXR1cm4gYythW2RdfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZShhLGIsYyxkKXtsZXQgZT0iQXNzZXJ0aW9uIGZhaWxlZCIsZjtjPyhlKz0iOiAiK2MsZj1kKTphJiYoZSs9IjogIithLGY9Yik7YT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiIitlLGZ8fFtdKTttb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8oYSl9Z29vZy5hc3NlcnRzLnNldEVycm9ySGFuZGxlcj1mdW5jdGlvbihhKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl89YSl9Owpnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiIixudWxsLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Z29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cz1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1hJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgdG8gZXhpc3Q6ICVzLiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8obmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IoIkZhaWx1cmUiKyhhPyI6ICIrYToiIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSl9O2dvb2cuYXNzZXJ0cy5hc3NlcnROdW1iZXI9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIm51bWJlciIhPT10eXBlb2YgYSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG51bWJlciBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJzdHJpbmciIT09dHlwZW9mIGEmJm1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTtnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdD1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9O2dvb2cuYXNzZXJ0cy5hc3NlcnRBcnJheT1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhQXJyYXkuaXNBcnJheShhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIGFycmF5IGJ1dCBnb3QgJXM6ICVzLiIsW2dvb2cudHlwZU9mKGEpLGFdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5hc3NlcnRCb29sZWFuPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJib29sZWFuIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgYm9vbGVhbiBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChhKSYmYS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIEVsZW1lbnQgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oYSxiLGMsZCl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8YSBpbnN0YW5jZW9mIGJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBpbnN0YW5jZW9mICVzIGJ1dCBnb3QgJXMuIixbbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19nZXRUeXBlKGIpLG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKV0sYyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMykpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Im51bWJlciI9PXR5cGVvZiBhJiZpc0Zpbml0ZShhKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2EuZGlzcGxheU5hbWV8fGEubmFtZXx8InVua25vd24gdHlwZSBuYW1lIjphIGluc3RhbmNlb2YgT2JqZWN0P2EuY29uc3RydWN0b3IuZGlzcGxheU5hbWV8fGEuY29uc3RydWN0b3IubmFtZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOm51bGw9PT1hPyJudWxsIjp0eXBlb2YgYX07Z29vZy5hcnJheT17fTtnb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTPWdvb2cuVFJVU1RFRF9TSVRFO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVI7Z29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfWdvb2cuYXJyYXkucGVlaz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrO2dvb2cuYXJyYXkubGFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbmRleE9mPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5tYXgoMCxhLmxlbmd0aCtjKTpjO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuInN0cmluZyIhPT10eXBlb2YgYnx8MSE9Yi5sZW5ndGg/LTE6YS5pbmRleE9mKGIsYyk7Zm9yKDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtnb29nLmFycmF5LmluZGV4T2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbGFzdEluZGV4T2Y9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYSxiLG51bGw9PWM/YS5sZW5ndGgtMTpjKX06ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbD09Yz9hLmxlbmd0aC0xOmM7MD5jJiYoYz1NYXRoLm1heCgwLGEubGVuZ3RoK2MpKTtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiJzdHJpbmciIT09dHlwZW9mIGJ8fDEhPWIubGVuZ3RoPy0xOmEubGFzdEluZGV4T2YoYixjKTtmb3IoOzA8PWM7Yy0tKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9Owpnb29nLmFycmF5Lmxhc3RJbmRleE9mPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2xhc3RJbmRleE9mO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2g9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpfTtnb29nLmFycmF5LmZvckVhY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsYixjKXt2YXIgZD1hLmxlbmd0aDtjb25zdCBlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IoLS1kOzA8PWQ7LS1kKWQgaW4gZSYmYi5jYWxsKGMsZVtkXSxkLGEpfWdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2hSaWdodDsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmZpbHRlcik/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPVtdO2xldCBmPTA7Y29uc3QgZz0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBoPTA7aDxkO2grKylpZihoIGluIGcpe2NvbnN0IGs9Z1toXTtiLmNhbGwoYyxrLGgsYSkmJihlW2YrK109ayl9cmV0dXJuIGV9O2dvb2cuYXJyYXkuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbHRlcjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbWFwPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9InN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKTphO2ZvcihsZXQgZz0wO2c8ZDtnKyspZyBpbiBmJiYoZVtnXT1iLmNhbGwoYyxmW2ddLGcsYSkpO3JldHVybiBlfTtnb29nLmFycmF5Lm1hcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9tYXA7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZT1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYobW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfQVNTVU1FX05BVElWRV9GVU5DVElPTlN8fEFycmF5LnByb3RvdHlwZS5yZWR1Y2UpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2QmJihiPWdvb2cuYmluZChiLGQpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMsZCl7bGV0IGU9Yzttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoKGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9Yik7ZCYmKGI9Z29vZy5iaW5kKGIsZCkpO3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjLGQpe2xldCBlPWM7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1cm4hMX07Z29vZy5hcnJheS5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2V2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmV2ZXJ5KT9mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1hLmxlbmd0aCk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJiFiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuITE7cmV0dXJuITB9O2dvb2cuYXJyYXkuZXZlcnk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXZlcnk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvdW50KGEsYixjKXtsZXQgZD0wO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYsZyl7Yi5jYWxsKGMsZSxmLGcpJiYrK2R9LGMpO3JldHVybiBkfWdvb2cuYXJyYXkuY291bnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY291bnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZChhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleChhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWlmKGYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpKXJldHVybiBmO3JldHVybi0xfWdvb2cuYXJyYXkuZmluZEluZGV4PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kUmlnaHQoYSxiLGMpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZEluZGV4UmlnaHQoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZFJpZ2h0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXhSaWdodChhLGIsYyl7dmFyIGQ9YS5sZW5ndGg7Y29uc3QgZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDswPD1kO2QtLSlpZihkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleFJpZ2h0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zKGEsYil7cmV0dXJuIDA8PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxiKX1nb29nLmFycmF5LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzRW1wdHkoYSl7cmV0dXJuIDA9PWEubGVuZ3RofWdvb2cuYXJyYXkuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pc0VtcHR5OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jbGVhcihhKXtpZighQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGI9YS5sZW5ndGgtMTswPD1iO2ItLSlkZWxldGUgYVtiXTthLmxlbmd0aD0wfWdvb2cuYXJyYXkuY2xlYXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY2xlYXI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0KGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29udGFpbnMoYSxiKXx8YS5wdXNoKGIpfWdvb2cuYXJyYXkuaW5zZXJ0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRBdChhLGIsYyl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYywwLGIpfWdvb2cuYXJyYXkuaW5zZXJ0QXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQoYSxiLGMpe2dvb2cucGFydGlhbChtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2UsYSxjLDApLmFwcGx5KG51bGwsYil9Z29vZy5hcnJheS5pbnNlcnRBcnJheUF0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QmVmb3JlKGEsYixjKXtsZXQgZDsyPT1hcmd1bWVudHMubGVuZ3RofHwwPihkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxjKSk/YS5wdXNoKGIpOm1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYixkKX1nb29nLmFycmF5Lmluc2VydEJlZm9yZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRCZWZvcmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZShhLGIpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZihhLGIpO2xldCBjOyhjPTA8PWIpJiZtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpO3JldHVybiBjfWdvb2cuYXJyYXkucmVtb3ZlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVMYXN0KGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9sYXN0SW5kZXhPZihhLGIpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUxhc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlTGFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMT09QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGh9Z29vZy5hcnJheS5yZW1vdmVBdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVJZihhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUlmPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZUlmOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZihhLGIsYyl7bGV0IGQ9MDttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoUmlnaHQoYSxmdW5jdGlvbihlLGYpe2IuY2FsbChjLGUsZixhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxmKSYmZCsrfSk7cmV0dXJuIGR9Z29vZy5hcnJheS5yZW1vdmVBbGxJZj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQoYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX1nb29nLmFycmF5LmNvbmNhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfQpnb29nLmFycmF5LmpvaW49bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5KGEpe2NvbnN0IGI9YS5sZW5ndGg7aWYoMDxiKXtjb25zdCBjPUFycmF5KGIpO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2Nsb25lPWdvb2cuYXJyYXkudG9BcnJheT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5O2dvb2cuYXJyYXkuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9BcnJheTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXh0ZW5kKGEsYil7Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107aWYoZ29vZy5pc0FycmF5TGlrZShkKSl7Y29uc3QgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IobGV0IGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX1nb29nLmFycmF5LmV4dGVuZD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9leHRlbmQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoYXJndW1lbnRzLDEpKX1nb29nLmFycmF5LnNwbGljZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2U7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX1nb29nLmFycmF5LnNsaWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzKGEsYixjKXtiPWJ8fGE7dmFyIGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZyk/Im8iK2dvb2cuZ2V0VWlkKGcpOih0eXBlb2YgZykuY2hhckF0KDApK2d9O2M9Y3x8ZDtsZXQgZT1kPTA7Y29uc3QgZj17fTtmb3IoO2U8YS5sZW5ndGg7KXtjb25zdCBnPWFbZSsrXSxoPWMoZyk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsaCl8fChmW2hdPSEwLGJbZCsrXT1nKX1iLmxlbmd0aD1kfWdvb2cuYXJyYXkucmVtb3ZlRHVwbGljYXRlcz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2hfKGEsY3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUsITEsYil9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5U2VhcmNoO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlbGVjdChhLGIsYyl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLCEwLHZvaWQgMCxjKX1nb29nLmFycmF5LmJpbmFyeVNlbGVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWxlY3Q7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLGMsZCxlKXtsZXQgZj0wLGc9YS5sZW5ndGgsaDtmb3IoO2Y8Zzspe2NvbnN0IGs9ZisoZy1mPj4+MSk7bGV0IGw7bD1jP2IuY2FsbChlLGFba10sayxhKTpiKGQsYVtrXSk7MDxsP2Y9aysxOihnPWssaD0hbCl9cmV0dXJuIGg/ZjotZi0xfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYSxiKXthLnNvcnQoYnx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUpfWdvb2cuYXJyYXkuc29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0KGEsYil7Y29uc3QgYz1BcnJheShhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspY1tlXT17aW5kZXg6ZSx2YWx1ZTphW2VdfTtjb25zdCBkPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYyxmdW5jdGlvbihlLGYpe3JldHVybiBkKGUudmFsdWUsZi52YWx1ZSl8fGUuaW5kZXgtZi5pbmRleH0pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYVtiXT1jW2JdLnZhbHVlfWdvb2cuYXJyYXkuc3RhYmxlU29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxiLGMpe2NvbnN0IGQ9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc29ydChhLGZ1bmN0aW9uKGUsZil7cmV0dXJuIGQoYihlKSxiKGYpKX0pfWdvb2cuYXJyYXkuc29ydEJ5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRCeUtleTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0T2JqZWN0c0J5S2V5KGEsYixjKXttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxmdW5jdGlvbihkKXtyZXR1cm4gZFtiXX0sYyl9Z29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRPYmplY3RzQnlLZXk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkKGEsYixjKXtiPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO2ZvcihsZXQgZD0xO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWIoYVtkLTFdLGFbZF0pO2lmKDA8ZXx8MD09ZSYmYylyZXR1cm4hMX1yZXR1cm4hMH1nb29nLmFycmF5LmlzU29ydGVkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2VxdWFscyhhLGIsYyl7aWYoIWdvb2cuaXNBcnJheUxpa2UoYSl8fCFnb29nLmlzQXJyYXlMaWtlKGIpfHxhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuITE7Y29uc3QgZD1hLmxlbmd0aDtjPWN8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7Zm9yKGxldCBlPTA7ZTxkO2UrKylpZighYyhhW2VdLGJbZV0pKXJldHVybiExO3JldHVybiEwfQpnb29nLmFycmF5LmVxdWFscz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9lcXVhbHM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTMoYSxiLGMpe2M9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7Y29uc3QgZD1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxkO2UrKyl7Y29uc3QgZj1jKGFbZV0sYltlXSk7aWYoMCE9ZilyZXR1cm4gZn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYS5sZW5ndGgsYi5sZW5ndGgpfWdvb2cuYXJyYXkuY29tcGFyZTM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9kZWZhdWx0Q29tcGFyZTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlKGEsYil7cmV0dXJuLW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlKGEsYil9Z29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHkoYSxiKXtyZXR1cm4gYT09PWJ9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeUluc2VydChhLGIsYyl7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpO3JldHVybiAwPmM/KG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYiwtKGMrMSkpLCEwKTohMX1nb29nLmFycmF5LmJpbmFyeUluc2VydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlJbnNlcnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5UmVtb3ZlKGEsYixjKXtiPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaChhLGIsYyk7cmV0dXJuIDA8PWI/bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKTohMX1nb29nLmFycmF5LmJpbmFyeVJlbW92ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlSZW1vdmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldChhLGIsYyl7Y29uc3QgZD17fTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7Y29uc3QgZj1hW2VdLGc9Yi5jYWxsKGMsZixlLGEpO3ZvaWQgMCE9PWcmJihkW2ddfHwoZFtnXT1bXSkpLnB1c2goZil9cmV0dXJuIGR9Z29vZy5hcnJheS5idWNrZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldFRvTWFwKGEsYil7Y29uc3QgYz1uZXcgTWFwO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWFbZF0sZj1iKGUsZCxhKTtpZih2b2lkIDAhPT1mKXtsZXQgZz1jLmdldChmKTtnfHwoZz1bXSxjLnNldChmLGcpKTtnLnB1c2goZSl9fXJldHVybiBjfWdvb2cuYXJyYXkuYnVja2V0VG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0VG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3RvT2JqZWN0KGEsYixjKXtjb25zdCBkPXt9O21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYpe2RbYi5jYWxsKGMsZSxmLGEpXT1lfSk7cmV0dXJuIGR9Z29vZy5hcnJheS50b09iamVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b09iamVjdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b01hcChhLGIpe2NvbnN0IGM9bmV3IE1hcDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdO2Muc2V0KGIoZSxkLGEpLGUpfXJldHVybiBjfWdvb2cuYXJyYXkudG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JhbmdlKGEsYixjKXtjb25zdCBkPVtdO2xldCBlPTAsZj1hO2M9Y3x8MTt2b2lkIDAhPT1iJiYoZT1hLGY9Yik7aWYoMD5jKihmLWUpKXJldHVybltdO2lmKDA8Yylmb3IoYT1lO2E8ZjthKz1jKWQucHVzaChhKTtlbHNlIGZvcihhPWU7YT5mO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfWdvb2cuYXJyYXkucmFuZ2U9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmFuZ2U7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVwZWF0KGEsYil7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbZF09YTtyZXR1cm4gY31nb29nLmFycmF5LnJlcGVhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZXBlYXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZsYXR0ZW4oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXtjb25zdCBlPWFyZ3VtZW50c1tkXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7Zis9ODE5Mil7dmFyIGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoZSxmLGYrODE5Mik7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuLmFwcGx5KG51bGwsYyk7Zm9yKGxldCBnPTA7ZzxjLmxlbmd0aDtnKyspYi5wdXNoKGNbZ10pfWVsc2UgYi5wdXNoKGUpfXJldHVybiBifWdvb2cuYXJyYXkuZmxhdHRlbj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGUoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTthLmxlbmd0aCYmKGIlPWEubGVuZ3RoLDA8Yj9BcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShhLGEuc3BsaWNlKC1iLGIpKTowPmImJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEsYS5zcGxpY2UoMCwtYikpKTtyZXR1cm4gYX1nb29nLmFycmF5LnJvdGF0ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGU7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW0oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9YiYmYjxhLmxlbmd0aCk7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD1jJiZjPGEubGVuZ3RoKTtiPUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYywwLGJbMF0pfWdvb2cuYXJyYXkubW92ZUl0ZW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3ppcChhKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTtjb25zdCBiPVtdO2xldCBjPWFyZ3VtZW50c1swXS5sZW5ndGg7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylhcmd1bWVudHNbZF0ubGVuZ3RoPGMmJihjPWFyZ3VtZW50c1tkXS5sZW5ndGgpO2ZvcihkPTA7ZDxjO2QrKyl7Y29uc3QgZT1bXTtmb3IobGV0IGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWUucHVzaChhcmd1bWVudHNbZl1bZF0pO2IucHVzaChlKX1yZXR1cm4gYn1nb29nLmFycmF5LnppcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV96aXA7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZShhLGIpe2I9Ynx8TWF0aC5yYW5kb207Zm9yKGxldCBjPWEubGVuZ3RoLTE7MDxjO2MtLSl7Y29uc3QgZD1NYXRoLmZsb29yKGIoKSooYysxKSksZT1hW2NdO2FbY109YVtkXTthW2RdPWV9fQpnb29nLmFycmF5LnNodWZmbGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb3B5QnlJbmRleChhLGIpe2NvbnN0IGM9W107bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaChiLGZ1bmN0aW9uKGQpe2MucHVzaChhW2RdKX0pO3JldHVybiBjfWdvb2cuYXJyYXkuY29weUJ5SW5kZXg9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29weUJ5SW5kZXg7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0TWFwKGEsYixjKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0LmFwcGx5KFtdLG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X21hcChhLGIsYykpfWdvb2cuYXJyYXkuY29uY2F0TWFwPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbmNhdE1hcDtnb29nLmRvbS5hc3NlcnRzPXt9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbj1mdW5jdGlvbihhKXtpZihnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMpe3ZhciBiPWdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93XyhhKTtiJiYoIWF8fCEoYSBpbnN0YW5jZW9mIGIuTG9jYXRpb24pJiZhIGluc3RhbmNlb2YgYi5FbGVtZW50KSYmZ29vZy5hc3NlcnRzLmZhaWwoIkFyZ3VtZW50IGlzIG5vdCBhIExvY2F0aW9uIChvciBhIG5vbi1FbGVtZW50IG1vY2spOyBnb3Q6ICVzIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpfXJldHVybiBhfTsKZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXz1mdW5jdGlvbihhLGIpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIGM9Z29vZy5kb20uYXNzZXJ0cy5nZXRXaW5kb3dfKGEpO2MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY1tiXSYmKGEmJihhIGluc3RhbmNlb2YgY1tiXXx8IShhIGluc3RhbmNlb2YgYy5Mb2NhdGlvbnx8YSBpbnN0YW5jZW9mIGMuRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbCgiQXJndW1lbnQgaXMgbm90IGEgJXMgKG9yIGEgbm9uLUVsZW1lbnQsIG5vbi1Mb2NhdGlvbiBtb2NrKTsgZ290OiAlcyIsYixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpKX1yZXR1cm4gYX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxBbmNob3JFbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEJ1dHRvbkVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxMaW5rRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MTGlua0VsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEltYWdlRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MQXVkaW9FbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MVmlkZW9FbGVtZW50Iil9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxJbnB1dEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxUZXh0QXJlYUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFRleHRBcmVhRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTENhbnZhc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTENhbnZhc0VsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRW1iZWRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxFbWJlZEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGb3JtRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MRm9ybUVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEZyYW1lRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTElGcmFtZUVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MT2JqZWN0RWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFNjcmlwdEVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihhKXtpZihnb29nLmlzT2JqZWN0KGEpKXRyeXtyZXR1cm4gYS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8YS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Y2F0Y2goYil7cmV0dXJuIjxvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkPiJ9ZWxzZSByZXR1cm4gdm9pZCAwPT09YT8idW5kZWZpbmVkIjpudWxsPT09YT8ibnVsbCI6dHlwZW9mIGF9O2dvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YSYmYS5vd25lckRvY3VtZW50LGM9YiYmKGIuZGVmYXVsdFZpZXd8fGIucGFyZW50V2luZG93KTtjPWN8fGdvb2cuZ2xvYmFsO2lmKGMuRWxlbWVudCYmYy5Mb2NhdGlvbilyZXR1cm4gY31jYXRjaChkKXt9cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zPXt9O2dvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhfX07Z29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Z29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfTtnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zLlVOREVGSU5FRD1mdW5jdGlvbigpe307Z29vZy5mdW5jdGlvbnMuRU1QVFk9Z29vZy5mdW5jdGlvbnMuVU5ERUZJTkVEO2dvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGEpO319O2dvb2cuZnVuY3Rpb25zLmZhaWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgYTt9fTsKZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihhLGIpe2I9Ynx8MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLGIpKX19O2dvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2FdfX07Z29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGQ9dGhpcztkPT09Z29vZy5nbG9iYWwmJihkPXZvaWQgMCk7Y29uc3QgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2UucHVzaC5hcHBseShlLGMpO3JldHVybiBhLmFwcGx5KGQsZSl9fTsKZ29vZy5mdW5jdGlvbnMud2l0aFJldHVyblZhbHVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlKGEsZ29vZy5mdW5jdGlvbnMuY29uc3RhbnQoYikpfTtnb29nLmZ1bmN0aW9ucy5lcXVhbFRvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiP2E9PWM6YT09PWN9fTtnb29nLmZ1bmN0aW9ucy5jb21wb3NlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hcmd1bWVudHMsZD1jLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZTtkJiYoZT1jW2QtMV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtmb3IobGV0IGY9ZC0yOzA8PWY7Zi0tKWU9Y1tmXS5jYWxsKHRoaXMsZSk7cmV0dXJuIGV9fTsKZ29vZy5mdW5jdGlvbnMuc2VxdWVuY2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZDtmb3IobGV0IGU9MDtlPGM7ZSsrKWQ9YltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR9fTtnb29nLmZ1bmN0aW9ucy5hbmQ9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IobGV0IGQ9MDtkPGM7ZCsrKWlmKCFiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMTtyZXR1cm4hMH19O2dvb2cuZnVuY3Rpb25zLm9yPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YXJndW1lbnRzLGM9Yi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19Owpnb29nLmZ1bmN0aW9ucy5ub3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07Z29vZy5mdW5jdGlvbnMuY3JlYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlPWEucHJvdG90eXBlO2M9bmV3IGM7YS5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIGN9O2dvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRT0hMDtnb29nLmZ1bmN0aW9ucy5jYWNoZVJldHVyblZhbHVlPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWdvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRSlyZXR1cm4gYSgpO2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319O2dvb2cuZnVuY3Rpb25zLm9uY2U9ZnVuY3Rpb24oYSl7bGV0IGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXtjb25zdCBjPWI7Yj1udWxsO2MoKX19fTsKZ29vZy5mdW5jdGlvbnMuZGVib3VuY2U9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTA7cmV0dXJuIGZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNsZWFyVGltZW91dChkKTtjb25zdCBmPWFyZ3VtZW50cztkPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFwcGx5KGMsZil9LGIpfX07Z29vZy5mdW5jdGlvbnMudGhyb3R0bGU9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTAsZT0hMSxmPVtdO2NvbnN0IGc9ZnVuY3Rpb24oKXtkPTA7ZSYmKGU9ITEsaCgpKX0saD1mdW5jdGlvbigpe2Q9Z29vZy5nbG9iYWwuc2V0VGltZW91dChnLGIpO2xldCBrPWY7Zj1bXTthLmFwcGx5KGMsayl9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07Cmdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9MDtjb25zdCBlPWZ1bmN0aW9uKCl7ZD0wfTtyZXR1cm4gZnVuY3Rpb24oZil7ZHx8KGQ9Z29vZy5nbG9iYWwuc2V0VGltZW91dChlLGIpLGEuYXBwbHkoYyxhcmd1bWVudHMpKX19O2dvb2cuZnVuY3Rpb25zLmlzRnVuY3Rpb249YT0+ImZ1bmN0aW9uIj09PXR5cGVvZiBhO2dvb2cuc3RyaW5nPXt9O2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fTtnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihhLGIpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1hPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJmJ8fCIiO3RoaXMuU1RSSU5HX0NPTlNUX1RZUEVfTUFSS0VSX19HT09HX1NUUklOR19TRUNVUklUWV9QUklWQVRFXz1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl99O2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwO2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlX307Cmdvb2cuREVCVUcmJihnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ29uc3R7Iit0aGlzLnN0cmluZ0NvbnN0VmFsdWVXaXRoU2VjdXJpdHlDb250cmFjdF9fZ29vZ1N0cmluZ1NlY3VyaXR5UHJpdmF0ZV8rIn0ifSk7Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuc3RyaW5nLkNvbnN0JiZhLlNUUklOR19DT05TVF9UWVBFX01BUktFUl9fR09PR19TVFJJTkdfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl8pcmV0dXJuIGEuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgQ29uc3QsIGdvdCAnIithKyInIik7cmV0dXJuInR5cGVfZXJyb3I6Q29uc3QifTsKZ29vZy5zdHJpbmcuQ29uc3QuZnJvbT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGdvb2cuc3RyaW5nLkNvbnN0KGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfLGEpfTtnb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl89e307Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Z29vZy5zdHJpbmcuQ29uc3QuRU1QVFk9Z29vZy5zdHJpbmcuQ29uc3QuZnJvbSgiIik7Z29vZy5odG1sPXt9O2dvb2cuaHRtbC50cnVzdGVkdHlwZXM9e307Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRT1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FKyIjaHRtbCI6IiI7Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oKXtpZighZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV8mJihnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV89Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSkpO3JldHVybiBnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV99O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFPXt9OwpjbGFzcyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Yj09PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO3JldHVybiAwPT09YS5sZW5ndGg/bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBmcm9tSnNvbihhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnN0cmluZ2lmeV8oYSkpfWdldFR5cGVkU3RyaW5nVmFsdWUoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXN0YXRpYyB1bndyYXAoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYSkudG9TdHJpbmcoKX1zdGF0aWMgdW53cmFwVHJ1c3RlZFNjcmlwdChhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdClyZXR1cm4gYS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTY3JpcHQsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVNjcmlwdCJ9c3RhdGljIHN0cmluZ2lmeV8oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpLnJlcGxhY2UoLzwvZywiXFx4M2MiKX1zdGF0aWMgY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVTY3JpcHQoYSk6CmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdChhLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX19bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk9ZnVuY3Rpb24oKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCIiKX0oKTtnb29nLmh0bWwuU2FmZVNjcmlwdD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdDtnb29nLmZzPXt9O2dvb2cuZnMudXJsPXt9O2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLmNyZWF0ZU9iamVjdFVSTChhKX07Z29vZy5mcy51cmwucmV2b2tlT2JqZWN0VXJsPWZ1bmN0aW9uKGEpe2dvb2cuZnMudXJsLmdldFVybE9iamVjdF8oKS5yZXZva2VPYmplY3RVUkwoYSl9O2dvb2cuZnMudXJsLlVybE9iamVjdF89ZnVuY3Rpb24oKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9Owpnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7Y29uc3QgYT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpO2lmKG51bGwhPWEpcmV0dXJuIGE7dGhyb3cgRXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHMiKTt9O2dvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PWdvb2cuZ2xvYmFsLlVSTCYmdm9pZCAwIT09Z29vZy5nbG9iYWwuVVJMLmNyZWF0ZU9iamVjdFVSTD9nb29nLmdsb2JhbC5VUkw6dm9pZCAwIT09Z29vZy5nbG9iYWwuY3JlYXRlT2JqZWN0VVJMP2dvb2cuZ2xvYmFsOm51bGx9O2dvb2cuZnMudXJsLmJyb3dzZXJTdXBwb3J0c09iamVjdFVybHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Z29vZy5mcy51cmwuZmluZFVybE9iamVjdF8oKX07Z29vZy5mcy5ibG9iPXt9O2dvb2cuZnMuYmxvYi5nZXRCbG9iPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cuZ2xvYmFsLkJsb2JCdWlsZGVyfHxnb29nLmdsb2JhbC5XZWJLaXRCbG9iQnVpbGRlcjtpZih2b2lkIDAhPT1iKXtiPW5ldyBiO2ZvcihsZXQgYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYi5hcHBlbmQoYXJndW1lbnRzW2NdKTtyZXR1cm4gYi5nZXRCbG9iKCl9cmV0dXJuIGdvb2cuZnMuYmxvYi5nZXRCbG9iV2l0aFByb3BlcnRpZXMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9Owpnb29nLmZzLmJsb2IuZ2V0QmxvYldpdGhQcm9wZXJ0aWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nb29nLmdsb2JhbC5CbG9iQnVpbGRlcnx8Z29vZy5nbG9iYWwuV2ViS2l0QmxvYkJ1aWxkZXI7aWYodm9pZCAwIT09ZCl7ZD1uZXcgZDtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKylkLmFwcGVuZChhW2VdLGMpO3JldHVybiBkLmdldEJsb2IoYil9aWYodm9pZCAwIT09Z29vZy5nbG9iYWwuQmxvYilyZXR1cm4gZD17fSxiJiYoZC50eXBlPWIpLGMmJihkLmVuZGluZ3M9YyksbmV3IEJsb2IoYSxkKTt0aHJvdyBFcnJvcigiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IGNyZWF0aW5nIEJsb2JzIik7fTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfP2E6IiJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfKyIifX07Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYil7dmFyIGM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcyk7Yz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMoYyk7dmFyIGQ9Y1szXXx8IiI7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoY1sxXStnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnN0cmluZ2lmeVBhcmFtc18oIj8iLGNbMl18fCIiLGEpK2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXygiIyIsZCxiKSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwoYSkudG9TdHJpbmcoKX07Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgVHJ1c3RlZFJlc291cmNlVXJsLCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybCJ9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdD1mdW5jdGlvbihhLGIpe3ZhciBjPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKTtpZighZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF8udGVzdChjKSl0aHJvdyBFcnJvcigiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiAiK2MpO2E9Yy5yZXBsYWNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuRk9STUFUX01BUktFUl8sZnVuY3Rpb24oZCxlKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZSkpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgIicrZSsnIiwgaW4gZm9ybWF0IHN0cmluZywgIicrYysnIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGQpOgplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkZPUk1BVF9NQVJLRVJfPS8leyhcdyspfS9nO2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQkFTRV9VUkxfPVJlZ0V4cCgiXigoaHR0cHM6KT8vL1swLTlhLXouOltcXF0tXSsvfC9bXi9cXFxcXXxbXjovXFxcXCVdKy98W146L1xcXFwlXSpbPyNdfGFib3V0OmJsYW5rIykiLCJpIik7Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5VUkxfUEFSQU1fUEFSU0VSXz0vXihbXj8jXSopKFw/W14jXSopPygjW1xzXFNdKik/LzsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChhLGIpLmNsb25lV2l0aFBhcmFtcyhjLGQpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1nb29nLnN0cmluZy5Db25zdC51bndyYXAoYVtjXSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21TYWZlU2NyaXB0PWZ1bmN0aW9uKGEpe2E9Z29vZy5mcy5ibG9iLmdldEJsb2JXaXRoUHJvcGVydGllcyhbbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQudW53cmFwKGEpXSwidGV4dC9qYXZhc2NyaXB0Iik7YT1nb29nLmZzLnVybC5jcmVhdGVPYmplY3RVcmwoYSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmdldFBvbGljeVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdFVSTChhKTphO3JldHVybiBuZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybChhLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8pfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKCJzdHJpbmciPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6IiI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/IiYiOiIiKStlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O2dvb2cuc3RyaW5nLmludGVybmFsPXt9O2dvb2cuc3RyaW5nLmludGVybmFsLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5sYXN0SW5kZXhPZihiLDApfTtnb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aD1mdW5jdGlvbihhLGIpe2NvbnN0IGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoYixhLnNsaWNlKDAsYi5sZW5ndGgpKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZShiLGEuc2xpY2UoYS5sZW5ndGgtYi5sZW5ndGgpKX07Cmdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscz1mdW5jdGlvbihhLGIpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PWIudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKiQvLnRlc3QoYSl9O2dvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9OmZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qKFtcc1xTXSo/KVtcc1x4YTBdKiQvLmV4ZWMoYSlbMV19O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXthPVN0cmluZyhhKS50b0xvd2VyQ2FzZSgpO2I9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGE8Yj8tMTphPT1iPzA6MX07Cmdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csYj8iPGJyIC8+IjoiPGJyPiIpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuaHRtbEVzY2FwZT1mdW5jdGlvbihhLGIpe2lmKGIpYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXywiJmx0OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLCImZ3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXywiJnF1b3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sIiYjMDsiKTtlbHNle2lmKCFnb29nLnN0cmluZy5pbnRlcm5hbC5BTExfUkVfLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZigiJiIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKSk7LTEhPWEuaW5kZXhPZigiPCIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfLAoiJmx0OyIpKTstMSE9YS5pbmRleE9mKCI+IikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5HVF9SRV8sIiZndDsiKSk7LTEhPWEuaW5kZXhPZignIicpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV8sIiZxdW90OyIpKTstMSE9YS5pbmRleE9mKCInIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpKTstMSE9YS5pbmRleE9mKCJceDAwIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXywiJiMwOyIpKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXz0vJi9nO2dvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXz0vPC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXz0vPi9nO2dvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfPS8iL2c7Z29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nOwpnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXz0vXHgwMC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tceDAwJjw+IiddLztnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybi0xIT1hLmluZGV4T2YoYil9O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEudG9Mb3dlckNhc2UoKSxiLnRvTG93ZXJDYXNlKCkpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbShTdHJpbmcoYikpLnNwbGl0KCIuIik7Y29uc3QgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7MD09YyYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZigwPT1lWzBdLmxlbmd0aCYmMD09ZlswXS5sZW5ndGgpYnJlYWs7Yz0wPT1lWzFdLmxlbmd0aD8wOnBhcnNlSW50KGVbMV0sMTApO2NvbnN0IGg9MD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKTtjPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oYyxoKXx8Cmdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oMD09ZVsyXS5sZW5ndGgsMD09ZlsyXS5sZW5ndGgpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZSgwPT1jKX1yZXR1cm4gY307Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXz1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07Z29vZy5odG1sLlNhZmVVcmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz9hOiIifXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX19O2dvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc9ImFib3V0OmludmFsaWQjekNsb3N1cmV6Ijtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9Owpnb29nLmh0bWwuU2FmZVVybC51bndyYXA9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsJiZhLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV87Z29vZy5hc3NlcnRzLmZhaWwoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVVybCJ9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKSl9Owpnb29nLmh0bWwuU0FGRV9NSU1FX1RZUEVfUEFUVEVSTl89UmVnRXhwKCdeKD86YXVkaW8vKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LW1hdHJvc2thfHgtd2F2fHdhdnx3ZWJtKXxmb250L1xcdyt8aW1hZ2UvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwfHgtaWNvbnxoZWljfGhlaWYpfHZpZGVvLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtfHF1aWNrdGltZXx4LW1hdHJvc2thKSkoPzo7XFx3Kz0oPzpcXHcrfCJbXFx3Oyw9IF0rIikpKiQnLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuaXNTYWZlTWltZVR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuZnJvbUJsb2I9ZnVuY3Rpb24oYSl7YT1nb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZShhLnR5cGUpP2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybChhKTpnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLnJldm9rZU9iamVjdFVybD1mdW5jdGlvbihhKXthPWEuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpO2EhPT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HJiZnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmwoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tTWVkaWFTb3VyY2U9ZnVuY3Rpb24oYSl7Z29vZy5hc3NlcnRzLmFzc2VydCgiTWVkaWFTb3VyY2UiaW4gZ29vZy5nbG9iYWwsIk5vIHN1cHBvcnQgZm9yIE1lZGlhU291cmNlIik7YT1hIGluc3RhbmNlb2YgTWVkaWFTb3VyY2U/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGEpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLkRBVEFfVVJMX1BBVFRFUk5fPS9eZGF0YTooLiopO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTsKZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmw9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7YT1hLnJlcGxhY2UoLyglMEF8JTBEKS9nLCIiKTtyZXR1cm4gYS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pP2dvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKTpudWxsfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmwoYSl8fGdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19VUkx9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ0ZWw6Iil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXz1SZWdFeHAoIl5zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQiLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNpcFVybD1mdW5jdGlvbihhKXtnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChhKSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21GYWNlYm9va01lc3NlbmdlclVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsImZiLW1lc3NlbmdlcjovL3NoYXJlIil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ3aGF0c2FwcDovL3NlbmQiKXx8KGE9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNtc1VybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNtczoiKSYmZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfKGEpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpOzA8YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7Yj1hLm1hdGNoKC9bPyZdYm9keT0vZ2kpO2lmKCFiKXJldHVybiEwO2lmKDE8Yi5sZW5ndGgpcmV0dXJuITE7YT1hLm1hdGNoKC9bPyZdYm9keT0oW14mXSopLylbMV07aWYoIWEpcmV0dXJuITA7dHJ5e2RlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChjKXtyZXR1cm4hMX1yZXR1cm4vXig/OlthLXowLTlcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNzaDovLyIpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVDaHJvbWVFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9eY2hyb21lLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVGaXJlZm94RXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXm1vei1leHRlbnNpb246XC9cLyhbXlwvXSspXC8vLGEsYil9O2dvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Cmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihhLGIsYyl7KGE9YS5leGVjKGIpKT8oYT1hWzFdLC0xPT0oYyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAoYyldOmMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBnb29nLnN0cmluZy5Db25zdC51bndyYXAoZCl9KSkuaW5kZXhPZihhKSYmKGI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORykpOmI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYSkpfTsKZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO2dvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fO2dvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4gYTthPSJvYmplY3QiPT10eXBlb2YgYSYmYS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2EuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhhKTtyZXR1cm4gZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLnRlc3QoYSk/Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpOmdvb2cuaHRtbC5TYWZlVXJsLnRyeUZyb21EYXRhVXJsKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplKGEpfHxnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfVVJMfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7aWYoYiYmL15kYXRhOi9pLnRlc3QoYSkmJihiPWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGEpLGIuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpPT1hKSlyZXR1cm4gYjtnb29nLmFzc2VydHMuYXNzZXJ0KGdvb2cuaHRtbC5TQUZFX1VSTF9QQVRURVJOXy50ZXN0KGEpLCIlcyBkb2VzIG5vdCBtYXRjaCB0aGUgc2FmZSBVUkwgcGF0dGVybiIsYSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz17fTtnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBnb29nLmh0bWwuU2FmZVVybChhLGdvb2cuaHRtbC5TYWZlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfKX07Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1VSTD1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7Z29vZy5odG1sLlNhZmVVcmwuQUJPVVRfQkxBTks9Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJhYm91dDpibGFuayIpO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlV3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT9hOiIiO3RoaXMuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMH1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKCgwLGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoKShhLCI7IiksYExhc3QgY2hhcmFjdGVyIG9mIHN0eWxlIHN0cmluZyBpcyBub3QgJzsnOiAke2F9YCk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsCiI6IiksIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFwibmFtZTogdmFsdWVcIiBwYWlyOiAiK2EpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV99dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlJiZhLmNvbnN0cnVjdG9yPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV87CigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZVN0eWxlLCBnb3QgJyR7YX1gKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVN0eWxlIn1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlKGEpe2xldCBiPSIiO2ZvcihsZXQgYyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QoYykpdGhyb3cgRXJyb3IoYE5hbWUgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05XSwgZ290OiAke2N9YCk7bGV0IGQ9YVtjXTtudWxsIT1kJiYKKGQ9QXJyYXkuaXNBcnJheShkKT9kLm1hcChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUpLmpvaW4oIiAiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoZCksYis9YCR7Y306JHtkfTtgKX1yZXR1cm4gYj9tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYik6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZfXN0YXRpYyBjb25jYXQoYSl7bGV0IGI9IiI7Y29uc3QgYz1kPT57QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goYyk6Yis9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChkKX07QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhcmd1bWVudHMsYyk7CnJldHVybiBiP21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuRU1QVFl9fW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HPSJ6Q2xvc3VyZXoiOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKXJldHVybid1cmwoIicrZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLnJlcGxhY2UoLzwvZywiJTNjIikucmVwbGFjZSgvW1xcIl0vZywiXFwkJiIpKyciKSc7YT1hIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpOm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX3Nhbml0aXplUHJvcGVydHlWYWx1ZVN0cmluZyhTdHJpbmcoYSkpO2lmKC9bezt9XS8udGVzdChhKSl0aHJvdyBuZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuIixbYV0pO3JldHVybiBhfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmcoYSl7Y29uc3QgYj1hLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfVVJMX1JFLCJ1cmwiKTtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRS50ZXN0KGIpKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT01NRU5UX1JFLnRlc3QoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6ICR7YX1gKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORzsKaWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkUXVvdGVzKGEpKXJldHVybigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgU3RyaW5nIHZhbHVlIHJlcXVpcmVzIGJhbGFuY2VkIHF1b3RlcywgZ290OiAke2F9YCksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkc7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHMoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiAiK2EpLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HfWVsc2UgcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfWArCiIgYW5kIHNpbXBsZSBmdW5jdGlvbnMsIGdvdDogIithKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRRdW90ZXMoYSl7bGV0IGI9ITAsYz0hMDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hLmNoYXJBdChkKTsiJyI9PWUmJmM/Yj0hYjonIic9PWUmJmImJihjPSFjKX1yZXR1cm4gYiYmY30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRTcXVhcmVCcmFja2V0cyhhKXtsZXQgYj0hMDtjb25zdCBjPS9eWy1fYS16QS1aMC05XSQvO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWEuY2hhckF0KGQpO2lmKCJdIj09ZSl7aWYoYilyZXR1cm4hMTtiPSEwfWVsc2UgaWYoIlsiPT1lKXtpZighYilyZXR1cm4hMTtiPSExfWVsc2UgaWYoIWImJiFjLnRlc3QoZSkpcmV0dXJuITF9cmV0dXJuIGJ9CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1ZBTFVFX0FMTE9XRURfQ0hBUlM9IlstLC5cIiclXyEjLyBhLXpBLVowLTlcXFtcXF1dIixtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRT1uZXcgUmVnRXhwKGBeJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfStcJGApLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1VSTF9SRT1SZWdFeHAoIlxcYih1cmxcXChbIFx0XG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXHRcbl0qXFwpKSIsImciKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUz0iY2FsYyBjdWJpYy1iZXppZXIgZml0LWNvbnRlbnQgaHNsIGhzbGEgbGluZWFyLWdyYWRpZW50IG1hdHJpeCBtaW5tYXggcmFkaWFsLWdyYWRpZW50IHJlcGVhdCByZ2IgcmdiYSAocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPyBzdGVwcyB2YXIiLnNwbGl0KCIgIiksCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0ZVTkNUSU9OU19SRT1uZXcgUmVnRXhwKCJcXGIoIittb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUy5qb2luKCJ8IikrIilcXChbLSsqLzAtOWEtekEtWi4lI1xcW1xcXSwgXStcXCkiLCJnIiksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09NTUVOVF9SRT0vXC9cKi87ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl7cmV0dXJuIGEucmVwbGFjZShtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9VUkxfUkUsKGIsYyxkLGUpPT57bGV0IGY9IiI7ZD1kLnJlcGxhY2UoL14oWyciXSkoLiopXDEkLywoZyxoLGspPT57Zj1oO3JldHVybiBrfSk7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShkKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk7cmV0dXJuIGMrZitiK2YrZX0pfQpnb29nLmh0bWwuU2FmZVN0eWxlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZTtnb29nLm9iamVjdD17fTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZm9yRWFjaChhLGIsYyl7Zm9yKGNvbnN0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbHRlcihhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWIuY2FsbChjLGFbZV0sZSxhKSYmKGRbZV09YVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcChhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWRbZV09Yi5jYWxsKGMsYVtlXSxlLGEpO3JldHVybiBkfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lKGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V2ZXJ5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKCFiLmNhbGwoYyxhW2RdLGQsYSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldENvdW50KGEpe2xldCBiPTA7Zm9yKGNvbnN0IGMgaW4gYSliKys7cmV0dXJuIGJ9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldEFueUtleShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhhLGIpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZShhLGIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0VmFsdWVzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5cyhhLGIpe3ZhciBjPWdvb2cuaXNBcnJheUxpa2UoYik7Y29uc3QgZD1jP2I6YXJndW1lbnRzO2ZvcihjPWM/MDoxO2M8ZC5sZW5ndGg7YysrKXtpZihudWxsPT1hKXJldHVybjthPWFbZFtjXV19cmV0dXJuIGF9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NvbnRhaW5zS2V5KGEsYil7cmV0dXJuIG51bGwhPT1hJiZiIGluIGF9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWluc1ZhbHVlKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZihhW2NdPT1iKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maW5kS2V5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4gZH1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZFZhbHVlKGEsYixjKXtyZXR1cm4oYj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleShhLGIsYykpJiZhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9pc0VtcHR5KGEpe2Zvcihjb25zdCBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NsZWFyKGEpe2Zvcihjb25zdCBiIGluIGEpZGVsZXRlIGFbYl19CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9yZW1vdmUoYSxiKXtsZXQgYzsoYz1iIGluIGEpJiZkZWxldGUgYVtiXTtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfYWRkKGEsYixjKXtpZihudWxsIT09YSYmYiBpbiBhKXRocm93IEVycm9yKGBUaGUgb2JqZWN0IGFscmVhZHkgY29udGFpbnMgdGhlIGtleSAiJHtifSJgKTttb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0KGEsYixjKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0KGEsYixjKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYT9hW2JdOmN9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldChhLGIsYyl7YVtiXT1jfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zZXRJZlVuZGVmaW5lZChhLGIsYyl7cmV0dXJuIGIgaW4gYT9hW2JdOmFbYl09Y30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0KGEsYixjKXtpZihiIGluIGEpcmV0dXJuIGFbYl07Yz1jKCk7cmV0dXJuIGFbYl09Y31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXF1YWxzKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZighKGMgaW4gYil8fGFbY10hPT1iW2NdKXJldHVybiExO2Zvcihjb25zdCBjIGluIGIpaWYoIShjIGluIGEpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jbG9uZShhKXtjb25zdCBiPXt9O2Zvcihjb25zdCBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdW5zYWZlQ2xvbmUoYSl7aWYoIWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIGE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhLmNsb25lKXJldHVybiBhLmNsb25lKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTWFwJiZhIGluc3RhbmNlb2YgTWFwKXJldHVybiBuZXcgTWFwKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFNldCYmYSBpbnN0YW5jZW9mIFNldClyZXR1cm4gbmV3IFNldChhKTtpZihhIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2NvbnN0IGI9QXJyYXkuaXNBcnJheShhKT9bXToiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyfHwiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlld3x8IUFycmF5QnVmZmVyLmlzVmlldyhhKXx8YSBpbnN0YW5jZW9mIERhdGFWaWV3P3t9Om5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoKTtmb3IoY29uc3QgYyBpbiBhKWJbY109Cm1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZShhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlKGEpe2NvbnN0IGI9e307Zm9yKGNvbnN0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFM9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V4dGVuZChhLGIpe2xldCBjLGQ7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKGxldCBmPTA7Zjxtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfUFJPVE9UWVBFX0ZJRUxEUy5sZW5ndGg7ZisrKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFNbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZShhKXtjb25zdCBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09YiYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtpZihiJTIpdGhyb3cgRXJyb3IoIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzIik7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCs9MiljW2FyZ3VtZW50c1tkXV09YXJndW1lbnRzW2QrMV07cmV0dXJuIGN9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jcmVhdGVTZXQoYSl7Y29uc3QgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldC5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbYXJndW1lbnRzW2RdXT0hMDtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldyhhKXtsZXQgYj1hO09iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihhKSYmKGI9T2JqZWN0LmNyZWF0ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNJbW11dGFibGVWaWV3KGEpe3JldHVybiEhT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNGcm96ZW4oYSl9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzKGEsYixjKXtpZighYSlyZXR1cm5bXTtpZighT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fCFPYmplY3QuZ2V0UHJvdG90eXBlT2YpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpO2NvbnN0IGQ9e307Zm9yKDthJiYoYSE9PU9iamVjdC5wcm90b3R5cGV8fGIpJiYoYSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8Yyk7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWRbZVtmXV09ITA7YT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGQpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0U3VwZXJDbGFzcyhhKXtyZXR1cm4oYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYS5wcm90b3R5cGUpKSYmYS5jb25zdHJ1Y3Rvcn1nb29nLm9iamVjdC5hZGQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2FkZDtnb29nLm9iamVjdC5jbGVhcj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY2xlYXI7Z29vZy5vYmplY3QuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2Nsb25lO2dvb2cub2JqZWN0LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucztnb29nLm9iamVjdC5jb250YWluc0tleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNLZXk7Z29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZTtnb29nLm9iamVjdC5jcmVhdGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZTsKZ29vZy5vYmplY3QuY3JlYXRlSW1tdXRhYmxlVmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5jcmVhdGVTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldDtnb29nLm9iamVjdC5lcXVhbHM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2VxdWFscztnb29nLm9iamVjdC5ldmVyeT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXZlcnk7Z29vZy5vYmplY3QuZXh0ZW5kPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9leHRlbmQ7Z29vZy5vYmplY3QuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maWx0ZXI7Z29vZy5vYmplY3QuZmluZEtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleTtnb29nLm9iamVjdC5maW5kVmFsdWU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbmRWYWx1ZTtnb29nLm9iamVjdC5mb3JFYWNoPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9mb3JFYWNoOwpnb29nLm9iamVjdC5nZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldDtnb29nLm9iamVjdC5nZXRBbGxQcm9wZXJ0eU5hbWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzO2dvb2cub2JqZWN0LmdldEFueUtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0QW55S2V5O2dvb2cub2JqZWN0LmdldEFueVZhbHVlPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZTtnb29nLm9iamVjdC5nZXRDb3VudD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0Q291bnQ7Z29vZy5vYmplY3QuZ2V0S2V5cz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0S2V5cztnb29nLm9iamVjdC5nZXRTdXBlckNsYXNzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRTdXBlckNsYXNzO2dvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5czsKZ29vZy5vYmplY3QuZ2V0VmFsdWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZXM7Z29vZy5vYmplY3QuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNFbXB0eTtnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2lzSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5tYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcDtnb29nLm9iamVjdC5yZW1vdmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3JlbW92ZTtnb29nLm9iamVjdC5zZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldDtnb29nLm9iamVjdC5zZXRJZlVuZGVmaW5lZD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0SWZVbmRlZmluZWQ7Z29vZy5vYmplY3Quc2V0V2l0aFJldHVyblZhbHVlSWZOb3RTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0Owpnb29nLm9iamVjdC5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lO2dvb2cub2JqZWN0LnRyYW5zcG9zZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlO2dvb2cub2JqZWN0LnVuc2FmZUNsb25lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXR7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIGNyZWF0ZVJ1bGUoYSxiKXtpZigoMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYSwiPCIpKXRocm93IEVycm9yKGBTZWxlY3RvciBkb2VzIG5vdCBhbGxvdyAnPCcsIGdvdDogJHthfWApO2NvbnN0IGM9YS5yZXBsYWNlKC8oJ3wiKSgoPyFcMSlbXlxyXG5cZlxcXXxcXFtcc1xTXSkqXDEvZywKIiIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXSgpPV4kfF0rJC8udGVzdChjKSl0aHJvdyBFcnJvcigiU2VsZWN0b3IgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05Iy46KiAsPit+W1xcXSgpPV4kfF0gYW5kIHN0cmluZ3MsIGdvdDogIithKTtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5oYXNCYWxhbmNlZEJyYWNrZXRzXyhjKSl0aHJvdyBFcnJvcigiKCkgYW5kIFtdIGluIHNlbGVjdG9yIG11c3QgYmUgYmFsYW5jZWQsIGdvdDogIithKTtiIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlfHwoYj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlKGIpKTthPWAke2F9e2ArbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChiKS5yZXBsYWNlKC88L2csIlxcM0MgIikrIn0iOwpyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBoYXNCYWxhbmNlZEJyYWNrZXRzXyhhKXtjb25zdCBiPXsiKCI6IikiLCJbIjoiXSJ9LGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2NvbnN0IGU9YVtkXTtpZihiW2VdKWMucHVzaChiW2VdKTtlbHNlIGlmKG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhiLGUpJiZjLnBvcCgpIT1lKXJldHVybiExfXJldHVybiAwPT1jLmxlbmd0aH1zdGF0aWMgY29uY2F0KGEpe2xldCBiPSIiO2NvbnN0IGM9ZD0+e0FycmF5LmlzQXJyYXkoZCk/ZC5mb3JFYWNoKGMpOmIrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGQpfTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGFyZ3VtZW50cywKYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWTsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KSghKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsIjwiKSxgRm9yYmlkZGVuICc8JyBjaGFyYWN0ZXIgaW4gc3R5bGUgc2hlZXQgc3RyaW5nOiAke2F9YCk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX1nZXRUeXBlZFN0cmluZ1ZhbHVlKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffXN0YXRpYyB1bndyYXAoYSl7aWYoYSBpbnN0YW5jZW9mCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0KXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZVNoZWV0LCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlNhZmVTdHlsZVNoZWV0In1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKXtyZXR1cm4gbmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEUpfX0KbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0LmNyZWF0ZVNhZmVTdHlsZVNoZWV0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0O2dvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fTtnb29nLmRvbS5UYWdOYW1lPWNsYXNze3N0YXRpYyBjYXN0KGEsYil7cmV0dXJuIGF9Y29uc3RydWN0b3IoKXt9dG9TdHJpbmcoKXt9fTtnb29nLmRvbS5UYWdOYW1lLkE9IkEiO2dvb2cuZG9tLlRhZ05hbWUuQUJCUj0iQUJCUiI7Z29vZy5kb20uVGFnTmFtZS5BQ1JPTllNPSJBQ1JPTllNIjtnb29nLmRvbS5UYWdOYW1lLkFERFJFU1M9IkFERFJFU1MiO2dvb2cuZG9tLlRhZ05hbWUuQVBQTEVUPSJBUFBMRVQiO2dvb2cuZG9tLlRhZ05hbWUuQVJFQT0iQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5BUlRJQ0xFPSJBUlRJQ0xFIjtnb29nLmRvbS5UYWdOYW1lLkFTSURFPSJBU0lERSI7Z29vZy5kb20uVGFnTmFtZS5BVURJTz0iQVVESU8iO2dvb2cuZG9tLlRhZ05hbWUuQj0iQiI7Z29vZy5kb20uVGFnTmFtZS5CQVNFPSJCQVNFIjtnb29nLmRvbS5UYWdOYW1lLkJBU0VGT05UPSJCQVNFRk9OVCI7Z29vZy5kb20uVGFnTmFtZS5CREk9IkJESSI7Z29vZy5kb20uVGFnTmFtZS5CRE89IkJETyI7Cmdvb2cuZG9tLlRhZ05hbWUuQklHPSJCSUciO2dvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT0iQkxPQ0tRVU9URSI7Z29vZy5kb20uVGFnTmFtZS5CT0RZPSJCT0RZIjtnb29nLmRvbS5UYWdOYW1lLkJSPSJCUiI7Z29vZy5kb20uVGFnTmFtZS5CVVRUT049IkJVVFRPTiI7Z29vZy5kb20uVGFnTmFtZS5DQU5WQVM9IkNBTlZBUyI7Z29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPSJDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj0iQ0VOVEVSIjtnb29nLmRvbS5UYWdOYW1lLkNJVEU9IkNJVEUiO2dvb2cuZG9tLlRhZ05hbWUuQ09ERT0iQ09ERSI7Z29vZy5kb20uVGFnTmFtZS5DT0w9IkNPTCI7Z29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD0iQ09MR1JPVVAiO2dvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD0iQ09NTUFORCI7Z29vZy5kb20uVGFnTmFtZS5EQVRBPSJEQVRBIjtnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPSJEQVRBTElTVCI7Z29vZy5kb20uVGFnTmFtZS5ERD0iREQiOwpnb29nLmRvbS5UYWdOYW1lLkRFTD0iREVMIjtnb29nLmRvbS5UYWdOYW1lLkRFVEFJTFM9IkRFVEFJTFMiO2dvb2cuZG9tLlRhZ05hbWUuREZOPSJERk4iO2dvb2cuZG9tLlRhZ05hbWUuRElBTE9HPSJESUFMT0ciO2dvb2cuZG9tLlRhZ05hbWUuRElSPSJESVIiO2dvb2cuZG9tLlRhZ05hbWUuRElWPSJESVYiO2dvb2cuZG9tLlRhZ05hbWUuREw9IkRMIjtnb29nLmRvbS5UYWdOYW1lLkRUPSJEVCI7Z29vZy5kb20uVGFnTmFtZS5FTT0iRU0iO2dvb2cuZG9tLlRhZ05hbWUuRU1CRUQ9IkVNQkVEIjtnb29nLmRvbS5UYWdOYW1lLkZJRUxEU0VUPSJGSUVMRFNFVCI7Z29vZy5kb20uVGFnTmFtZS5GSUdDQVBUSU9OPSJGSUdDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkZJR1VSRT0iRklHVVJFIjtnb29nLmRvbS5UYWdOYW1lLkZPTlQ9IkZPTlQiO2dvb2cuZG9tLlRhZ05hbWUuRk9PVEVSPSJGT09URVIiO2dvb2cuZG9tLlRhZ05hbWUuRk9STT0iRk9STSI7Cmdvb2cuZG9tLlRhZ05hbWUuRlJBTUU9IkZSQU1FIjtnb29nLmRvbS5UYWdOYW1lLkZSQU1FU0VUPSJGUkFNRVNFVCI7Z29vZy5kb20uVGFnTmFtZS5IMT0iSDEiO2dvb2cuZG9tLlRhZ05hbWUuSDI9IkgyIjtnb29nLmRvbS5UYWdOYW1lLkgzPSJIMyI7Z29vZy5kb20uVGFnTmFtZS5IND0iSDQiO2dvb2cuZG9tLlRhZ05hbWUuSDU9Ikg1Ijtnb29nLmRvbS5UYWdOYW1lLkg2PSJINiI7Z29vZy5kb20uVGFnTmFtZS5IRUFEPSJIRUFEIjtnb29nLmRvbS5UYWdOYW1lLkhFQURFUj0iSEVBREVSIjtnb29nLmRvbS5UYWdOYW1lLkhHUk9VUD0iSEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLkhSPSJIUiI7Z29vZy5kb20uVGFnTmFtZS5IVE1MPSJIVE1MIjtnb29nLmRvbS5UYWdOYW1lLkk9IkkiO2dvb2cuZG9tLlRhZ05hbWUuSUZSQU1FPSJJRlJBTUUiO2dvb2cuZG9tLlRhZ05hbWUuSU1HPSJJTUciO2dvb2cuZG9tLlRhZ05hbWUuSU5QVVQ9IklOUFVUIjsKZ29vZy5kb20uVGFnTmFtZS5JTlM9IklOUyI7Z29vZy5kb20uVGFnTmFtZS5JU0lOREVYPSJJU0lOREVYIjtnb29nLmRvbS5UYWdOYW1lLktCRD0iS0JEIjtnb29nLmRvbS5UYWdOYW1lLktFWUdFTj0iS0VZR0VOIjtnb29nLmRvbS5UYWdOYW1lLkxBQkVMPSJMQUJFTCI7Z29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9IkxFR0VORCI7Z29vZy5kb20uVGFnTmFtZS5MST0iTEkiO2dvb2cuZG9tLlRhZ05hbWUuTElOSz0iTElOSyI7Z29vZy5kb20uVGFnTmFtZS5NQUlOPSJNQUlOIjtnb29nLmRvbS5UYWdOYW1lLk1BUD0iTUFQIjtnb29nLmRvbS5UYWdOYW1lLk1BUks9Ik1BUksiO2dvb2cuZG9tLlRhZ05hbWUuTUFUSD0iTUFUSCI7Z29vZy5kb20uVGFnTmFtZS5NRU5VPSJNRU5VIjtnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPSJNRU5VSVRFTSI7Z29vZy5kb20uVGFnTmFtZS5NRVRBPSJNRVRBIjtnb29nLmRvbS5UYWdOYW1lLk1FVEVSPSJNRVRFUiI7Cmdvb2cuZG9tLlRhZ05hbWUuTkFWPSJOQVYiO2dvb2cuZG9tLlRhZ05hbWUuTk9GUkFNRVM9Ik5PRlJBTUVTIjtnb29nLmRvbS5UYWdOYW1lLk5PU0NSSVBUPSJOT1NDUklQVCI7Z29vZy5kb20uVGFnTmFtZS5PQkpFQ1Q9Ik9CSkVDVCI7Z29vZy5kb20uVGFnTmFtZS5PTD0iT0wiO2dvb2cuZG9tLlRhZ05hbWUuT1BUR1JPVVA9Ik9QVEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLk9QVElPTj0iT1BUSU9OIjtnb29nLmRvbS5UYWdOYW1lLk9VVFBVVD0iT1VUUFVUIjtnb29nLmRvbS5UYWdOYW1lLlA9IlAiO2dvb2cuZG9tLlRhZ05hbWUuUEFSQU09IlBBUkFNIjtnb29nLmRvbS5UYWdOYW1lLlBJQ1RVUkU9IlBJQ1RVUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJFPSJQUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJPR1JFU1M9IlBST0dSRVNTIjtnb29nLmRvbS5UYWdOYW1lLlE9IlEiO2dvb2cuZG9tLlRhZ05hbWUuUlA9IlJQIjtnb29nLmRvbS5UYWdOYW1lLlJUPSJSVCI7Cmdvb2cuZG9tLlRhZ05hbWUuUlRDPSJSVEMiO2dvb2cuZG9tLlRhZ05hbWUuUlVCWT0iUlVCWSI7Z29vZy5kb20uVGFnTmFtZS5TPSJTIjtnb29nLmRvbS5UYWdOYW1lLlNBTVA9IlNBTVAiO2dvb2cuZG9tLlRhZ05hbWUuU0NSSVBUPSJTQ1JJUFQiO2dvb2cuZG9tLlRhZ05hbWUuU0VDVElPTj0iU0VDVElPTiI7Z29vZy5kb20uVGFnTmFtZS5TRUxFQ1Q9IlNFTEVDVCI7Z29vZy5kb20uVGFnTmFtZS5TTUFMTD0iU01BTEwiO2dvb2cuZG9tLlRhZ05hbWUuU09VUkNFPSJTT1VSQ0UiO2dvb2cuZG9tLlRhZ05hbWUuU1BBTj0iU1BBTiI7Z29vZy5kb20uVGFnTmFtZS5TVFJJS0U9IlNUUklLRSI7Z29vZy5kb20uVGFnTmFtZS5TVFJPTkc9IlNUUk9ORyI7Z29vZy5kb20uVGFnTmFtZS5TVFlMRT0iU1RZTEUiO2dvb2cuZG9tLlRhZ05hbWUuU1VCPSJTVUIiO2dvb2cuZG9tLlRhZ05hbWUuU1VNTUFSWT0iU1VNTUFSWSI7Z29vZy5kb20uVGFnTmFtZS5TVVA9IlNVUCI7Cmdvb2cuZG9tLlRhZ05hbWUuU1ZHPSJTVkciO2dvb2cuZG9tLlRhZ05hbWUuVEFCTEU9IlRBQkxFIjtnb29nLmRvbS5UYWdOYW1lLlRCT0RZPSJUQk9EWSI7Z29vZy5kb20uVGFnTmFtZS5URD0iVEQiO2dvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9IlRFTVBMQVRFIjtnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPSJURVhUQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5URk9PVD0iVEZPT1QiO2dvb2cuZG9tLlRhZ05hbWUuVEg9IlRIIjtnb29nLmRvbS5UYWdOYW1lLlRIRUFEPSJUSEVBRCI7Z29vZy5kb20uVGFnTmFtZS5USU1FPSJUSU1FIjtnb29nLmRvbS5UYWdOYW1lLlRJVExFPSJUSVRMRSI7Z29vZy5kb20uVGFnTmFtZS5UUj0iVFIiO2dvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9IlRSQUNLIjtnb29nLmRvbS5UYWdOYW1lLlRUPSJUVCI7Z29vZy5kb20uVGFnTmFtZS5VPSJVIjtnb29nLmRvbS5UYWdOYW1lLlVMPSJVTCI7Z29vZy5kb20uVGFnTmFtZS5WQVI9IlZBUiI7Cmdvb2cuZG9tLlRhZ05hbWUuVklERU89IlZJREVPIjtnb29nLmRvbS5UYWdOYW1lLldCUj0iV0JSIjtnb29nLmxhYnM9e307Z29vZy5sYWJzLnVzZXJBZ2VudD17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9VU0VfQ0xJRU5UX0hJTlRTX09WRVJSSURFPSIiLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFM9ITE7bGV0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X2ZvcmNlQ2xpZW50SGludHNJblRlc3RzPSExO2dvb2cubGFicy51c2VyQWdlbnQuc2V0VXNlQ2xpZW50SGludHNGb3JUZXN0aW5nPWE9Pnttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cz1hfTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfdXNlQ2xpZW50SGludHNSdW50aW1lT3ZlcnJpZGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfVVNFX0NMSUVOVF9ISU5UU19PVkVSUklERT8hIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFNfT1ZFUlJJREUpOiExO2dvb2cubGFicy51c2VyQWdlbnQudXNlQ2xpZW50SGludHM9KCk9Pm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFN8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X3VzZUNsaWVudEhpbnRzUnVudGltZU92ZXJyaWRlfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cztnb29nLmxhYnMudXNlckFnZW50LnV0aWw9e307Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9BU1NVTUVfQ0xJRU5UX0hJTlRTX1NVUFBPUlQ9ITE7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKXt2YXIgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdmlnYXRvcigpO3JldHVybiBhJiYoYT1hLnVzZXJBZ2VudCk/YToiIn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudERhdGEoKXtjb25zdCBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCk7cmV0dXJuIGE/YS51c2VyQWdlbnREYXRhfHxudWxsOm51bGx9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnRJbnRlcm5hbD1udWxsLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudChhKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsPSJzdHJpbmciPT09dHlwZW9mIGE/YTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZygpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCl7cmV0dXJuIG51bGw9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50SW50ZXJuYWw/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudERhdGEoYSl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnREYXRhSW50ZXJuYWw9YX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3Jlc2V0VXNlckFnZW50RGF0YSgpe21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudERhdGFJbnRlcm5hbH0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChhKXtpZighKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiBiP2IuYnJhbmRzLnNvbWUoKHticmFuZDpjfSk9PmMmJigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKShjLGEpKTohMX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KGEpe2NvbnN0IGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtyZXR1cm4oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYixhKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoYSl7Y29uc3QgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudCgpO3JldHVybigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zKShiLGEpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXMoYSl7Y29uc3QgYj1SZWdFeHAoIihbQS1aXVtcXHcgXSspLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/IiwiZyIpLGM9W107bGV0IGQ7Zm9yKDtkPWIuZXhlYyhhKTspYy5wdXNoKFtkWzFdLGRbMl0sZFszXXx8dm9pZCAwXSk7cmV0dXJuIGN9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLkFTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX0FTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmV4dHJhY3RWZXJzaW9uVHVwbGVzPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXM7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZztnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50O2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50RGF0YUJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50SWdub3JlQ2FzZTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwucmVzZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfcmVzZXRVc2VyQWdlbnREYXRhO2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5zZXRVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnNldFVzZXJBZ2VudERhdGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnREYXRhO3ZhciBtb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5VmFsdWU9e0FzeW5jVmFsdWU6Y2xhc3N7Z2V0SWZMb2FkZWQoKXt9bG9hZCgpe319LEhpZ2hFbnRyb3B5VmFsdWU6Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rZXlfPWE7dGhpcy5wcm9taXNlXz10aGlzLnZhbHVlXz12b2lkIDA7dGhpcy5wZW5kaW5nXz0hMX1nZXRJZkxvYWRlZCgpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpKXJldHVybiB0aGlzLnZhbHVlX31hc3luYyBsb2FkKCl7Y29uc3QgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKTtpZihhKXJldHVybiB0aGlzLnByb21pc2VffHwodGhpcy5wZW5kaW5nXz0hMCx0aGlzLnByb21pc2VfPShhc3luYygpPT57dHJ5e3JldHVybiB0aGlzLnZhbHVlXz0oYXdhaXQgYS5nZXRIaWdoRW50cm9weVZhbHVlcyhbdGhpcy5rZXlfXSkpW3RoaXMua2V5X119ZmluYWxseXt0aGlzLnBlbmRpbmdfPQohMX19KSgpKSxhd2FpdCB0aGlzLnByb21pc2VffXJlc2V0Rm9yVGVzdGluZygpe2lmKHRoaXMucGVuZGluZ18pdGhyb3cgRXJyb3IoIlVuc2FmZSBjYWxsIHRvIHJlc2V0Rm9yVGVzdGluZyIpO3RoaXMudmFsdWVfPXRoaXMucHJvbWlzZV89dm9pZCAwO3RoaXMucGVuZGluZ189ITF9fSxWZXJzaW9uOmNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmVyc2lvblN0cmluZ189YX10b1ZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvblN0cmluZ199aXNBdExlYXN0KGEpe3JldHVybiAwPD0oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlVmVyc2lvbnMpKHRoaXMudmVyc2lvblN0cmluZ18sYSl9fX07dmFyIG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhPXt9O21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdD1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoImZ1bGxWZXJzaW9uTGlzdCIpO21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLnBsYXRmb3JtVmVyc2lvbj1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoInBsYXRmb3JtVmVyc2lvbiIpO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kPXtBTkRST0lEX0JST1dTRVI6IkFuZHJvaWQgQnJvd3NlciIsQ0hST01JVU06IkNocm9taXVtIixFREdFOiJNaWNyb3NvZnQgRWRnZSIsRklSRUZPWDoiRmlyZWZveCIsSUU6IkludGVybmV0IEV4cGxvcmVyIixPUEVSQToiT3BlcmEiLFNBRkFSSToiU2FmYXJpIixTSUxLOiJTaWxrIn07Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLkJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKGE9ITEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfQVNTVU1FX0NMSUVOVF9ISU5UU19TVVBQT1JUKXJldHVybiEwO2lmKCFhJiYhKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTthPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiEhYSYmMDxhLmJyYW5kcy5sZW5ndGh9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaGFzRnVsbFZlcnNpb25MaXN0KCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdExlYXN0KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU0sOTgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIk9wZXJhIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlRyaWRlbnQiKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiTVNJRSIpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkVkZ2UiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5FREdFKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJFZGcvIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLk9QRVJBKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJPUFIiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiRmlyZWZveCIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJGeGlPUyIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoU2FmYXJpKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNhZmFyaSIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0KCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bSgpfHwKbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3QoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoKT8hMTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDb2FzdCIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldygpe3JldHVybihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJpUGFkIil8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoImlQaG9uZSIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hTYWZhcmkoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDb2FzdCgpJiYhbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5DSFJPTUlVTSk6KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkNocm9tZSIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDcmlPUyIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXIoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCkpfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNPcGVyYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmE7Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzSUU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzT3BlcmFDaHJvbWl1bT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYUNocm9taXVtPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRmlyZWZveD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRmlyZWZveDtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ29hc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0Owpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3Q7Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0lvc1dlYnZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElvc1dlYnZpZXc7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldztjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBbmRyb2lkQnJvd3Nlcj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXI7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQW5kcm9pZEJyb3dzZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEFuZHJvaWRCcm93c2VyO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNpbGsiKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2NyZWF0ZVZlcnNpb25NYXAoYSl7Y29uc3QgYj17fTthLmZvckVhY2goYz0+e2JbY1swXV09Y1sxXX0pO3JldHVybiBjPT5iW2MuZmluZChkPT5kIGluIGIpXXx8IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbigpe3ZhciBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCk7aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCkpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0SUVWZXJzaW9uKGEpO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9leHRyYWN0VmVyc2lvblR1cGxlcyhhKTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfY3JlYXRlVmVyc2lvbk1hcChhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCk/YihbIlZlcnNpb24iLCJPcGVyYSJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKT8KYihbIkVkZ2UiXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpP2IoWyJFZGciXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKT9iKFsiU2lsayJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ2hyb21lKCk/YihbIkNocm9tZSIsIkNyaU9TIiwiSGVhZGxlc3NDaHJvbWUiXSk6KGE9YVsyXSkmJmFbMV18fCIifWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcihhKXtyZXR1cm4gMDw9KDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKShtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb24oKSxhKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNWZXJzaW9uT3JIaWdoZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYSl7dmFyIGI9L3J2OiAqKFtcZFwuXSopLy5leGVjKGEpO2lmKGImJmJbMV0pcmV0dXJuIGJbMV07Yj0iIjtjb25zdCBjPS9NU0lFICsoW1xkXC5dKykvLmV4ZWMoYSk7aWYoYyYmY1sxXSlpZihhPS9UcmlkZW50XC8oXGQuXGQpLy5leGVjKGEpLCI3LjAiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgIjQuMCI6Yj0iOC4wIjticmVhaztjYXNlICI1LjAiOmI9IjkuMCI7YnJlYWs7Y2FzZSAiNi4wIjpiPSIxMC4wIjticmVhaztjYXNlICI3LjAiOmI9IjExLjAifWVsc2UgYj0iNy4wIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtpZihhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5JRSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYik6IiI7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2V4dHJhY3RWZXJzaW9uVHVwbGVzKGIpO2NvbnN0IGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9jcmVhdGVWZXJzaW9uTWFwKGIpO3N3aXRjaChhKXtjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuT1BFUkE6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCkpcmV0dXJuIGMoWyJWZXJzaW9uIiwKIk9wZXJhIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCkpcmV0dXJuIGMoWyJPUFIiXSk7YnJlYWs7Y2FzZSBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkVER0U6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VIdG1sKCkpcmV0dXJuIGMoWyJFZGdlIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlQ2hyb21pdW0oKSlyZXR1cm4gYyhbIkVkZyJdKTticmVhaztjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU06aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpKXJldHVybiBjKFsiQ2hyb21lIiwiQ3JpT1MiLCJIZWFkbGVzc0Nocm9tZSJdKX1yZXR1cm4gYT09PQptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkZJUkVGT1gmJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94KCl8fGE9PT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLlNBRkFSSSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaSgpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5BTkRST0lEX0JST1dTRVImJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hBbmRyb2lkQnJvd3NlcigpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLJiZtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpPyhhPWJbMl0pJiYKYVsxXXx8IiI6IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdmVyc2lvbk9mXyhhKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpJiZhIT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLKXt2YXIgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpO2lmKCFifHwhYi52ZXJzaW9uKXJldHVybiBOYU47Yj1iLnZlcnNpb24uc3BsaXQoIi4iKX1lbHNle2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSk7aWYoIiI9PT1iKXJldHVybiBOYU47Yj1iLnNwbGl0KCIuIil9cmV0dXJuIDA9PT1iLmxlbmd0aD9OYU46TnVtYmVyKGJbMF0pfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk+PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRMZWFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0F0TW9zdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk8PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRNb3N0PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdE1vc3Q7CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfSGlnaEVudHJvcHlCcmFuZFZlcnNpb257Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuYnJhbmRfPWE7dGhpcy52ZXJzaW9uXz1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYyk7dGhpcy51c2VVYWNoXz1ifWdldElmTG9hZGVkKCl7aWYodGhpcy51c2VVYWNoXyl7dmFyIGE9bW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmdldElmTG9hZGVkKCk7aWYodm9pZCAwIT09YSlyZXR1cm4gYT1hLmZpbmQoKHticmFuZDpifSk9PnRoaXMuYnJhbmRfPT09YiksKDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYSksbmV3IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlWYWx1ZS5WZXJzaW9uKGEudmVyc2lvbil9aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkKXJldHVybiB0aGlzLnZlcnNpb25ffWFzeW5jIGxvYWQoKXtpZih0aGlzLnVzZVVhY2hfKXt2YXIgYT0KYXdhaXQgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmxvYWQoKTtpZih2b2lkIDAhPT1hKXJldHVybiBhPWEuZmluZCgoe2JyYW5kOmJ9KT0+dGhpcy5icmFuZF89PT1iKSwoMCxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzKShhKSxuZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYS52ZXJzaW9uKX1lbHNlIGF3YWl0IDA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwO3JldHVybiB0aGlzLnZlcnNpb25ffX1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSExOwphc3luYyBmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2xvYWRGdWxsVmVyc2lvbnMoKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCghMCkmJmF3YWl0IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdC5sb2FkKCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwfWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5sb2FkRnVsbFZlcnNpb25zPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbG9hZEZ1bGxWZXJzaW9uczsKZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLnJlc2V0Rm9yVGVzdGluZz0oKT0+e21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfcHJlVWFjaEhhc0xvYWRlZD0hMTttb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5RGF0YS5mdWxsVmVyc2lvbkxpc3QucmVzZXRGb3JUZXN0aW5nKCl9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2Z1bGxWZXJzaW9uT2YoYSl7bGV0IGI9IiI7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9oYXNGdWxsVmVyc2lvbkxpc3QoKXx8KGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSkpO2NvbnN0IGM9YSE9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuU0lMSyYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoITApO2lmKGMpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmR9KT0+ZD09PWEpKXJldHVybn1lbHNlIGlmKCIiPT09YilyZXR1cm47cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0hpZ2hFbnRyb3B5QnJhbmRWZXJzaW9uKGEsCmMsYil9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmZ1bGxWZXJzaW9uT2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKGEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCEwKSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mKGEpO2lmKGIpe2lmKGI9Yi5nZXRJZkxvYWRlZCgpKXJldHVybiBiLnRvVmVyc2lvblN0cmluZ0ZvckxvZ2dpbmcoKTtiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpLmJyYW5kcy5maW5kKCh7YnJhbmQ6Y30pPT5jPT09YSk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYik7cmV0dXJuIGIudmVyc2lvbn1yZXR1cm4iIn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl9Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uU3RyaW5nRm9yTG9nZ2luZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nO2dvb2cuZG9tLnRhZ3M9e307Z29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07Z29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bYV19O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT17fTsKY2xhc3MgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWI9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU/YToiIjt0aGlzLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITB9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChhKS50b1N0cmluZygpfXN0YXRpYyB1bndyYXBUcnVzdGVkSFRNTChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbCYmCmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbChgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnJHthfScgb2YgdHlwZSBgK2dvb2cudHlwZU9mKGEpKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlSHRtbCJ9c3RhdGljIGh0bWxFc2NhcGUoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGEpKX1zdGF0aWMgaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcyhhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbClyZXR1cm4gYTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXMoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmh0bWxFc2NhcGUoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbW1lbnQoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiXHgzYyEtLSIrCmdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSkrIi0tXHgzZSIpfXN0YXRpYyBjcmVhdGUoYSxiLGMpe21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudmVyaWZ5VGFnTmFtZShTdHJpbmcoYSkpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGEpLGIsYyl9c3RhdGljIHZlcmlmeVRhZ05hbWUoYSl7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfVkFMSURfTkFNRVNfSU5fVEFHLnRlc3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YEludmFsaWQgdGFnIG5hbWUgPCR7YX0+LmA6IiIpO2lmKGEudG9VcHBlckNhc2UoKWluIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfTk9UX0FMTE9XRURfVEFHX05BTUVTKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgVGFnIG5hbWUgPCR7YX0+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5gOiIiKTt9c3RhdGljIGNyZWF0ZUlmcmFtZShhLGIsYyxkKXthJiZnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChhKTtjb25zdCBlPXt9O2Uuc3JjPWF8fG51bGw7ZS5zcmNkb2M9YiYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYik7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse3NhbmRib3g6IiJ9LGMpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoImlmcmFtZSIsYSxkKX1zdGF0aWMgY3JlYXRlU2FuZGJveElmcmFtZShhLGIsYyxkKXtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/CiJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLiI6IiIpO2NvbnN0IGU9e307ZS5zcmM9YT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoYSkpOm51bGw7ZS5zcmNkb2M9Ynx8bnVsbDtlLnNhbmRib3g9IiI7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse30sYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiaWZyYW1lIixhLGQpfXN0YXRpYyBjYW5Vc2VTYW5kYm94SWZyYW1lKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLkhUTUxJRnJhbWVFbGVtZW50JiYic2FuZGJveCJpbiBnb29nLmdsb2JhbC5IVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGV9c3RhdGljIGNyZWF0ZVNjcmlwdFNyYyhhLGIpe2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGEpOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3NyYzphfSx7fSxiKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGEpfXN0YXRpYyBjcmVhdGVTY3JpcHQoYSxiKXtmb3IodmFyIGMgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKSl7dmFyIGQ9Yy50b0xvd2VyQ2FzZSgpO2lmKCJsYW5ndWFnZSI9PWR8fCJzcmMiPT1kfHwidGV4dCI9PWQpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YENhbm5vdCBzZXQgIiR7ZH0iIGF0dHJpYnV0ZWA6IiIpO31jPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihkPTA7ZDwKYS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcChhW2RdKTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGIsYSl9c3RhdGljIGNyZWF0ZVN0eWxlKGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHt0eXBlOiJ0ZXh0L2NzcyJ9LHt9LGIpO2xldCBjPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGFbZF0pOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzdHlsZSIsYixhKX1zdGF0aWMgY3JlYXRlTWV0YVJlZnJlc2goYSxiKXthPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShhKSk7KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKSkmJmdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEsIjsiKSYmKGE9IiciK2EucmVwbGFjZSgvJy9nLCIlMjciKSsiJyIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIm1ldGEiLAp7Imh0dHAtZXF1aXYiOiJyZWZyZXNoIixjb250ZW50OihifHwwKSsiOyB1cmw9IithfSl9c3RhdGljIGpvaW4oYSxiKXthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtjb25zdCBjPVtdLGQ9ZT0+e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGQpOihlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxjLnB1c2gobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoZSkpKX07Yi5mb3JFYWNoKGQpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYy5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbmNhdChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU1QVFksCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXN0YXRpYyBjcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhLGIsYyl7Yj1gPCR7YX1gK21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpO251bGw9PWM/Yz1bXTpBcnJheS5pc0FycmF5KGMpfHwoYz1bY10pO2dvb2cuZG9tLnRhZ3MuaXNWb2lkVGFnKGEudG9Mb3dlckNhc2UoKSk/Cihnb29nLmFzc2VydHMuYXNzZXJ0KCFjLmxlbmd0aCxgVm9pZCB0YWcgPCR7YX0+IGRvZXMgbm90IGFsbG93IGNvbnRlbnQuYCksYis9Ij4iKTooYz1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbmNhdChjKSxiKz0iPiIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYykrIjwvIithKyI+Iik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpe2xldCBjPSIiO2lmKGIpZm9yKGxldCBkIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1ZBTElEX05BTUVTX0lOX1RBRy50ZXN0KGQpKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSAiJHtkfSIuYDoiIik7Y29uc3QgZT1iW2RdO251bGwhPWUmJihjKz0iICIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRBdHRyTmFtZUFuZFZhbHVlKGEsZCxlKSl9cmV0dXJuIGN9c3RhdGljIGNvbWJpbmVBdHRyaWJ1dGVzKGEsYixjKXtjb25zdCBkPXt9O2Zvcih2YXIgZSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpJiYoZ29vZy5hc3NlcnRzLmFzc2VydChlLnRvTG93ZXJDYXNlKCk9PWUsIk11c3QgYmUgbG93ZXIgY2FzZSIpLGRbZV09YVtlXSk7Zm9yKGNvbnN0IGYgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixmKSYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoZi50b0xvd2VyQ2FzZSgpPT1mLCJNdXN0IGJlIGxvd2VyIGNhc2UiKSxkW2ZdPWJbZl0pO2lmKGMpZm9yKGNvbnN0IGYgaW4gYylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYywKZikpe2U9Zi50b0xvd2VyQ2FzZSgpO2lmKGUgaW4gYSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz9gQ2Fubm90IG92ZXJyaWRlICIke2V9IiBhdHRyaWJ1dGUsIGdvdCAiYCtmKyciIHdpdGggdmFsdWUgIicrY1tmXSsnIic6IiIpO2UgaW4gYiYmZGVsZXRlIGRbZV07ZFtmXT1jW2ZdfXJldHVybiBkfX1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz1nb29nLkRFQlVHO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuU1VQUE9SVF9TVFlMRV9BVFRSSUJVVEU9ITA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5mcm9tPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9WQUxJRF9OQU1FU19JTl9UQUc9L15bYS16QS1aMC05LV0rJC8sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9OT1RfQUxMT1dFRF9UQUdfTkFNRVM9e1tnb29nLmRvbS5UYWdOYW1lLkFQUExFVF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuQkFTRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuRU1CRURdOiEwLFtnb29nLmRvbS5UYWdOYW1lLklGUkFNRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTElOS106ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUFUSF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUVUQV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuT0JKRUNUXTohMCxbZ29vZy5kb20uVGFnTmFtZS5TQ1JJUFRdOiEwLApbZ29vZy5kb20uVGFnTmFtZS5TVFlMRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuU1ZHXTohMCxbZ29vZy5kb20uVGFnTmFtZS5URU1QTEFURV06ITB9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldEF0dHJOYW1lQW5kVmFsdWUoYSxiLGMpe2lmKGMgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCljPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChjKTtlbHNlIGlmKCJzdHlsZSI9PWIudG9Mb3dlckNhc2UoKSlpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLlNVUFBPUlRfU1RZTEVfQVRUUklCVVRFKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRTdHlsZVZhbHVlKGMpO2Vsc2UgdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J0F0dHJpYnV0ZSAic3R5bGUiIG5vdCBzdXBwb3J0ZWQuJzoiIik7ZWxzZXtpZigvXm9uL2kudGVzdChiKSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz8KYEF0dHJpYnV0ZSAiJHtifWArJyIgcmVxdWlyZXMgZ29vZy5zdHJpbmcuQ29uc3QgdmFsdWUsICInK2MrJyIgZ2l2ZW4uJzoiIik7aWYoYi50b0xvd2VyQ2FzZSgpaW4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUylpZihjIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCljPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGMpO2Vsc2UgaWYoYyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKWM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGMpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYyljPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGMpLmdldFR5cGVkU3RyaW5nVmFsdWUoKTtlbHNlIHRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTP2BBdHRyaWJ1dGUgIiR7Yn0iIG9uIHRhZyAiJHthfWArJyIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlICInKwpjKyciIGdpdmVuLic6IiIpO31jLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmcmJihjPWMuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpKTtnb29nLmFzc2VydHMuYXNzZXJ0KCJzdHJpbmciPT09dHlwZW9mIGN8fCJudW1iZXIiPT09dHlwZW9mIGMsIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCAiK3R5cGVvZiBjKyIgd2l0aCB2YWx1ZTogIitjKTtyZXR1cm5gJHtifT0iYCtnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKFN0cmluZyhjKSkrJyInfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldFN0eWxlVmFsdWUoYSl7aWYoIWdvb2cuaXNPYmplY3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J1RoZSAic3R5bGUiIGF0dHJpYnV0ZSByZXF1aXJlcyBnb29nLmh0bWwuU2FmZVN0eWxlIG9yIG1hcCBvZiBzdHlsZSBwcm9wZXJ0aWVzLCAnK3R5cGVvZiBhKyIgZ2l2ZW46ICIrYToiIik7YSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXx8KGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLmNyZWF0ZShhKSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYSl9Cm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRE9DVFlQRV9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiPCFET0NUWVBFIGh0bWw+Iil9KCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbChnb29nLmdsb2JhbC50cnVzdGVkVHlwZXMmJmdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fCIiLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURSk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5CUj1mdW5jdGlvbigpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIjxicj4iKX0oKTsKZ29vZy5odG1sLlNhZmVIdG1sPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWw7Z29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zPXt9O2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU2NyaXB0RnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTdHlsZUZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnRydXN0ZWRSZXNvdXJjZVVybEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9O2dvb2cuZG9tLnNhZmU9e307Z29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjoiYWZ0ZXJiZWdpbiIsQUZURVJFTkQ6ImFmdGVyZW5kIixCRUZPUkVCRUdJTjoiYmVmb3JlYmVnaW4iLEJFRk9SRUVORDoiYmVmb3JlZW5kIn07Z29vZy5kb20uc2FmZS5pbnNlcnRBZGphY2VudEh0bWw9ZnVuY3Rpb24oYSxiLGMpe2EuaW5zZXJ0QWRqYWNlbnRIVE1MKGIsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChjKSl9O2dvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTXz17TUFUSDohMCxTQ1JJUFQ6ITAsU1RZTEU6ITAsU1ZHOiEwLFRFTVBMQVRFOiEwfTsKZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoZnVuY3Rpb24oKXtpZihnb29nLkRFQlVHJiYidW5kZWZpbmVkIj09PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2EuYXBwZW5kQ2hpbGQoYik7aWYoZ29vZy5ERUJVRyYmIWEuZmlyc3RDaGlsZClyZXR1cm4hMTtiPWEuZmlyc3RDaGlsZC5maXJzdENoaWxkO2EuaW5uZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWSk7cmV0dXJuIWIucGFyZW50RWxlbWVudH0pOwpnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDthLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5pbm5lckhUTUw9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0SW5uZXJIdG1sPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZhLnRhZ05hbWUpe3ZhciBjPWEudGFnTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGdvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTX1tjXSl0aHJvdyBFcnJvcigiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgIithLnRhZ05hbWUrIi4iKTt9Z29vZy5kb20uc2FmZS51bnNhZmVTZXRJbm5lckh0bWxEb05vdFVzZU9yRWxzZShhLGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWxGcm9tQ29uc3RhbnQ9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChhLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJDb25zdGFudCBIVE1MIHRvIGJlIGltbWVkaWF0ZWxseSB1c2VkLiIpLGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChiKSkpfTtnb29nLmRvbS5zYWZlLnNldE91dGVySHRtbD1mdW5jdGlvbihhLGIpe2Eub3V0ZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoYil9Owpnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGEsYil7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGEpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuc2V0QnV0dG9uRm9ybUFjdGlvbj1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2I6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQoYik7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxCdXR0b25FbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbnB1dEZvcm1BY3Rpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldFN0eWxlPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5jc3NUZXh0PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihhLGIpe2Eud3JpdGUobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSl9Owpnb29nLmRvbS5zYWZlLnNldEFuY2hvckhyZWY9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQoYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEF1ZGlvU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBdWRpb0VsZW1lbnQoYSk7aWYoIShiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpKXt2YXIgYz0vXmRhdGE6YXVkaW9cLy9pLnRlc3QoYik7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiLGMpfWEuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChhKTtpZighKGIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBjPS9eZGF0YTp2aWRlb1wvL2kudGVzdChiKTtiPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIsYyl9YS5zcmM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEVtYmVkU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldEZyYW1lU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYil9Owpnb29nLmRvbS5zYWZlLnNldElmcmFtZVNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudChhKTthLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKX07Z29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoYSk7YS5zcmNkb2M9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0TGlua0hyZWZBbmRSZWw9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MTGlua0VsZW1lbnQoYSk7YS5yZWw9Yztnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyhjLCJzdHlsZXNoZWV0Iik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQoYiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlICJyZWwiIGNvbnRhaW5zICJzdHlsZXNoZWV0IicpLGEuaHJlZj1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKSwoYj1nb29nLmRvbS5zYWZlLmdldFN0eWxlTm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKSk6YS5ocmVmPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsP2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGIpOgpiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKSl9O2dvb2cuZG9tLnNhZmUuc2V0T2JqZWN0RGF0YT1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudChhKTthLmRhdGE9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldFNjcmlwdFNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudChhKTtnb29nLmRvbS5zYWZlLnNldE5vbmNlRm9yU2NyaXB0RWxlbWVudF8oYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGEpO2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50XyhhKTthLnRleHRDb250ZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYil9O2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50Xz1mdW5jdGlvbihhKXtjb25zdCBiPWdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpO2ImJmEuc2V0QXR0cmlidXRlKCJub25jZSIsYil9Owpnb29nLmRvbS5zYWZlLnNldExvY2F0aW9uSHJlZj1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihhKTtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EuaHJlZj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuYXNzaWduTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmFzc2lnbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTsKZ29vZy5kb20uc2FmZS5yZXBsYWNlTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTtnb29nLmRvbS5zYWZlLm9wZW5JbldpbmRvdz1mdW5jdGlvbihhLGIsYyxkKXthPWEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9hOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGEpO2I9Ynx8Z29vZy5nbG9iYWw7Yz1jIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGMpOmN8fCIiO3JldHVybiB2b2lkIDAhPT1kP2Iub3Blbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYSksYyxkKTpiLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLGMpfTsKZ29vZy5kb20uc2FmZS5wYXJzZUZyb21TdHJpbmdIdG1sPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nKGEsYiwidGV4dC9odG1sIil9O2dvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5wYXJzZUZyb21TdHJpbmcobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSxjKX07Cmdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYj1mdW5jdGlvbihhKXtpZighL15pbWFnZVwvLiovZy50ZXN0KGEudHlwZSkpdGhyb3cgRXJyb3IoImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLiIpO3ZhciBiPWdvb2cuZ2xvYmFsLlVSTC5jcmVhdGVPYmplY3RVUkwoYSk7YT1uZXcgZ29vZy5nbG9iYWwuSW1hZ2U7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtnb29nLmdsb2JhbC5VUkwucmV2b2tlT2JqZWN0VVJMKGIpfTthLnNyYz1iO3JldHVybiBhfTtnb29nLmRvbS5zYWZlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKGIpKX07Cmdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLnNhZmUuZ2V0Tm9uY2VfKCJzY3JpcHRbbm9uY2VdIixhKX07Z29vZy5kb20uc2FmZS5nZXRTdHlsZU5vbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5zYWZlLmdldE5vbmNlXygnc3R5bGVbbm9uY2VdLGxpbmtbcmVsPSJzdHlsZXNoZWV0Il1bbm9uY2VdJyxhKX07Z29vZy5kb20uc2FmZS5OT05DRV9QQVRURVJOXz0vXltcdysvXy1dK1s9XXswLDJ9JC87Z29vZy5kb20uc2FmZS5nZXROb25jZV89ZnVuY3Rpb24oYSxiKXtiPShifHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuIGIucXVlcnlTZWxlY3Rvcj8oYT1iLnF1ZXJ5U2VsZWN0b3IoYSkpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZSgibm9uY2UiKSkmJmdvb2cuZG9tLnNhZmUuTk9OQ0VfUEFUVEVSTl8udGVzdChhKT9hOiIiOiIifTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLlVuaWNvZGU9e05CU1A6Ilx1MDBhMCIsWkVST19XSURUSF9TUEFDRToiXHUyMDBiIn07Z29vZy5zdHJpbmcuc3RhcnRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5zdGFydHNXaXRoO2dvb2cuc3RyaW5nLmVuZHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoO2dvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRXF1YWxzOwpnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hLnNwbGl0KCIlcyIpO2xldCBkPSIiO2NvbnN0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Zvcig7ZS5sZW5ndGgmJjE8Yy5sZW5ndGg7KWQrPWMuc2hpZnQoKStlLnNoaWZ0KCk7cmV0dXJuIGQrYy5qb2luKCIlcyIpfTtnb29nLnN0cmluZy5jb2xsYXBzZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rL2csIiAiKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9O2dvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2U9Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZTtnb29nLnN0cmluZy5pc0VtcHR5U3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiAwPT1hLmxlbmd0aH07Z29vZy5zdHJpbmcuaXNFbXB0eT1nb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlOwpnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShhKSl9O2dvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlO2dvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGEpe3JldHVybiEvW15cdFxuXHIgXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3JldHVybiEvW14wLTldLy50ZXN0KGEpfTtnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4iICI9PWF9Owpnb29nLnN0cmluZy5pc1VuaWNvZGVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiAxPT1hLmxlbmd0aCYmIiAiPD1hJiYifiI+PWF8fCJcdTAwODAiPD1hJiYiXHVmZmZkIj49YX07Z29vZy5zdHJpbmcuc3RyaXBOZXdsaW5lcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXHJcbnxccnxcbikrL2csIiAiKX07Z29vZy5zdHJpbmcuY2Fub25pY2FsaXplTmV3bGluZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIlxuIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHhhMHxccy9nLCIgIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVNwYWNlcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ceGEwfFsgXHRdKy9nLCIgIil9Owpnb29nLnN0cmluZy5jb2xsYXBzZUJyZWFraW5nU3BhY2VzPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcdFxyXG4gXSsvZywiICIpLnJlcGxhY2UoL15bXHRcclxuIF0rfFtcdFxyXG4gXSskL2csIiIpfTtnb29nLnN0cmluZy50cmltPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW07Z29vZy5zdHJpbmcudHJpbUxlZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfTtnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfTtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb21wYXJlPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU7Cmdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEpcmV0dXJuLTE7aWYoIWIpcmV0dXJuIDE7Y29uc3QgZD1hLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZT1iLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZj1NYXRoLm1pbihkLmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxmO2crKyl7Yz1kW2ddO2NvbnN0IGg9ZVtnXTtpZihjIT1oKXJldHVybiBhPXBhcnNlSW50KGMsMTApLCFpc05hTihhKSYmKGI9cGFyc2VJbnQoaCwxMCksIWlzTmFOKGIpJiZhLWIpP2EtYjpjPGg/LTE6MX1yZXR1cm4gZC5sZW5ndGghPWUubGVuZ3RoP2QubGVuZ3RoLWUubGVuZ3RoOmE8Yj8tMToxfTtnb29nLnN0cmluZy5pbnRBd2FyZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcubnVtYmVyQXdhcmVDb21wYXJlXyhhLGIsL1xkK3xcRCsvZyl9Owpnb29nLnN0cmluZy5mbG9hdEF3YXJlQ29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLnN0cmluZy5udW1iZXJBd2FyZUNvbXBhcmVfKGEsYiwvXGQrfFwuXGQrfFxEKy9nKX07Z29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlO2dvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9O2dvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07Z29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnI7Cmdvb2cuc3RyaW5nLmh0bWxFc2NhcGU9ZnVuY3Rpb24oYSxiKXthPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSxiKTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sIiYjMTAxOyIpKTtyZXR1cm4gYX07Z29vZy5zdHJpbmcuRV9SRV89L2UvZztnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhhLCImIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiYiZG9jdW1lbnQiaW4gZ29vZy5nbG9iYWw/Z29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXyhhKTpnb29nLnN0cmluZy51bmVzY2FwZVB1cmVYbWxFbnRpdGllc18oYSk6YX07Cmdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNXaXRoRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoYSwiJiIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oYSxiKTphfTsKZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXz1mdW5jdGlvbihhLGIpe2NvbnN0IGM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIid9O2xldCBkO2Q9Yj9iLmNyZWF0ZUVsZW1lbnQoImRpdiIpOmdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLnJlcGxhY2UoZ29vZy5zdHJpbmcuSFRNTF9FTlRJVFlfUEFUVEVSTl8sZnVuY3Rpb24oZSxmKXtsZXQgZz1jW2VdO2lmKGcpcmV0dXJuIGc7IiMiPT1mLmNoYXJBdCgwKSYmKGY9TnVtYmVyKCIwIitmLnNsaWNlKDEpKSxpc05hTihmKXx8KGc9U3RyaW5nLmZyb21DaGFyQ29kZShmKSkpO2d8fChnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChkLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJTaW5nbGUgSFRNTCBlbnRpdHkuIiksCmUrIiAiKSksZz1kLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnNsaWNlKDAsLTEpKTtyZXR1cm4gY1tlXT1nfSl9O2dvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIiMiIT1jLmNoYXJBdCgwKXx8KGM9TnVtYmVyKCIwIitjLnNsaWNlKDEpKSxpc05hTihjKSk/YjpTdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX0pfTtnb29nLnN0cmluZy5IVE1MX0VOVElUWV9QQVRURVJOXz0vJihbXjtcczwmXSspOz8vZztnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTsKZ29vZy5zdHJpbmcucHJlc2VydmVTcGFjZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xuIF0pIC9nLCIkMSIrZ29vZy5zdHJpbmcuVW5pY29kZS5OQlNQKX07Z29vZy5zdHJpbmcuc3RyaXBRdW90ZXM9ZnVuY3Rpb24oYSxiKXtjb25zdCBjPWIubGVuZ3RoO2ZvcihsZXQgZD0wO2Q8YztkKyspe2NvbnN0IGU9MT09Yz9iOmIuY2hhckF0KGQpO2lmKGEuY2hhckF0KDApPT1lJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09ZSlyZXR1cm4gYS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcudHJ1bmNhdGU9ZnVuY3Rpb24oYSxiLGMpe2MmJihhPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoYSkpO2EubGVuZ3RoPmImJihhPWEuc3Vic3RyaW5nKDAsYi0zKSsiLi4uIik7YyYmKGE9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShhKSk7cmV0dXJuIGF9Owpnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihhLGIsYyxkKXtjJiYoYT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGEpKTtpZihkJiZhLmxlbmd0aD5iKXtkPmImJihkPWIpO3ZhciBlPWEubGVuZ3RoLWQ7YT1hLnN1YnN0cmluZygwLGItZCkrIi4uLiIrYS5zdWJzdHJpbmcoZSl9ZWxzZSBhLmxlbmd0aD5iJiYoZD1NYXRoLmZsb29yKGIvMiksZT1hLmxlbmd0aC1kLGE9YS5zdWJzdHJpbmcoMCxkK2IlMikrIi4uLiIrYS5zdWJzdHJpbmcoZSkpO2MmJihhPWdvb2cuc3RyaW5nLmh0bWxFc2NhcGUoYSkpO3JldHVybiBhfTtnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfPXsiXHgwMCI6IlxcMCIsIlxiIjoiXFxiIiwiXGYiOiJcXGYiLCJcbiI6IlxcbiIsIlxyIjoiXFxyIiwiXHQiOiJcXHQiLCJcdiI6IlxceDBCIiwnIic6J1xcIicsIlxcIjoiXFxcXCIsIjwiOiJcXHUwMDNDIn07Z29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV89eyInIjoiXFwnIn07Cmdvb2cuc3RyaW5nLnF1b3RlPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2NvbnN0IGI9WyciJ107Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2NvbnN0IGQ9YS5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7YltjKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bZF18fCgzMTxlJiYxMjc+ZT9kOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZCkpfWIucHVzaCgnIicpO3JldHVybiBiLmpvaW4oIiIpfTtnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyliW2NdPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoYS5jaGFyQXQoYykpO3JldHVybiBiLmpvaW4oIiIpfTsKZ29vZy5zdHJpbmcuZXNjYXBlQ2hhcj1mdW5jdGlvbihhKXtpZihhIGluIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1thXTtpZihhIGluIGdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc18pcmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bYV07bGV0IGI7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMCk7aWYoMzE8YyYmMTI3PmMpYj1hO2Vsc2V7aWYoMjU2PmMpe2lmKGI9IlxceCIsMTY+Y3x8MjU2PGMpYis9IjAifWVsc2UgYj0iXFx1Iiw0MDk2PmMmJihiKz0iMCIpO2IrPWMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWJ9O2dvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zOwpnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucztnb29nLnN0cmluZy5jb3VudE9mPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmI/YS5zcGxpdChiKS5sZW5ndGgtMTowfTtnb29nLnN0cmluZy5yZW1vdmVBdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9YTswPD1iJiZiPGEubGVuZ3RoJiYwPGMmJihkPWEuc2xpY2UoMCxiKSthLnNsaWNlKGIrYykpO3JldHVybiBkfTtnb29nLnN0cmluZy5yZW1vdmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBsYWNlKGIsIiIpfTtnb29nLnN0cmluZy5yZW1vdmVBbGw9ZnVuY3Rpb24oYSxiKXtiPW5ldyBSZWdFeHAoZ29vZy5zdHJpbmcucmVnRXhwRXNjYXBlKGIpLCJnIik7cmV0dXJuIGEucmVwbGFjZShiLCIiKX07Cmdvb2cuc3RyaW5nLnJlcGxhY2VBbGw9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUoYiksImciKTtyZXR1cm4gYS5yZXBsYWNlKGIsYy5yZXBsYWNlKC9cJC9nLCIkJCQkIikpfTtnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4L2csIlxceDA4Iil9O2dvb2cuc3RyaW5nLnJlcGVhdD1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTsKZ29vZy5zdHJpbmcucGFkTnVtYmVyPWZ1bmN0aW9uKGEsYixjKXtpZighTnVtYmVyLmlzRmluaXRlKGEpKXJldHVybiBTdHJpbmcoYSk7YT12b2lkIDAhPT1jP2EudG9GaXhlZChjKTpTdHJpbmcoYSk7Yz1hLmluZGV4T2YoIi4iKTstMT09PWMmJihjPWEubGVuZ3RoKTtjb25zdCBkPSItIj09PWFbMF0/Ii0iOiIiO2QmJihhPWEuc3Vic3RyaW5nKDEpKTtyZXR1cm4gZCtnb29nLnN0cmluZy5yZXBlYXQoIjAiLE1hdGgubWF4KDAsYi1jKSkrYX07Z29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6U3RyaW5nKGEpfTtnb29nLnN0cmluZy5nZXRSYW5kb21TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleZ29vZy5ub3coKSkudG9TdHJpbmcoMzYpfTsKZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucztnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihhKXtsZXQgYj0wO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7KytjKWI9MzEqYithLmNoYXJDb2RlQXQoYyk+Pj4wO3JldHVybiBifTtnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXz0yMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCl8MDtnb29nLnN0cmluZy5jcmVhdGVVbmlxdWVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZ29vZ18iK2dvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfKyt9O2dvb2cuc3RyaW5nLnRvTnVtYmVyPWZ1bmN0aW9uKGEpe2NvbnN0IGI9TnVtYmVyKGEpO3JldHVybiAwPT1iJiZnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlKGEpP05hTjpifTtnb29nLnN0cmluZy5pc0xvd2VyQ2FtZWxDYXNlPWZ1bmN0aW9uKGEpe3JldHVybi9eW2Etel0rKFtBLVpdW2Etel0qKSokLy50ZXN0KGEpfTsKZ29vZy5zdHJpbmcuaXNVcHBlckNhbWVsQ2FzZT1mdW5jdGlvbihhKXtyZXR1cm4vXihbQS1aXVthLXpdKikrJC8udGVzdChhKX07Z29vZy5zdHJpbmcudG9DYW1lbENhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07Z29vZy5zdHJpbmcudG9TZWxlY3RvckNhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCl9O2dvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGEsYil7Yj0ic3RyaW5nIj09PXR5cGVvZiBiP2dvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZShiKToiXFxzIjtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIiheIisoYj8ifFsiK2IrIl0rIjoiIikrIikoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gZCtlLnRvVXBwZXJDYXNlKCl9KX07Cmdvb2cuc3RyaW5nLmNhcGl0YWxpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhLmNoYXJBdCgwKSkudG9VcHBlckNhc2UoKStTdHJpbmcoYS5zbGljZSgxKSkudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT8vXlxzKi0/MHgvaS50ZXN0KGEpP3BhcnNlSW50KGEsMTYpOnBhcnNlSW50KGEsMTApOk5hTn07Z29vZy5zdHJpbmcuc3BsaXRMaW1pdD1mdW5jdGlvbihhLGIsYyl7YT1hLnNwbGl0KGIpO2NvbnN0IGQ9W107Zm9yKDswPGMmJmEubGVuZ3RoOylkLnB1c2goYS5zaGlmdCgpKSxjLS07YS5sZW5ndGgmJmQucHVzaChhLmpvaW4oYikpO3JldHVybiBkfTsKZ29vZy5zdHJpbmcubGFzdENvbXBvbmVudD1mdW5jdGlvbihhLGIpe2lmKGIpInN0cmluZyI9PXR5cGVvZiBiJiYoYj1bYl0pO2Vsc2UgcmV0dXJuIGE7bGV0IGM9LTE7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKCIiPT1iW2RdKWNvbnRpbnVlO2NvbnN0IGU9YS5sYXN0SW5kZXhPZihiW2RdKTtlPmMmJihjPWUpfXJldHVybi0xPT1jP2E6YS5zbGljZShjKzEpfTsKZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1bXSxkPVtdO2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEubGVuZ3RofHwhYi5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoKzE7ZSsrKWNbZV09ZTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtkWzBdPWUrMTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylkW2YrMV09TWF0aC5taW4oZFtmXSsxLGNbZisxXSsxLGNbZl0rTnVtYmVyKGFbZV0hPWJbZl0pKTtmb3IoZj0wO2Y8Yy5sZW5ndGg7ZisrKWNbZl09ZFtmXX1yZXR1cm4gZFtiLmxlbmd0aF19O2dvb2cuc3RyaW5nLnBhdGg9e307Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZT1mdW5jdGlvbihhKXtjb25zdCBiPWEubGFzdEluZGV4T2YoIi8iKSsxO3JldHVybiBhLnNsaWNlKGIpfTtnb29nLnN0cmluZy5wYXRoLmJhc2VuYW1lPWdvb2cuc3RyaW5nLnBhdGguYmFzZU5hbWU7Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLyIpKzE7YT1hLnNsaWNlKDAsYik7L15cLyskLy50ZXN0KGEpfHwoYT1hLnJlcGxhY2UoL1wvKyQvLCIiKSk7cmV0dXJuIGF9O2dvb2cuc3RyaW5nLnBhdGguZXh0ZW5zaW9uPWZ1bmN0aW9uKGEpe2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKS5yZXBsYWNlKC9cLisvZywiLiIpO2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLiIpO3JldHVybiAwPj1iPyIiOmEuc2xpY2UoYisxKX07Cmdvb2cuc3RyaW5nLnBhdGguam9pbj1mdW5jdGlvbihhKXtsZXQgYj1hcmd1bWVudHNbMF07Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107Yj1nb29nLnN0cmluZy5zdGFydHNXaXRoKGQsIi8iKT9kOiIiPT1ifHxnb29nLnN0cmluZy5lbmRzV2l0aChiLCIvIik/YitkOmIrKCIvIitkKX1yZXR1cm4gYn07Cmdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aD1mdW5jdGlvbihhKXtpZigiIj09YSlyZXR1cm4iLiI7bGV0IGI9IiI7Z29vZy5zdHJpbmcuc3RhcnRzV2l0aChhLCIvIikmJihiPSIvIixnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vIikmJiFnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vLyIpJiYoYj0iLy8iKSk7YT1hLnNwbGl0KCIvIik7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdOyIiIT1lJiYiLiIhPWUmJigiLi4iIT1lfHwhYiYmIWMubGVuZ3RofHwiLi4iPT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGMpP2MucHVzaChlKTpjLnBvcCgpKX1yZXR1cm4gYitjLmpvaW4oIi8iKXx8Ii4ifTtnb29nLnN0cmluZy5wYXRoLnNwbGl0PWZ1bmN0aW9uKGEpe2NvbnN0IGI9Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lKGEpO2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKTtyZXR1cm5bYixhXX07Y29uc3QgREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ITE7ZnVuY3Rpb24gYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4vXlwvL2cudGVzdChhKT9hOmAvJHthfWB9ZnVuY3Rpb24gcmVtb3ZlTGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXC8vZywiIil9ZnVuY3Rpb24gc2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7cmV0dXJuKGEmKFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpKSE9PWdvb2cuZ2xvYmFsLkJpZ0ludCgwKX0KZnVuY3Rpb24gcGVyZm9ybWFuY2VOb3dQb2x5JCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHBlcmZvcm1hbmNlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe2NvbnN0IGE9RGF0ZS5ub3coKTtyZXR1cm4gRGF0ZS5ub3coKS1hfXJldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7dmFyIGI9YS5yZWR1Y2UoKGQsZSk9PmQrZS5sZW5ndGgsMCk7aWYoMCE9PWEubGVuZ3RoKXtiPW5ldyBVaW50OEFycmF5KGIpO3ZhciBjPTA7Zm9yKGNvbnN0IGQgb2YgYSliLnNldChkLGMpLGMrPWQubGVuZ3RoO3JldHVybiBifX0KY29uc3QgV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ZnVuY3Rpb24oe30pe3RoaXMuZmQ9QXJyYXkuZnJvbSh7bGVuZ3RoOjR9KTt0aGlzLmZkWzBdPXtmZDowLHBhdGg6Ii9kZXYvc3RkaW4iLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6W10sb3BlbjohMX07dGhpcy5mZFsxXT17ZmQ6MSxwYXRoOiIvZGV2L3N0ZG91dCIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmZkWzJdPXtmZDoyLHBhdGg6Ii9kZXYvc3RkZXJyIixzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltdLG9wZW46ITF9O3RoaXMuZmRbM109e2ZkOjMscGF0aDoiLyIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmdldE1lbW9yeT10aGlzLmdldE1lbW9yeS5iaW5kKHRoaXMpO3RoaXMuQ1BVVElNRV9TVEFSVD0wfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuQ1BVVElNRV9TVEFSVD1wZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCk7YS5leHBvcnRzLl9zdGFydCgpfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZ2V0SW1wb3J0cz1mdW5jdGlvbihhKXtjb25zdCBiPXt9O2E9V2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMoYSk7Zm9yKGNvbnN0IGMgb2YgYSkiZnVuY3Rpb24iPT09Yy5raW5kJiZjLm1vZHVsZS5zdGFydHNXaXRoKCJ3YXNpXyIpJiYoIm9iamVjdCIhPT10eXBlb2YgYltjLm1vZHVsZV0mJihiW2MubW9kdWxlXT17fSksYltjLm1vZHVsZV1bYy5uYW1lXT10aGlzW2MubmFtZV0uYmluZCh0aGlzKSk7cmV0dXJuIGJ9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3RoaXMubWVtb3J5PWF9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5nZXRNZW1vcnk9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJnRoaXMudmlldy5idWZmZXImJnRoaXMudmlldy5idWZmZXIuYnl0ZUxlbmd0aHx8KHRoaXMudmlldz1uZXcgRGF0YVZpZXcodGhpcy5tZW1vcnkuYnVmZmVyKSk7cmV0dXJuIHRoaXMudmlld307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLm1zVG9Ocz1mdW5jdGlvbihhKXtjb25zdCBiPU1hdGgudHJ1bmMoYSk7YT1nb29nLmdsb2JhbC5CaWdJbnQoTWF0aC5yb3VuZCgxRTYqKGEtYikpKTtyZXR1cm4gZ29vZy5nbG9iYWwuQmlnSW50KGIpKmdvb2cuZ2xvYmFsLkJpZ0ludCgxRTYpK2F9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUubm93PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFdBU0lfQ0xPQ0tfTU9OT1RPTklDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiBNYXRoLmZsb29yKHBlcmZvcm1hbmNlTm93UG9seSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKSk7Y2FzZSBXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiB0aGlzLm1zVG9OcyhEYXRlLm5vdygpKTtjYXNlIFdBU0lfQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOmNhc2UgV0FTSV9DTE9DS19USFJFQURfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpyZXR1cm4gTWF0aC5mbG9vcihwZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCktdGhpcy5DUFVUSU1FX1NUQVJUKTsKZGVmYXVsdDpyZXR1cm4gMH19O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5hcmdzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmFyZ3Nfc2l6ZXNfZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJhcmdzX3NpemVzX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfcmVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfdGltZV9nZXQ9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiY2xvY2tfdGltZV9nZXQiLGEsYixjLGFyZ3VtZW50cyk7Y29uc3QgZD10aGlzLmdldE1lbW9yeSgpLGU9dGhpcy5ub3coYSk7ZC5zZXRCaWdVaW50NjQoYyxnb29nLmdsb2JhbC5CaWdJbnQoZSksITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmVudmlyb25fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJlbnZpcm9uX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5lbnZpcm9uX3NpemVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZW52aXJvbl9zaXplc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FkdmlzZT1mdW5jdGlvbihhLGIsYyxkKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FkdmlzZSIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FsbG9jYXRlPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FsbG9jYXRlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9jbG9zZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Nsb3NlIixhLGFyZ3VtZW50cyk7dGhpcy5mZFthXSYmKHRoaXMuZmRbYV0ub3Blbj0hMSk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9kYXRhc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2RhdGFzeW5jIixhLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmRzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmRzdGF0X2dldCIsYSxiLGFyZ3VtZW50cyk7Y29uc3QgYz10aGlzLmdldE1lbW9yeSgpO2Muc2V0VWludDgoYis0LFdBU0lfRklMRVRZUEVfUkVHVUxBUl9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtjLnNldFVpbnQxNihiKzIsMCwhMCk7Yy5zZXRVaW50MTYoYis0LDAsITApO2Muc2V0QmlnVWludDY0KGIrOCxnb29nLmdsb2JhbC5CaWdJbnQoUklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKSwhMCk7Yy5zZXRCaWdVaW50NjQoYis4KzgsZ29vZy5nbG9iYWwuQmlnSW50KFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyksCiEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfZmxhZ3M9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfZmxhZ3MiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfcmlnaHRzPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfcmlnaHRzIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfZ2V0IixhLGIsYXJndW1lbnRzKTtsZXQgYz0wO3RoaXMuZmRbYV0mJihjPXRoaXMuZmRbYV0uYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24oZSxmKXtyZXR1cm4gZSsobnVsbD09Zj92b2lkIDA6Zi5ieXRlTGVuZ3RoKT9udWxsPT1mP3ZvaWQgMDpmLmJ5dGVMZW5ndGg6MH0sMCkpO2NvbnN0IGQ9dGhpcy5nZXRNZW1vcnkoKTtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldFVpbnQ4KGIsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2IrPTg7ZC5zZXRCaWdVaW50NjQoYiwKZ29vZy5nbG9iYWwuQmlnSW50KDEpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsZ29vZy5nbG9iYWwuQmlnSW50KGMpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsdGhpcy5tc1RvTnModGhpcy5DUFVUSU1FX1NUQVJUKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLHRoaXMubXNUb05zKHRoaXMuQ1BVVElNRV9TVEFSVCksITApO2Quc2V0QmlnVWludDY0KGIrOCx0aGlzLm1zVG9Ocyh0aGlzLkNQVVRJTUVfU1RBUlQpLCEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X3NldF9zaXplPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9maWxlc3RhdF9zZXRfc2l6ZSIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmlsZXN0YXRfc2V0X3RpbWVzPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9wcmVhZD1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlYWQiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3ByZXN0YXRfZGlyX25hbWU9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlc3RhdF9kaXJfbmFtZSIsYSxiLGMsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0mJiF0aGlzLmZkW2EtMV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7KHtwYXRoOmN9PXRoaXMuZmRbYV0pO2E9dGhpcy5nZXRNZW1vcnkoKTtjPWVuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoYyk7KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyKSkuc2V0KGMsYik7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcHJlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3ByZXN0YXRfZ2V0IixhLGIsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7dmFyIHtwYXRoOmN9PXRoaXMuZmRbYV07YT10aGlzLmdldE1lbW9yeSgpO2M9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShjKTthLnNldFVpbnQ4KGIsV0FTSV9QUkVPUEVOVFlQRV9ESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2Euc2V0VWludDMyKGIrNCxjLmJ5dGVMZW5ndGgsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3B3cml0ZT1mdW5jdGlvbihhLGIsYyxkLGUpe2NvbnNvbGUubG9nKCJmZF9wd3JpdGUiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3JlYWQ9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9yZWFkIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmZkW2FdJiZ0aGlzLmZkW2FdLmJ1ZmZlcnM7dmFyIGY9ZS5yZWR1Y2UoKG4scCk9Pm4rcC5sZW5ndGgsMCk7Y29uc3QgZz10aGlzLmdldE1lbW9yeSgpO2lmKGUmJjAhPT1lLmxlbmd0aCl7dmFyIGg9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyksaz0wLGw9ITE7aWYoaD49ZilyZXR1cm4gaz1nLmdldFVpbnQzMihiLCEwKSxnLnNldFVpbnQ4KGssIlx4MDAiKSxnLnNldFVpbnQzMihkLDAsITApLFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Zm9yKGY9MDtmPGM7ZisrKXt2YXIgbT1iKzgqZjtjb25zdCBuPWcuZ2V0VWludDMyKG0sITApO209Zy5nZXRVaW50MzIobSsKNCwhMCk7bHx8KGsrPW0sQXJyYXkuZnJvbSh7bGVuZ3RoOm19LChwLHEpPT5xKS5yZWR1Y2UoKHAscSk9PntpZihsKXJldHVybiBwO2NvbnN0IFt1LHRdPXA7bGV0IHY9cD0wLEE9ITEseT0wLHI7aWYoMD09PXEpZm9yKDshQTspcj1lW3BdP2VbcF0uYnl0ZUxlbmd0aDowLHk8PWgmJnIreT5oPyhBPSEwLHY9aC15KTooeSs9cixwKz0xKTtlbHNlIHA9dSx2PXQ7ZVtwXT8oZy5zZXRVaW50OChuK3EsZVtwXVt2XSksdisxPj1lW3BdLmJ5dGVMZW5ndGg/KHA9dSsxLHY9MCk6dis9MSk6KGcuc2V0VWludDgobitxLCJceDAwIiksaCs9cSxsPSEwKTtyZXR1cm5bcCx2XX0sWzAsMF0pLGx8fChoKz1tKSl9dGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludChoKTtnLnNldFVpbnQzMihkLGssITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfWNvbnNvbGUuZXJyb3IoIlJlYWRpbmcgbm9uIGV4aXN0ZW50IGZpbGUiLGEsdGhpcy5mZFthXSl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcmVhZGRpcj1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVhZGRpciIsYSxiLGMsZCxlLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9yZW51bWJlcj1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVudW1iZXIiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3NlZWs9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9zZWVrIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmdldE1lbW9yeSgpO3N3aXRjaChjKXtjYXNlIFdBU0lfV0hFTkNFX0NVUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czp2YXIgZjt0aGlzLmZkW2FdLnNlZWtQb3M9KG51bGwhPShmPXRoaXMuZmRbYV0uc2Vla1Bvcyk/Zjpnb29nLmdsb2JhbC5CaWdJbnQoMCkpK2dvb2cuZ2xvYmFsLkJpZ0ludChiKTticmVhaztjYXNlIFdBU0lfV0hFTkNFX0VORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpmPSh0aGlzLmZkW2FdLmJ1ZmZlcnN8fFtdKS5yZWR1Y2UoKGcsaCk9PmcraC5sZW5ndGgsMCk7dGhpcy5mZFthXS5zZWVrUG9zPUJpZ0ludChmKStCaWdJbnQoYik7YnJlYWs7CmNhc2UgV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnRoaXMuZmRbYV0uc2Vla1Bvcz1CaWdJbnQoYil9ZS5zZXRCaWdVaW50NjQoZCx0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3N5bmMiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF90ZWxsPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF90ZWxsIixhLGIsYXJndW1lbnRzKTtjb25zdCBjPXRoaXMuZ2V0TWVtb3J5KCk7dGhpcy5mZFthXS5zZWVrUG9zfHwodGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSk7Yy5zZXRCaWdVaW50NjQoYix0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3dyaXRlPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfd3JpdGUiLHtmZDphLGlvdnM6Yixpb3ZzTGVuZ3RoOmMsbndyaXR0ZW46ZH0pO2NvbnN0IGU9dGhpcy5nZXRNZW1vcnkoKTt0aGlzLmZkW2FdLmJ1ZmZlcnM9dGhpcy5mZFthXS5idWZmZXJzfHxbXTt0aGlzLmZkW2FdLmJ1ZmZlcnM9MDx0aGlzLmZkW2FdLmJ1ZmZlcnMubGVuZ3RoP1tjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kodGhpcy5mZFthXS5idWZmZXJzKV06dGhpcy5mZFthXS5idWZmZXJzO2xldCBmPTA7Zm9yKGxldCBrPTA7azxjO2srKyl7dmFyIGc9Yis4KmssaD1lLmdldFVpbnQzMihnLCEwKTtnPWUuZ2V0VWludDMyKGcrNCwhMCk7Zis9ZztoPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGgsZyk7aWYodGhpcy5mZFthXS5idWZmZXJzWzBdJiYKdGhpcy5mZFthXS5zZWVrUG9zPHRoaXMuZmRbYV0uYnVmZmVyc1swXS5sZW5ndGgpe2NvbnN0IGw9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyk7aC5zbGljZSgwLGcpLmZvckVhY2goKG0sbik9Pnt0aGlzLmZkW2FdLmJ1ZmZlcnNbMF1bbCtuXT1tfSl9ZWxzZSB0aGlzLmZkW2FdLmJ1ZmZlcnMucHVzaChoLnNsaWNlKDAsZykpfXRoaXMuZmRbYV0uc2Vla1Bvcys9Z29vZy5nbG9iYWwuQmlnSW50KGYpO2Uuc2V0VWludDMyKGQsZiwhMCk7WzEsMl0uaW5jbHVkZXMoYSkmJmNvbnNvbGUubG9nKGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGUoY29uY2F0VWludDhBcnJheXMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHRoaXMuZmRbYV0uYnVmZmVycykpKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2NyZWF0ZV9kaXJlY3Rvcnk9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9jcmVhdGVfZGlyZWN0b3J5IixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9maWxlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfZ2V0IixhLGIsYyxkLGUsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2ZpbGVzdGF0X3NldF90aW1lcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGUsZixnLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2xpbms9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX2xpbmsiLGEsYixjLGQsZSxmLGcsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX29wZW49ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9vcGVuIixhLGIsYyxkLGUsZixnLGgsayxhcmd1bWVudHMpO2NvbnN0IGw9dGhpcy5nZXRNZW1vcnkoKTt2YXIgbT0odGhpcy5mZFthXXx8e3BhdGg6Ii8ifSkucGF0aCxuPW5ldyBVaW50OEFycmF5KGwuYnVmZmVyLGMsZCk7bj1kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKG4pO2NvbnN0IHA9YXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGdvb2cuc3RyaW5nLnBhdGguam9pbigzPT09YT8iIjptLG4pKSk7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCI7OyBvcGVuaW5nIHBhdGgiLApwLCJ3aXRoUkVhZGVyIixzaG91bGRPcGVuUmVhZGVyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShmKSk7aWYocC5zdGFydHNXaXRoKCIvLi4iKXx8Ii8uXyI9PT1wfHwiLy5BcHBsZURvdWJsZSI9PT1wKXJldHVybiBXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOyhtPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZChxPT5xLnBhdGg9PT1wJiZBcnJheS5pc0FycmF5KHEuYnVmZmVycykpKT9uPW0uZmQ6KG49dGhpcy5mZC5sZW5ndGgsdGhpcy5mZFtuXT17ZmQ6bn0pO3RoaXMuZmRbbl09ey4uLnRoaXMuZmRbbl0scGF0aDpwLHR5cGU6ImZpbGUiLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6bT90aGlzLmZkW25dLmJ1ZmZlcnM6W10sb3BlbjohMH07c2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZikmJkRFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic2hvdWxkIG9wZW4gYSByZWFkIGhhbmRsZSBmb3IiLApwKTtsLnNldFVpbnQzMihrLG4sITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZWFkbGluaz1mdW5jdGlvbihhLGIsYyxkLGUsZil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3JlYWRsaW5rIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZW1vdmVfZGlyZWN0b3J5PWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVtb3ZlX2RpcmVjdG9yeSIsYSxiLGMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfcmVuYW1lPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVuYW1lIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9zeW1saW5rPWZ1bmN0aW9uKGEsYixjLGQsZSl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3N5bWxpbmsiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfdW5saW5rX2ZpbGU9ZnVuY3Rpb24oYSxiLGMpezM8YSYmREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3VubGlua19maWxlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucG9sbF9vbmVvZmY9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwb2xsX29uZW9mZiIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnByb2NfZXhpdD1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfZXhpdCIsYSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucHJvY19yYWlzZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfcmFpc2UiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yYW5kb21fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJyYW5kb21fZ2V0IixhLGIpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2NoZWRfeWllbGQ9ZnVuY3Rpb24oKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInNjaGVkX3lpZWxkIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfcmVjdj1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19yZWN2Iixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfc2VuZD1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19zZW5kIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5zb2NrX3NodXRkb3duPWZ1bmN0aW9uKCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJzb2NrX3NodXRkb3duIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZpbmRCdWZmZXJzPWZ1bmN0aW9uKGEpe2NvbnN0IGI9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDpjfSk9PmM9PT1hKTtyZXR1cm5bYiYmYi5idWZmZXJzLGIuZmRdfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24oYSl7Y29uc3QgYj0oYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGEpKSsiLyIpLnJlcGxhY2UoIi8vIiwiLyIpLGM9W107T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5mb3JFYWNoKCh7cGF0aDpkfSk9PiEvXC8vZy50ZXN0KGQucmVwbGFjZShiLCIiKSkmJmMucHVzaChkKSk7cmV0dXJuIGMubWFwKGQ9PnJlbW92ZUxlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZC5yZXBsYWNlKGIsIiIpKSkuZmlsdGVyKGQ9PiEhZCl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUud3JpdGVGaWxlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpO2E9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoO2NvbnN0IGQ9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDplfSk9PmU9PT1jKTt0aGlzLmZkW2FdPXtmZDphLHBhdGg6YyxzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltiXX07ZCYmZGVsZXRlIHRoaXMuZmRbZF19OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuYXBwZW5kRmlsZT1mdW5jdGlvbihhLGIpe3ZhciBjPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSk7W2NdPXRoaXMuZmluZEJ1ZmZlcnMoYyk7Yz9jLnB1c2goYik6Y29uc29sZS5lcnJvcihgQ2FuJ3QgYXBwZW5kIHRvIG5vbi1leGlzdGluZyBmaWxlICR7YX1gKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkRmlsZT1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksW2MsZF09dGhpcy5maW5kQnVmZmVycyhiKTt0aGlzLmZkW2RdJiZ0aGlzLmZkW2RdLm9wZW4mJmNvbnNvbGUud2FybihgcmVhZEZpbGU6IGZpbGUgJHthfSBoYXNuJ3QgYmVlbiBjbG9zZWQgeWV0IWApO2lmKGMpcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShjKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkU3RkT3V0PWZ1bmN0aW9uKCl7Y29uc3QgYT1PYmplY3QudmFsdWVzKHRoaXMuZmRbMF0pO3JldHVybiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSYmYS5idWZmZXJzfHxbXSl9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS51bmxpbms9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpOyhhPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZCgoe3BhdGg6Y30pPT5jPT09YikpP2RlbGV0ZSB0aGlzLmZkW2FdOmNvbnNvbGUuZXJyb3IoYFdoaWxlIHRyeWluZyB0byB1bmxpbmsgJHtifSwgcGF0aCBub3QgZm91bmRgKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5ta2Rpcj1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksYz1bXTtPYmplY3QudmFsdWVzKHRoaXMuZmQpLmZvckVhY2goKHtwYXRoOmR9KT0+ZC5zdGFydHNXaXRoKGIpJiZjLnB1c2goZCkpOzA8Yy5sZW5ndGg/Y29uc29sZS53YXJuKGBta2RpcjogcGF0aCAke2F9IGFscmVhZHkgZXhpc3RzYCk6KGE9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoLHRoaXMuZmRbYV09e2ZkOmEscGF0aDpifSl9O3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaT17fTttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5XQVNJPVdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpO2Z1bmN0aW9uIGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYSl7Zm9yKDswPGEubGVuZ3RoOylhLnBvcCgpfXZhciBtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5PXt9O21vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkuY2xlYXJBcnJheT1jbGVhckFycmF5JCRtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5O3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9e2RlZmF1bHQ6e319O21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0Ll9fZXNNb2R1bGU9ITA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuTG9nZ2VyRmFjdG9yeT1tb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHM9dm9pZCAwO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz17bG9nX3JhaXNlX2Vycm9yOjEsbG9nX3dpdGhfd2FybmluZ3M6Mix0cmFjZTozLGRlYnVnOjQsaW5mbzo1LHdhcm46NixlcnJvcjo3LGRpc2FibGU6OH07CnZhciBMb2dnZXJGYWN0b3J5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7aWYodm9pZCAwPT09YiYmKGI9ImxvZ193aXRoX3dhcm5pbmdzIiksdm9pZCAwPT09YyYmKGM9bnVsbCksdGhpcy5sb2dMZXZlbD1iLCFtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbYl0pdGhyb3cgRXJyb3IoIkludmFsaWQgbG9nIGxldmVsICIrYisiIGFsbG93ZWQ6ICIrSlNPTi5zdHJpbmdpZnkobW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzKSk7dGhpcy5tb2NrQ29uc29sZT1jfHxjb25zb2xlfXJldHVybiBhLnByb3RvdHlwZS5kdW1teT1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUuc2V0TG9nV2FybmluZ3M9ZnVuY3Rpb24oYil7dGhpcy5sb2dMZXZlbD1ifSxhLnByb3RvdHlwZS5nZXRMb2dXYXJuaW5ncz0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2dMZXZlbH0sYS5wcm90b3R5cGUuZ2V0U2luZ2xlTG9nZ2VyQ29sb3I9ZnVuY3Rpb24oYixjLGQpe3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpLGQpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXI9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLmdldFJhbmRvbUNvbG9yKGIpO3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGQpLGMpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJTdHlsZT1mdW5jdGlvbihiLGMsZCxlKXt2YXIgZj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT0ibG9nX3dpdGhfd2FybmluZ3MiKSxmdW5jdGlvbigpe2Zvcih2YXIgZz1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylnW2hdPWFyZ3VtZW50c1toXTtpZihtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbZi5sb2dMZXZlbF0+Cm1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tlXSlyZXR1cm4gZi5kdW1teTtnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcpO2g9Zy5zaGlmdCgpLnNwbGl0KCJ7fSIpO2Zvcih2YXIgaz1bZi5tb2NrQ29uc29sZSwiJWMiK2IsY10sbD0wO2w8aC5sZW5ndGg7bCsrKWsucHVzaChoW2xdKSx2b2lkIDAhPT1nW2xdJiZrLnB1c2goZ1tsXSk7aWYoaC5sZW5ndGgtMSE9PWcubGVuZ3RoKWlmKCJsb2dfd2l0aF93YXJuaW5ncyI9PT1mLmxvZ0xldmVsKWYubW9ja0NvbnNvbGUuZXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7ZWxzZSBpZigibG9nX3JhaXNlX2Vycm9yIj09PWYubG9nTGV2ZWwpdGhyb3cgRXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KGQsayl9fSxhLnByb3RvdHlwZS5nZXRMb2dnZXJDb2xvcj1mdW5jdGlvbihiLApjKXtyZXR1cm4gdGhpcy5nZXRMb2dnZXJTdHlsZShiLHRoaXMuZ2V0Q29sb3JTdHlsZShjKSl9LGEucHJvdG90eXBlLmdldENvbG9yU3R5bGU9ZnVuY3Rpb24oYil7cmV0dXJuImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogIitiKyI7IHBhZGRpbmc6IDJweCA2cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZm9udC1zaXplOiAxMHB4In0sYS5nZXRIYXNoPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9MCk7dmFyIGQ9MzczNTkyODU1OV5jO2NePTExMDM1NDc5OTE7Zm9yKHZhciBlPTAsZjtlPGIubGVuZ3RoO2UrKylmPWIuY2hhckNvZGVBdChlKSxkPU1hdGguaW11bChkXmYsMjY1NDQzNTc2MSksYz1NYXRoLmltdWwoY15mLDE1OTczMzQ2NzcpO3JldHVybiBkPU1hdGguaW11bChkXmQ+Pj4xNiwyMjQ2ODIyNTA3KV5NYXRoLmltdWwoY15jPj4+MTMsMzI2NjQ4OTkwOSksNDI5NDk2NzI5NiooMjA5NzE1MSYoTWF0aC5pbXVsKGNeYz4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChkXgpkPj4+MTMsMzI2NjQ4OTkwOSkpKSsoZD4+PjApfSxhLnByb3RvdHlwZS5nZXRSYW5kb21Db2xvcj1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYoYj0iIik7Yj1hLmdldEhhc2goYik7Zm9yKHZhciBjPSIjIixkPTA7Mz5kO2QrKyljKz0oIjAwIisoOCsoYj4+NypkJjEyNykpLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC0yKTtyZXR1cm4gY30sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmdldExvZ2dlckNvbG9yKGIsdGhpcy5nZXRSYW5kb21Db2xvcihiKSl9LGEucHJvdG90eXBlLmdldExvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJue3RyYWNlOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUudHJhY2UsInRyYWNlIiksZGVidWc6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5kZWJ1ZywiZGVidWciKSxsb2c6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5sb2csCiJpbmZvIiksd2Fybjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLndhcm4sIndhcm4iKSxlcnJvcjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmVycm9yLCJlcnJvciIpfX0sYX0oKTttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PUxvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleDtsZXQgbG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ01pZGlSZXF1ZXN0JCRtb2R1bGUkc3JjJGxvZ2dlcjsKY29uc3QgaXNQcm9kJCRtb2R1bGUkc3JjJGxvZ2dlcj0xO2xvZ1dvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dJbmRleCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307CmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e30sbW9kdWxlJHNyYyRsb2dnZXI9e307bW9kdWxlJHNyYyRsb2dnZXIuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nQ29tbW9uVXRpbHM9bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ0luZGV4PWxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nTWlkaVJlcXVlc3Q9bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ09sZFNwbk1haW49bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuV29ya2VyPWxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU0FCTWFpbj1sb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJXb3JrZXI9bG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTUE5NYWluU2luZ2xlPWxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlcj1sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dWQU5NYWluPWxvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTldvcmtlcj1sb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dhc21Nb2R1bGU9bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldE1haW49bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dvcmtsZXRXb3JrZXI9bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7Y29uc3QgQ29tcHJlc3Npb25NZXRob2QkJG1vZHVsZSRzcmMkemxpYiR6bGliPXtERUZMQVRFOjgsUkVTRVJWRUQ6MTV9O3ZhciBtb2R1bGUkc3JjJHpsaWIkemxpYj17fTttb2R1bGUkc3JjJHpsaWIkemxpYi5Db21wcmVzc2lvbk1ldGhvZD1Db21wcmVzc2lvbk1ldGhvZCQkbW9kdWxlJHNyYyR6bGliJHpsaWI7LyoKIHpsaWIuanMgMjAxMiAtIGltYXlhIFsgaHR0cHM6Ly9naXRodWIuY29tL2ltYXlhL3psaWIuanMgXSBUaGUgTUlUIExpY2Vuc2UgKi8KZnVuY3Rpb24gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl7Y29uc3QgYj1hLmxlbmd0aDtsZXQgYz0wLGQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGUsZixnLGg7bGV0IGssbDtmb3Ioaz0wO2s8YjsrK2spYVtrXT5jJiYoYz1hW2tdKSxhW2tdPGQmJihkPWFba10pO2NvbnN0IG09MTw8YyxuPW5ldyBVaW50MzJBcnJheShtKTtlPTE7Zj0wO2ZvcihnPTI7ZTw9Yzspe2ZvcihrPTA7azxiOysraylpZihhW2tdPT09ZSl7aD0wO3ZhciBwPWY7Zm9yKGw9MDtsPGU7KytsKWg9aDw8MXxwJjEscD4+PTE7cD1lPDwxNnxrO2ZvcihsPWg7bDxtO2wrPWcpbltsXT1wOysrZn0rK2U7Zjw8PTE7Zzw8PTF9cmV0dXJuW24sYyxkXX12YXIgbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW49e307bW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4uSHVmZm1hbj1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbjtjb25zdCBaTElCX1JBV19JTkZMQVRFX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT0zMjc2ODsKZnVuY3Rpb24gUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUoYSxiKXt0aGlzLmJsb2Nrcz1bXTt0aGlzLmJ1ZmZlclNpemU9WkxJQl9SQVdfSU5GTEFURV9CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGU7dGhpcy5iaXRzYnVmbGVuPXRoaXMuYml0c2J1Zj10aGlzLmlwPXRoaXMudG90YWxwb3M9MDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KGEpO3RoaXMuYmZpbmFsPSExO3RoaXMuYnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFO3RoaXMucmVzaXplPSExO2lmKGJ8fCEoYj17fSkpYi5pbmRleCYmKHRoaXMuaXA9Yi5pbmRleCksYi5idWZmZXJTaXplJiYodGhpcy5idWZmZXJTaXplPWIuYnVmZmVyU2l6ZSksYi5idWZmZXJUeXBlJiYodGhpcy5idWZmZXJUeXBlPWIuYnVmZmVyVHlwZSksYi5yZXNpemUmJih0aGlzLnJlc2l6ZT1iLnJlc2l6ZSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMub3A9ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoK3RoaXMuYnVmZmVyU2l6ZStSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5vcD0wO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGU9e0JMT0NLOjAsQURBUFRJVkU6MX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5kZWNvbXByZXNzPWZ1bmN0aW9uKCl7Zm9yKDshdGhpcy5iZmluYWw7KXRoaXMucGFyc2VCbG9jaygpO3N3aXRjaCh0aGlzLmJ1ZmZlclR5cGUpe2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5CTE9DSzpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJCbG9jaygpO2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5BREFQVElWRTpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJEeW5hbWljKCk7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aD0zMjc2ODtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoPTI1ODsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMjU4LDI1OF0pO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkxlbmd0aEV4dHJhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEpfShbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMF0pOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0Q29kZVRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDE2QXJyYXkoYSl9KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzddKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9KFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSk7ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkTGl0ZXJhbExlbmd0aFRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhfShmdW5jdGlvbigpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMjg4KTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09MTQzPj1iPzg6MjU1Pj1iPzk6Mjc5Pj1iPzc6ODtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkRGlzdGFuY2VUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gYX0oZnVuY3Rpb24oKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KDMwKTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09NTtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucGFyc2VCbG9jaz1mdW5jdGlvbigpe2xldCBhPXRoaXMucmVhZEJpdHMoMyk7YSYxJiYodGhpcy5iZmluYWw9ITApO2E+Pj49MTtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMucGFyc2VVbmNvbXByZXNzZWRCbG9jaygpO2JyZWFrO2Nhc2UgMTp0aGlzLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2soKTticmVhaztjYXNlIDI6dGhpcy5wYXJzZUR5bmFtaWNIdWZmbWFuQmxvY2soKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bmtub3duIEJUWVBFOiAiK2EpO319OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucmVhZEJpdHM9ZnVuY3Rpb24oYSl7bGV0IGI9dGhpcy5iaXRzYnVmLGM9dGhpcy5iaXRzYnVmbGVuO2NvbnN0IGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO2lmKGUrKGEtYys3Pj4zKT49ZC5sZW5ndGgpdGhyb3cgRXJyb3IoImlucHV0IGJ1ZmZlciBpcyBicm9rZW4iKTtmb3IoO2M8YTspYnw9ZFtlKytdPDxjLGMrPTg7dGhpcy5iaXRzYnVmPWI+Pj5hO3RoaXMuYml0c2J1Zmxlbj1jLWE7dGhpcy5pcD1lO3JldHVybiBiJigxPDxhKS0xfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnJlYWRDb2RlQnlUYWJsZT1mdW5jdGlvbihhKXtsZXQgYj10aGlzLmJpdHNidWYsYz10aGlzLmJpdHNidWZsZW47dmFyIGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO3ZhciBmPWQubGVuZ3RoO2NvbnN0IGc9YVswXTtmb3IoYT1hWzFdO2M8YSYmIShlPj1mKTspYnw9ZFtlKytdPDxjLGMrPTg7ZD1nW2ImKDE8PGEpLTFdO2Y9ZD4+PjE2O2lmKGY+Yyl0aHJvdyBFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aDogIitmKTt0aGlzLmJpdHNidWY9Yj4+Zjt0aGlzLmJpdHNidWZsZW49Yy1mO3RoaXMuaXA9ZTtyZXR1cm4gZCY2NTUzNX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5wYXJzZVVuY29tcHJlc3NlZEJsb2NrPWZ1bmN0aW9uKCl7Y29uc3QgYT10aGlzLmlucHV0O2xldCBiPXRoaXMuaXAsYz10aGlzLm91dHB1dCxkPXRoaXMub3A7dmFyIGU9YS5sZW5ndGg7bGV0IGY7Y29uc3QgZz1jLmxlbmd0aDt0aGlzLmJpdHNidWZsZW49dGhpcy5iaXRzYnVmPTA7aWYoYisxPj1lKXRocm93IEVycm9yKCJpbnZhbGlkIHVuY29tcHJlc3NlZCBibG9jayBoZWFkZXI6IExFTiIpO2Y9YVtiKytdfGFbYisrXTw8ODtpZihiKzE+PWUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogTkxFTiIpO2U9YVtiKytdfGFbYisrXTw8ODtpZihmPT09fmUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogbGVuZ3RoIHZlcmlmeSIpO2lmKGIrZj5hLmxlbmd0aCl0aHJvdyBFcnJvcigiaW5wdXQgYnVmZmVyIGlzIGJyb2tlbiIpOwpzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6Zm9yKDtkK2Y+Yy5sZW5ndGg7KWU9Zy1kLGYtPWUsYy5zZXQoYS5zdWJhcnJheShiLGIrZSksZCksZCs9ZSxiKz1lLHRoaXMub3A9ZCxjPXRoaXMuZXhwYW5kQnVmZmVyQmxvY2soKSxkPXRoaXMub3A7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOmZvcig7ZCtmPmMubGVuZ3RoOyljPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoe2ZpeFJhdGlvOjJ9KTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbnZhbGlkIGluZmxhdGUgbW9kZSIpO31jLnNldChhLnN1YmFycmF5KGIsYitmKSxkKTt0aGlzLmlwPWIrZjt0aGlzLm9wPWQrZjt0aGlzLm91dHB1dD1jfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2s9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5kZWNvZGVIdWZmbWFuQWRhcHRpdmUoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6dGhpcy5kZWNvZGVIdWZmbWFuQmxvY2soUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTsKYnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRHluYW1pY0h1ZmZtYW5CbG9jaz1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEJpdHMoNSkrMjU3LGI9dGhpcy5yZWFkQml0cyg1KSsxLGM9dGhpcy5yZWFkQml0cyg0KSs0LGQ9bmV3IFVpbnQ4QXJyYXkoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXIubGVuZ3RoKTtsZXQgZTtmb3IoZT0wO2U8YzsrK2UpZFtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5PcmRlcltlXV09dGhpcy5yZWFkQml0cygzKTtkPUh1ZmZtYW4kJG1vZHVsZSRzcmMkemxpYiRodWZmbWFuKGQpO2M9bmV3IFVpbnQ4QXJyYXkoYStiKTtlPTA7Zm9yKGI9YStiO2U8Yjspe3ZhciBmPXRoaXMucmVhZENvZGVCeVRhYmxlKGQpO3N3aXRjaChmKXtjYXNlIDE2OmZvcihmPTMrdGhpcy5yZWFkQml0cygyKTtmLS07KWNbZSsrXT1nO2JyZWFrO2Nhc2UgMTc6Zm9yKGY9CjMrdGhpcy5yZWFkQml0cygzKTtmLS07KWNbZSsrXT0wO3ZhciBnPTA7YnJlYWs7Y2FzZSAxODpmb3IoZj0xMSt0aGlzLnJlYWRCaXRzKDcpO2YtLTspY1tlKytdPTA7Zz0wO2JyZWFrO2RlZmF1bHQ6Zz1jW2UrK109Zn19Zz1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbihjLnN1YmFycmF5KDAsYSkpO2E9SHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYy5zdWJhcnJheShhKSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOnRoaXMuZGVjb2RlSHVmZm1hbkFkYXB0aXZlKGcsYSk7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMuZGVjb2RlSHVmZm1hbkJsb2NrKGcsYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5CbG9jaz1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2NvbnN0IGU9Yy5sZW5ndGgtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4Q29weUxlbmd0aDt2YXIgZjtsZXQgZyxoO2NvbnN0IGs9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoQ29kZVRhYmxlLGw9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoRXh0cmFUYWJsZSxtPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RDb2RlVGFibGUsbj1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZTtmb3IoOzI1NiE9PShmPXRoaXMucmVhZENvZGVCeVRhYmxlKGEpKTspaWYoMjU2PmYpZD49CmUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKSxjW2QrK109ZjtlbHNlIGZvcihmLT0yNTcsaD1rW2ZdLDA8bFtmXSYmKGgrPXRoaXMucmVhZEJpdHMobFtmXSkpLGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYiksZz1tW2ZdLDA8bltmXSYmKGcrPXRoaXMucmVhZEJpdHMobltmXSkpLGQ+PWUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5BZGFwdGl2ZT1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2xldCBlPWMubGVuZ3RoO3ZhciBmO2xldCBnLGg7Y29uc3Qgaz1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGUsbD1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhFeHRyYVRhYmxlLG09UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRGlzdENvZGVUYWJsZSxuPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RFeHRyYVRhYmxlO2Zvcig7MjU2IT09KGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYSkpOylpZigyNTY+ZilkPj1lJiYoYz10aGlzLmV4cGFuZEJ1ZmZlckFkYXB0aXZlKCksZT1jLmxlbmd0aCksY1tkKytdPQpmO2Vsc2UgZm9yKGYtPTI1NyxoPWtbZl0sMDxsW2ZdJiYoaCs9dGhpcy5yZWFkQml0cyhsW2ZdKSksZj10aGlzLnJlYWRDb2RlQnlUYWJsZShiKSxnPW1bZl0sMDxuW2ZdJiYoZys9dGhpcy5yZWFkQml0cyhuW2ZdKSksZCtoPmUmJihjPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoKSxlPWMubGVuZ3RoKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckJsb2NrPWZ1bmN0aW9uKGEpe2E9bmV3IFVpbnQ4QXJyYXkodGhpcy5vcC1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCk7Y29uc3QgYj10aGlzLm9wLVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLGM9dGhpcy5vdXRwdXQ7YS5zZXQoYy5zdWJhcnJheShSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCxhLmxlbmd0aCkpO3RoaXMuYmxvY2tzLnB1c2goYSk7dGhpcy50b3RhbHBvcys9YS5sZW5ndGg7Yy5zZXQoYy5zdWJhcnJheShiLGIrUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTt0aGlzLm9wPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoOwpyZXR1cm4gY307UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckFkYXB0aXZlPWZ1bmN0aW9uKGEpe2xldCBiPU1hdGgudHJ1bmModGhpcy5pbnB1dC5sZW5ndGgvdGhpcy5pcCsxKTtjb25zdCBjPXRoaXMuaW5wdXQsZD10aGlzLm91dHB1dDthJiYoIm51bWJlciI9PT10eXBlb2YgYS5maXhSYXRpbyYmKGI9YS5maXhSYXRpbyksIm51bWJlciI9PT10eXBlb2YgYS5hZGRSYXRpbyYmKGIrPWEuYWRkUmF0aW8pKTsyPmI/KGE9KGMubGVuZ3RoLXRoaXMuaXApL3RoaXMuY3VycmVudExpdGxlblRhYmxlWzJdLGE9TWF0aC50cnVuYyhhLzIqMjU4KSxhPWE8ZC5sZW5ndGg/ZC5sZW5ndGgrYTpkLmxlbmd0aDw8MSk6YT1kLmxlbmd0aCpiO2E9bmV3IFVpbnQ4QXJyYXkoYSk7YS5zZXQoZCk7cmV0dXJuIHRoaXMub3V0cHV0PWF9OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUuY29uY2F0QnVmZmVyQmxvY2s9ZnVuY3Rpb24oKXtsZXQgYT0wO2NvbnN0IGI9dGhpcy5vdXRwdXQsYz10aGlzLmJsb2NrcztsZXQgZDtjb25zdCBlPW5ldyBVaW50OEFycmF5KHRoaXMudG90YWxwb3MrKHRoaXMub3AtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTtsZXQgZixnLGgsaztpZigwPT09Yy5sZW5ndGgpcmV0dXJuIHRoaXMub3V0cHV0LnN1YmFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLHRoaXMub3ApO2Y9MDtmb3IoZz1jLmxlbmd0aDtmPGc7KytmKWZvcihkPWNbZl0saD0wLGs9ZC5sZW5ndGg7aDxrOysraCllW2ErK109ZFtoXTtmPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO2ZvcihnPXRoaXMub3A7ZjwKZzsrK2YpZVthKytdPWJbZl07dGhpcy5ibG9ja3M9W107cmV0dXJuIHRoaXMuYnVmZmVyPWV9O1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5jb25jYXRCdWZmZXJEeW5hbWljPWZ1bmN0aW9uKCl7bGV0IGE7Y29uc3QgYj10aGlzLm9wO3RoaXMucmVzaXplPyhhPW5ldyBVaW50OEFycmF5KGIpLGEuc2V0KHRoaXMub3V0cHV0LnN1YmFycmF5KDAsYikpKTphPXRoaXMub3V0cHV0LnN1YmFycmF5KDAsYik7cmV0dXJuIHRoaXMuYnVmZmVyPWF9O3ZhciBtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5SYXdJbmZsYXRlPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlO2Z1bmN0aW9uIFV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsKCl7fVV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsLnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGEpe2E9Wy4uLmFdO2xldCBiLGM7Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspYVtiXT0oYVtiXS5jaGFyUG9pbnRBdCgwKSYyNTUpPj4+MDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2FdKX07dmFyIG1vZHVsZSRzcmMkemxpYiR1dGlsPXt9O21vZHVsZSRzcmMkemxpYiR1dGlsLlV0aWw9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWw7ZnVuY3Rpb24gQWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWwuc3RyaW5nVG9CeXRlQXJyYXkoYSkpO3JldHVybiBBZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGUoMSxhKX1BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGU9ZnVuY3Rpb24oYSxiKXtsZXQgYz1hJjY1NTM1O2E9YT4+PjE2JjY1NTM1O2xldCBkPWIubGVuZ3RoLGUsZj0wO2Zvcig7MDxkOyl7ZT1kPkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj9BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5PcHRpbWl6YXRpb25QYXJhbWV0ZXI6ZDtkLT1lO2RvIGMrPWJbZisrXSxhKz1jO3doaWxlKC0tZSk7YyU9NjU1MjE7YSU9NjU1MjF9cmV0dXJuKGE8PDE2fGMpPj4+MH07CkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj0xMDI0O3ZhciBtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMj17fTttb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5BZGxlcjMyPUFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyO2Z1bmN0aW9uIEluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlKGEsYil7dGhpcy5pbnB1dD1hO3RoaXMuaXA9MDtpZihifHwhKGI9e30pKWIuaW5kZXgmJih0aGlzLmlwPWIuaW5kZXgpLGIudmVyaWZ5JiYodGhpcy52ZXJpZnk9Yi52ZXJpZnkpO2NvbnN0IGM9YVt0aGlzLmlwKytdLGQ9YVt0aGlzLmlwKytdO3N3aXRjaChjJjE1KXtjYXNlIENvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFOnRoaXMubWV0aG9kPUNvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCIpO31pZigwIT09KChjPDw4KStkKSUzMSl0aHJvdyBFcnJvcigiaW52YWxpZCBmY2hlY2sgZmxhZzoiKygoYzw8OCkrZCklMzEpO2lmKGQmMzIpdGhyb3cgRXJyb3IoImZkaWN0IGZsYWcgaXMgbm90IHN1cHBvcnRlZCIpO3RoaXMucmF3aW5mbGF0ZT0KbmV3IFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlKGEse2luZGV4OnRoaXMuaXAsYnVmZmVyU2l6ZTpiLmJ1ZmZlclNpemUsYnVmZmVyVHlwZTpiLmJ1ZmZlclR5cGUscmVzaXplOmIucmVzaXplfSl9SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJGluZmxhdGUuQnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlOwpJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5wcm90b3R5cGUuZGVjb21wcmVzcz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5wdXQ7Y29uc3QgYj10aGlzLnJhd2luZmxhdGUuZGVjb21wcmVzcygpO3RoaXMuaXA9dGhpcy5yYXdpbmZsYXRlLmlwO2lmKHRoaXMudmVyaWZ5JiYoYT0oYVt0aGlzLmlwKytdPDwyNHxhW3RoaXMuaXArK108PDE2fGFbdGhpcy5pcCsrXTw8OHxhW3RoaXMuaXArK10pPj4+MCxhIT09QWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYikpKXRocm93IEVycm9yKCJpbnZhbGlkIGFkbGVyLTMyIGNoZWNrc3VtIik7cmV0dXJuIGJ9O3ZhciBtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5JbmZsYXRlPUluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlO2NvbnN0IFBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGU9NjU1MzYsUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZT0xNixjc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlPSh7bWVtb3J5OmEsbWVzc2FnZVBvcnQ6YixzdHJlYW1CdWZmZXI6Y30pPT5mdW5jdGlvbihkLGUsZixnKXtpZihhKXtkPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGcsZik7ZD11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGQpO3ZhciBoPS9cbiQvZy50ZXN0KGQpO2U9L15cbi9nLnRlc3QoZCk7dmFyIGs9ZC5zcGxpdCgiXG4iKS5maWx0ZXIobT0+MDxtLmxlbmd0aCksbD1bXTtpZigwPT09ay5sZW5ndGgmJmh8fGUpbC5wdXNoKGMuam9pbigiIikpLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYyk7ay5mb3JFYWNoKChtLG4pPT57bisxPT09ay5sZW5ndGg/aD8wPT09bj8obC5wdXNoKGMuam9pbigiIikrbSksCmNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKTpjLnB1c2gobSk6MD09PW4/KGwucHVzaChjLmpvaW4oIiIpK20pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKX0pO2wuZm9yRWFjaChtPT57bS5yZXBsYWNlKC8oXHJcbnxcbnxccikvZ20sIiIpJiZiLnBvc3Qoe2xvZzptfSl9KX19LGFzc2VydFBsdWdpbkV4cG9ydHMkJG1vZHVsZSRzcmMkbW9kdWxlPWE9PntpZihhJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYib2JqZWN0Ij09PXR5cGVvZiBhLmV4cG9ydHMpe2lmKGEuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycyl7aWYoYS5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZXx8YS5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8YS5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQpcmV0dXJuITA7Y29uc29sZS5lcnJvcihhLmV4cG9ydHMsIkEgY3NvdW5kIHBsdWdpbiB0dXJucyBvdXQgdG8gYmUgbmVpdGhlciBhIHBsdWdpbiwgb3Bjb2RlIG9yIG1vZHVsZS5cblBlcmhhcHMgY3NkbC5oIG9yIG1vZHVsZS5oIHdhc24ndCBpbXBvcnRlZCBjb3JyZWN0bHk/Iik7CnJldHVybiExfWNvbnNvbGUuZXJyb3IoIkEgY3NvdW5kIHBsdWdpbiBkaWRuJ3QgZXhwb3J0IF9fd2FzbV9jYWxsX2N0b3JzLlxuUGxlYXNlIHJlLXJ1biB3YXNtLWxkIHdpdGggZWl0aGVyIC0tZXhwb3J0LWFsbCBvciBpbmNsdWRlIC0tZXhwb3J0PV9fd2FzbV9jYWxsX2N0b3JzIik7cmV0dXJuITF9Y29uc29sZS5lcnJvcigiRXJyb3IgaW5zdGFudGlhdGluZyBhIGNzb3VuZCBwbHVnaW4sIGluc3RhbmNlIGFuZC9vciBleHBvcnQgaXMgbWlzc2luZyEiKTtyZXR1cm4hMX0sZ2V0QmluYXJ5SGVhZGVyRGF0YSQkbW9kdWxlJHNyYyRtb2R1bGU9YT0+e2Z1bmN0aW9uIGIoKXtsZXQgbD0wLG09MTtmb3IoOzspe2NvbnN0IG49YVtjKytdO2wrPShuJjEyNykqbTttKj0xMjg7aWYoIShuJjEyOCkpYnJlYWt9cmV0dXJuIGx9MTgzNjI3ODAxNiE9PShuZXcgVWludDMyQXJyYXkoKG5ldyBVaW50OEFycmF5KGEuc3ViYXJyYXkoMCwyNCkpKS5idWZmZXIpKVswXSYmY29uc29sZS5lcnJvcigiV2FzbSBtYWdpYyBudW1iZXIgaXMgbWlzc2luZyEiKTsKaWYoMCE9PWFbOF0pcmV0dXJuIGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyKCJEeWxpbmsgc2VjdGlvbiB3YXNuJ3QgZm91bmQgaW4gd2FzbSBiaW5hcnksIGFzc3VtaW5nIHN0YXRpYyB3YXNtLiIpLCJzdGF0aWMiO2xldCBjPTk7Y29uc3QgZD1iKCk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iZCIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09InkiLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJsIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iaSIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09Im4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJrIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0KIi4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSIwIi5jb2RlUG9pbnRBdCgwKSk7Yys9Mztjb25zdCBlPWIoKSxmPWIoKSxnPWIoKSxoPWIoKSxrPWIoKTtyZXR1cm57c2VjdGlvblNpemU6ZCxtZW1vcnlTaXplOmUsbWVtb3J5QWxpZ246ZixuZWVkZWREeW5saWJzQ291bnQ6ayx0YWJsZVNpemU6Zyx0YWJsZUFsaWduOmh9fSxsb2FkU3RhdGljV2FzbSQkbW9kdWxlJHNyYyRtb2R1bGU9YXN5bmMoe3dhc21CeXRlczphLHdhc2k6YixtZXNzYWdlUG9ydDpjfSk9Pntjb25zdCBkPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoYSk7YT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjE2Mzg0fSk7Y29uc3QgZT1iLmdldEltcG9ydHMoZCk7ZS5lbnY9ZS5lbnZ8fHt9O2UuZW52LmNzb3VuZExvYWRNb2R1bGVzPSgpPT4wO2UuZW52Lm1lbW9yeT1hO2UuZW52LmNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjaz1jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlKHttZW1vcnk6ZS5lbnYubWVtb3J5LApzdHJlYW1CdWZmZXI6W10sbWVzc2FnZVBvcnQ6Y30pO2M9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCxlKTtiLnNldE1lbW9yeShhKTtiLnN0YXJ0KGMpO2MuZXhwb3J0cy5fX3dhc2lfanNfY3NvdW5kU2V0TWVzc2FnZVN0cmluZ0NhbGxiYWNrKCk7cmV0dXJuW2MsYl19Owp2YXIgJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHt3YXNtRGF0YVVSSTphLHdpdGhQbHVnaW5zOmI9W10sbWVzc2FnZVBvcnQ6Y30pe3ZhciBkPXt9O2NvbnN0IGU9bmV3IFdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHtwcmVvcGVuczp7Ii8iOiIvIn19KTthPW5ldyBVaW50OEFycmF5KGEpO2E9KG5ldyBJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZShhKSkuZGVjb21wcmVzcygpO3ZhciBmPWdldEJpbmFyeUhlYWRlckRhdGEkJG1vZHVsZSRzcmMkbW9kdWxlKGEpO2lmKCJzdGF0aWMiPT09ZilyZXR1cm4gYXdhaXQgbG9hZFN0YXRpY1dhc20kJG1vZHVsZSRzcmMkbW9kdWxlKHttZXNzYWdlUG9ydDpjLHdhc21CeXRlczphLHdhc21GczpkLHdhc2k6ZX0pO2NvbnN0IHttZW1vcnlTaXplOmcsbWVtb3J5QWxpZ246aCx0YWJsZVNpemU6a309ZjtiPWF3YWl0IGIucmVkdWNlKGFzeW5jKHIsdyk9PntyPWF3YWl0IHI7CmxldCBCLHo7dHJ5e0I9bmV3IFVpbnQ4QXJyYXkodyksej1nZXRCaW5hcnlIZWFkZXJEYXRhJCRtb2R1bGUkc3JjJG1vZHVsZShCKX1jYXRjaChDKXtjb25zb2xlLmVycm9yKCJFcnJvciBpbiBwbHVnaW4iLEMpfXomJnIucHVzaCh7aGVhZGVyRGF0YTp6LHdhc21QbHVnaW5CeXRlczpCfSk7cmV0dXJuIHJ9LFtdKTt2YXIgbD0xMjgqUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZTtkPU1hdGguY2VpbCgoZytoKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPU1hdGguY2VpbChiLnJlZHVjZSgocix7aGVhZGVyRGF0YTp3fSk9PiJzdGF0aWMiPT09dz8wOnIrKHcubWVtb3J5U2l6ZStoKSwwKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPWQrZitsO2NvbnN0IG09bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpmLG1heGltdW06MTAyNCpQQUdFU19QRVJfTUIkJG1vZHVsZSRzcmMkbW9kdWxlfSksbj1uZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6aysKMSxlbGVtZW50OiJhbnlmdW5jIn0pO2Uuc2V0TWVtb3J5KG0pO2NvbnN0IHA9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sZipQQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LGYqUEFHRV9TSVpFJCRtb2R1bGUkc3JjJG1vZHVsZSk7bD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxsKTtjb25zdCBxPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITF9LDEpLHU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7YT1hd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGEpO2NvbnN0IHQ9ZS5nZXRJbXBvcnRzKGEpO2xldCB2PVtdLEE9ZDt0LmVudj10LmVudnx8e307dC5lbnYubWVtb3J5PW07dC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT0Kbjt0LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt0LmVudi5fX21lbW9yeV9iYXNlPWw7dC5lbnYuX190YWJsZV9iYXNlPXE7dC5lbnYuY3NvdW5kTG9hZE1vZHVsZXM9cj0+e3YuZm9yRWFjaCh3PT57dm9pZCAwPT09eT9jb25zb2xlLmVycm9yKCJjc291bmQtd2FzbSBpbnRlcm5hbDogdGltaW5nIHByb2JsZW0gZGV0ZWN0ZWQhIik6ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdCh5LHcsbixyKX0pO3JldHVybiAwfTt0LmVudi5fWlRINWVycm5vPWZ1bmN0aW9uKCl7fTt0LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s9Y3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrJCRtb2R1bGUkc3JjJG1vZHVsZSh7bWVtb3J5Om0sbWVzc2FnZVBvcnQ6YyxzdHJlYW1CdWZmZXI6W119KTt0LmVudi5wcmludERlYnVnQ2FsbGJhY2s9KHIsdyk9PntyPW5ldyBVaW50OEFycmF5KG0uYnVmZmVyLHIsdyk7cj11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKHIpO2NvbnNvbGUubG9nKHIpfTsKdFsiR09ULm1lbSJdPXRbIkdPVC5tZW0iXXx8e307dFsiR09ULm1lbSJdLl9faGVhcF9iYXNlPWY7dFsiR09ULmZ1bmMiXT10WyJHT1QuZnVuYyJdfHx7fTtjb25zdCB5PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCk7Yz1PYmplY3QuYXNzaWduKHt9LHkuZXhwb3J0cyk7YT17fTthLmV4cG9ydHM9T2JqZWN0LmFzc2lnbihjLHttZW1vcnk6bX0pO3Y9YXdhaXQgYi5yZWR1Y2UoYXN5bmMocix7aGVhZGVyRGF0YTp3LHdhc21QbHVnaW5CeXRlczpCfSk9PntyPWF3YWl0IHI7dHJ5e2NvbnN0IHttZW1vcnlTaXplOnosbWVtb3J5QWxpZ246Qyx0YWJsZVNpemU6Rn09dyxFPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoQikseD1lLmdldEltcG9ydHMoRSksRz1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxBKlBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO24uZ3JvdyhGKTt4LmVudj1PYmplY3QuYXNzaWduKHt9LHguZW52KTt4LmVudi5tZW1vcnk9Cm07eC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT1uO3guZW52Ll9fbWVtb3J5X2Jhc2U9Rzt4LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt4LmVudi5fX3RhYmxlX2Jhc2U9cTt4LmVudi5jc291bmRMb2FkTW9kdWxlcz11O2RlbGV0ZSB4LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s7QSs9TWF0aC5jZWlsKCh6K0MpL1BBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO2NvbnN0IEQ9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSx4KTthc3NlcnRQbHVnaW5FeHBvcnRzJCRtb2R1bGUkc3JjJG1vZHVsZShEKSYmKEQuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycygpLHIucHVzaChEKSl9Y2F0Y2goeil7Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY29tcGlsaW5nIGNzb3VuZC1wbHVnaW4iLHopfXJldHVybiByfSxbXSk7ZS5zdGFydChhKTthLmV4cG9ydHMuX193YXNpX2pzX2Nzb3VuZFNldE1lc3NhZ2VTdHJpbmdDYWxsYmFjaygpO3JldHVyblthLGVdfSwKbW9kdWxlJHNyYyRtb2R1bGU9e307bW9kdWxlJHNyYyRtb2R1bGUuY3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrPWNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjayQkbW9kdWxlJHNyYyRtb2R1bGU7bW9kdWxlJHNyYyRtb2R1bGUuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGU7Y29uc3QgaGFuZGxlQ3NvdW5kU3RhcnQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KGEsYixjLGQsZSk9PmY9Pntjb25zdCB7Y3NvdW5kOmd9PWYsaD0xPT09Yi5jc291bmRTaG91bGREYWVtb25pemUoZyk7aCYmKGIuY3NvdW5kU2V0T3B0aW9uKGcsIi0tZGFlbW9uIiksYi5jc291bmRTZXRPcHRpb24oZywiLW9kYWMiKSk7Y29uc3Qgaz1iLmNzb3VuZFN0YXJ0KGcpLGw9Yi5jc291bmRHZXRPdXRwdXROYW1lKGcpfHwidGVzdC53YXYiO2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcihgaGFuZGxlQ3NvdW5kU3RhcnQ6IGFjdHVhbCBjc291bmRTdGFydCByZXN1bHQgJHtrfSwgb3V0cHV0TmFtZTogJHtsfWApKCk7MCE9PWsmJmEucG9zdChgZXJyb3I6IGNzb3VuZFN0YXJ0IGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVuZGVyICR7bH0sYCsiIGxvb2sgb3V0IGZvciBlcnJvcnMgaW4gb3B0aW9ucyBhbmQgc3ludGF4Iik7c2V0VGltZW91dCgoKT0+e2NvbnN0IG09CmIuX2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0KGcpO2lmKGh8fG18fGwuaW5jbHVkZXMoImRhYyIpKWQoZik7ZWxzZSBpZihhLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLGUpZShmKTtlbHNlIGZvcig7MD09PWIuY3NvdW5kUGVyZm9ybUtzbXBzKGcpOyk7fSwwKTtyZXR1cm4ga30saW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiKT0+e2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhO2QrKyljLnB1c2gobmV3IEZsb2F0NjRBcnJheShiKSk7cmV0dXJuIGN9LHJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPSh7bGlicmFyeUNzb3VuZDphLHdvcmtlck1lc3NhZ2VQb3J0OmJ9KT0+YXN5bmMoe2Nzb3VuZDpjfSk9Pntjb25zdCBkPWEuY3NvdW5kR2V0S3IoYyk7bGV0IGU9MCxmPTA7Zm9yKDsoInJlbmRlclN0YXJ0ZWQiPT09Yi52YW5pbGxhV29ya2VyU3RhdGV8fCJyZW5kZXJTdGFydGVkIj09PQpiLndvcmtlclN0YXRlKSYmMD09PWU7KWU9YS5jc291bmRQZXJmb3JtS3NtcHMoYyksZis9MSwiZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQmJjA9PT1lJiYwPT09ZiUoMipkKSYmYXdhaXQgbmV3IFByb21pc2UoZz0+c2V0VGltZW91dChnLDApKTtiLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKX07dmFyIG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9e307bW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscy5oYW5kbGVDc291bmRTdGFydD1oYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmluc3RhbnRpYXRlQXVkaW9QYWNrZXQ9aW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLnJlbmRlckZ1bmN0aW9uPXJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO2xldCBsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLGNvbWJpbmVkJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyO2NvbnN0IHJ0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyPVtdLGNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1hc3luYyhhLGIpPT4oYT1jb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5nZXQoYSkpJiZhLmFwcGx5KHt9LGJ8fFtdKTsKY2xhc3MgV29ya2xldFNpbmdsZXRocmVhZFdvcmtlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvcntzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCl7cmV0dXJuW119Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5zYW1wbGVSYXRlPXNhbXBsZVJhdGU7dGhpcy5vcHRpb25zPWE7dGhpcy5pbml0aWFsaXplPXRoaXMuaW5pdGlhbGl6ZS5iaW5kKHRoaXMpO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucHJvY2Vzcz10aGlzLnByb2Nlc3MuYmluZCh0aGlzKTt0aGlzLnJlc3VtZT10aGlzLnJlc3VtZS5iaW5kKHRoaXMpO3RoaXMuc3RhcnQ9dGhpcy5zdGFydC5iaW5kKHRoaXMpO3RoaXMuaXNQYXVzZWQ9dGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPSExO3RoaXMuY2FsbFVuY2xvbmVkPSgpPT5jb25zb2xlLmVycm9yKCJDc291bmQgd29ya2xldCB0aHJlYWQgaXMgc3RpbGwgdW5pbml0aWFsaXplZCEiKTsKdGhpcy5wb3J0LnN0YXJ0KCk7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanModGhpcyx0aGlzLnBvcnQpO3RoaXMud29ya2VyTWVzc2FnZVBvcnQ9bmV3ICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTt0aGlzLmluaXRpYWxpemVNZXNzYWdlUG9ydD0oe21lc3NhZ2VQb3J0OmIscnRtaWRpUG9ydDpjfSk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LnBvc3Q9ZD0+Yi5wb3N0TWVzc2FnZSh7bG9nOmR9KTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZT1kPT57dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSE9PWQmJih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LndvcmtlclN0YXRlPWQpO2IucG9zdE1lc3NhZ2Uoe3BsYXlTdGF0ZUNoYW5nZTpkfSl9O3RoaXMud29ya2VyTWVzc2FnZVBvcnQucmVhZHk9ITA7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRSdE1pZGlFdmVudFBvcnQiKSgpOwp0aGlzLnJ0bWlkaVBvcnQ9Yzt0aGlzLnJ0bWlkaVBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtkYXRhOmR9KT0+e3J0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLnB1c2goZCl9KTt0aGlzLnJ0bWlkaVBvcnQuc3RhcnQoKX19YXN5bmMgaW5pdGlhbGl6ZShhLGIpe2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0aWFsaXppbmcgd29ya2xldC5zaW5nbGV0aHJlYWQud29ya2VyIikoKTtsZXQgYztjb25zdCBkPW5ldyBQcm9taXNlKGU9PntjPWV9KTskanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGUoe3dhc21EYXRhVVJJOmEsd2l0aFBsdWdpbnM6YixtZXNzYWdlUG9ydDp0aGlzLndvcmtlck1lc3NhZ2VQb3J0fSkudGhlbigoW2UsZl0pPT57dGhpcy53YXNtPWU7dGhpcy53YXNpPWY7ZS53YXNpPWY7bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj0KJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbGliY3NvdW5kKGUpO3RoaXMuY2FsbFVuY2xvbmVkPWNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcjt0aGlzLmNzb3VuZD1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZENyZWF0ZSgwKTt0aGlzLnJlc3VsdD0wO3RoaXMuc3RhcnRlZD10aGlzLmlzUmVuZGVyaW5nPXRoaXMucnVubmluZz0hMTt0aGlzLnJlc2V0Q3NvdW5kKCExKTtlPXBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRDcmVhdGUiLGFzeW5jIGc9PnRoaXMuY3NvdW5kKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRSZXNldCIsdGhpcy5yZXNldENzb3VuZC5iaW5kKHRoaXMpKSwKYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RhcnQiLHRoaXMuc3RhcnQuYmluZCh0aGlzKSksYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RvcCIsdGhpcy5zdG9wLmJpbmQodGhpcykpLGFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoIndhc20iLGUpKShsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTtjb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGUpKTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigid2FzbSBpbml0aWFsaXplZCBhbmQgYXBpIGdlbmVyYXRlZCIpKCk7YygpfSk7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoIndhaXRpbmcgb24gd2FzbSBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZSIpKCk7CmF3YWl0IGR9YXN5bmMgcmVzZXRDc291bmQoYSl7aWYoYSYmIXRoaXMud29ya2VyTWVzc2FnZVBvcnR8fGEmJiJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiIT09dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIiE9PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUpcmV0dXJuLTE7YSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIj09PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUmJnRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiKTt0aGlzLnN0YXJ0ZWQ9dGhpcy5ydW5uaW5nPSExO3RoaXMucmVzdWx0PTA7Y29uc3QgYj10aGlzLmNzb3VuZDthJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFJlc2V0KGIpO2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyhiKTsKdGhpcy5zYW1wbGVSYXRlJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFNldE9wdGlvbihiLCItLXNhbXBsZS1yYXRlPSIrdGhpcy5zYW1wbGVSYXRlKTt0aGlzLm5jaG5sc19pPXRoaXMubmNobmxzPS0xO2RlbGV0ZSB0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcn1zdG9wKCl7dGhpcy5jc291bmQmJmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU3RvcCh0aGlzLmNzb3VuZCk7dGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpfXBhdXNlKCl7dGhpcy5pc1BhdXNlZHx8KHRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIiksdGhpcy5pc1BhdXNlZD0hMCl9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZCYmCih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKSx0aGlzLmlzUGF1c2VkPSExKX1wcm9jZXNzKGEsYil7aWYoISh0aGlzLmlzUmVuZGVyaW5nfHwhdGhpcy5pc1BhdXNlZCYmdGhpcy5jc291bmRPdXRwdXRCdWZmZXImJnRoaXMucnVubmluZykpe2E9YlswXTtiPWFbMF0ubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YjtjKyspZm9yKHZhciBkPTA7ZDxhLm51bWJlck9mQ2hhbm5lbHM7ZCsrKWFbZF1bY109MDtyZXR1cm4hMH10aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb24mJih0aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb249ITEsdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIikpOzA8cnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIubGVuZ3RoJiYocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuZm9yRWFjaChxPT4Ke2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kUHVzaE1pZGlNZXNzYWdlKHRoaXMuY3NvdW5kLHFbMF0scVsxXSxxWzJdKX0pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIpKTthPWFbMF07Yj1iWzBdO2M9YlswXS5sZW5ndGg7ZD10aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcjtsZXQgZT10aGlzLmNzb3VuZElucHV0QnVmZmVyO2NvbnN0IGY9dGhpcy5rc21wcyxnPXRoaXMuemVyb2RCRlM7bGV0IGg9dGhpcy5jbnQ7Y29uc3Qgaz10aGlzLm5jaG5scyxsPXRoaXMubmNobmxzX2k7bGV0IG09dGhpcy5yZXN1bHQ7Zm9yKGxldCBxPTA7cTxjO3ErKyxoKyspe2g+PWYmJjA9PT1tJiYobT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFBlcmZvcm1Lc21wcyh0aGlzLmNzb3VuZCksCmg9MCwwIT09bSYmKHRoaXMuc3RhcnRlZD10aGlzLnJ1bm5pbmc9ITEsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRDbGVhbnVwKHRoaXMuY3NvdW5kKSx0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIikpKTtkJiYwIT09ZC5sZW5ndGh8fChkPXRoaXMuY3NvdW5kT3V0cHV0QnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtLndhc2kubWVtb3J5LmJ1ZmZlcixsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldFNwb3V0KHRoaXMuY3NvdW5kKSxmKmspKTtlJiYwIT09ZS5sZW5ndGh8fChlPXRoaXMuY3NvdW5kSW5wdXRCdWZmZXI9bmV3IEZsb2F0NjRBcnJheSh0aGlzLndhc20ud2FzaS5tZW1vcnkuYnVmZmVyLGxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3Bpbih0aGlzLmNzb3VuZCksCmYqbCkpO3ZhciBuPU1hdGgubWluKHRoaXMubmNobmxzX2ksYS5sZW5ndGgpO2Zvcih2YXIgcD0wO3A8bjtwKyspZVtoKmwrcF09YVtwXVtxXSpnO2lmKHRoaXMubmNobmxzPT09Yi5sZW5ndGgpZm9yKGNvbnN0IFt1LHRdb2YgYi5lbnRyaWVzKCkpdFtxXT0wPT09bT9kW2gqayt1XS9nOjA7ZWxzZSBpZigyPT09dGhpcy5uY2hubHMmJjE9PT1iLmxlbmd0aCliWzBdW3FdPTA9PT1tPy41KihkW2gqa10vZytkW2gqaysxXS9nKTowO2Vsc2UgaWYoMT09PXRoaXMubmNobmxzJiYyPT09Yi5sZW5ndGgpaWYobj1iWzBdLHA9YlsxXSwwPT09bSl7Y29uc3QgdT1kW2gqa10vZztuW3FdPXU7cFtxXT11fWVsc2UgbltxXT0wLHBbcV09MH10aGlzLmNudD1oO3RoaXMucmVzdWx0PW07cmV0dXJuITB9YXN5bmMgaXNSZXF1ZXN0aW5nSW5wdXQoKXtyZXR1cm4obGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRJbnB1dE5hbWUodGhpcy5jc291bmQpfHwKIiIpLmluY2x1ZGVzKCJhZGMiKX1hc3luYyBpc1JlcXVlc3RpbmdSZWFsdGltZU91dHB1dCgpe3JldHVybihsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldE91dHB1dE5hbWUodGhpcy5jc291bmQpfHwiIikuaW5jbHVkZXMoImRhYyIpfWFzeW5jIHN0YXJ0KCl7bGV0IGE9LTE7aWYodGhpcy5zdGFydGVkKWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHdhcyBhc2tlZCB0byBzdGFydCBidXQgaXQgYWxyZWFkeSBoYXMhIikoKTtlbHNle2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHRocmVhZCBpcyBzdGFydGluZy4uIikoKTtjb25zdCBiPXRoaXMuY3NvdW5kLGM9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRLc21wcyhiKTsKdGhpcy5jbnQ9dGhpcy5rc21wcz1jO3RoaXMubmNobmxzPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0TmNobmxzKGIpO3RoaXMubmNobmxzX2k9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXROY2hubHNJbnB1dChiKTt0aGlzLnplcm9kQkZTPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0MGRCRlMoYik7YT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFN0YXJ0KGIpO2lmKDAhPT1hKXJldHVybiBhO2lmKGF3YWl0IHRoaXMuaXNSZXF1ZXN0aW5nUmVhbHRpbWVPdXRwdXQoKSl0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsCmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3BvdXQoYiksYyp0aGlzLm5jaG5scyksdGhpcy5jc291bmRJbnB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRTcGluKGIpLGMqdGhpcy5uY2hubHNfaSksbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImNzb3VuZFN0YXJ0IGNhbGxlZCB3aXRoIHt9IHJldHVybiB2YWwiLGEpKCksdGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPXRoaXMuc3RhcnRlZD0hMDtlbHNlIHJldHVybiB0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLHRoaXMuaXNSZW5kZXJpbmc9ITAscmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoe2xpYnJhcnlDc291bmQ6bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciwKd29ya2VyTWVzc2FnZVBvcnQ6dGhpcy53b3JrZXJNZXNzYWdlUG9ydCx3YXNpOnRoaXMud2FzaX0pKHtjc291bmQ6Yn0pLnRoZW4oKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSkuY2F0Y2goKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSksMH10aGlzLnJ1bm5pbmc9ITA7cmV0dXJuIGF9fXJlZ2lzdGVyUHJvY2Vzc29yKCJjc291bmQtc2luZ2xldGhyZWFkLXdvcmtsZXQtcHJvY2Vzc29yIixXb3JrbGV0U2luZ2xldGhyZWFkV29ya2VyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj17fTsKLy8jIHNvdXJjZVVSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcwovLyMgc291cmNlTWFwcGluZ1VSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcy5tYXAK", +module$dist$__compiled_worklet_singlethread_worker_inline={};module$dist$__compiled_worklet_singlethread_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline;const initializeModule$$module$src$mains$worklet_singlethread_main=async a=>{logSinglethreadWorkletMain$$module$src$logger("Initialize Module")();try{await a.audioWorklet.addModule($jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline())}catch(b){return console.error("Error calling audioWorklet.addModule",b),!1}return!0}; +class SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.exportApi={};this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.inputChannelCount=b;this.outputChannelCount=c;this.messageCallbacks=[];this.onPlayStateChange= +this.onPlayStateChange.bind(this);this.currentPlayState=void 0}async terminateInstance(){this.node&&(this.node.disconnect(),delete this.node);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.workletProxy);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=> +delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.currentPlayState!==a&&this.publicEvents)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.eventPromises.isWaitingToStart()&&(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.eventPromises.releaseStartPromise());this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.midiPortStarted=!1;this.currentPlayState= +void 0;this.publicEvents&&this.publicEvents.triggerRealtimePerformanceEnded(this);this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise();this.eventPromises&&this.eventPromises.releaseStartPromise();break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.eventPromises.isWaitingToStart()&& +(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.publicEvents.triggerRenderStarted(this),this.eventPromises.releaseStartPromise());break;case "renderEnded":this.publicEvents.triggerRenderEnded(this),this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise(),this.eventPromises&&this.eventPromises.releaseStartPromise()}}async csoundPause(){void 0!==this.workletProxy&&await this.workletProxy.pause()}async csoundResume(){void 0!==this.workletProxy&& +await this.workletProxy.resume()}handleMidiInput({data:a}){this.ipcMessagePorts.csoundMainRtMidiPort.postMessage&&this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(a)}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){b&&0this.audioContext;this.exportApi.getNode=async()=>this.node;this.exportApi.enableAudioInput=enableAudioInput$$module$src$mains$io_utils.bind(this.exportApi);this.exportApi.name="Csound: Audio Worklet, Single-threaded";this.exportApi=this.publicEvents.decorateAPI(this.exportApi); +this.exportApi.addListener("message",console.log);for(const e of Object.keys(api$$module$src$libcsound)){const f=api$$module$src$libcsound[e],g=makeProxyCallback$$module$src$utils(this.workletProxy,d,e,this.currentPlayState);switch(e){case "csoundCreate":break;case "csoundStart":a=async function(){this.eventPromises.createStartPromise();var h=await this.workletProxy.isRequestingInput();if(await this.workletProxy.isRequestingRealtimeOutput())return h&&this.exportApi.enableAudioInput(),await this.exportApi._isRequestingRtMidiInput(d)&& +requestMidi$$module$src$utils$request_midi({onMidiMessage:this.handleMidiInput.bind(this)}),h=await g({csound:d}),this.publicEvents.triggerOnAudioNodeCreated(this.node),await this.eventPromises.waitForStart(),h;g({csound:d});this.publicEvents.triggerOnAudioNodeCreated(this.node);await this.eventPromises.waitForStart();return 0};a.toString=()=>f.toString();this.exportApi.start=a.bind(this);break;case "csoundStop":a=async()=>{if(this.eventPromises.isWaitingToStop())return logSinglethreadWorkletMain$$module$src$logger("already waiting to stop, doing nothing")(), +-1;this.eventPromises.createStopPromise();const h=await g();await this.eventPromises.waitForStop();return h};a.toString=()=>f.toString();this.exportApi.stop=a.bind(this);break;case "fs":this.exportApi.fs={};Object.keys(f).forEach(h=>{const k=makeProxyCallback$$module$src$utils(this.workletProxy,d,h,this.currentPlayState);k.toString=()=>f[h].toString();this.exportApi.fs[h]=k});break;default:g.toString=()=>f.toString(),this.exportApi[csoundApiRename$$module$src$utils(e)]=g}}return this.exportApi}} +var $jscompDefaultExport$$module$src$mains$worklet_singlethread_main=SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main,module$src$mains$worklet_singlethread_main={};module$src$mains$worklet_singlethread_main.default=$jscompDefaultExport$$module$src$mains$worklet_singlethread_main;(0,module$node_modules$unmute_ios_audio$index.default)(); +const Csound$$module$src$index=async function({audioContext:a,inputChannelCount:b,outputChannelCount:c,autoConnect:d=!0,withPlugins:e=[],useWorker:f=!1,useSAB:g=!0,useSPN:h=!1}={}){const k=a&&WebkitAudioContext$$module$src$utils()&&a instanceof WebkitAudioContext$$module$src$utils();k||(a=a||new (WebkitAudioContext$$module$src$utils())({latencyHint:"interactive"}));isSafari$$module$src$utils()&&a.resume();const n=areWorkletsSupported$$module$src$utils(),m=isScriptProcessorNodeSupported$$module$src$utils(); +if(f){n?logIndex$$module$src$logger("worklet support detected")():m?logIndex$$module$src$logger("scriptProcessorNode support detected")():console.error("No WebAudio Support detected");var l;!h&&n?l=new $jscompDefaultExport$$module$src$mains$worklet_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}):m&&(l=new $jscompDefaultExport$$module$src$mains$old_spn_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}));if(l)return(d=isSabSupported$$module$src$utils())?g&&logIndex$$module$src$logger("using SharedArrayBuffers")(): +logIndex$$module$src$logger("SharedArrayBuffers not found, falling back to Vanilla concurrency")(),a=d&&n&&g?new $jscompDefaultExport$$module$src$mains$sab_main({audioWorker:l,audioContext:a,audioContextIsProvided:k,inputChannelCount:b,outputChannelCount:c}):new $jscompDefaultExport$$module$src$mains$vanilla_main({audioWorker:l,audioContextIsProvided:k}),logIndex$$module$src$logger("starting Csound thread initialization via WebWorker")(),await a.initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline, +withPlugins:e}),e=a.api}else{if(n&&!h)return logIndex$$module$src$logger("Single Thread AudioWorklet")(),(new $jscompDefaultExport$$module$src$mains$worklet_singlethread_main({audioContext:a,inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d});if(m)return logIndex$$module$src$logger("Single Thread ScriptProcessorNode")(),await (new $jscompDefaultExport$$module$src$mains$spn_main({audioContext:a, +inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d})}console.error("No detectable WebAudioAPI in current environment")};goog.exportSymbol("Csound$$module$src$index",Csound$$module$src$index);var module$src$index={};module$src$index.Csound=Csound$$module$src$index; +const Csound = Csound$$module$src$index; +Csound.toString = () => 'async (options) => CsoundObj;'; +export { Csound } +export default Csound +//# sourceMappingURL=csound.js.map diff --git a/site/code/d3.v7.min.js b/site/code/d3.v7.min.js new file mode 100644 index 0000000..33bb880 --- /dev/null +++ b/site/code/d3.v7.min.js @@ -0,0 +1,2 @@ +// https://d3js.org v7.9.0 Copyright 2010-2023 Mike Bostock +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:tn?1:t>=n?0:NaN}function e(t,n){return null==t||null==n?NaN:nt?1:n>=t?0:NaN}function r(t){let r,o,a;function u(t,n,e=0,i=t.length){if(e>>1;o(t[r],n)<0?e=r+1:i=r}while(en(t(e),r),a=(n,e)=>t(n)-e):(r=t===n||t===e?t:i,o=t,a=t),{left:u,center:function(t,n,e=0,r=t.length){const i=u(t,n,e,r-1);return i>e&&a(t[i-1],n)>-a(t[i],n)?i-1:i},right:function(t,n,e=0,i=t.length){if(e>>1;o(t[r],n)<=0?e=r+1:i=r}while(e{n(t,e,(r<<=2)+0,(i<<=2)+0,o<<=2),n(t,e,r+1,i+1,o),n(t,e,r+2,i+2,o),n(t,e,r+3,i+3,o)}}));function d(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:o,height:a}=n;if(!((o=Math.floor(o))>=0))throw new RangeError("invalid width");if(!((a=Math.floor(void 0!==a?a:i.length/o))>=0))throw new RangeError("invalid height");if(!o||!a||!e&&!r)return n;const u=e&&t(e),c=r&&t(r),f=i.slice();return u&&c?(p(u,f,i,o,a),p(u,i,f,o,a),p(u,f,i,o,a),g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)):u?(p(u,i,f,o,a),p(u,f,i,o,a),p(u,i,f,o,a)):c&&(g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)),n}}function p(t,n,e,r,i){for(let o=0,a=r*i;o{if(!((o-=a)>=i))return;let u=t*r[i];const c=a*t;for(let t=i,n=i+c;t{if(!((a-=u)>=o))return;let c=n*i[o];const f=u*n,s=f+u;for(let t=o,n=o+f;t=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function _(t){return 0|t.length}function b(t){return!(t>0)}function m(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function x(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function w(t,n){const e=x(t,n);return e?Math.sqrt(e):e}function M(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r=o&&(e=r=o):(e>o&&(e=o),r0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(A(this,t))}has(t){return super.has(A(this,t))}set(t,n){return super.set(S(this,t),n)}delete(t){return super.delete(E(this,t))}}class InternSet extends Set{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(A(this,t))}add(t){return super.add(S(this,t))}delete(t){return super.delete(E(this,t))}}function A({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function S({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function E({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function N(t){return null!==t&&"object"==typeof t?t.valueOf():t}function k(t){return t}function C(t,...n){return F(t,k,k,n)}function P(t,...n){return F(t,Array.from,k,n)}function z(t,n){for(let e=1,r=n.length;et.pop().map((([n,e])=>[...t,n,e]))));return t}function $(t,n,...e){return F(t,k,n,e)}function D(t,n,...e){return F(t,Array.from,n,e)}function R(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function F(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function q(t,n){return Array.from(n,(n=>t[n]))}function U(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=O(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>O(e[t],e[n])))),q(t,r)}return t.sort(I(e))}function I(t=n){if(t===n)return O;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function O(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(tn?1:0)}var B=Array.prototype.slice;function Y(t){return()=>t}const L=Math.sqrt(50),j=Math.sqrt(10),H=Math.sqrt(2);function X(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=L?10:o>=j?5:o>=H?2:1;let u,c,f;return i<0?(f=Math.pow(10,-i)/a,u=Math.round(t*f),c=Math.round(n*f),u/fn&&--c,f=-f):(f=Math.pow(10,i)*a,u=Math.round(t/f),c=Math.round(n/f),u*fn&&--c),c0))return[];if((t=+t)===(n=+n))return[t];const r=n=i))return[];const u=o-i+1,c=new Array(u);if(r)if(a<0)for(let t=0;t0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function K(t){return Math.max(1,Math.ceil(Math.log(v(t))/Math.LN2)+1)}function Q(){var t=k,n=M,e=K;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a,u=r.length,c=new Array(u);for(i=0;i=h)if(t>=h&&n===M){const t=V(l,h,e);isFinite(t)&&(t>0?h=(Math.floor(h/t)+1)*t:t<0&&(h=(Math.ceil(h*-t)+1)/-t))}else d.pop()}for(var p=d.length,g=0,y=p;d[g]<=l;)++g;for(;d[y-1]>h;)--y;(g||y0?d[i-1]:l,v.x1=i0)for(i=0;i=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e=i)&&(e=i)}return e}function tt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e=o)&&(e=o,r=i);return r}function nt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function et(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function rt(t,n,e=0,r=1/0,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?O:I(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);rt(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(it(t,e,n),i(t[r],o)>0&&it(t,e,r);a0;)--u}0===i(t[e],o)?it(t,e,u):(++u,it(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function it(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ot(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r}function at(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return nt(t);if(n>=1)return J(t);var r,i=(r-1)*n,o=Math.floor(i),a=J(rt(t,o).subarray(0,o+1));return a+(nt(t.subarray(o+1))-a)*(i-o)}}function ut(t,n,e=o){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function ct(t,n,e=o){if(!isNaN(n=+n)){if(r=Float64Array.from(t,((n,r)=>o(e(t[r],r,t)))),n<=0)return et(r);if(n>=1)return tt(r);var r,i=Uint32Array.from(t,((t,n)=>n)),a=r.length-1,u=Math.floor(a*n);return rt(i,u,0,a,((t,n)=>O(r[t],r[n]))),(u=ot(i.subarray(0,u+1),(t=>r[t])))>=0?u:-1}}function ft(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function st(t,n){return[t,n]}function lt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r+t(n)}function kt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function Ct(){return!this.__axis}function Pt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=t===xt||t===Tt?-1:1,s=t===Tt||t===wt?"x":"y",l=t===xt||t===Mt?St:Et;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):mt:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?kt:Nt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),T=w.enter().append("g").attr("class","tick"),A=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(T),A=A.merge(T.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(T.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",t===xt?"0em":t===Mt?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),A=A.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",At).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),T.attr("opacity",At).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",t===Tt||t===wt?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),A.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(Ct).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===wt?"start":t===Tt?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var zt={value:()=>{}};function $t(){for(var t,n=0,e=arguments.length,r={};n=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Ut.hasOwnProperty(n)?{space:Ut[n],local:t}:t}function Ot(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===qt&&n.documentElement.namespaceURI===qt?n.createElement(t):n.createElementNS(e,t)}}function Bt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Yt(t){var n=It(t);return(n.local?Bt:Ot)(n)}function Lt(){}function jt(t){return null==t?Lt:function(){return this.querySelector(t)}}function Ht(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Xt(){return[]}function Gt(t){return null==t?Xt:function(){return this.querySelectorAll(t)}}function Vt(t){return function(){return this.matches(t)}}function Wt(t){return function(n){return n.matches(t)}}var Zt=Array.prototype.find;function Kt(){return this.firstElementChild}var Qt=Array.prototype.filter;function Jt(){return Array.from(this.children)}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;un?1:t>=n?0:NaN}function cn(t){return function(){this.removeAttribute(t)}}function fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function sn(t,n){return function(){this.setAttribute(t,n)}}function ln(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function hn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function dn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function pn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function yn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function vn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||pn(t).getComputedStyle(t,null).getPropertyValue(n)}function bn(t){return function(){delete this[t]}}function mn(t,n){return function(){this[t]=n}}function xn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function wn(t){return t.trim().split(/^|\s+/)}function Mn(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=wn(t.getAttribute("class")||"")}function An(t,n){for(var e=Mn(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gn=[null];function Vn(t,n){this._groups=t,this._parents=n}function Wn(){return new Vn([[document.documentElement]],Gn)}function Zn(t){return"string"==typeof t?new Vn([[document.querySelector(t)]],[document.documentElement]):new Vn([[t]],Gn)}Vn.prototype=Wn.prototype={constructor:Vn,select:function(t){"function"!=typeof t&&(t=jt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=m&&(m=b+1);!(_=y[m])&&++m=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=un);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?gn:"function"==typeof n?vn:yn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?bn:"function"==typeof n?xn:mn)(t,n)):this.node()[t]},classed:function(t,n){var e=wn(t+"");if(arguments.length<2){for(var r=Mn(this.node()),i=-1,o=e.length;++i=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?Ln:Yn,r=0;r()=>t;function fe(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function se(t){return!t.ctrlKey&&!t.button}function le(){return this.parentNode}function he(t,n){return null==n?{x:t.x,y:t.y}:n}function de(){return navigator.maxTouchPoints||"ontouchstart"in this}function pe(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function ge(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ye(){}fe.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ve=.7,_e=1/ve,be="\\s*([+-]?\\d+)\\s*",me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",we=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${be},${be},${be}\\)$`),Te=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),Ae=new RegExp(`^rgba\\(${be},${be},${be},${me}\\)$`),Se=new RegExp(`^rgba\\(${xe},${xe},${xe},${me}\\)$`),Ee=new RegExp(`^hsl\\(${me},${xe},${xe}\\)$`),Ne=new RegExp(`^hsla\\(${me},${xe},${xe},${me}\\)$`),ke={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ce(){return this.rgb().formatHex()}function Pe(){return this.rgb().formatRgb()}function ze(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=we.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?$e(n):3===e?new qe(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?De(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?De(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Me.exec(t))?new qe(n[1],n[2],n[3],1):(n=Te.exec(t))?new qe(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ae.exec(t))?De(n[1],n[2],n[3],n[4]):(n=Se.exec(t))?De(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ee.exec(t))?Le(n[1],n[2]/100,n[3]/100,1):(n=Ne.exec(t))?Le(n[1],n[2]/100,n[3]/100,n[4]):ke.hasOwnProperty(t)?$e(ke[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function $e(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function De(t,n,e,r){return r<=0&&(t=n=e=NaN),new qe(t,n,e,r)}function Re(t){return t instanceof ye||(t=ze(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Fe(t,n,e,r){return 1===arguments.length?Re(t):new qe(t,n,e,null==r?1:r)}function qe(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Ue(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function Ie(){const t=Oe(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Oe(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Le(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xe(t,n,e,r)}function je(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=ze(t)),!t)return new Xe;if(t instanceof Xe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&c<1?0:a,new Xe(a,u,c,t.opacity)}function He(t,n,e,r){return 1===arguments.length?je(t):new Xe(t,n,e,null==r?1:r)}function Xe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ge(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function We(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}pe(ye,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ce,formatHex:Ce,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return je(this).formatHsl()},formatRgb:Pe,toString:Pe}),pe(qe,Fe,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Be(this.r),Be(this.g),Be(this.b),Oe(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ie,toString:Ie})),pe(Xe,He,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new qe(We(t>=240?t-240:t+120,i,r),We(t,i,r),We(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xe(Ge(this.h),Ve(this.s),Ve(this.l),Oe(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Oe(this.opacity);return`${1===t?"hsl(":"hsla("}${Ge(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));const Ze=Math.PI/180,Ke=180/Math.PI,Qe=.96422,Je=1,tr=.82521,nr=4/29,er=6/29,rr=3*er*er,ir=er*er*er;function or(t){if(t instanceof ur)return new ur(t.l,t.a,t.b,t.opacity);if(t instanceof pr)return gr(t);t instanceof qe||(t=Re(t));var n,e,r=lr(t.r),i=lr(t.g),o=lr(t.b),a=cr((.2225045*r+.7168786*i+.0606169*o)/Je);return r===i&&i===o?n=e=a:(n=cr((.4360747*r+.3850649*i+.1430804*o)/Qe),e=cr((.0139322*r+.0971045*i+.7141733*o)/tr)),new ur(116*a-16,500*(n-a),200*(a-e),t.opacity)}function ar(t,n,e,r){return 1===arguments.length?or(t):new ur(t,n,e,null==r?1:r)}function ur(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function cr(t){return t>ir?Math.pow(t,1/3):t/rr+nr}function fr(t){return t>er?t*t*t:rr*(t-nr)}function sr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hr(t){if(t instanceof pr)return new pr(t.h,t.c,t.l,t.opacity);if(t instanceof ur||(t=or(t)),0===t.a&&0===t.b)return new pr(NaN,0=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r()=>t;function Cr(t,n){return function(e){return t+e*n}}function Pr(t,n){var e=n-t;return e?Cr(t,e>180||e<-180?e-360*Math.round(e/360):e):kr(isNaN(t)?n:t)}function zr(t){return 1==(t=+t)?$r:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):kr(isNaN(n)?e:n)}}function $r(t,n){var e=n-t;return e?Cr(t,e):kr(isNaN(t)?n:t)}var Dr=function t(n){var e=zr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=$r(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Rr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Yr(e,r)})),o=Hr.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Yr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Yr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Yr(t,e)},{i:u-2,x:Yr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(void 0,t),n=n._next;--yi}function Ci(){xi=(mi=Mi.now())+wi,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=pi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pi=n);gi=t,zi(r)}(),xi=0}}function Pi(){var t=Mi.now(),n=t-mi;n>bi&&(wi-=n,mi=t)}function zi(t){yi||(vi&&(vi=clearTimeout(vi)),t-xi>24?(t<1/0&&(vi=setTimeout(Ci,t-Mi.now()-wi)),_i&&(_i=clearInterval(_i))):(_i||(mi=Mi.now(),_i=setInterval(Pi,bi)),yi=1,Ti(Ci)))}function $i(t,n,e){var r=new Ei;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ei.prototype=Ni.prototype={constructor:Ei,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ai():+e)+(null==n?0:+n),this._next||gi===this||(gi?gi._next=this:pi=this,gi=this),this._call=t,this._time=e,zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,zi())}};var Di=$t("start","end","cancel","interrupt"),Ri=[],Fi=0,qi=1,Ui=2,Ii=3,Oi=4,Bi=5,Yi=6;function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=qi,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(e.state!==qi)return c();for(f in i)if((h=i[f]).name===e.name){if(h.state===Ii)return $i(a);h.state===Oi?(h.state=Yi,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+fFi)throw new Error("too late; already scheduled");return e}function Hi(t,n){var e=Xi(t,n);if(e.state>Ii)throw new Error("too late; already running");return e}function Xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Gi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>Ui&&e.state=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?ji:Hi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=It(t),r="transform"===e?ni:Ki;return this.attrTween(t,"function"==typeof n?(e.local?ro:eo)(e,r,Zi(this,"attr."+t,n)):null==n?(e.local?Ji:Qi)(e):(e.local?no:to)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=It(t);return this.tween(e,(r.local?io:oo)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?ti:Ki;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_n(this,t),a=(this.style.removeProperty(t),_n(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,lo(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=_n(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=_n(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Zi(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Hi(this,t),f=c.on,s=null==c.value[a]?o||(o=lo(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=_n(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Zi(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Xi(this.node(),e).tween,o=0,a=i.length;o()=>t;function Qo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function Jo(t){t.preventDefault(),t.stopImmediatePropagation()}var ta={name:"drag"},na={name:"space"},ea={name:"handle"},ra={name:"center"};const{abs:ia,max:oa,min:aa}=Math;function ua(t){return[+t[0],+t[1]]}function ca(t){return[ua(t[0]),ua(t[1])]}var fa={name:"x",handles:["w","e"].map(va),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},sa={name:"y",handles:["n","s"].map(va),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},la={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(va),input:function(t){return null==t?null:ca(t)},output:function(t){return t}},ha={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},da={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},pa={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},ga={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ya={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function va(t){return{type:t}}function _a(t){return!t.ctrlKey&&!t.button}function ba(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function ma(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function wa(t){var n,e=ba,r=_a,i=ma,o=!0,a=$t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([va("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ha.overlay).merge(e).each((function(){var t=xa(this).extent;Zn(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([va("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ha.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return ha[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Zn(this),n=xa(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?ta:o&&e.altKey?ra:ea,x=t===sa?null:ga[b],w=t===fa?null:ya[b],M=xa(_),T=M.extent,A=M.selection,S=T[0][0],E=T[0][1],N=T[1][0],k=T[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,$=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=ne(t,_)).point0=t.slice(),t.identifier=n,t}));Gi(_);var D=s(_,arguments,!0).beforestart();if("overlay"===b){A&&(g=!0);const n=[$[0],$[1]||$[0]];M.selection=A=[[i=t===sa?S:aa(n[0][0],n[1][0]),u=t===fa?E:aa(n[0][1],n[1][1])],[l=t===sa?N:oa(n[0][0],n[1][0]),d=t===fa?k:oa(n[0][1],n[1][1])]],$.length>1&&I(e)}else i=A[0][0],u=A[0][1],l=A[1][0],d=A[1][1];a=i,c=u,h=l,p=d;var R=Zn(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",ha[b]);if(e.touches)D.moved=U,D.ended=O;else{var q=Zn(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",O,!0);o&&q.on("keydown.brush",(function(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===ea&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra,I(t));break;case 32:m!==ea&&m!==ra||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=na,F.attr("cursor",ha.selection),I(t));break;default:return}Jo(t)}),!0).on("keyup.brush",(function(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===ra&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea,I(t));break;case 32:m===na&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea),F.attr("cursor",ha[b]),I(t));break;default:return}Jo(t)}),!0),ae(e.view)}f.call(_),D.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of $)t.identifier===n.identifier&&(t.cur=ne(n,_));if(z&&!y&&!v&&1===$.length){const t=$[0];ia(t.cur[0]-t[0])>ia(t.cur[1]-t[1])?v=!0:y=!0}for(const t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,Jo(t),I(t)}function I(t){const n=$[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case na:case ta:x&&(C=oa(S-i,aa(N-l,C)),a=i+C,h=l+C),w&&(P=oa(E-u,aa(k-d,P)),c=u+P,p=d+P);break;case ea:$[1]?(x&&(a=oa(S,aa(N,$[0][0])),h=oa(S,aa(N,$[1][0])),x=1),w&&(c=oa(E,aa(k,$[0][1])),p=oa(E,aa(k,$[1][1])),w=1)):(x<0?(C=oa(S-i,aa(N-i,C)),a=i+C,h=l):x>0&&(C=oa(S-l,aa(N-l,C)),a=i,h=l+C),w<0?(P=oa(E-u,aa(k-u,P)),c=u+P,p=d):w>0&&(P=oa(E-d,aa(k-d,P)),c=u,p=d+P));break;case ra:x&&(a=oa(S,aa(N,i-C*x)),h=oa(S,aa(N,l+C*x))),w&&(c=oa(E,aa(k,u-P*w)),p=oa(E,aa(k,d+P*w)))}ht+e))}function za(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=Pa(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;nr(f[t],f[n])));for(const e of s){const r=n;if(t){const t=Pa(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=Pa(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e=0))throw new Error(`invalid digits: ${t}`);if(n>15)return qa;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;nRa)if(Math.abs(s*u-c*f)>Ra&&i){let h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan(($a-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>Ra&&this._append`L${t+b*f},${n+b*s}`,this._append`A${i},${i},0,0,${+(s*h>f*d)},${this._x1=t+m*u},${this._y1=n+m*c}`}else this._append`L${this._x1=t},${this._y1=n}`;else;}arc(t,n,e,r,i,o){if(t=+t,n=+n,o=!!o,(e=+e)<0)throw new Error(`negative radius: ${e}`);let a=e*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;null===this._x1?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Ra||Math.abs(this._y1-f)>Ra)&&this._append`L${c},${f}`,e&&(l<0&&(l=l%Da+Da),l>Fa?this._append`A${e},${e},0,1,${s},${t-a},${n-u}A${e},${e},0,1,${s},${this._x1=c},${this._y1=f}`:l>Ra&&this._append`A${e},${e},0,${+(l>=$a)},${s},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}};function Ia(){return new Ua}Ia.prototype=Ua.prototype;var Oa=Array.prototype.slice;function Ba(t){return function(){return t}}function Ya(t){return t.source}function La(t){return t.target}function ja(t){return t.radius}function Ha(t){return t.startAngle}function Xa(t){return t.endAngle}function Ga(){return 0}function Va(){return 10}function Wa(t){var n=Ya,e=La,r=ja,i=ja,o=Ha,a=Xa,u=Ga,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=Oa.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-Ea,y=a.apply(this,d)-Ea,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-Ea,b=a.apply(this,d)-Ea;if(c||(c=f=Ia()),h>Ca&&(Ma(y-g)>2*h+Ca?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,Ma(b-_)>2*h+Ca?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*Ta(g),p*Aa(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=v-+t.apply(this,arguments),x=(_+b)/2;c.quadraticCurveTo(0,0,m*Ta(_),m*Aa(_)),c.lineTo(v*Ta(x),v*Aa(x)),c.lineTo(m*Ta(b),m*Aa(b))}else c.quadraticCurveTo(0,0,v*Ta(_),v*Aa(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*Ta(g),p*Aa(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ba(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:Ba(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:Ba(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:Ba(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ba(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ba(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:Ba(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Za=Array.prototype.slice;function Ka(t,n){return t-n}var Qa=t=>()=>t;function Ja(t,n){for(var e,r=-1,i=n.length;++rr!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function nu(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function eu(){}var ru=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function iu(){var t=1,n=1,e=K,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ka);else{const e=M(t,ou);for(n=G(...Z(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]o(t,n)))}function o(e,i){const o=null==i?NaN:+i;if(isNaN(o))throw new Error(`invalid value: ${i}`);var u=[],c=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=au(e[0],r),ru[f<<1].forEach(p);for(;++o=r,ru[s<<2].forEach(p);for(;++o0?u.push([t]):c.push(t)})),c.forEach((function(t){for(var n,e=0,r=u.length;e0&&o0&&a=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:eu,i):r===u},i}function ou(t){return isFinite(t)?t:NaN}function au(t,n){return null!=t&&+t>=n}function uu(t){return null==t||isNaN(t=+t)?-1/0:t}function cu(t,n,e,r){const i=r-n,o=e-n,a=isFinite(i)||isFinite(o)?i/o:Math.sign(i)/Math.sign(o);return isNaN(a)?t:t+a-.5}function fu(t){return t[0]}function su(t){return t[1]}function lu(){return 1}const hu=134217729,du=33306690738754706e-32;function pu(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(lf==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);lf==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,T;const A=t-i,S=e-i,E=n-o,N=r-o;m=A*N,h=hu*A,d=h-(h-A),p=A-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=hu*E,d=h-(h-E),p=E-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,_u[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,_u[1]=b-(v+l)+(l-w),T=_+v,l=T-_,_u[2]=_-(T-l)+(v-l),_u[3]=T;let k=function(t,n){let e=n[0];for(let r=1;r=C||-k>=C)return k;if(l=t-A,u=t-(A+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-N,s=r-(N+l)+(l-o),0===u&&0===c&&0===f&&0===s)return k;if(C=vu*a+du*Math.abs(k),k+=A*s+N*u-(E*f+S*c),k>=C||-k>=C)return k;m=u*N,h=hu*u,d=h-(h-u),p=u-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=hu*c,d=h-(h-c),p=c-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const P=pu(4,_u,4,wu,bu);m=A*s,h=hu*A,d=h-(h-A),p=A-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=hu*E,d=h-(h-E),p=E-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const z=pu(P,bu,4,wu,mu);m=u*s,h=hu*u,d=h-(h-u),p=u-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=hu*c,d=h-(h-c),p=c-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const $=pu(z,mu,4,wu,xu);return xu[$-1]}(t,n,e,r,i,o,f)}const Tu=Math.pow(2,-52),Au=new Uint32Array(512);class Su{static from(t,n=zu,e=$u){const r=t.length,i=new Float64Array(2*r);for(let o=0;o>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;nc&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p;for(let n=0,e=1/0;n0&&(d=n,e=r)}let v=t[2*d],_=t[2*d+1],b=1/0;for(let n=0;nr&&(n[e++]=i,r=o)}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Mu(g,y,v,_,m,x)<0){const t=d,n=v,e=_;d=p,v=m,_=x,p=t,m=n,x=e}const w=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=t+(f*s-u*l)*h,p=n+(a*l-c*s)*h;return{x:d,y:p}}(g,y,v,_,m,x);this._cx=w.x,this._cy=w.y;for(let n=0;n0&&Math.abs(f-o)<=Tu&&Math.abs(s-a)<=Tu)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,M++;let _=e[y];for(;g=e[_],Mu(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,M--,_=g;if(y===l)for(;g=n[y],Mu(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,M--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(M);for(let t=0,n=this._hullStart;t0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Au[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(Nu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;Pu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Pu(t,e,r),n[t[i]]>n[t[r]]&&Pu(t,i,r),n[t[e]]>n[t[i]]&&Pu(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]u);if(o=o-e?(Cu(t,n,i,r),Cu(t,n,e,o-1)):(Cu(t,n,e,o-1),Cu(t,n,i,r))}}function Pu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function zu(t){return t[0]}function $u(t){return t[1]}const Du=1e-6;class Ru{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Du||Math.abs(this._y1-i)>Du)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Fu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class qu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const a=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,c=0,f=0,s=e.length;c1;)i-=2;for(let t=2;t0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)this.xmax?2:0)|(nthis.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new qu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=Iu(n-c[2*t],2)+Iu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=Iu(n-c[2*r],2)+Iu(e-c[2*r+1],2);if(l9999?"+"+Ku(n,6):Ku(n,4))+"-"+Ku(t.getUTCMonth()+1,2)+"-"+Ku(t.getUTCDate(),2)+(o?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"."+Ku(o,3)+"Z":i?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"Z":r||e?"T"+Ku(e,2)+":"+Ku(r,2)+"Z":"")}function Ju(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return Hu;if(f)return f=!1,ju;var n,r,i=a;if(t.charCodeAt(i)===Xu){for(;a++=o?c=!0:(r=t.charCodeAt(a++))===Gu?f=!0:r===Vu&&(f=!0,t.charCodeAt(a)===Gu&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;amc(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Sc=Ac("application/xml"),Ec=Ac("text/html"),Nc=Ac("image/svg+xml");function kc(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Cc(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Pc(t){return t[0]}function zc(t){return t[1]}function $c(t,n,e){var r=new Dc(null==n?Pc:n,null==e?zc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Dc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Rc(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Fc=$c.prototype=Dc.prototype;function qc(t){return function(){return t}}function Uc(t){return 1e-6*(t()-.5)}function Ic(t){return t.x+t.vx}function Oc(t){return t.y+t.vy}function Bc(t){return t.index}function Yc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Fc.copy=function(){var t,n,e=new Dc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Rc(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Rc(n));return e},Fc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kc(this.cover(n,e),n,e,t)},Fc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;es&&(s=r),il&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;et||t>=i||r>n||n>=o;)switch(u=(nh||(o=c.y0)>d||(a=c.x1)=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Fc.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Zc(t){return(t=Wc(Math.abs(t)))?t[1]:NaN}var Kc,Qc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jc(t){if(!(n=Qc.exec(t)))throw new Error("invalid format: "+t);var n;return new tf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function tf(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function nf(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Jc.prototype=tf.prototype,tf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ef={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>nf(100*t,n),r:nf,s:function(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Kc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Wc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rf(t){return t}var of,af=Array.prototype.map,uf=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cf(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?rf:(n=af.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?rf:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(af.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Jc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):ef[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=ef[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),T&&0==+t&&"+"!==l&&(T=!1),h=(T?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?uf[8+Kc/3]:"")+M+(T&&"("===l?")":""),w)for(i=-1,o=t.length;++i(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,S=A>1)+h+t+M+S.slice(A);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Jc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3))),i=Math.pow(10,-r),o=uf[8+r/3];return function(t){return e(i*t)+o}}}}function ff(n){return of=cf(n),t.format=of.format,t.formatPrefix=of.formatPrefix,of}function sf(t){return Math.max(0,-Zc(Math.abs(t)))}function lf(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3)))-Zc(Math.abs(t)))}function hf(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Zc(n)-Zc(t))+1}t.format=void 0,t.formatPrefix=void 0,ff({thousands:",",grouping:[3],currency:["$",""]});var df=1e-6,pf=1e-12,gf=Math.PI,yf=gf/2,vf=gf/4,_f=2*gf,bf=180/gf,mf=gf/180,xf=Math.abs,wf=Math.atan,Mf=Math.atan2,Tf=Math.cos,Af=Math.ceil,Sf=Math.exp,Ef=Math.hypot,Nf=Math.log,kf=Math.pow,Cf=Math.sin,Pf=Math.sign||function(t){return t>0?1:t<0?-1:0},zf=Math.sqrt,$f=Math.tan;function Df(t){return t>1?0:t<-1?gf:Math.acos(t)}function Rf(t){return t>1?yf:t<-1?-yf:Math.asin(t)}function Ff(t){return(t=Cf(t/2))*t}function qf(){}function Uf(t,n){t&&Of.hasOwnProperty(t.type)&&Of[t.type](t,n)}var If={Feature:function(t,n){Uf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,o=Tf(n=(n*=mf)/2+vf),a=Cf(n),u=Vf*a,c=Gf*o+u*Tf(i),f=u*r*Cf(i);as.add(Mf(f,c)),Xf=t,Gf=o,Vf=a}function ds(t){return[Mf(t[1],t[0]),Rf(t[2])]}function ps(t){var n=t[0],e=t[1],r=Tf(e);return[r*Tf(n),r*Cf(n),Cf(e)]}function gs(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function ys(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function vs(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function _s(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function bs(t){var n=zf(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var ms,xs,ws,Ms,Ts,As,Ss,Es,Ns,ks,Cs,Ps,zs,$s,Ds,Rs,Fs={point:qs,lineStart:Is,lineEnd:Os,polygonStart:function(){Fs.point=Bs,Fs.lineStart=Ys,Fs.lineEnd=Ls,rs=new T,cs.polygonStart()},polygonEnd:function(){cs.polygonEnd(),Fs.point=qs,Fs.lineStart=Is,Fs.lineEnd=Os,as<0?(Wf=-(Kf=180),Zf=-(Qf=90)):rs>df?Qf=90:rs<-df&&(Zf=-90),os[0]=Wf,os[1]=Kf},sphere:function(){Wf=-(Kf=180),Zf=-(Qf=90)}};function qs(t,n){is.push(os=[Wf=t,Kf=t]),nQf&&(Qf=n)}function Us(t,n){var e=ps([t*mf,n*mf]);if(es){var r=ys(es,e),i=ys([r[1],-r[0],0],r);bs(i),i=ds(i);var o,a=t-Jf,u=a>0?1:-1,c=i[0]*bf*u,f=xf(a)>180;f^(u*JfQf&&(Qf=o):f^(u*Jf<(c=(c+360)%360-180)&&cQf&&(Qf=n)),f?tjs(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t):Kf>=Wf?(tKf&&(Kf=t)):t>Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t)}else is.push(os=[Wf=t,Kf=t]);nQf&&(Qf=n),es=e,Jf=t}function Is(){Fs.point=Us}function Os(){os[0]=Wf,os[1]=Kf,Fs.point=qs,es=null}function Bs(t,n){if(es){var e=t-Jf;rs.add(xf(e)>180?e+(e>0?360:-360):e)}else ts=t,ns=n;cs.point(t,n),Us(t,n)}function Ys(){cs.lineStart()}function Ls(){Bs(ts,ns),cs.lineEnd(),xf(rs)>df&&(Wf=-(Kf=180)),os[0]=Wf,os[1]=Kf,es=null}function js(t,n){return(n-=t)<0?n+360:n}function Hs(t,n){return t[0]-n[0]}function Xs(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:ngf&&(t-=Math.round(t/_f)*_f),[t,n]}function ul(t,n,e){return(t%=_f)?n||e?ol(fl(t),sl(n,e)):fl(t):n||e?sl(n,e):al}function cl(t){return function(n,e){return xf(n+=t)>gf&&(n-=Math.round(n/_f)*_f),[n,e]}}function fl(t){var n=cl(t);return n.invert=cl(-t),n}function sl(t,n){var e=Tf(t),r=Cf(t),i=Tf(n),o=Cf(n);function a(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*e+u*r;return[Mf(c*i-s*o,u*e-f*r),Rf(s*i+c*o)]}return a.invert=function(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*i-c*o;return[Mf(c*i+f*o,u*e+s*r),Rf(s*e-u*r)]},a}function ll(t){function n(n){return(n=t(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n}return t=ul(t[0]*mf,t[1]*mf,t.length>2?t[2]*mf:0),n.invert=function(n){return(n=t.invert(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n},n}function hl(t,n,e,r,i,o){if(e){var a=Tf(n),u=Cf(n),c=r*e;null==i?(i=n+r*_f,o=n-c/2):(i=dl(a,i),o=dl(a,o),(r>0?io)&&(i+=r*_f));for(var f,s=i;r>0?s>o:s1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function gl(t,n){return xf(t[0]-n[0])=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function _l(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r=0?1:-1,E=S*A,N=E>gf,k=y*w;if(c.add(Mf(k*S*Cf(E),v*M+k*Tf(E))),a+=N?A+S*_f:A,N^p>=e^m>=e){var C=ys(ps(d),ps(b));bs(C);var P=ys(o,C);bs(P);var z=(N^A>=0?-1:1)*Rf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=N^A>=0?1:-1)}}return(a<-df||a0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(wl))}return h}}function wl(t){return t.length>1}function Ml(t,n){return((t=t.x)[0]<0?t[1]-yf-df:yf-t[1])-((n=n.x)[0]<0?n[1]-yf-df:yf-n[1])}al.invert=al;var Tl=xl((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?gf:-gf,c=xf(o-e);xf(c-gf)0?yf:-yf),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=gf&&(xf(e-i)df?wf((Cf(n)*(o=Tf(r))*Cf(e)-Cf(r)*(i=Tf(n))*Cf(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*yf,r.point(-gf,i),r.point(0,i),r.point(gf,i),r.point(gf,0),r.point(gf,-i),r.point(0,-i),r.point(-gf,-i),r.point(-gf,0),r.point(-gf,i);else if(xf(t[0]-n[0])>df){var o=t[0]0,i=xf(n)>df;function o(t,e){return Tf(t)*Tf(e)>n}function a(t,e,r){var i=[1,0,0],o=ys(ps(t),ps(e)),a=gs(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=ys(i,o),h=_s(i,f);vs(h,_s(o,s));var d=l,p=gs(h,d),g=gs(d,d),y=p*p-g*(gs(h,h)-1);if(!(y<0)){var v=zf(y),_=_s(d,(-p-v)/g);if(vs(_,h),_=ds(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x0^_[1]<(xf(_[0]-m)gf^(m<=_[0]&&_[0]<=x)){var S=_s(d,(-p+v)/g);return vs(S,h),[_,ds(S)]}}}function u(n,e){var i=r?t:gf-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return xl(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?gf:-gf),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||gl(n,d)||gl(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&gl(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){hl(o,t,e,i,n,r)}),r?[0,-t]:[-gf,t-gf])}var Sl,El,Nl,kl,Cl=1e9,Pl=-Cl;function zl(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return xf(r[0]-t)0?0:3:xf(r[0]-e)0?2:1:xf(r[1]-n)0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=pl(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;er&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=ft(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&vl(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Pl,Math.min(Cl,p)),g=Math.max(Pl,Math.min(Cl,g))],m=[o=Math.max(Pl,Math.min(Cl,o)),a=Math.max(Pl,Math.min(Cl,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var $l={sphere:qf,point:qf,lineStart:function(){$l.point=Rl,$l.lineEnd=Dl},lineEnd:qf,polygonStart:qf,polygonEnd:qf};function Dl(){$l.point=$l.lineEnd=qf}function Rl(t,n){El=t*=mf,Nl=Cf(n*=mf),kl=Tf(n),$l.point=Fl}function Fl(t,n){t*=mf;var e=Cf(n*=mf),r=Tf(n),i=xf(t-El),o=Tf(i),a=r*Cf(i),u=kl*e-Nl*r*o,c=Nl*e+kl*r*o;Sl.add(Mf(zf(a*a+u*u),c)),El=t,Nl=e,kl=r}function ql(t){return Sl=new T,Lf(t,$l),+Sl}var Ul=[null,null],Il={type:"LineString",coordinates:Ul};function Ol(t,n){return Ul[0]=t,Ul[1]=n,ql(Il)}var Bl={Feature:function(t,n){return Ll(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r0&&(i=Ol(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))df})).map(c)).concat(lt(Af(o/d)*d,i,d).filter((function(t){return xf(t%g)>df})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=Wl(o,i,90),f=Zl(n,t,y),s=Wl(u,a,90),l=Zl(r,e,y),v):y},v.extentMajor([[-180,-90+df],[180,90-df]]).extentMinor([[-180,-80-df],[180,80+df]])}var Ql,Jl,th,nh,eh=t=>t,rh=new T,ih=new T,oh={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){oh.lineStart=ah,oh.lineEnd=fh},polygonEnd:function(){oh.lineStart=oh.lineEnd=oh.point=qf,rh.add(xf(ih)),ih=new T},result:function(){var t=rh/2;return rh=new T,t}};function ah(){oh.point=uh}function uh(t,n){oh.point=ch,Ql=th=t,Jl=nh=n}function ch(t,n){ih.add(nh*t-th*n),th=t,nh=n}function fh(){ch(Ql,Jl)}var sh=oh,lh=1/0,hh=lh,dh=-lh,ph=dh,gh={point:function(t,n){tdh&&(dh=t);nph&&(ph=n)},lineStart:qf,lineEnd:qf,polygonStart:qf,polygonEnd:qf,result:function(){var t=[[lh,hh],[dh,ph]];return dh=ph=-(hh=lh=1/0),t}};var yh,vh,_h,bh,mh=gh,xh=0,wh=0,Mh=0,Th=0,Ah=0,Sh=0,Eh=0,Nh=0,kh=0,Ch={point:Ph,lineStart:zh,lineEnd:Rh,polygonStart:function(){Ch.lineStart=Fh,Ch.lineEnd=qh},polygonEnd:function(){Ch.point=Ph,Ch.lineStart=zh,Ch.lineEnd=Rh},result:function(){var t=kh?[Eh/kh,Nh/kh]:Sh?[Th/Sh,Ah/Sh]:Mh?[xh/Mh,wh/Mh]:[NaN,NaN];return xh=wh=Mh=Th=Ah=Sh=Eh=Nh=kh=0,t}};function Ph(t,n){xh+=t,wh+=n,++Mh}function zh(){Ch.point=$h}function $h(t,n){Ch.point=Dh,Ph(_h=t,bh=n)}function Dh(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Ph(_h=t,bh=n)}function Rh(){Ch.point=Ph}function Fh(){Ch.point=Uh}function qh(){Ih(yh,vh)}function Uh(t,n){Ch.point=Ih,Ph(yh=_h=t,vh=bh=n)}function Ih(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Eh+=(i=bh*t-_h*n)*(_h+t),Nh+=i*(bh+n),kh+=3*i,Ph(_h=t,bh=n)}var Oh=Ch;function Bh(t){this._context=t}Bh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_f)}},result:qf};var Yh,Lh,jh,Hh,Xh,Gh=new T,Vh={point:qf,lineStart:function(){Vh.point=Wh},lineEnd:function(){Yh&&Zh(Lh,jh),Vh.point=qf},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Gh;return Gh=new T,t}};function Wh(t,n){Vh.point=Zh,Lh=Hh=t,jh=Xh=n}function Zh(t,n){Hh-=t,Xh-=n,Gh.add(zf(Hh*Hh+Xh*Xh)),Hh=t,Xh=n}var Kh=Vh;let Qh,Jh,td,nd;class ed{constructor(t){this._append=null==t?rd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return rd;if(n!==Qh){const t=10**n;Qh=n,Jh=function(n){let e=1;this._+=n[0];for(const r=n.length;e4*n&&g--){var m=a+h,x=u+d,w=c+p,M=zf(m*m+x*x+w*w),T=Rf(w/=M),A=xf(xf(w)-1)n||xf((v*k+_*C)/b-.5)>.3||a*h+u*d+c*p2?t[2]%360*mf:0,k()):[y*bf,v*bf,_*bf]},E.angle=function(t){return arguments.length?(b=t%360*mf,k()):b*bf},E.reflectX=function(t){return arguments.length?(m=t?-1:1,k()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,k()):x<0},E.precision=function(t){return arguments.length?(a=dd(u,S=t*t),C()):zf(S)},E.fitExtent=function(t,n){return ud(E,t,n)},E.fitSize=function(t,n){return cd(E,t,n)},E.fitWidth=function(t,n){return fd(E,t,n)},E.fitHeight=function(t,n){return sd(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&N,k()}}function _d(t){var n=0,e=gf/3,r=vd(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mf,e=t[1]*mf):[n*bf,e*bf]},i}function bd(t,n){var e=Cf(t),r=(e+Cf(n))/2;if(xf(r)0?n<-yf+df&&(n=-yf+df):n>yf-df&&(n=yf-df);var e=i/kf(Nd(n),r);return[e*Cf(r*t),i-e*Tf(r*t)]}return o.invert=function(t,n){var e=i-n,o=Pf(r)*zf(t*t+e*e),a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,2*wf(kf(i/o,1/r))-yf]},o}function Cd(t,n){return[t,n]}function Pd(t,n){var e=Tf(t),r=t===n?Cf(t):(e-Tf(n))/(n-t),i=e/r+t;if(xf(r)=0;)n+=e[r].value;else n=1;t.value=n}function Gd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Wd)):void 0===n&&(n=Vd);for(var e,r,i,o,a,u=new Qd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new Qd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kd)}function Vd(t){return t.children}function Wd(t){return Array.isArray(t)?t[1]:null}function Zd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Kd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Qd(t){this.data=t,this.depth=this.height=0,this.parent=null}function Jd(t){return null==t?null:tp(t)}function tp(t){if("function"!=typeof t)throw new Error;return t}function np(){return 0}function ep(t){return function(){return t}}qd.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zd+$d*i+o*(Dd+Rd*i))-n)/(zd+3*$d*i+o*(7*Dd+9*Rd*i)))*r)*i*i,!(xf(e)df&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Od.invert=Md(Rf),Bd.invert=Md((function(t){return 2*wf(t)})),Yd.invert=function(t,n){return[-n,2*wf(Sf(t))-yf]},Qd.prototype=Gd.prototype={constructor:Qd,count:function(){return this.eachAfter(Xd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Gd(this).eachBefore(Zd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e(t=(rp*t+ip)%op)/op}function up(t,n){for(var e,r,i=0,o=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,a=[];i0&&e*e>r*r+i*i}function lp(t,n){for(var e=0;e1e-6?(E+Math.sqrt(E*E-4*S*N))/(2*S):N/E);return{x:r+w+M*k,y:i+T+A*k,r:k}}function gp(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vp(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function _p(t){this._=t,this.next=null,this.previous=null}function bp(t,n){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,o,a,u,c,f,s,l,h;if((e=t[0]).x=0,e.y=0,!(o>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(o>2))return e.r+r.r;gp(r,e,i=t[2]),e=new _p(e),r=new _p(r),i=new _p(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(c=3;c1&&!zp(t,n););return t.slice(0,n)}function zp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(!(1&e))return!0}return!1}function $p(t,n){return t.parent===n.parent?1:2}function Dp(t){var n=t.children;return n?n[0]:t.t}function Rp(t){var n=t.children;return n?n[n.length-1]:t.t}function Fp(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function qp(t,n,e){return t.a.parent===n.parent?t.a:e}function Up(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Ip(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++uh&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c1?n:1)},e}(Op);var Lp=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l1?n:1)},e}(Op);function jp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hp(t,n){return t[0]-n[0]||t[1]-n[1]}function Xp(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r1&&jp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var Gp=Math.random,Vp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Gp),Wp=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(Gp),Zp=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Gp),Kp=function t(n){var e=Zp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(Gp),Qp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(Gp),Jp=function t(n){var e=Qp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(Gp),tg=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(Gp),ng=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(Gp),eg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(Gp),rg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(Gp),ig=function t(n){var e=Zp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(Gp),og=function t(n){var e=ig.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(Gp),ag=function t(n){var e=rg.source(n),r=og.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(Gp),ug=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(Gp),cg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(Gp),fg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(Gp),sg=function t(n){var e=ig.source(n),r=ag.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(Gp);const lg=1/4294967296;function hg(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dg(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const pg=Symbol("implicit");function gg(){var t=new InternMap,n=[],e=[],r=pg;function i(i){let o=t.get(i);if(void 0===o){if(r!==pg)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gg(n,e).unknown(r)},hg.apply(i,arguments),i}function yg(){var t,n,e=gg().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=an&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Mg:wg,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Yr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,_g),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Vr,s()},l.clamp=function(t){return arguments.length?(f=!!t||mg,s()):f!==mg},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Sg(){return Ag()(mg,mg)}function Eg(n,e,r,i){var o,a=W(n,e,r);switch((i=Jc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=lf(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=hf(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=sf(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Ng(t){var n=t.domain;return t.ticks=function(t){var e=n();return G(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Eg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f0;){if((i=V(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function kg(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a-t(-n,e)}function Fg(n){const e=n(Cg,Pg),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Dg:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Rg(i),o=Rg(o),n(zg,$g)):n(Cg,Pg),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u0){for(;l<=h;++l)for(f=1;fu)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(su)break;p.push(s)}2*p.length{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Jc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*ar(kg(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function qg(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Ug(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ig(t){var n=1,e=t(qg(n),Ug(n));return e.constant=function(e){return arguments.length?t(qg(n=+e),Ug(n)):n},Ng(e)}function Og(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Bg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yg(t){return t<0?-t*t:t*t}function Lg(t){var n=t(mg,mg),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(mg,mg):.5===e?t(Bg,Yg):t(Og(e),Og(1/e)):e},Ng(n)}function jg(){var t=Lg(Ag());return t.copy=function(){return Tg(t,jg()).exponent(t.exponent())},hg.apply(t,arguments),t}function Hg(t){return Math.sign(t)*t*t}const Xg=new Date,Gg=new Date;function Vg(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,o)=>{const a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e0))return a;let u;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(uVg((n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})),e&&(i.count=(n,r)=>(Xg.setTime(+n),Gg.setTime(+r),t(Xg),t(Gg),Math.floor(e(Xg,Gg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t==0:n=>i.count(0,n)%t==0):i:null)),i}const Wg=Vg((()=>{}),((t,n)=>{t.setTime(+t+n)}),((t,n)=>n-t));Wg.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Vg((n=>{n.setTime(Math.floor(n/t)*t)}),((n,e)=>{n.setTime(+n+e*t)}),((n,e)=>(e-n)/t)):Wg:null);const Zg=Wg.range,Kg=1e3,Qg=6e4,Jg=36e5,ty=864e5,ny=6048e5,ey=2592e6,ry=31536e6,iy=Vg((t=>{t.setTime(t-t.getMilliseconds())}),((t,n)=>{t.setTime(+t+n*Kg)}),((t,n)=>(n-t)/Kg),(t=>t.getUTCSeconds())),oy=iy.range,ay=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getMinutes())),uy=ay.range,cy=Vg((t=>{t.setUTCSeconds(0,0)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getUTCMinutes())),fy=cy.range,sy=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg-t.getMinutes()*Qg)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getHours())),ly=sy.range,hy=Vg((t=>{t.setUTCMinutes(0,0,0)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getUTCHours())),dy=hy.range,py=Vg((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ty),(t=>t.getDate()-1)),gy=py.range,yy=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>t.getUTCDate()-1)),vy=yy.range,_y=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>Math.floor(t/ty))),by=_y.range;function my(t){return Vg((n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),((t,n)=>{t.setDate(t.getDate()+7*n)}),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ny))}const xy=my(0),wy=my(1),My=my(2),Ty=my(3),Ay=my(4),Sy=my(5),Ey=my(6),Ny=xy.range,ky=wy.range,Cy=My.range,Py=Ty.range,zy=Ay.range,$y=Sy.range,Dy=Ey.range;function Ry(t){return Vg((n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)}),((t,n)=>(n-t)/ny))}const Fy=Ry(0),qy=Ry(1),Uy=Ry(2),Iy=Ry(3),Oy=Ry(4),By=Ry(5),Yy=Ry(6),Ly=Fy.range,jy=qy.range,Hy=Uy.range,Xy=Iy.range,Gy=Oy.range,Vy=By.range,Wy=Yy.range,Zy=Vg((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,n)=>{t.setMonth(t.getMonth()+n)}),((t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())),(t=>t.getMonth())),Ky=Zy.range,Qy=Vg((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)}),((t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth())),Jy=Qy.range,tv=Vg((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n)}),((t,n)=>n.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));tv.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),((n,e)=>{n.setFullYear(n.getFullYear()+e*t)})):null;const nv=tv.range,ev=Vg((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)}),((t,n)=>n.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ev.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),((n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null;const rv=ev.range;function iv(t,n,e,i,o,a){const u=[[iy,1,Kg],[iy,5,5e3],[iy,15,15e3],[iy,30,3e4],[a,1,Qg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,Jg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ty],[i,2,1728e5],[e,1,ny],[n,1,ey],[n,3,7776e6],[t,1,ry]];function c(n,e,i){const o=Math.abs(e-n)/i,a=r((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(W(n/ry,e/ry,i));if(0===a)return Wg.every(Math.max(W(n,e,i),1));const[c,f]=u[o/u[a-1][2]=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:k_,s:C_,S:Zv,u:Kv,U:Qv,V:t_,w:n_,W:e_,x:null,X:null,y:r_,Y:o_,Z:u_,"%":N_},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:c_,e:c_,f:d_,g:T_,G:S_,H:f_,I:s_,j:l_,L:h_,m:p_,M:g_,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:k_,s:C_,S:y_,u:v_,U:__,V:m_,w:x_,W:w_,x:null,X:null,y:M_,Y:A_,Z:E_,"%":N_},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return T(t,n,e,r)},d:zv,e:zv,f:Uv,g:Nv,G:Ev,H:Dv,I:Dv,j:$v,L:qv,m:Pv,M:Rv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Cv,Q:Ov,s:Bv,S:Fv,u:Mv,U:Tv,V:Av,w:wv,W:Sv,x:function(t,n,r){return T(t,e,n,r)},X:function(t,n,e){return T(t,r,n,e)},y:Nv,Y:Ev,Z:kv,"%":Iv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=sv(lv(o.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=yy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=fv(lv(o.y,0,1))).getDay(),r=i>4||0===i?wy.ceil(r):wy(r),r=py.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?sv(lv(o.y,0,1)).getUTCDay():fv(lv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,sv(o)):fv(o)}}function T(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in pv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var dv,pv={"-":"",_:" ",0:"0"},gv=/^\s*\d+/,yv=/^%/,vv=/[\\^$*+?|[\]().{}]/g;function _v(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o[t.toLowerCase(),n])))}function wv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=gv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function kv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Cv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Pv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function zv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function $v(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Dv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Fv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function qv(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Uv(t,n,e){var r=gv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Iv(t,n,e){var r=yv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ov(t,n,e){var r=gv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Bv(t,n,e){var r=gv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Yv(t,n){return _v(t.getDate(),n,2)}function Lv(t,n){return _v(t.getHours(),n,2)}function jv(t,n){return _v(t.getHours()%12||12,n,2)}function Hv(t,n){return _v(1+py.count(tv(t),t),n,3)}function Xv(t,n){return _v(t.getMilliseconds(),n,3)}function Gv(t,n){return Xv(t,n)+"000"}function Vv(t,n){return _v(t.getMonth()+1,n,2)}function Wv(t,n){return _v(t.getMinutes(),n,2)}function Zv(t,n){return _v(t.getSeconds(),n,2)}function Kv(t){var n=t.getDay();return 0===n?7:n}function Qv(t,n){return _v(xy.count(tv(t)-1,t),n,2)}function Jv(t){var n=t.getDay();return n>=4||0===n?Ay(t):Ay.ceil(t)}function t_(t,n){return t=Jv(t),_v(Ay.count(tv(t),t)+(4===tv(t).getDay()),n,2)}function n_(t){return t.getDay()}function e_(t,n){return _v(wy.count(tv(t)-1,t),n,2)}function r_(t,n){return _v(t.getFullYear()%100,n,2)}function i_(t,n){return _v((t=Jv(t)).getFullYear()%100,n,2)}function o_(t,n){return _v(t.getFullYear()%1e4,n,4)}function a_(t,n){var e=t.getDay();return _v((t=e>=4||0===e?Ay(t):Ay.ceil(t)).getFullYear()%1e4,n,4)}function u_(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+_v(n/60|0,"0",2)+_v(n%60,"0",2)}function c_(t,n){return _v(t.getUTCDate(),n,2)}function f_(t,n){return _v(t.getUTCHours(),n,2)}function s_(t,n){return _v(t.getUTCHours()%12||12,n,2)}function l_(t,n){return _v(1+yy.count(ev(t),t),n,3)}function h_(t,n){return _v(t.getUTCMilliseconds(),n,3)}function d_(t,n){return h_(t,n)+"000"}function p_(t,n){return _v(t.getUTCMonth()+1,n,2)}function g_(t,n){return _v(t.getUTCMinutes(),n,2)}function y_(t,n){return _v(t.getUTCSeconds(),n,2)}function v_(t){var n=t.getUTCDay();return 0===n?7:n}function __(t,n){return _v(Fy.count(ev(t)-1,t),n,2)}function b_(t){var n=t.getUTCDay();return n>=4||0===n?Oy(t):Oy.ceil(t)}function m_(t,n){return t=b_(t),_v(Oy.count(ev(t),t)+(4===ev(t).getUTCDay()),n,2)}function x_(t){return t.getUTCDay()}function w_(t,n){return _v(qy.count(ev(t)-1,t),n,2)}function M_(t,n){return _v(t.getUTCFullYear()%100,n,2)}function T_(t,n){return _v((t=b_(t)).getUTCFullYear()%100,n,2)}function A_(t,n){return _v(t.getUTCFullYear()%1e4,n,4)}function S_(t,n){var e=t.getUTCDay();return _v((t=e>=4||0===e?Oy(t):Oy.ceil(t)).getUTCFullYear()%1e4,n,4)}function E_(){return"+0000"}function N_(){return"%"}function k_(t){return+t}function C_(t){return Math.floor(+t/1e3)}function P_(n){return dv=hv(n),t.timeFormat=dv.format,t.timeParse=dv.parse,t.utcFormat=dv.utcFormat,t.utcParse=dv.utcParse,dv}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,P_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var z_="%Y-%m-%dT%H:%M:%S.%LZ";var $_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(z_),D_=$_;var R_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(z_),F_=R_;function q_(t){return new Date(t)}function U_(t){return t instanceof Date?+t:+new Date(+t)}function I_(t,n,e,r,i,o,a,u,c,f){var s=Sg(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)Fr(t[t.length-1]),ib=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(H_),ob=rb(ib),ab=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(H_),ub=rb(ab),cb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(H_),fb=rb(cb),sb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(H_),lb=rb(sb),hb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(H_),db=rb(hb),pb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(H_),gb=rb(pb),yb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(H_),vb=rb(yb),_b=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(H_),bb=rb(_b),mb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(H_),xb=rb(mb),wb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(H_),Mb=rb(wb),Tb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(H_),Ab=rb(Tb),Sb=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(H_),Eb=rb(Sb),Nb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(H_),kb=rb(Nb),Cb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(H_),Pb=rb(Cb),zb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(H_),$b=rb(zb),Db=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(H_),Rb=rb(Db),Fb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(H_),qb=rb(Fb),Ub=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(H_),Ib=rb(Ub),Ob=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(H_),Bb=rb(Ob),Yb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(H_),Lb=rb(Yb),jb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(H_),Hb=rb(jb),Xb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(H_),Gb=rb(Xb),Vb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(H_),Wb=rb(Vb),Zb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(H_),Kb=rb(Zb),Qb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(H_),Jb=rb(Qb),tm=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(H_),nm=rb(tm),em=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(H_),rm=rb(em);var im=hi(Tr(300,.5,0),Tr(-240,.5,1)),om=hi(Tr(-100,.75,.35),Tr(80,1.5,.8)),am=hi(Tr(260,.75,.35),Tr(80,1.5,.8)),um=Tr();var cm=Fe(),fm=Math.PI/3,sm=2*Math.PI/3;function lm(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var hm=lm(H_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),dm=lm(H_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),pm=lm(H_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),gm=lm(H_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function ym(t){return function(){return t}}const vm=Math.abs,_m=Math.atan2,bm=Math.cos,mm=Math.max,xm=Math.min,wm=Math.sin,Mm=Math.sqrt,Tm=1e-12,Am=Math.PI,Sm=Am/2,Em=2*Am;function Nm(t){return t>=1?Sm:t<=-1?-Sm:Math.asin(t)}function km(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new Ua(n)}function Cm(t){return t.innerRadius}function Pm(t){return t.outerRadius}function zm(t){return t.startAngle}function $m(t){return t.endAngle}function Dm(t){return t&&t.padAngle}function Rm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/Mm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*Mm(mm(0,x*x*m-w*w)),T=(w*b-_*M)/m,A=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,N=T-y,k=A-v,C=S-y,P=E-v;return N*N+k*k>C*C+P*P&&(T=S,A=E),{cx:T,cy:A,x01:-s,y01:-l,x11:T*(i/x-1),y11:A*(i/x-1)}}var Fm=Array.prototype.slice;function qm(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Um(t){this._context=t}function Im(t){return new Um(t)}function Om(t){return t[0]}function Bm(t){return t[1]}function Ym(t,n){var e=ym(!0),r=null,i=Im,o=null,a=km(u);function u(u){var c,f,s,l=(u=qm(u)).length,h=!1;for(null==r&&(o=i(s=a())),c=0;c<=l;++c)!(c=l;--h)u.point(v[h],_[h]);u.lineEnd(),u.areaEnd()}y&&(v[s]=+t(d,s,f),_[s]=+n(d,s,f),u.point(r?+r(d,s,f):v[s],e?+e(d,s,f):_[s]))}if(p)return u=null,p+""||null}function s(){return Ym().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Om:ym(+t),n="function"==typeof n?n:ym(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?Bm:ym(+e),f.x=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),r=null,f):t},f.x0=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),f):t},f.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ym(+t),f):r},f.y=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),e=null,f):n},f.y0=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),f):n},f.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:ym(+t),f):e},f.lineX0=f.lineY0=function(){return s().x(t).y(n)},f.lineY1=function(){return s().x(t).y(e)},f.lineX1=function(){return s().x(r).y(n)},f.defined=function(t){return arguments.length?(i="function"==typeof t?t:ym(!!t),f):i},f.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),f):a},f.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),f):o},f}function jm(t,n){return nt?1:n>=t?0:NaN}function Hm(t){return t}Um.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Xm=Vm(Im);function Gm(t){this._curve=t}function Vm(t){function n(n){return new Gm(t(n))}return n._curve=t,n}function Wm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Vm(t)):n()._curve},t}function Zm(){return Wm(Ym().curve(Xm))}function Km(){var t=Lm().curve(Xm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Wm(e())},delete t.lineX0,t.lineEndAngle=function(){return Wm(r())},delete t.lineX1,t.lineInnerRadius=function(){return Wm(i())},delete t.lineY0,t.lineOuterRadius=function(){return Wm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Vm(t)):n()._curve},t}function Qm(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Gm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};class Jm{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class tx{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=Qm(this._x0,this._y0),r=Qm(this._x0,this._y0=(this._y0+n)/2),i=Qm(t,this._y0),o=Qm(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function nx(t){return new Jm(t,!0)}function ex(t){return new Jm(t,!1)}function rx(t){return new tx(t)}function ix(t){return t.source}function ox(t){return t.target}function ax(t){let n=ix,e=ox,r=Om,i=Bm,o=null,a=null,u=km(c);function c(){let c;const f=Fm.call(arguments),s=n.apply(this,f),l=e.apply(this,f);if(null==o&&(a=t(c=u())),a.lineStart(),f[0]=s,a.point(+r.apply(this,f),+i.apply(this,f)),f[0]=l,a.point(+r.apply(this,f),+i.apply(this,f)),a.lineEnd(),c)return a=null,c+""||null}return c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.x=function(t){return arguments.length?(r="function"==typeof t?t:ym(+t),c):r},c.y=function(t){return arguments.length?(i="function"==typeof t?t:ym(+t),c):i},c.context=function(n){return arguments.length?(null==n?o=a=null:a=t(o=n),c):o},c}const ux=Mm(3);var cx={draw(t,n){const e=.59436*Mm(n+xm(n/28,.75)),r=e/2,i=r*ux;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},fx={draw(t,n){const e=Mm(n/Am);t.moveTo(e,0),t.arc(0,0,e,0,Em)}},sx={draw(t,n){const e=Mm(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}};const lx=Mm(1/3),hx=2*lx;var dx={draw(t,n){const e=Mm(n/hx),r=e*lx;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},px={draw(t,n){const e=.62625*Mm(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},gx={draw(t,n){const e=.87559*Mm(n-xm(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},yx={draw(t,n){const e=Mm(n),r=-e/2;t.rect(r,r,e,e)}},vx={draw(t,n){const e=.4431*Mm(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const _x=wm(Am/10)/wm(7*Am/10),bx=wm(Em/10)*_x,mx=-bm(Em/10)*_x;var xx={draw(t,n){const e=Mm(.8908130915292852*n),r=bx*e,i=mx*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const o=Em*n/5,a=bm(o),u=wm(o);t.lineTo(u*e,-a*e),t.lineTo(a*r-u*i,u*r+a*i)}t.closePath()}};const wx=Mm(3);var Mx={draw(t,n){const e=-Mm(n/(3*wx));t.moveTo(0,2*e),t.lineTo(-wx*e,-e),t.lineTo(wx*e,-e),t.closePath()}};const Tx=Mm(3);var Ax={draw(t,n){const e=.6824*Mm(n),r=e/2,i=e*Tx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Sx=-.5,Ex=Mm(3)/2,Nx=1/Mm(12),kx=3*(Nx/2+1);var Cx={draw(t,n){const e=Mm(n/kx),r=e/2,i=e*Nx,o=r,a=e*Nx+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Sx*r-Ex*i,Ex*r+Sx*i),t.lineTo(Sx*o-Ex*a,Ex*o+Sx*a),t.lineTo(Sx*u-Ex*c,Ex*u+Sx*c),t.lineTo(Sx*r+Ex*i,Sx*i-Ex*r),t.lineTo(Sx*o+Ex*a,Sx*a-Ex*o),t.lineTo(Sx*u+Ex*c,Sx*c-Ex*u),t.closePath()}},Px={draw(t,n){const e=.6189*Mm(n-xm(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const zx=[fx,sx,dx,yx,xx,Mx,Cx],$x=[fx,gx,Px,Ax,cx,vx,px];function Dx(){}function Rx(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Fx(t){this._context=t}function qx(t){this._context=t}function Ux(t){this._context=t}function Ix(t,n){this._basis=new Fx(t),this._beta=n}Fx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Rx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Rx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},qx.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Rx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ux.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Rx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ix.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ox=function t(n){function e(t){return 1===n?new Fx(t):new Ix(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Bx(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Yx(t,n){this._context=t,this._k=(1-n)/6}Yx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Bx(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Bx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Lx=function t(n){function e(t){return new Yx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function jx(t,n){this._context=t,this._k=(1-n)/6}jx.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Bx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Hx=function t(n){function e(t){return new jx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Xx(t,n){this._context=t,this._k=(1-n)/6}Xx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Gx=function t(n){function e(t){return new Xx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Vx(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Tm){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Tm){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Wx(t,n){this._context=t,this._alpha=n}Wx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Vx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Zx=function t(n){function e(t){return n?new Wx(t,n):new Yx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Kx(t,n){this._context=t,this._alpha=n}Kx.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Vx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Qx=function t(n){function e(t){return n?new Kx(t,n):new jx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Jx(t,n){this._context=t,this._alpha=n}Jx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Vx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var tw=function t(n){function e(t){return n?new Jx(t,n):new Xx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function nw(t){this._context=t}function ew(t){return t<0?-1:1}function rw(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(ew(o)+ew(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function iw(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function ow(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function aw(t){this._context=t}function uw(t){this._context=new cw(t)}function cw(t){this._context=t}function fw(t){this._context=t}function sw(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o=0;)e[n]=n;return e}function pw(t,n){return t[n]}function gw(t){const n=[];return n.key=t,n}function yw(t){var n=t.map(vw);return dw(t).sort((function(t,e){return n[t]-n[e]}))}function vw(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++eo&&(o=n,r=e);return r}function _w(t){var n=t.map(bw);return dw(t).sort((function(t,e){return n[t]-n[e]}))}function bw(t){for(var n,e=0,r=-1,i=t.length;++r=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var mw=t=>()=>t;function xw(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function ww(t,n,e){this.k=t,this.x=n,this.y=e}ww.prototype={constructor:ww,scale:function(t){return 1===t?this:new ww(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new ww(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Mw=new ww(1,0,0);function Tw(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Mw;return t.__zoom}function Aw(t){t.stopImmediatePropagation()}function Sw(t){t.preventDefault(),t.stopImmediatePropagation()}function Ew(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Nw(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function kw(){return this.__zoom||Mw}function Cw(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Pw(){return navigator.maxTouchPoints||"ontouchstart"in this}function zw(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Tw.prototype=ww.prototype,t.Adder=T,t.Delaunay=Lu,t.FormatSpecifier=tf,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=Qd,t.Path=Ua,t.Voronoi=qu,t.ZoomTransform=ww,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>qi&&e.name===n)return new po([[t]],Zo,n,+r);return null},t.arc=function(){var t=Cm,n=Pm,e=ym(0),r=null,i=zm,o=$m,a=Dm,u=null,c=km(f);function f(){var f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Sm,p=o.apply(this,arguments)-Sm,g=vm(p-d),y=p>d;if(u||(u=f=c()),hTm)if(g>Em-Tm)u.moveTo(h*bm(d),h*wm(d)),u.arc(0,0,h,d,p,!y),l>Tm&&(u.moveTo(l*bm(p),l*wm(p)),u.arc(0,0,l,p,d,y));else{var v,_,b=d,m=p,x=d,w=p,M=g,T=g,A=a.apply(this,arguments)/2,S=A>Tm&&(r?+r.apply(this,arguments):Mm(l*l+h*h)),E=xm(vm(h-l)/2,+e.apply(this,arguments)),N=E,k=E;if(S>Tm){var C=Nm(S/l*wm(A)),P=Nm(S/h*wm(A));(M-=2*C)>Tm?(x+=C*=y?1:-1,w-=C):(M=0,x=w=(d+p)/2),(T-=2*P)>Tm?(b+=P*=y?1:-1,m-=P):(T=0,b=m=(d+p)/2)}var z=h*bm(b),$=h*wm(b),D=l*bm(w),R=l*wm(w);if(E>Tm){var F,q=h*bm(m),U=h*wm(m),I=l*bm(x),O=l*wm(x);if(g1?0:t<-1?Am:Math.acos(t)}((B*L+Y*j)/(Mm(B*B+Y*Y)*Mm(L*L+j*j)))/2),X=Mm(F[0]*F[0]+F[1]*F[1]);N=xm(E,(l-X)/(H-1)),k=xm(E,(h-X)/(H+1))}else N=k=0}T>Tm?k>Tm?(v=Rm(I,O,z,$,h,k,y),_=Rm(q,U,D,R,h,k,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),kTm&&M>Tm?N>Tm?(v=Rm(D,R,q,U,l,-N,y),_=Rm(z,$,I,O,l,-N,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),N=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=y(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},t.blur2=l,t.blurImage=h,t.brush=function(){return wa(la)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return wa(fa)},t.brushY=function(){return wa(sa)},t.buffer=function(t,n){return fetch(t,n).then(_c)},t.chord=function(){return za(!1,!1)},t.chordDirected=function(){return za(!0,!1)},t.chordTranspose=function(){return za(!1,!0)},t.cluster=function(){var t=Ld,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(jd,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Hd,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=ze,t.contourDensity=function(){var t=fu,n=su,e=lu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Qa(20);function h(r){var i=new Float32Array(c*f),s=Math.pow(2,-a),h=-1;for(const o of r){var d=(t(o,++h,r)+u)*s,p=(n(o,h,r)+u)*s,g=+e(o,h,r);if(g&&d>=0&&d=0&&pt*r)))(n).map(((t,n)=>(t.value=+e[n],p(t))))}function p(t){return t.coordinates.forEach(g),t}function g(t){t.forEach(y)}function y(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function _(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,d}return d.contours=function(t){var n=h(t),e=iu().size([c,f]),r=Math.pow(2,2*a),i=t=>{t=+t;var i=p(e.contour(n,t*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>J(n)/r}),i},d.x=function(n){return arguments.length?(t="function"==typeof n?n:Qa(+n),d):t},d.y=function(t){return arguments.length?(n="function"==typeof t?t:Qa(+t),d):n},d.weight=function(t){return arguments.length?(e="function"==typeof t?t:Qa(+t),d):e},d.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,_()},d.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),_()},d.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),d):s},d.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=(Math.sqrt(4*t*t+1)-1)/2,_()},d},t.contours=iu,t.count=v,t.create=function(t){return Zn(Yt(t).call(document.documentElement))},t.creator=Yt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(m)).map(_),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(b))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=wc,t.csvFormat=rc,t.csvFormatBody=ic,t.csvFormatRow=ac,t.csvFormatRows=oc,t.csvFormatValue=uc,t.csvParse=nc,t.csvParseRows=ec,t.cubehelix=Tr,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new Fx(t)},t.curveBasisClosed=function(t){return new qx(t)},t.curveBasisOpen=function(t){return new Ux(t)},t.curveBumpX=nx,t.curveBumpY=ex,t.curveBundle=Ox,t.curveCardinal=Lx,t.curveCardinalClosed=Hx,t.curveCardinalOpen=Gx,t.curveCatmullRom=Zx,t.curveCatmullRomClosed=Qx,t.curveCatmullRomOpen=tw,t.curveLinear=Im,t.curveLinearClosed=function(t){return new nw(t)},t.curveMonotoneX=function(t){return new aw(t)},t.curveMonotoneY=function(t){return new uw(t)},t.curveNatural=function(t){return new fw(t)},t.curveStep=function(t){return new lw(t,.5)},t.curveStepAfter=function(t){return new lw(t,1)},t.curveStepBefore=function(t){return new lw(t,0)},t.descending=e,t.deviation=w,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=$t,t.drag=function(){var t,n,e,r,i=se,o=le,a=he,u=de,c={},f=$t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,ee).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Zn(a.view).on("mousemove.drag",p,re).on("mouseup.drag",g,re),ae(a.view),ie(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(oe(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Zn(t.view).on("mousemove.drag mouseup.drag",null),ue(t.view,e),oe(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e+t,t.easePoly=wo,t.easePolyIn=mo,t.easePolyInOut=wo,t.easePolyOut=xo,t.easeQuad=_o,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=_o,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=Ao,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*To)},t.easeSinInOut=Ao,t.easeSinOut=function(t){return Math.sin(t*To)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=M,t.fcumsum=function(t,n){const e=new T;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return z(P(t,...n),n)},t.flatRollup=function(t,n,...e){return z(D(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;if+p||os+p||ac.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;vt.r&&(t.r=t[n].r)}function c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r[u(t,n,r),t])));for(a=0,i=new Array(f);a=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p(t=(Lc*t+jc)%Hc)/Hc}();function l(){h(),f.call("tick",n),e1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++ejs(r[0],r[1])&&(r[1]=i[1]),js(i[0],r[1])>js(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=js(r[1],i[0]))>a&&(a=u,Wf=i[0],Kf=r[1])}return is=os=null,Wf===1/0||Zf===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wf,Zf],[Kf,Qf]]},t.geoCentroid=function(t){ms=xs=ws=Ms=Ts=As=Ss=Es=0,Ns=new T,ks=new T,Cs=new T,Lf(t,Gs);var n=+Ns,e=+ks,r=+Cs,i=Ef(n,e,r);return i=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new ed(i)),a},a.projection(t).digits(i).context(n)},t.geoProjection=yd,t.geoProjectionMutator=vd,t.geoRotation=ll,t.geoStereographic=function(){return yd(Bd).scale(250).clipAngle(142)},t.geoStereographicRaw=Bd,t.geoStream=Lf,t.geoTransform=function(t){return{stream:id(t)}},t.geoTransverseMercator=function(){var t=Ed(Yd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Yd,t.gray=function(t,n){return new ur(t,0,0,null==n?1:n)},t.greatest=ot,t.greatestIndex=function(t,e=n){if(1===e.length)return tt(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=C,t.groupSort=function(t,e,r){return(2!==e.length?U($(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):U(C(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=P,t.hcl=dr,t.hierarchy=Gd,t.histogram=Q,t.hsl=He,t.html=Ec,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return F(t,k,R,n)},t.indexes=function(t,...n){return F(t,Array.from,R,n)},t.interpolate=Gr,t.interpolateArray=function(t,n){return(Ir(n)?Ur:Or)(t,n)},t.interpolateBasis=Er,t.interpolateBasisClosed=Nr,t.interpolateBlues=Gb,t.interpolateBrBG=ob,t.interpolateBuGn=Mb,t.interpolateBuPu=Ab,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=am,t.interpolateCubehelix=li,t.interpolateCubehelixDefault=im,t.interpolateCubehelixLong=hi,t.interpolateDate=Br,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Eb,t.interpolateGreens=Wb,t.interpolateGreys=Kb,t.interpolateHcl=ci,t.interpolateHclLong=fi,t.interpolateHsl=oi,t.interpolateHslLong=ai,t.interpolateHue=function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=pm,t.interpolateLab=function(t,n){var e=$r((t=ar(t)).l,(n=ar(n)).l),r=$r(t.a,n.a),i=$r(t.b,n.b),o=$r(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=dm,t.interpolateNumber=Yr,t.interpolateNumberArray=Ur,t.interpolateObject=Lr,t.interpolateOrRd=kb,t.interpolateOranges=rm,t.interpolatePRGn=ub,t.interpolatePiYG=fb,t.interpolatePlasma=gm,t.interpolatePuBu=$b,t.interpolatePuBuGn=Pb,t.interpolatePuOr=lb,t.interpolatePuRd=Rb,t.interpolatePurples=Jb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return um.h=360*t-100,um.s=1.5-1.5*n,um.l=.8-.9*n,um+""},t.interpolateRdBu=db,t.interpolateRdGy=gb,t.interpolateRdPu=qb,t.interpolateRdYlBu=vb,t.interpolateRdYlGn=bb,t.interpolateReds=nm,t.interpolateRgb=Dr,t.interpolateRgbBasis=Fr,t.interpolateRgbBasisClosed=qr,t.interpolateRound=Vr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,cm.r=255*(n=Math.sin(t))*n,cm.g=255*(n=Math.sin(t+fm))*n,cm.b=255*(n=Math.sin(t+sm))*n,cm+""},t.interpolateSpectral=xb,t.interpolateString=Xr,t.interpolateTransformCss=ti,t.interpolateTransformSvg=ni,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=hm,t.interpolateWarm=om,t.interpolateYlGn=Bb,t.interpolateYlGnBu=Ib,t.interpolateYlOrBr=Lb,t.interpolateYlOrRd=Hb,t.interpolateZoom=ri,t.interrupt=Gi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(vt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new Ei,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ai():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=D_,t.isoParse=F_,t.json=function(t,n){return fetch(t,n).then(Tc)},t.lab=ar,t.lch=function(t,n,e,r){return 1===arguments.length?hr(t):new pr(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=ht,t.line=Ym,t.lineRadial=Zm,t.link=ax,t.linkHorizontal=function(){return ax(nx)},t.linkRadial=function(){const t=ax(rx);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return ax(ex)},t.local=Qn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=Vt,t.max=J,t.maxIndex=tt,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return at(t,.5,n)},t.medianIndex=function(t,n){return ct(t,.5,n)},t.merge=ft,t.min=nt,t.minIndex=et,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=It,t.namespaces=Ut,t.nice=Z,t.now=Ai,t.pack=function(){var t=null,n=1,e=1,r=np;function i(i){const o=ap();return i.x=n/2,i.y=e/2,t?i.eachBefore(xp(t)).eachAfter(wp(r,.5,o)).eachBefore(Mp(1)):i.eachBefore(xp(mp)).eachAfter(wp(np,1,o)).eachAfter(wp(r,i.r/Math.min(n,e),o)).eachBefore(Mp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Jd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:ep(+t),i):r},i},t.packEnclose=function(t){return up(t,ap())},t.packSiblings=function(t){return bp(t,ap()),t},t.pairs=function(t,n=st){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ap(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:ym(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:ym(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:ym(+t),a):o},a},t.piecewise=di,t.pointRadial=Qm,t.pointer=ne,t.pointers=function(t,n){return t.target&&(t=te(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>ne(t,n)))},t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++eu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n(n=1664525*n+1013904223|0,lg*(n>>>0))},t.randomLogNormal=Kp,t.randomLogistic=fg,t.randomNormal=Zp,t.randomPareto=ng,t.randomPoisson=sg,t.randomUniform=Vp,t.randomWeibull=ug,t.range=lt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return(t=Uint32Array.from(r,((t,n)=>n))).sort(e===n?(t,n)=>O(r[t],r[n]):I(o)),t.forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Fe,t.ribbon=function(){return Wa()},t.ribbonArrow=function(){return Wa(Va)},t.rollup=$,t.rollups=D,t.scaleBand=yg,t.scaleDiverging=function t(){var n=Ng(L_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Fg(L_()).domain([.1,1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleDivergingPow=j_,t.scaleDivergingSqrt=function(){return j_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ig(L_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,_g),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,_g):[0,1],Ng(r)},t.scaleImplicit=pg,t.scaleLinear=function t(){var n=Sg();return n.copy=function(){return Tg(n,t())},hg.apply(n,arguments),Ng(n)},t.scaleLog=function t(){const n=Fg(Ag()).domain([1,10]);return n.copy=()=>Tg(n,t()).base(n.base()),hg.apply(n,arguments),n},t.scaleOrdinal=gg,t.scalePoint=function(){return vg(yg.apply(null,arguments).paddingInner(1))},t.scalePow=jg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t0?o[n-1]:r[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},hg.apply(Ng(u),arguments)},t.scaleRadial=function t(){var n,e=Sg(),r=[0,1],i=!1;function o(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(Hg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,_g)).map(Hg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},hg.apply(o,arguments),Ng(o)},t.scaleSequential=function t(){var n=Ng(O_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Fg(O_()).domain([1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleSequentialPow=Y_,t.scaleSequentialQuantile=function t(){var e=[],r=mg;function i(t){if(null!=t&&!isNaN(t=+t))return r((s(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>at(e,r/t)))},i.copy=function(){return t(r).domain(e)},dg.apply(i,arguments)},t.scaleSequentialSqrt=function(){return Y_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ig(O_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleSqrt=function(){return jg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Ig(Ag());return n.copy=function(){return Tg(n,t()).constant(n.constant())},hg.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[s(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},hg.apply(o,arguments)},t.scaleTime=function(){return hg.apply(I_(uv,cv,tv,Zy,xy,py,sy,ay,iy,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hg.apply(I_(ov,av,ev,Qy,Fy,yy,hy,cy,iy,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=ht(t,n);return e<0?void 0:e},t.schemeAccent=G_,t.schemeBlues=Xb,t.schemeBrBG=ib,t.schemeBuGn=wb,t.schemeBuPu=Tb,t.schemeCategory10=X_,t.schemeDark2=V_,t.schemeGnBu=Sb,t.schemeGreens=Vb,t.schemeGreys=Zb,t.schemeObservable10=W_,t.schemeOrRd=Nb,t.schemeOranges=em,t.schemePRGn=ab,t.schemePaired=Z_,t.schemePastel1=K_,t.schemePastel2=Q_,t.schemePiYG=cb,t.schemePuBu=zb,t.schemePuBuGn=Cb,t.schemePuOr=sb,t.schemePuRd=Db,t.schemePurples=Qb,t.schemeRdBu=hb,t.schemeRdGy=pb,t.schemeRdPu=Fb,t.schemeRdYlBu=yb,t.schemeRdYlGn=_b,t.schemeReds=tm,t.schemeSet1=J_,t.schemeSet2=tb,t.schemeSet3=nb,t.schemeSpectral=mb,t.schemeTableau10=eb,t.schemeYlGn=Ob,t.schemeYlGnBu=Ub,t.schemeYlOrBr=Yb,t.schemeYlOrRd=jb,t.select=Zn,t.selectAll=function(t){return"string"==typeof t?new Vn([document.querySelectorAll(t)],[document.documentElement]):new Vn([Ht(t)],Gn)},t.selection=Wn,t.selector=jt,t.selectorAll=Gt,t.shuffle=dt,t.shuffler=pt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=U,t.stack=function(){var t=ym([]),n=dw,e=hw,r=pw;function i(i){var o,a,u=Array.from(t.apply(this,arguments),gw),c=u.length,f=-1;for(const t of i)for(o=0,++f;o0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;afunction(t){t=`${t}`;let n=t.length;zp(t,n-1)&&!zp(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(Pp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Pp(t)),h.push(Np));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a=0&&(f=h[t]).data===Np;--t)f.data=null}if(u.parent=Sp,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Kd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=Jd(t),r):n},r.parentId=function(t){return arguments.length?(e=Jd(t),r):e},r.path=function(n){return arguments.length?(t=Jd(n),r):t},r},t.style=_n,t.subset=function(t,n){return _t(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=_t,t.svg=Nc,t.symbol=function(t,n){let e=null,r=km(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:ym(t||fx),n="function"==typeof n?n:ym(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:ym(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},t.symbolAsterisk=cx,t.symbolCircle=fx,t.symbolCross=sx,t.symbolDiamond=dx,t.symbolDiamond2=px,t.symbolPlus=gx,t.symbolSquare=yx,t.symbolSquare2=vx,t.symbolStar=xx,t.symbolTimes=Px,t.symbolTriangle=Mx,t.symbolTriangle2=Ax,t.symbolWye=Cx,t.symbolX=Px,t.symbols=zx,t.symbolsFill=zx,t.symbolsStroke=$x,t.text=mc,t.thresholdFreedmanDiaconis=function(t,n,e){const r=v(t),i=at(t,.75)-at(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},t.thresholdScott=function(t,n,e){const r=v(t),i=w(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},t.thresholdSturges=K,t.tickFormat=Eg,t.tickIncrement=V,t.tickStep=W,t.ticks=G,t.timeDay=py,t.timeDays=gy,t.timeFormatDefaultLocale=P_,t.timeFormatLocale=hv,t.timeFriday=Sy,t.timeFridays=$y,t.timeHour=sy,t.timeHours=ly,t.timeInterval=Vg,t.timeMillisecond=Wg,t.timeMilliseconds=Zg,t.timeMinute=ay,t.timeMinutes=uy,t.timeMonday=wy,t.timeMondays=ky,t.timeMonth=Zy,t.timeMonths=Ky,t.timeSaturday=Ey,t.timeSaturdays=Dy,t.timeSecond=iy,t.timeSeconds=oy,t.timeSunday=xy,t.timeSundays=Ny,t.timeThursday=Ay,t.timeThursdays=zy,t.timeTickInterval=cv,t.timeTicks=uv,t.timeTuesday=My,t.timeTuesdays=Cy,t.timeWednesday=Ty,t.timeWednesdays=Py,t.timeWeek=xy,t.timeWeeks=Ny,t.timeYear=tv,t.timeYears=nv,t.timeout=$i,t.timer=Ni,t.timerFlush=ki,t.transition=go,t.transpose=gt,t.tree=function(){var t=$p,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Up(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Up(r[i],i)),e.parent=n;return(a.parent=new Up(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Rp(u),o=Dp(o),u&&o;)c=Dp(c),(a=Rp(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Fp(qp(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Rp(a)&&(a.t=u,a.m+=l-s),o&&!Dp(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=Yp,n=!1,e=1,r=1,i=[0],o=np,a=np,u=np,c=np,f=np;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Tp),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d>>1;f[g]c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.9.0",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Ew,i=Nw,o=zw,a=Cw,u=Pw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",kw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new ww(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new ww(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new ww(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Sw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Sw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Sw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Aw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Sw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Aw(e),a=0;a{ + let op=window.inputKnobsOptions||{}; + op.knobWidth=op.knobWidth||op.knobDiameter||64; + op.knobHeight=op.knobHeight||op.knobDiameter||64; + op.sliderWidth=op.sliderWidth||op.sliderDiameter||128; + op.sliderHeight=op.sliderHeight||op.sliderDiameter||20; + op.switchWidth=op.switchWidth||op.switchDiameter||24; + op.switchHeight=op.switchHeight||op.switchDiameter||24; + op.fgcolor=op.fgcolor||"#f00"; + op.bgcolor=op.bgcolor||"#000"; + op.knobMode=op.knobMode||"linear"; + op.sliderMode=op.sliderMode||"relative"; + let styles=document.createElement("style"); + styles.innerHTML= +`input[type=range].input-knob,input[type=range].input-slider{ + -webkit-appearance:none; + -moz-appearance:none; + border:none; + box-sizing:border-box; + overflow:hidden; + background-repeat:no-repeat; + background-size:100% 100%; + background-position:0px 0%; + background-color:transparent; + touch-action:none; +} +input[type=range].input-knob{ + width:${op.knobWidth}px; height:${op.knobHeight}px; +} +input[type=range].input-slider{ + width:${op.sliderWidth}px; height:${op.sliderHeight}px; +} +input[type=range].input-knob::-webkit-slider-thumb,input[type=range].input-slider::-webkit-slider-thumb{ + -webkit-appearance:none; + opacity:0; +} +input[type=range].input-knob::-moz-range-thumb,input[type=range].input-slider::-moz-range-thumb{ + -moz-appearance:none; + height:0; + border:none; +} +input[type=range].input-knob::-moz-range-track,input[type=range].input-slider::-moz-range-track{ + -moz-appearance:none; + height:0; + border:none; +} +input[type=checkbox].input-switch,input[type=radio].input-switch { + width:${op.switchWidth}px; + height:${op.switchHeight}px; + -webkit-appearance:none; + -moz-appearance:none; + background-size:100% 200%; + background-position:0% 0%; + background-repeat:no-repeat; + border:none; + border-radius:0; + background-color:transparent; +} +input[type=checkbox].input-switch:checked,input[type=radio].input-switch:checked { + background-position:0% 100%; +}`; + document.head.appendChild(styles); + let makeKnobFrames=(fr,fg,bg)=>{ + let r= +` + + +`; + for(let i=1;i`; + return r+""; + } + let makeHSliderFrames=(fr,fg,bg,w,h)=>{ + let r= +` + +`; + for(let i=0;i`; + r+=``; + } + return r+""; + } + let makeVSliderFrames=(fr,fg,bg,w,h)=>{ + let r= +` + +`; + for(let i=0;i`; + r+=``; + } + return r+""; + } + let initSwitches=(el)=>{ + let w,h,d,fg,bg; + if(el.inputKnobs) + return; + el.inputKnobs={}; + el.refresh=()=>{ + let src=el.getAttribute("data-src"); + d=+el.getAttribute("data-diameter"); + let st=document.defaultView.getComputedStyle(el,null); + w=parseFloat(el.getAttribute("data-width")||d||st.width); + h=parseFloat(el.getAttribute("data-height")||d||st.height); + bg=el.getAttribute("data-bgcolor")||op.bgcolor; + fg=el.getAttribute("data-fgcolor")||op.fgcolor; + el.style.width=w+"px"; + el.style.height=h+"px"; + if(src) + el.style.backgroundImage="url("+src+")"; + else { + let minwh=Math.min(w,h); + let svg= +` + + +`; + el.style.backgroundImage="url(data:image/svg+xml;base64,"+btoa(svg)+")"; + } + }; + el.refresh(); + }; + let initKnobs=(el)=>{ + let w,h,d,fg,bg; + if(el.inputKnobs){ + el.redraw(); + return; + } + let ik=el.inputKnobs={}; + el.refresh=()=>{ + d=+el.getAttribute("data-diameter"); + let st=document.defaultView.getComputedStyle(el,null); + w=parseFloat(el.getAttribute("data-width")||d||st.width); + h=parseFloat(el.getAttribute("data-height")||d||st.height); + bg=el.getAttribute("data-bgcolor")||op.bgcolor; + fg=el.getAttribute("data-fgcolor")||op.fgcolor; + ik.sensex=ik.sensey=200; + if(el.className.indexOf("input-knob")>=0) + ik.itype="k"; + else{ + if(w>=h){ + ik.itype="h"; + ik.sensex=w-h; + ik.sensey=Infinity; + el.style.backgroundSize="auto 100%"; + } + else{ + ik.itype="v"; + ik.sensex=Infinity; + ik.sensey=h-w; + el.style.backgroundSize="100% auto"; + } + } + el.style.width=w+"px"; + el.style.height=h+"px"; + ik.frameheight=h; + let src=el.getAttribute("data-src"); + if(src){ + el.style.backgroundImage=`url(${src})`; + let sp=+el.getAttribute("data-sprites"); + if(sp) + ik.sprites=sp; + else + ik.sprites=0; + if(ik.sprites>=1) + el.style.backgroundSize=`100% ${(ik.sprites+1)*100}%`; + else if(ik.itype!="k"){ + el.style.backgroundColor=bg; + el.style.borderRadius=Math.min(w,h)*0.25+"px"; + } + } + else{ + let svg; + switch(ik.itype){ + case "k": svg=makeKnobFrames(101,fg,bg); break; + case "h": svg=makeHSliderFrames(101,fg,bg,w,h); break; + case "v": svg=makeVSliderFrames(101,fg,bg,w,h); break; + } + ik.sprites=100; + el.style.backgroundImage="url(data:image/svg+xml;base64,"+btoa(svg)+")"; + el.style.backgroundSize=`100% ${(ik.sprites+1)*100}%`; + } + ik.valrange={min:+el.min, max:(el.max=="")?100:+el.max, step:(el.step=="")?1:+el.step}; + el.redraw(true); + }; + el.setValue=(v)=>{ + v=(Math.round((v-ik.valrange.min)/ik.valrange.step))*ik.valrange.step+ik.valrange.min; + if(vik.valrange.max) v=ik.valrange.max; + el.value=v; + if(el.value!=ik.oldvalue){ + el.setAttribute("value",el.value); + el.redraw(); + let event=document.createEvent("HTMLEvents"); + event.initEvent("input",false,true); + el.dispatchEvent(event); + ik.oldvalue=el.value; + } + }; + ik.pointerdown=(ev)=>{ + el.focus(); + const evorg = ev; + if(ev.touches) + ev = ev.touches[0]; + let rc=el.getBoundingClientRect(); + let cx=(rc.left+rc.right)*0.5,cy=(rc.top+rc.bottom)*0.5; + let dx=ev.clientX,dy=ev.clientY; + let da=Math.atan2(ev.clientX-cx,cy-ev.clientY); + if(ik.itype=="k"&&op.knobMode=="circularabs"){ + dv=ik.valrange.min+(da/Math.PI*0.75+0.5)*(ik.valrange.max-ik.valrange.min); + el.setValue(dv); + } + if(ik.itype!="k"&&op.sliderMode=="abs"){ + dv=(ik.valrange.min+ik.valrange.max)*0.5+((dx-cx)/ik.sensex-(dy-cy)/ik.sensey)*(ik.valrange.max-ik.valrange.min); + el.setValue(dv); + } + ik.dragfrom={x:ev.clientX,y:ev.clientY,a:Math.atan2(ev.clientX-cx,cy-ev.clientY),v:+el.value}; + document.addEventListener("mousemove",ik.pointermove); + document.addEventListener("mouseup",ik.pointerup); + document.addEventListener("touchmove",ik.pointermove); + document.addEventListener("touchend",ik.pointerup); + document.addEventListener("touchcancel",ik.pointerup); + document.addEventListener("touchstart",ik.preventScroll); + evorg.preventDefault(); + evorg.stopPropagation(); + }; + ik.pointermove=(ev)=>{ + let dv; + let rc=el.getBoundingClientRect(); + let cx=(rc.left+rc.right)*0.5,cy=(rc.top+rc.bottom)*0.5; + if(ev.touches) + ev = ev.touches[0]; + let dx=ev.clientX-ik.dragfrom.x,dy=ev.clientY-ik.dragfrom.y; + let da=Math.atan2(ev.clientX-cx,cy-ev.clientY); + switch(ik.itype){ + case "k": + switch(op.knobMode){ + case "linear": + dv=(dx/ik.sensex-dy/ik.sensey)*(ik.valrange.max-ik.valrange.min); + if(ev.shiftKey) + dv*=0.2; + el.setValue(ik.dragfrom.v+dv); + break; + case "circularabs": + if(!ev.shiftKey){ + dv=ik.valrange.min+(da/Math.PI*0.75+0.5)*(ik.valrange.max-ik.valrange.min); + el.setValue(dv); + break; + } + case "circularrel": + if(da>ik.dragfrom.a+Math.PI) da-=Math.PI*2; + if(da{ + document.removeEventListener("mousemove",ik.pointermove); + document.removeEventListener("touchmove",ik.pointermove); + document.removeEventListener("mouseup",ik.pointerup); + document.removeEventListener("touchend",ik.pointerup); + document.removeEventListener("touchcancel",ik.pointerup); + document.removeEventListener("touchstart",ik.preventScroll); + let event=document.createEvent("HTMLEvents"); + event.initEvent("change",false,true); + el.dispatchEvent(event); + }; + ik.preventScroll=(ev)=>{ + ev.preventDefault(); + }; + ik.keydown=()=>{ + el.redraw(); + }; + ik.wheel=(ev)=>{ + let delta=ev.deltaY>0?-ik.valrange.step:ik.valrange.step; + if(!ev.shiftKey) + delta*=5; + el.setValue(+el.value+delta); + ev.preventDefault(); + ev.stopPropagation(); + }; + el.redraw=(f)=>{ + if(f||ik.valueold!=el.value){ + let v=(el.value-ik.valrange.min)/(ik.valrange.max-ik.valrange.min); + if(ik.sprites>=1) + el.style.backgroundPosition="0px "+(-((v*ik.sprites)|0)*ik.frameheight)+"px"; + else{ + switch(ik.itype){ + case "k": + el.style.transform="rotate("+(270*v-135)+"deg)"; + break; + case "h": + el.style.backgroundPosition=((w-h)*v)+"px 0px"; + break; + case "v": + el.style.backgroundPosition="0px "+(h-w)*(1-v)+"px"; + break; + } + } + ik.valueold=el.value; + } + }; + el.refresh(); + el.redraw(true); + el.addEventListener("keydown",ik.keydown); + el.addEventListener("mousedown",ik.pointerdown); + el.addEventListener("touchstart",ik.pointerdown); + el.addEventListener("wheel",ik.wheel); + } + let refreshque=()=>{ + let elem=document.querySelectorAll("input.input-knob,input.input-slider"); + for(let i=0;i{ + for(let i=0;procque.length>0&&i<8;++i){ + let q=procque.shift(); + q[0](q[1]); + } + if(procque.length<=0) + refreshque(); + },50); +}); diff --git a/site/code/jquery.js b/site/code/jquery.js new file mode 100644 index 0000000..4024b66 --- /dev/null +++ b/site/code/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("