From 1e4cf9b0ad81a2b24d2d73c27401d76cd9432d0f Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 8 Jan 2019 21:31:50 +1100 Subject: [PATCH] Add assets --- a_wails-packr.go | 6 +- assets/default/default.html | 1 + assets/default/jquery.3.3.1.min.js | 2 + assets/default/wails.js | 337 ++++++++++++++++++ assets/headless/index.html | 179 ++++++++++ .../bootstrap4lux/a_bootstrap4-packr.go | 16 - 6 files changed, 522 insertions(+), 19 deletions(-) create mode 100644 assets/default/default.html create mode 100644 assets/default/jquery.3.3.1.min.js create mode 100644 assets/default/wails.js create mode 100644 assets/headless/index.html delete mode 100644 cmd/frameworks/bootstrap4lux/a_bootstrap4-packr.go diff --git a/a_wails-packr.go b/a_wails-packr.go index 646cd8cbc..6526e6400 100644 --- a/a_wails-packr.go +++ b/a_wails-packr.go @@ -9,12 +9,12 @@ import "github.com/gobuffalo/packr" func init() { packr.PackJSONBytes("./assets/default", "default.html", "\"PGRpdiBpZD0iYXBwIj48L2Rpdj4=\"") packr.PackJSONBytes("./assets/default", "jquery.3.3.1.min.js", "\"LyohIGpRdWVyeSB2My4zLjEgLWFqYXgsLWFqYXgvanNvbnAsLWFqYXgvbG9hZCwtYWpheC9wYXJzZVhNTCwtYWpheC9zY3JpcHQsLWFqYXgvdmFyL2xvY2F0aW9uLC1hamF4L3Zhci9ub25jZSwtYWpheC92YXIvcnF1ZXJ5LC1hamF4L3hociwtbWFuaXB1bGF0aW9uL19ldmFsVXJsLC1ldmVudC9hamF4LC1lZmZlY3RzLC1lZmZlY3RzL1R3ZWVuLC1lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbiAoZSwgdCkgeyAidXNlIHN0cmljdCI7ICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBlLmRvY3VtZW50ID8gdChlLCAhMCkgOiBmdW5jdGlvbiAoZSkgeyBpZiAoIWUuZG9jdW1lbnQpIHRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpOyByZXR1cm4gdChlKSB9IDogdChlKSB9KCJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiAoZSwgdCkgeyAidXNlIHN0cmljdCI7IHZhciBuID0gW10sIHIgPSBlLmRvY3VtZW50LCBpID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBvID0gbi5zbGljZSwgYSA9IG4uY29uY2F0LCB1ID0gbi5wdXNoLCBzID0gbi5pbmRleE9mLCBsID0ge30sIGMgPSBsLnRvU3RyaW5nLCBmID0gbC5oYXNPd25Qcm9wZXJ0eSwgZCA9IGYudG9TdHJpbmcsIHAgPSBkLmNhbGwoT2JqZWN0KSwgaCA9IHt9LCBnID0gZnVuY3Rpb24gZSh0KSB7IHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmICJudW1iZXIiICE9IHR5cGVvZiB0Lm5vZGVUeXBlIH0sIHYgPSBmdW5jdGlvbiBlKHQpIHsgcmV0dXJuIG51bGwgIT0gdCAmJiB0ID09PSB0LndpbmRvdyB9LCB5ID0geyB0eXBlOiAhMCwgc3JjOiAhMCwgbm9Nb2R1bGU6ICEwIH07IGZ1bmN0aW9uIG0oZSwgdCwgbikgeyB2YXIgaSwgbyA9ICh0ID0gdCB8fCByKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsgaWYgKG8udGV4dCA9IGUsIG4pIGZvciAoaSBpbiB5KSBuW2ldICYmIChvW2ldID0gbltpXSk7IHQuaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pIH0gZnVuY3Rpb24gYihlKSB7IHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbFtjLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUgfSB2YXIgeCA9ICIzLjMuMSAtYWpheCwtYWpheC9qc29ucCwtYWpheC9sb2FkLC1hamF4L3BhcnNlWE1MLC1hamF4L3NjcmlwdCwtYWpheC92YXIvbG9jYXRpb24sLWFqYXgvdmFyL25vbmNlLC1hamF4L3Zhci9ycXVlcnksLWFqYXgveGhyLC1tYW5pcHVsYXRpb24vX2V2YWxVcmwsLWV2ZW50L2FqYXgsLWVmZmVjdHMsLWVmZmVjdHMvVHdlZW4sLWVmZmVjdHMvYW5pbWF0ZWRTZWxlY3RvciIsIHcgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gbmV3IHcuZm4uaW5pdChlLCB0KSB9LCBDID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nOyB3LmZuID0gdy5wcm90b3R5cGUgPSB7IGpxdWVyeTogeCwgY29uc3RydWN0b3I6IHcsIGxlbmd0aDogMCwgdG9BcnJheTogZnVuY3Rpb24gKCkgeyByZXR1cm4gby5jYWxsKHRoaXMpIH0sIGdldDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZSA/IG8uY2FsbCh0aGlzKSA6IGUgPCAwID8gdGhpc1tlICsgdGhpcy5sZW5ndGhdIDogdGhpc1tlXSB9LCBwdXNoU3RhY2s6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksIGUpOyByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdCB9LCBlYWNoOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdy5lYWNoKHRoaXMsIGUpIH0sIG1hcDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHcubWFwKHRoaXMsIGZ1bmN0aW9uICh0LCBuKSB7IHJldHVybiBlLmNhbGwodCwgbiwgdCkgfSkpIH0sIHNsaWNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnB1c2hTdGFjayhvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIH0sIGZpcnN0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVxKDApIH0sIGxhc3Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZXEoLTEpIH0sIGVxOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXMubGVuZ3RoLCBuID0gK2UgKyAoZSA8IDAgPyB0IDogMCk7IHJldHVybiB0aGlzLnB1c2hTdGFjayhuID49IDAgJiYgbiA8IHQgPyBbdGhpc1tuXV0gOiBbXSkgfSwgZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpIH0sIHB1c2g6IHUsIHNvcnQ6IG4uc29ydCwgc3BsaWNlOiBuLnNwbGljZSB9LCB3LmV4dGVuZCA9IHcuZm4uZXh0ZW5kID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbiwgciwgaSwgbywgYSA9IGFyZ3VtZW50c1swXSB8fCB7fSwgdSA9IDEsIHMgPSBhcmd1bWVudHMubGVuZ3RoLCBsID0gITE7IGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChsID0gYSwgYSA9IGFyZ3VtZW50c1t1XSB8fCB7fSwgdSsrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgZyhhKSB8fCAoYSA9IHt9KSwgdSA9PT0gcyAmJiAoYSA9IHRoaXMsIHUtLSk7IHUgPCBzOyB1KyspaWYgKG51bGwgIT0gKGUgPSBhcmd1bWVudHNbdV0pKSBmb3IgKHQgaW4gZSkgbiA9IGFbdF0sIGEgIT09IChyID0gZVt0XSkgJiYgKGwgJiYgciAmJiAody5pc1BsYWluT2JqZWN0KHIpIHx8IChpID0gQXJyYXkuaXNBcnJheShyKSkpID8gKGkgPyAoaSA9ICExLCBvID0gbiAmJiBBcnJheS5pc0FycmF5KG4pID8gbiA6IFtdKSA6IG8gPSBuICYmIHcuaXNQbGFpbk9iamVjdChuKSA/IG4gOiB7fSwgYVt0XSA9IHcuZXh0ZW5kKGwsIG8sIHIpKSA6IHZvaWQgMCAhPT0gciAmJiAoYVt0XSA9IHIpKTsgcmV0dXJuIGEgfSwgdy5leHRlbmQoeyBleHBhbmRvOiAialF1ZXJ5IiArICh4ICsgTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywgIiIpLCBpc1JlYWR5OiAhMCwgZXJyb3I6IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcihlKSB9LCBub29wOiBmdW5jdGlvbiAoKSB7IH0sIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuOyByZXR1cm4gISghZSB8fCAiW29iamVjdCBPYmplY3RdIiAhPT0gYy5jYWxsKGUpKSAmJiAoISh0ID0gaShlKSkgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgKG4gPSBmLmNhbGwodCwgImNvbnN0cnVjdG9yIikgJiYgdC5jb25zdHJ1Y3RvcikgJiYgZC5jYWxsKG4pID09PSBwKSB9LCBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgZm9yICh0IGluIGUpIHJldHVybiAhMTsgcmV0dXJuICEwIH0sIGdsb2JhbEV2YWw6IGZ1bmN0aW9uIChlKSB7IG0oZSkgfSwgZWFjaDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSAwOyBpZiAoVChlKSkgeyBmb3IgKG4gPSBlLmxlbmd0aDsgciA8IG47IHIrKylpZiAoITEgPT09IHQuY2FsbChlW3JdLCByLCBlW3JdKSkgYnJlYWsgfSBlbHNlIGZvciAociBpbiBlKSBpZiAoITEgPT09IHQuY2FsbChlW3JdLCByLCBlW3JdKSkgYnJlYWs7IHJldHVybiBlIH0sIHRyaW06IGZ1bmN0aW9uIChlKSB7IHJldHVybiBudWxsID09IGUgPyAiIiA6IChlICsgIiIpLnJlcGxhY2UoQywgIiIpIH0sIG1ha2VBcnJheTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB0IHx8IFtdOyByZXR1cm4gbnVsbCAhPSBlICYmIChUKE9iamVjdChlKSkgPyB3Lm1lcmdlKG4sICJzdHJpbmciID09IHR5cGVvZiBlID8gW2VdIDogZSkgOiB1LmNhbGwobiwgZSkpLCBuIH0sIGluQXJyYXk6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBudWxsID09IHQgPyAtMSA6IHMuY2FsbCh0LCBlLCBuKSB9LCBtZXJnZTogZnVuY3Rpb24gKGUsIHQpIHsgZm9yICh2YXIgbiA9ICt0Lmxlbmd0aCwgciA9IDAsIGkgPSBlLmxlbmd0aDsgciA8IG47IHIrKyllW2krK10gPSB0W3JdOyByZXR1cm4gZS5sZW5ndGggPSBpLCBlIH0sIGdyZXA6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSBbXSwgbyA9IDAsIGEgPSBlLmxlbmd0aCwgdSA9ICFuOyBvIDwgYTsgbysrKShyID0gIXQoZVtvXSwgbykpICE9PSB1ICYmIGkucHVzaChlW29dKTsgcmV0dXJuIGkgfSwgbWFwOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbyA9IDAsIHUgPSBbXTsgaWYgKFQoZSkpIGZvciAociA9IGUubGVuZ3RoOyBvIDwgcjsgbysrKW51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiB1LnB1c2goaSk7IGVsc2UgZm9yIChvIGluIGUpIG51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiB1LnB1c2goaSk7IHJldHVybiBhLmFwcGx5KFtdLCB1KSB9LCBndWlkOiAxLCBzdXBwb3J0OiBoIH0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgKHcuZm5bU3ltYm9sLml0ZXJhdG9yXSA9IG5bU3ltYm9sLml0ZXJhdG9yXSksIHcuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksIGZ1bmN0aW9uIChlLCB0KSB7IGxbIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpIH0pOyBmdW5jdGlvbiBUKGUpIHsgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwgbiA9IGIoZSk7IHJldHVybiAhZyhlKSAmJiAhdihlKSAmJiAoImFycmF5IiA9PT0gbiB8fCAwID09PSB0IHx8ICJudW1iZXIiID09IHR5cGVvZiB0ICYmIHQgPiAwICYmIHQgLSAxIGluIGUpIH0gdmFyIEUgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgdSwgcywgbCwgYywgZiwgZCwgcCwgaCwgZywgdiwgeSwgbSwgYiwgeCA9ICJzaXp6bGUiICsgMSAqIG5ldyBEYXRlLCB3ID0gZS5kb2N1bWVudCwgQyA9IDAsIFQgPSAwLCBFID0gYWUoKSwgTiA9IGFlKCksIGsgPSBhZSgpLCBBID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIGUgPT09IHQgJiYgKGYgPSAhMCksIDAgfSwgRCA9IHt9Lmhhc093blByb3BlcnR5LCBTID0gW10sIEwgPSBTLnBvcCwgaiA9IFMucHVzaCwgcSA9IFMucHVzaCwgTyA9IFMuc2xpY2UsIFAgPSBmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKWlmIChlW25dID09PSB0KSByZXR1cm4gbjsgcmV0dXJuIC0xIH0sIEggPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLCBJID0gIltcXHgyMFxcdFxcclxcblxcZl0iLCBSID0gIig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIiwgQiA9ICJcXFsiICsgSSArICIqKCIgKyBSICsgIikoPzoiICsgSSArICIqKFsqXiR8IX5dPz0pIiArIEkgKyAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiICsgUiArICIpKXwpIiArIEkgKyAiKlxcXSIsIE0gPSAiOigiICsgUiArICIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiArIEIgKyAiKSopfC4qKVxcKXwpIiwgVyA9IG5ldyBSZWdFeHAoSSArICIrIiwgImciKSwgJCA9IG5ldyBSZWdFeHAoIl4iICsgSSArICIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiICsgSSArICIrJCIsICJnIiksIEYgPSBuZXcgUmVnRXhwKCJeIiArIEkgKyAiKiwiICsgSSArICIqIiksIHogPSBuZXcgUmVnRXhwKCJeIiArIEkgKyAiKihbPit+XXwiICsgSSArICIpIiArIEkgKyAiKiIpLCBfID0gbmV3IFJlZ0V4cCgiPSIgKyBJICsgIiooW15cXF0nXCJdKj8pIiArIEkgKyAiKlxcXSIsICJnIiksIFUgPSBuZXcgUmVnRXhwKE0pLCBWID0gbmV3IFJlZ0V4cCgiXiIgKyBSICsgIiQiKSwgWCA9IHsgSUQ6IG5ldyBSZWdFeHAoIl4jKCIgKyBSICsgIikiKSwgQ0xBU1M6IG5ldyBSZWdFeHAoIl5cXC4oIiArIFIgKyAiKSIpLCBUQUc6IG5ldyBSZWdFeHAoIl4oIiArIFIgKyAifFsqXSkiKSwgQVRUUjogbmV3IFJlZ0V4cCgiXiIgKyBCKSwgUFNFVURPOiBuZXcgUmVnRXhwKCJeIiArIE0pLCBDSElMRDogbmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIEkgKyAiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyBJICsgIiooPzooWystXXwpIiArIEkgKyAiKihcXGQrKXwpKSIgKyBJICsgIipcXCl8KSIsICJpIiksIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgSCArICIpJCIsICJpIiksIG5lZWRzQ29udGV4dDogbmV3IFJlZ0V4cCgiXiIgKyBJICsgIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKyBJICsgIiooKD86LVxcZCk/XFxkKikiICsgSSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiKSB9LCBRID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwgWSA9IC9eaFxkJC9pLCBHID0gL15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLCBLID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywgSiA9IC9bK35dLywgWiA9IG5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIgKyBJICsgIj98KCIgKyBJICsgIil8LikiLCAiaWciKSwgZWUgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9ICIweCIgKyB0IC0gNjU1MzY7IHJldHVybiByICE9PSByIHx8IG4gPyB0IDogciA8IDAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKHIgKyA2NTUzNikgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKHIgPj4gMTAgfCA1NTI5NiwgMTAyMyAmIHIgfCA1NjMyMCkgfSwgdGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywgbmUgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdCA/ICJcMCIgPT09IGUgPyAiXHVmZmZkIiA6IGUuc2xpY2UoMCwgLTEpICsgIlxcIiArIGUuY2hhckNvZGVBdChlLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBlIH0sIHJlID0gZnVuY3Rpb24gKCkgeyBkKCkgfSwgaWUgPSBtZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgKCJmb3JtIiBpbiBlIHx8ICJsYWJlbCIgaW4gZSkgfSwgeyBkaXI6ICJwYXJlbnROb2RlIiwgbmV4dDogImxlZ2VuZCIgfSk7IHRyeSB7IHEuYXBwbHkoUyA9IE8uY2FsbCh3LmNoaWxkTm9kZXMpLCB3LmNoaWxkTm9kZXMpLCBTW3cuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlIH0gY2F0Y2ggKGUpIHsgcSA9IHsgYXBwbHk6IFMubGVuZ3RoID8gZnVuY3Rpb24gKGUsIHQpIHsgai5hcHBseShlLCBPLmNhbGwodCkpIH0gOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGUubGVuZ3RoLCByID0gMDsgd2hpbGUgKGVbbisrXSA9IHRbcisrXSk7IGUubGVuZ3RoID0gbiAtIDEgfSB9IH0gZnVuY3Rpb24gb2UoZSwgdCwgciwgaSkgeyB2YXIgbywgdSwgbCwgYywgZiwgaCwgeSwgbSA9IHQgJiYgdC5vd25lckRvY3VtZW50LCBDID0gdCA/IHQubm9kZVR5cGUgOiA5OyBpZiAociA9IHIgfHwgW10sICJzdHJpbmciICE9IHR5cGVvZiBlIHx8ICFlIHx8IDEgIT09IEMgJiYgOSAhPT0gQyAmJiAxMSAhPT0gQykgcmV0dXJuIHI7IGlmICghaSAmJiAoKHQgPyB0Lm93bmVyRG9jdW1lbnQgfHwgdCA6IHcpICE9PSBwICYmIGQodCksIHQgPSB0IHx8IHAsIGcpKSB7IGlmICgxMSAhPT0gQyAmJiAoZiA9IEsuZXhlYyhlKSkpIGlmIChvID0gZlsxXSkgeyBpZiAoOSA9PT0gQykgeyBpZiAoIShsID0gdC5nZXRFbGVtZW50QnlJZChvKSkpIHJldHVybiByOyBpZiAobC5pZCA9PT0gbykgcmV0dXJuIHIucHVzaChsKSwgciB9IGVsc2UgaWYgKG0gJiYgKGwgPSBtLmdldEVsZW1lbnRCeUlkKG8pKSAmJiBiKHQsIGwpICYmIGwuaWQgPT09IG8pIHJldHVybiByLnB1c2gobCksIHIgfSBlbHNlIHsgaWYgKGZbMl0pIHJldHVybiBxLmFwcGx5KHIsIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSkpLCByOyBpZiAoKG8gPSBmWzNdKSAmJiBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSByZXR1cm4gcS5hcHBseShyLCB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobykpLCByIH0gaWYgKG4ucXNhICYmICFrW2UgKyAiICJdICYmICghdiB8fCAhdi50ZXN0KGUpKSkgeyBpZiAoMSAhPT0gQykgbSA9IHQsIHkgPSBlOyBlbHNlIGlmICgib2JqZWN0IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSB7IChjID0gdC5nZXRBdHRyaWJ1dGUoImlkIikpID8gYyA9IGMucmVwbGFjZSh0ZSwgbmUpIDogdC5zZXRBdHRyaWJ1dGUoImlkIiwgYyA9IHgpLCB1ID0gKGggPSBhKGUpKS5sZW5ndGg7IHdoaWxlICh1LS0pIGhbdV0gPSAiIyIgKyBjICsgIiAiICsgeWUoaFt1XSk7IHkgPSBoLmpvaW4oIiwiKSwgbSA9IEoudGVzdChlKSAmJiBnZSh0LnBhcmVudE5vZGUpIHx8IHQgfSBpZiAoeSkgdHJ5IHsgcmV0dXJuIHEuYXBwbHkociwgbS5xdWVyeVNlbGVjdG9yQWxsKHkpKSwgciB9IGNhdGNoIChlKSB7IH0gZmluYWxseSB7IGMgPT09IHggJiYgdC5yZW1vdmVBdHRyaWJ1dGUoImlkIikgfSB9IH0gcmV0dXJuIHMoZS5yZXBsYWNlKCQsICIkMSIpLCB0LCByLCBpKSB9IGZ1bmN0aW9uIGFlKCkgeyB2YXIgZSA9IFtdOyBmdW5jdGlvbiB0KG4sIGkpIHsgcmV0dXJuIGUucHVzaChuICsgIiAiKSA+IHIuY2FjaGVMZW5ndGggJiYgZGVsZXRlIHRbZS5zaGlmdCgpXSwgdFtuICsgIiAiXSA9IGkgfSByZXR1cm4gdCB9IGZ1bmN0aW9uIHVlKGUpIHsgcmV0dXJuIGVbeF0gPSAhMCwgZSB9IGZ1bmN0aW9uIHNlKGUpIHsgdmFyIHQgPSBwLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7IHRyeSB7IHJldHVybiAhIWUodCkgfSBjYXRjaCAoZSkgeyByZXR1cm4gITEgfSBmaW5hbGx5IHsgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwgfSB9IGZ1bmN0aW9uIGxlKGUsIHQpIHsgdmFyIG4gPSBlLnNwbGl0KCJ8IiksIGkgPSBuLmxlbmd0aDsgd2hpbGUgKGktLSkgci5hdHRySGFuZGxlW25baV1dID0gdCB9IGZ1bmN0aW9uIGNlKGUsIHQpIHsgdmFyIG4gPSB0ICYmIGUsIHIgPSBuICYmIDEgPT09IGUubm9kZVR5cGUgJiYgMSA9PT0gdC5ub2RlVHlwZSAmJiBlLnNvdXJjZUluZGV4IC0gdC5zb3VyY2VJbmRleDsgaWYgKHIpIHJldHVybiByOyBpZiAobikgd2hpbGUgKG4gPSBuLm5leHRTaWJsaW5nKSBpZiAobiA9PT0gdCkgcmV0dXJuIC0xOyByZXR1cm4gZSA/IDEgOiAtMSB9IGZ1bmN0aW9uIGZlKGUpIHsgcmV0dXJuIGZ1bmN0aW9uICh0KSB7IHJldHVybiAiaW5wdXQiID09PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgJiYgdC50eXBlID09PSBlIH0gfSBmdW5jdGlvbiBkZShlKSB7IHJldHVybiBmdW5jdGlvbiAodCkgeyB2YXIgbiA9IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICgiaW5wdXQiID09PSBuIHx8ICJidXR0b24iID09PSBuKSAmJiB0LnR5cGUgPT09IGUgfSB9IGZ1bmN0aW9uIHBlKGUpIHsgcmV0dXJuIGZ1bmN0aW9uICh0KSB7IHJldHVybiAiZm9ybSIgaW4gdCA/IHQucGFyZW50Tm9kZSAmJiAhMSA9PT0gdC5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gdCA/ICJsYWJlbCIgaW4gdC5wYXJlbnROb2RlID8gdC5wYXJlbnROb2RlLmRpc2FibGVkID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6IHQuaXNEaXNhYmxlZCA9PT0gZSB8fCB0LmlzRGlzYWJsZWQgIT09ICFlICYmIGllKHQpID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6ICJsYWJlbCIgaW4gdCAmJiB0LmRpc2FibGVkID09PSBlIH0gfSBmdW5jdGlvbiBoZShlKSB7IHJldHVybiB1ZShmdW5jdGlvbiAodCkgeyByZXR1cm4gdCA9ICt0LCB1ZShmdW5jdGlvbiAobiwgcikgeyB2YXIgaSwgbyA9IGUoW10sIG4ubGVuZ3RoLCB0KSwgYSA9IG8ubGVuZ3RoOyB3aGlsZSAoYS0tKSBuW2kgPSBvW2FdXSAmJiAobltpXSA9ICEocltpXSA9IG5baV0pKSB9KSB9KSB9IGZ1bmN0aW9uIGdlKGUpIHsgcmV0dXJuIGUgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgJiYgZSB9IG4gPSBvZS5zdXBwb3J0ID0ge30sIG8gPSBvZS5pc1hNTCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxlbWVudDsgcmV0dXJuICEhdCAmJiAiSFRNTCIgIT09IHQubm9kZU5hbWUgfSwgZCA9IG9lLnNldERvY3VtZW50ID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQsIGksIGEgPSBlID8gZS5vd25lckRvY3VtZW50IHx8IGUgOiB3OyByZXR1cm4gYSAhPT0gcCAmJiA5ID09PSBhLm5vZGVUeXBlICYmIGEuZG9jdW1lbnRFbGVtZW50ID8gKHAgPSBhLCBoID0gcC5kb2N1bWVudEVsZW1lbnQsIGcgPSAhbyhwKSwgdyAhPT0gcCAmJiAoaSA9IHAuZGVmYXVsdFZpZXcpICYmIGkudG9wICE9PSBpICYmIChpLmFkZEV2ZW50TGlzdGVuZXIgPyBpLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsIHJlLCAhMSkgOiBpLmF0dGFjaEV2ZW50ICYmIGkuYXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgcmUpKSwgbi5hdHRyaWJ1dGVzID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuY2xhc3NOYW1lID0gImkiLCAhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpIH0pLCBuLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuYXBwZW5kQ2hpbGQocC5jcmVhdGVDb21tZW50KCIiKSksICFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoIH0pLCBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBHLnRlc3QocC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSwgbi5nZXRCeUlkID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGguYXBwZW5kQ2hpbGQoZSkuaWQgPSB4LCAhcC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhcC5nZXRFbGVtZW50c0J5TmFtZSh4KS5sZW5ndGggfSksIG4uZ2V0QnlJZCA/IChyLmZpbHRlci5JRCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5yZXBsYWNlKFosIGVlKTsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gdCB9IH0sIHIuZmluZC5JRCA9IGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAmJiBnKSB7IHZhciBuID0gdC5nZXRFbGVtZW50QnlJZChlKTsgcmV0dXJuIG4gPyBbbl0gOiBbXSB9IH0pIDogKHIuZmlsdGVyLklEID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnJlcGxhY2UoWiwgZWUpOyByZXR1cm4gZnVuY3Rpb24gKGUpIHsgdmFyIG4gPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlICYmIGUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsgcmV0dXJuIG4gJiYgbi52YWx1ZSA9PT0gdCB9IH0sIHIuZmluZC5JRCA9IGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAmJiBnKSB7IHZhciBuLCByLCBpLCBvID0gdC5nZXRFbGVtZW50QnlJZChlKTsgaWYgKG8pIHsgaWYgKChuID0gby5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSAmJiBuLnZhbHVlID09PSBlKSByZXR1cm4gW29dOyBpID0gdC5nZXRFbGVtZW50c0J5TmFtZShlKSwgciA9IDA7IHdoaWxlIChvID0gaVtyKytdKSBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb10gfSByZXR1cm4gW10gfSB9KSwgci5maW5kLlRBRyA9IG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpIDogbi5xc2EgPyB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSkgOiB2b2lkIDAgfSA6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gW10sIGkgPSAwLCBvID0gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTsgaWYgKCIqIiA9PT0gZSkgeyB3aGlsZSAobiA9IG9baSsrXSkgMSA9PT0gbi5ub2RlVHlwZSAmJiByLnB1c2gobik7IHJldHVybiByIH0gcmV0dXJuIG8gfSwgci5maW5kLkNMQVNTID0gbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGcpIHJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSkgfSwgeSA9IFtdLCB2ID0gW10sIChuLnFzYSA9IEcudGVzdChwLnF1ZXJ5U2VsZWN0b3JBbGwpKSAmJiAoc2UoZnVuY3Rpb24gKGUpIHsgaC5hcHBlbmRDaGlsZChlKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIgKyB4ICsgIic+PC9hPjxzZWxlY3QgaWQ9JyIgKyB4ICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggJiYgdi5wdXNoKCJbKl4kXT0iICsgSSArICIqKD86Jyd8XCJcIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IHYucHVzaCgiXFxbIiArIEkgKyAiKig/OnZhbHVlfCIgKyBIICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyB4ICsgIi1dIikubGVuZ3RoIHx8IHYucHVzaCgifj0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCB2LnB1c2goIjpjaGVja2VkIiksIGUucXVlcnlTZWxlY3RvckFsbCgiYSMiICsgeCArICIrKiIpLmxlbmd0aCB8fCB2LnB1c2goIi4jLitbK35dIikgfSksIHNlKGZ1bmN0aW9uIChlKSB7IGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7IHZhciB0ID0gcC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJoaWRkZW4iKSwgZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAiRCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoICYmIHYucHVzaCgibmFtZSIgKyBJICsgIipbKl4kfCF+XT89IiksIDIgIT09IGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggJiYgdi5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgaC5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZCA9ICEwLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAmJiB2LnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSwgdi5wdXNoKCIsLio6IikgfSkpLCAobi5tYXRjaGVzU2VsZWN0b3IgPSBHLnRlc3QobSA9IGgubWF0Y2hlcyB8fCBoLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBoLm1vek1hdGNoZXNTZWxlY3RvciB8fCBoLm9NYXRjaGVzU2VsZWN0b3IgfHwgaC5tc01hdGNoZXNTZWxlY3RvcikpICYmIHNlKGZ1bmN0aW9uIChlKSB7IG4uZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNhbGwoZSwgIioiKSwgbS5jYWxsKGUsICJbcyE9JyddOngiKSwgeS5wdXNoKCIhPSIsIE0pIH0pLCB2ID0gdi5sZW5ndGggJiYgbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSksIHkgPSB5Lmxlbmd0aCAmJiBuZXcgUmVnRXhwKHkuam9pbigifCIpKSwgdCA9IEcudGVzdChoLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSwgYiA9IHQgfHwgRy50ZXN0KGguY29udGFpbnMpID8gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSA5ID09PSBlLm5vZGVUeXBlID8gZS5kb2N1bWVudEVsZW1lbnQgOiBlLCByID0gdCAmJiB0LnBhcmVudE5vZGU7IHJldHVybiBlID09PSByIHx8ICEoIXIgfHwgMSAhPT0gci5ub2RlVHlwZSB8fCAhKG4uY29udGFpbnMgPyBuLmNvbnRhaW5zKHIpIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKHQpIHdoaWxlICh0ID0gdC5wYXJlbnROb2RlKSBpZiAodCA9PT0gZSkgcmV0dXJuICEwOyByZXR1cm4gITEgfSwgQSA9IHQgPyBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoZSA9PT0gdCkgcmV0dXJuIGYgPSAhMCwgMDsgdmFyIHIgPSAhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOyByZXR1cm4gciB8fCAoMSAmIChyID0gKGUub3duZXJEb2N1bWVudCB8fCBlKSA9PT0gKHQub3duZXJEb2N1bWVudCB8fCB0KSA/IGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkgOiAxKSB8fCAhbi5zb3J0RGV0YWNoZWQgJiYgdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSA9PT0gciA/IGUgPT09IHAgfHwgZS5vd25lckRvY3VtZW50ID09PSB3ICYmIGIodywgZSkgPyAtMSA6IHQgPT09IHAgfHwgdC5vd25lckRvY3VtZW50ID09PSB3ICYmIGIodywgdCkgPyAxIDogYyA/IFAoYywgZSkgLSBQKGMsIHQpIDogMCA6IDQgJiByID8gLTEgOiAxKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKGUgPT09IHQpIHJldHVybiBmID0gITAsIDA7IHZhciBuLCByID0gMCwgaSA9IGUucGFyZW50Tm9kZSwgbyA9IHQucGFyZW50Tm9kZSwgYSA9IFtlXSwgdSA9IFt0XTsgaWYgKCFpIHx8ICFvKSByZXR1cm4gZSA9PT0gcCA/IC0xIDogdCA9PT0gcCA/IDEgOiBpID8gLTEgOiBvID8gMSA6IGMgPyBQKGMsIGUpIC0gUChjLCB0KSA6IDA7IGlmIChpID09PSBvKSByZXR1cm4gY2UoZSwgdCk7IG4gPSBlOyB3aGlsZSAobiA9IG4ucGFyZW50Tm9kZSkgYS51bnNoaWZ0KG4pOyBuID0gdDsgd2hpbGUgKG4gPSBuLnBhcmVudE5vZGUpIHUudW5zaGlmdChuKTsgd2hpbGUgKGFbcl0gPT09IHVbcl0pIHIrKzsgcmV0dXJuIHIgPyBjZShhW3JdLCB1W3JdKSA6IGFbcl0gPT09IHcgPyAtMSA6IHVbcl0gPT09IHcgPyAxIDogMCB9LCBwKSA6IHAgfSwgb2UubWF0Y2hlcyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBvZShlLCBudWxsLCBudWxsLCB0KSB9LCBvZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAmJiBkKGUpLCB0ID0gdC5yZXBsYWNlKF8sICI9JyQxJ10iKSwgbi5tYXRjaGVzU2VsZWN0b3IgJiYgZyAmJiAha1t0ICsgIiAiXSAmJiAoIXkgfHwgIXkudGVzdCh0KSkgJiYgKCF2IHx8ICF2LnRlc3QodCkpKSB0cnkgeyB2YXIgciA9IG0uY2FsbChlLCB0KTsgaWYgKHIgfHwgbi5kaXNjb25uZWN0ZWRNYXRjaCB8fCBlLmRvY3VtZW50ICYmIDExICE9PSBlLmRvY3VtZW50Lm5vZGVUeXBlKSByZXR1cm4gciB9IGNhdGNoIChlKSB7IH0gcmV0dXJuIG9lKHQsIHAsIG51bGwsIFtlXSkubGVuZ3RoID4gMCB9LCBvZS5jb250YWlucyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9PSBwICYmIGQoZSksIGIoZSwgdCkgfSwgb2UuYXR0ciA9IGZ1bmN0aW9uIChlLCB0KSB7IChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAgJiYgZChlKTsgdmFyIGkgPSByLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSwgbyA9IGkgJiYgRC5jYWxsKHIuYXR0ckhhbmRsZSwgdC50b0xvd2VyQ2FzZSgpKSA/IGkoZSwgdCwgIWcpIDogdm9pZCAwOyByZXR1cm4gdm9pZCAwICE9PSBvID8gbyA6IG4uYXR0cmlidXRlcyB8fCAhZyA/IGUuZ2V0QXR0cmlidXRlKHQpIDogKG8gPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpICYmIG8uc3BlY2lmaWVkID8gby52YWx1ZSA6IG51bGwgfSwgb2UuZXNjYXBlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIChlICsgIiIpLnJlcGxhY2UodGUsIG5lKSB9LCBvZS5lcnJvciA9IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGUpIH0sIG9lLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgciA9IFtdLCBpID0gMCwgbyA9IDA7IGlmIChmID0gIW4uZGV0ZWN0RHVwbGljYXRlcywgYyA9ICFuLnNvcnRTdGFibGUgJiYgZS5zbGljZSgwKSwgZS5zb3J0KEEpLCBmKSB7IHdoaWxlICh0ID0gZVtvKytdKSB0ID09PSBlW29dICYmIChpID0gci5wdXNoKG8pKTsgd2hpbGUgKGktLSkgZS5zcGxpY2UocltpXSwgMSkgfSByZXR1cm4gYyA9IG51bGwsIGUgfSwgaSA9IG9lLmdldFRleHQgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiA9ICIiLCByID0gMCwgbyA9IGUubm9kZVR5cGU7IGlmIChvKSB7IGlmICgxID09PSBvIHx8IDkgPT09IG8gfHwgMTEgPT09IG8pIHsgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlLnRleHRDb250ZW50KSByZXR1cm4gZS50ZXh0Q29udGVudDsgZm9yIChlID0gZS5maXJzdENoaWxkOyBlOyBlID0gZS5uZXh0U2libGluZyluICs9IGkoZSkgfSBlbHNlIGlmICgzID09PSBvIHx8IDQgPT09IG8pIHJldHVybiBlLm5vZGVWYWx1ZSB9IGVsc2Ugd2hpbGUgKHQgPSBlW3IrK10pIG4gKz0gaSh0KTsgcmV0dXJuIG4gfSwgKHIgPSBvZS5zZWxlY3RvcnMgPSB7IGNhY2hlTGVuZ3RoOiA1MCwgY3JlYXRlUHNldWRvOiB1ZSwgbWF0Y2g6IFgsIGF0dHJIYW5kbGU6IHt9LCBmaW5kOiB7fSwgcmVsYXRpdmU6IHsgIj4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogITAgfSwgIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sICIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogITAgfSwgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfSB9LCBwcmVGaWx0ZXI6IHsgQVRUUjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGVbMV0gPSBlWzFdLnJlcGxhY2UoWiwgZWUpLCBlWzNdID0gKGVbM10gfHwgZVs0XSB8fCBlWzVdIHx8ICIiKS5yZXBsYWNlKFosIGVlKSwgIn49IiA9PT0gZVsyXSAmJiAoZVszXSA9ICIgIiArIGVbM10gKyAiICIpLCBlLnNsaWNlKDAsIDQpIH0sIENISUxEOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsxXSA9IGVbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGVbMV0uc2xpY2UoMCwgMykgPyAoZVszXSB8fCBvZS5lcnJvcihlWzBdKSwgZVs0XSA9ICsoZVs0XSA/IGVbNV0gKyAoZVs2XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBlWzNdIHx8ICJvZGQiID09PSBlWzNdKSksIGVbNV0gPSArKGVbN10gKyBlWzhdIHx8ICJvZGQiID09PSBlWzNdKSkgOiBlWzNdICYmIG9lLmVycm9yKGVbMF0pLCBlIH0sIFBTRVVETzogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOyByZXR1cm4gWC5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgVS50ZXN0KG4pICYmICh0ID0gYShuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkgfSB9LCBmaWx0ZXI6IHsgVEFHOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUucmVwbGFjZShaLCBlZSkudG9Mb3dlckNhc2UoKTsgcmV0dXJuICIqIiA9PT0gZSA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuICEwIH0gOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQgfSB9LCBDTEFTUzogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBFW2UgKyAiICJdOyByZXR1cm4gdCB8fCAodCA9IG5ldyBSZWdFeHAoIihefCIgKyBJICsgIikiICsgZSArICIoIiArIEkgKyAifCQpIikpICYmIEUoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHQudGVzdCgic3RyaW5nIiA9PSB0eXBlb2YgZS5jbGFzc05hbWUgJiYgZS5jbGFzc05hbWUgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKSB9KSB9LCBBVFRSOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gZnVuY3Rpb24gKHIpIHsgdmFyIGkgPSBvZS5hdHRyKHIsIGUpOyByZXR1cm4gbnVsbCA9PSBpID8gIiE9IiA9PT0gdCA6ICF0IHx8IChpICs9ICIiLCAiPSIgPT09IHQgPyBpID09PSBuIDogIiE9IiA9PT0gdCA/IGkgIT09IG4gOiAiXj0iID09PSB0ID8gbiAmJiAwID09PSBpLmluZGV4T2YobikgOiAiKj0iID09PSB0ID8gbiAmJiBpLmluZGV4T2YobikgPiAtMSA6ICIkPSIgPT09IHQgPyBuICYmIGkuc2xpY2UoLW4ubGVuZ3RoKSA9PT0gbiA6ICJ+PSIgPT09IHQgPyAoIiAiICsgaS5yZXBsYWNlKFcsICIgIikgKyAiICIpLmluZGV4T2YobikgPiAtMSA6ICJ8PSIgPT09IHQgJiYgKGkgPT09IG4gfHwgaS5zbGljZSgwLCBuLmxlbmd0aCArIDEpID09PSBuICsgIi0iKSkgfSB9LCBDSElMRDogZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGkpIHsgdmFyIG8gPSAibnRoIiAhPT0gZS5zbGljZSgwLCAzKSwgYSA9ICJsYXN0IiAhPT0gZS5zbGljZSgtNCksIHUgPSAib2YtdHlwZSIgPT09IHQ7IHJldHVybiAxID09PSByICYmIDAgPT09IGkgPyBmdW5jdGlvbiAoZSkgeyByZXR1cm4gISFlLnBhcmVudE5vZGUgfSA6IGZ1bmN0aW9uICh0LCBuLCBzKSB7IHZhciBsLCBjLCBmLCBkLCBwLCBoLCBnID0gbyAhPT0gYSA/ICJuZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwgdiA9IHQucGFyZW50Tm9kZSwgeSA9IHUgJiYgdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBtID0gIXMgJiYgIXUsIGIgPSAhMTsgaWYgKHYpIHsgaWYgKG8pIHsgd2hpbGUgKGcpIHsgZCA9IHQ7IHdoaWxlIChkID0gZFtnXSkgaWYgKHUgPyBkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHkgOiAxID09PSBkLm5vZGVUeXBlKSByZXR1cm4gITE7IGggPSBnID0gIm9ubHkiID09PSBlICYmICFoICYmICJuZXh0U2libGluZyIgfSByZXR1cm4gITAgfSBpZiAoaCA9IFthID8gdi5maXJzdENoaWxkIDogdi5sYXN0Q2hpbGRdLCBhICYmIG0pIHsgYiA9IChwID0gKGwgPSAoYyA9IChmID0gKGQgPSB2KVt4XSB8fCAoZFt4XSA9IHt9KSlbZC51bmlxdWVJRF0gfHwgKGZbZC51bmlxdWVJRF0gPSB7fSkpW2VdIHx8IFtdKVswXSA9PT0gQyAmJiBsWzFdKSAmJiBsWzJdLCBkID0gcCAmJiB2LmNoaWxkTm9kZXNbcF07IHdoaWxlIChkID0gKytwICYmIGQgJiYgZFtnXSB8fCAoYiA9IHAgPSAwKSB8fCBoLnBvcCgpKSBpZiAoMSA9PT0gZC5ub2RlVHlwZSAmJiArK2IgJiYgZCA9PT0gdCkgeyBjW2VdID0gW0MsIHAsIGJdOyBicmVhayB9IH0gZWxzZSBpZiAobSAmJiAoYiA9IHAgPSAobCA9IChjID0gKGYgPSAoZCA9IHQpW3hdIHx8IChkW3hdID0ge30pKVtkLnVuaXF1ZUlEXSB8fCAoZltkLnVuaXF1ZUlEXSA9IHt9KSlbZV0gfHwgW10pWzBdID09PSBDICYmIGxbMV0pLCAhMSA9PT0gYikgd2hpbGUgKGQgPSArK3AgJiYgZCAmJiBkW2ddIHx8IChiID0gcCA9IDApIHx8IGgucG9wKCkpIGlmICgodSA/IGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0geSA6IDEgPT09IGQubm9kZVR5cGUpICYmICsrYiAmJiAobSAmJiAoKGMgPSAoZiA9IGRbeF0gfHwgKGRbeF0gPSB7fSkpW2QudW5pcXVlSURdIHx8IChmW2QudW5pcXVlSURdID0ge30pKVtlXSA9IFtDLCBiXSksIGQgPT09IHQpKSBicmVhazsgcmV0dXJuIChiIC09IGkpID09PSByIHx8IGIgJSByID09IDAgJiYgYiAvIHIgPj0gMCB9IH0gfSwgUFNFVURPOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgaSA9IHIucHNldWRvc1tlXSB8fCByLnNldEZpbHRlcnNbZS50b0xvd2VyQ2FzZSgpXSB8fCBvZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgZSk7IHJldHVybiBpW3hdID8gaSh0KSA6IGkubGVuZ3RoID4gMSA/IChuID0gW2UsIGUsICIiLCB0XSwgci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSkgPyB1ZShmdW5jdGlvbiAoZSwgbikgeyB2YXIgciwgbyA9IGkoZSwgdCksIGEgPSBvLmxlbmd0aDsgd2hpbGUgKGEtLSkgZVtyID0gUChlLCBvW2FdKV0gPSAhKG5bcl0gPSBvW2FdKSB9KSA6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBpKGUsIDAsIG4pIH0pIDogaSB9IH0sIHBzZXVkb3M6IHsgbm90OiB1ZShmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IFtdLCBuID0gW10sIHIgPSB1KGUucmVwbGFjZSgkLCAiJDEiKSk7IHJldHVybiByW3hdID8gdWUoZnVuY3Rpb24gKGUsIHQsIG4sIGkpIHsgdmFyIG8sIGEgPSByKGUsIG51bGwsIGksIFtdKSwgdSA9IGUubGVuZ3RoOyB3aGlsZSAodS0tKSAobyA9IGFbdV0pICYmIChlW3VdID0gISh0W3VdID0gbykpIH0pIDogZnVuY3Rpb24gKGUsIGksIG8pIHsgcmV0dXJuIHRbMF0gPSBlLCByKHQsIG51bGwsIG8sIG4pLCB0WzBdID0gbnVsbCwgIW4ucG9wKCkgfSB9KSwgaGFzOiB1ZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gZnVuY3Rpb24gKHQpIHsgcmV0dXJuIG9lKGUsIHQpLmxlbmd0aCA+IDAgfSB9KSwgY29udGFpbnM6IHVlKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID0gZS5yZXBsYWNlKFosIGVlKSwgZnVuY3Rpb24gKHQpIHsgcmV0dXJuICh0LnRleHRDb250ZW50IHx8IHQuaW5uZXJUZXh0IHx8IGkodCkpLmluZGV4T2YoZSkgPiAtMSB9IH0pLCBsYW5nOiB1ZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gVi50ZXN0KGUgfHwgIiIpIHx8IG9lLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgZSksIGUgPSBlLnJlcGxhY2UoWiwgZWUpLnRvTG93ZXJDYXNlKCksIGZ1bmN0aW9uICh0KSB7IHZhciBuOyBkbyB7IGlmIChuID0gZyA/IHQubGFuZyA6IHQuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IHQuZ2V0QXR0cmlidXRlKCJsYW5nIikpIHJldHVybiAobiA9IG4udG9Mb3dlckNhc2UoKSkgPT09IGUgfHwgMCA9PT0gbi5pbmRleE9mKGUgKyAiLSIpIH0gd2hpbGUgKCh0ID0gdC5wYXJlbnROb2RlKSAmJiAxID09PSB0Lm5vZGVUeXBlKTsgcmV0dXJuICExIH0gfSksIHRhcmdldDogZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSBlLmxvY2F0aW9uICYmIGUubG9jYXRpb24uaGFzaDsgcmV0dXJuIG4gJiYgbi5zbGljZSgxKSA9PT0gdC5pZCB9LCByb290OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA9PT0gaCB9LCBmb2N1czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IHAuYWN0aXZlRWxlbWVudCAmJiAoIXAuaGFzRm9jdXMgfHwgcC5oYXNGb2N1cygpKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KSB9LCBlbmFibGVkOiBwZSghMSksIGRpc2FibGVkOiBwZSghMCksIGNoZWNrZWQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyByZXR1cm4gImlucHV0IiA9PT0gdCAmJiAhIWUuY2hlY2tlZCB8fCAib3B0aW9uIiA9PT0gdCAmJiAhIWUuc2VsZWN0ZWQgfSwgc2VsZWN0ZWQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsICEwID09PSBlLnNlbGVjdGVkIH0sIGVtcHR5OiBmdW5jdGlvbiAoZSkgeyBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKWlmIChlLm5vZGVUeXBlIDwgNikgcmV0dXJuICExOyByZXR1cm4gITAgfSwgcGFyZW50OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXIucHNldWRvcy5lbXB0eShlKSB9LCBoZWFkZXI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBZLnRlc3QoZS5ub2RlTmFtZSkgfSwgaW5wdXQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBRLnRlc3QoZS5ub2RlTmFtZSkgfSwgYnV0dG9uOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICJpbnB1dCIgPT09IHQgJiYgImJ1dHRvbiIgPT09IGUudHlwZSB8fCAiYnV0dG9uIiA9PT0gdCB9LCB0ZXh0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuICJpbnB1dCIgPT09IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAidGV4dCIgPT09IGUudHlwZSAmJiAobnVsbCA9PSAodCA9IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpIHx8ICJ0ZXh0IiA9PT0gdC50b0xvd2VyQ2FzZSgpKSB9LCBmaXJzdDogaGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gWzBdIH0pLCBsYXN0OiBoZShmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gW3QgLSAxXSB9KSwgZXE6IGhlKGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBbbiA8IDAgPyBuICsgdCA6IG5dIH0pLCBldmVuOiBoZShmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMDsgbiA8IHQ7IG4gKz0gMillLnB1c2gobik7IHJldHVybiBlIH0pLCBvZGQ6IGhlKGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSAxOyBuIDwgdDsgbiArPSAyKWUucHVzaChuKTsgcmV0dXJuIGUgfSksIGx0OiBoZShmdW5jdGlvbiAoZSwgdCwgbikgeyBmb3IgKHZhciByID0gbiA8IDAgPyBuICsgdCA6IG47IC0tciA+PSAwOyllLnB1c2gocik7IHJldHVybiBlIH0pLCBndDogaGUoZnVuY3Rpb24gKGUsIHQsIG4pIHsgZm9yICh2YXIgciA9IG4gPCAwID8gbiArIHQgOiBuOyArK3IgPCB0OyllLnB1c2gocik7IHJldHVybiBlIH0pIH0gfSkucHNldWRvcy5udGggPSByLnBzZXVkb3MuZXE7IGZvciAodCBpbiB7IHJhZGlvOiAhMCwgY2hlY2tib3g6ICEwLCBmaWxlOiAhMCwgcGFzc3dvcmQ6ICEwLCBpbWFnZTogITAgfSkgci5wc2V1ZG9zW3RdID0gZmUodCk7IGZvciAodCBpbiB7IHN1Ym1pdDogITAsIHJlc2V0OiAhMCB9KSByLnBzZXVkb3NbdF0gPSBkZSh0KTsgZnVuY3Rpb24gdmUoKSB7IH0gdmUucHJvdG90eXBlID0gci5maWx0ZXJzID0gci5wc2V1ZG9zLCByLnNldEZpbHRlcnMgPSBuZXcgdmUsIGEgPSBvZS50b2tlbml6ZSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCBpLCBvLCBhLCB1LCBzLCBsLCBjID0gTltlICsgIiAiXTsgaWYgKGMpIHJldHVybiB0ID8gMCA6IGMuc2xpY2UoMCk7IHUgPSBlLCBzID0gW10sIGwgPSByLnByZUZpbHRlcjsgd2hpbGUgKHUpIHsgbiAmJiAhKGkgPSBGLmV4ZWModSkpIHx8IChpICYmICh1ID0gdS5zbGljZShpWzBdLmxlbmd0aCkgfHwgdSksIHMucHVzaChvID0gW10pKSwgbiA9ICExLCAoaSA9IHouZXhlYyh1KSkgJiYgKG4gPSBpLnNoaWZ0KCksIG8ucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBpWzBdLnJlcGxhY2UoJCwgIiAiKSB9KSwgdSA9IHUuc2xpY2Uobi5sZW5ndGgpKTsgZm9yIChhIGluIHIuZmlsdGVyKSAhKGkgPSBYW2FdLmV4ZWModSkpIHx8IGxbYV0gJiYgIShpID0gbFthXShpKSkgfHwgKG4gPSBpLnNoaWZ0KCksIG8ucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBhLCBtYXRjaGVzOiBpIH0pLCB1ID0gdS5zbGljZShuLmxlbmd0aCkpOyBpZiAoIW4pIGJyZWFrIH0gcmV0dXJuIHQgPyB1Lmxlbmd0aCA6IHUgPyBvZS5lcnJvcihlKSA6IE4oZSwgcykuc2xpY2UoMCkgfTsgZnVuY3Rpb24geWUoZSkgeyBmb3IgKHZhciB0ID0gMCwgbiA9IGUubGVuZ3RoLCByID0gIiI7IHQgPCBuOyB0KyspciArPSBlW3RdLnZhbHVlOyByZXR1cm4gciB9IGZ1bmN0aW9uIG1lKGUsIHQsIG4pIHsgdmFyIHIgPSB0LmRpciwgaSA9IHQubmV4dCwgbyA9IGkgfHwgciwgYSA9IG4gJiYgInBhcmVudE5vZGUiID09PSBvLCB1ID0gVCsrOyByZXR1cm4gdC5maXJzdCA/IGZ1bmN0aW9uICh0LCBuLCBpKSB7IHdoaWxlICh0ID0gdFtyXSkgaWYgKDEgPT09IHQubm9kZVR5cGUgfHwgYSkgcmV0dXJuIGUodCwgbiwgaSk7IHJldHVybiAhMSB9IDogZnVuY3Rpb24gKHQsIG4sIHMpIHsgdmFyIGwsIGMsIGYsIGQgPSBbQywgdV07IGlmIChzKSB7IHdoaWxlICh0ID0gdFtyXSkgaWYgKCgxID09PSB0Lm5vZGVUeXBlIHx8IGEpICYmIGUodCwgbiwgcykpIHJldHVybiAhMCB9IGVsc2Ugd2hpbGUgKHQgPSB0W3JdKSBpZiAoMSA9PT0gdC5ub2RlVHlwZSB8fCBhKSBpZiAoZiA9IHRbeF0gfHwgKHRbeF0gPSB7fSksIGMgPSBmW3QudW5pcXVlSURdIHx8IChmW3QudW5pcXVlSURdID0ge30pLCBpICYmIGkgPT09IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgdCA9IHRbcl0gfHwgdDsgZWxzZSB7IGlmICgobCA9IGNbb10pICYmIGxbMF0gPT09IEMgJiYgbFsxXSA9PT0gdSkgcmV0dXJuIGRbMl0gPSBsWzJdOyBpZiAoY1tvXSA9IGQsIGRbMl0gPSBlKHQsIG4sIHMpKSByZXR1cm4gITAgfSByZXR1cm4gITEgfSB9IGZ1bmN0aW9uIGJlKGUpIHsgcmV0dXJuIGUubGVuZ3RoID4gMSA/IGZ1bmN0aW9uICh0LCBuLCByKSB7IHZhciBpID0gZS5sZW5ndGg7IHdoaWxlIChpLS0pIGlmICghZVtpXSh0LCBuLCByKSkgcmV0dXJuICExOyByZXR1cm4gITAgfSA6IGVbMF0gfSBmdW5jdGlvbiB4ZShlLCB0LCBuKSB7IGZvciAodmFyIHIgPSAwLCBpID0gdC5sZW5ndGg7IHIgPCBpOyByKyspb2UoZSwgdFtyXSwgbik7IHJldHVybiBuIH0gZnVuY3Rpb24gd2UoZSwgdCwgbiwgciwgaSkgeyBmb3IgKHZhciBvLCBhID0gW10sIHUgPSAwLCBzID0gZS5sZW5ndGgsIGwgPSBudWxsICE9IHQ7IHUgPCBzOyB1KyspKG8gPSBlW3VdKSAmJiAobiAmJiAhbihvLCByLCBpKSB8fCAoYS5wdXNoKG8pLCBsICYmIHQucHVzaCh1KSkpOyByZXR1cm4gYSB9IGZ1bmN0aW9uIENlKGUsIHQsIG4sIHIsIGksIG8pIHsgcmV0dXJuIHIgJiYgIXJbeF0gJiYgKHIgPSBDZShyKSksIGkgJiYgIWlbeF0gJiYgKGkgPSBDZShpLCBvKSksIHVlKGZ1bmN0aW9uIChvLCBhLCB1LCBzKSB7IHZhciBsLCBjLCBmLCBkID0gW10sIHAgPSBbXSwgaCA9IGEubGVuZ3RoLCBnID0gbyB8fCB4ZSh0IHx8ICIqIiwgdS5ub2RlVHlwZSA/IFt1XSA6IHUsIFtdKSwgdiA9ICFlIHx8ICFvICYmIHQgPyBnIDogd2UoZywgZCwgZSwgdSwgcyksIHkgPSBuID8gaSB8fCAobyA/IGUgOiBoIHx8IHIpID8gW10gOiBhIDogdjsgaWYgKG4gJiYgbih2LCB5LCB1LCBzKSwgcikgeyBsID0gd2UoeSwgcCksIHIobCwgW10sIHUsIHMpLCBjID0gbC5sZW5ndGg7IHdoaWxlIChjLS0pIChmID0gbFtjXSkgJiYgKHlbcFtjXV0gPSAhKHZbcFtjXV0gPSBmKSkgfSBpZiAobykgeyBpZiAoaSB8fCBlKSB7IGlmIChpKSB7IGwgPSBbXSwgYyA9IHkubGVuZ3RoOyB3aGlsZSAoYy0tKSAoZiA9IHlbY10pICYmIGwucHVzaCh2W2NdID0gZik7IGkobnVsbCwgeSA9IFtdLCBsLCBzKSB9IGMgPSB5Lmxlbmd0aDsgd2hpbGUgKGMtLSkgKGYgPSB5W2NdKSAmJiAobCA9IGkgPyBQKG8sIGYpIDogZFtjXSkgPiAtMSAmJiAob1tsXSA9ICEoYVtsXSA9IGYpKSB9IH0gZWxzZSB5ID0gd2UoeSA9PT0gYSA/IHkuc3BsaWNlKGgsIHkubGVuZ3RoKSA6IHkpLCBpID8gaShudWxsLCBhLCB5LCBzKSA6IHEuYXBwbHkoYSwgeSkgfSkgfSBmdW5jdGlvbiBUZShlKSB7IGZvciAodmFyIHQsIG4sIGksIG8gPSBlLmxlbmd0aCwgYSA9IHIucmVsYXRpdmVbZVswXS50eXBlXSwgdSA9IGEgfHwgci5yZWxhdGl2ZVsiICJdLCBzID0gYSA/IDEgOiAwLCBjID0gbWUoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IHQgfSwgdSwgITApLCBmID0gbWUoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFAodCwgZSkgPiAtMSB9LCB1LCAhMCksIGQgPSBbZnVuY3Rpb24gKGUsIG4sIHIpIHsgdmFyIGkgPSAhYSAmJiAociB8fCBuICE9PSBsKSB8fCAoKHQgPSBuKS5ub2RlVHlwZSA/IGMoZSwgbiwgcikgOiBmKGUsIG4sIHIpKTsgcmV0dXJuIHQgPSBudWxsLCBpIH1dOyBzIDwgbzsgcysrKWlmIChuID0gci5yZWxhdGl2ZVtlW3NdLnR5cGVdKSBkID0gW21lKGJlKGQpLCBuKV07IGVsc2UgeyBpZiAoKG4gPSByLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsIGVbc10ubWF0Y2hlcykpW3hdKSB7IGZvciAoaSA9ICsrczsgaSA8IG87IGkrKylpZiAoci5yZWxhdGl2ZVtlW2ldLnR5cGVdKSBicmVhazsgcmV0dXJuIENlKHMgPiAxICYmIGJlKGQpLCBzID4gMSAmJiB5ZShlLnNsaWNlKDAsIHMgLSAxKS5jb25jYXQoeyB2YWx1ZTogIiAiID09PSBlW3MgLSAyXS50eXBlID8gIioiIDogIiIgfSkpLnJlcGxhY2UoJCwgIiQxIiksIG4sIHMgPCBpICYmIFRlKGUuc2xpY2UocywgaSkpLCBpIDwgbyAmJiBUZShlID0gZS5zbGljZShpKSksIGkgPCBvICYmIHllKGUpKSB9IGQucHVzaChuKSB9IHJldHVybiBiZShkKSB9IGZ1bmN0aW9uIEVlKGUsIHQpIHsgdmFyIG4gPSB0Lmxlbmd0aCA+IDAsIGkgPSBlLmxlbmd0aCA+IDAsIG8gPSBmdW5jdGlvbiAobywgYSwgdSwgcywgYykgeyB2YXIgZiwgaCwgdiwgeSA9IDAsIG0gPSAiMCIsIGIgPSBvICYmIFtdLCB4ID0gW10sIHcgPSBsLCBUID0gbyB8fCBpICYmIHIuZmluZC5UQUcoIioiLCBjKSwgRSA9IEMgKz0gbnVsbCA9PSB3ID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgLjEsIE4gPSBULmxlbmd0aDsgZm9yIChjICYmIChsID0gYSA9PT0gcCB8fCBhIHx8IGMpOyBtICE9PSBOICYmIG51bGwgIT0gKGYgPSBUW21dKTsgbSsrKSB7IGlmIChpICYmIGYpIHsgaCA9IDAsIGEgfHwgZi5vd25lckRvY3VtZW50ID09PSBwIHx8IChkKGYpLCB1ID0gIWcpOyB3aGlsZSAodiA9IGVbaCsrXSkgaWYgKHYoZiwgYSB8fCBwLCB1KSkgeyBzLnB1c2goZik7IGJyZWFrIH0gYyAmJiAoQyA9IEUpIH0gbiAmJiAoKGYgPSAhdiAmJiBmKSAmJiB5LS0gLCBvICYmIGIucHVzaChmKSkgfSBpZiAoeSArPSBtLCBuICYmIG0gIT09IHkpIHsgaCA9IDA7IHdoaWxlICh2ID0gdFtoKytdKSB2KGIsIHgsIGEsIHUpOyBpZiAobykgeyBpZiAoeSA+IDApIHdoaWxlIChtLS0pIGJbbV0gfHwgeFttXSB8fCAoeFttXSA9IEwuY2FsbChzKSk7IHggPSB3ZSh4KSB9IHEuYXBwbHkocywgeCksIGMgJiYgIW8gJiYgeC5sZW5ndGggPiAwICYmIHkgKyB0Lmxlbmd0aCA+IDEgJiYgb2UudW5pcXVlU29ydChzKSB9IHJldHVybiBjICYmIChDID0gRSwgbCA9IHcpLCBiIH07IHJldHVybiBuID8gdWUobykgOiBvIH0gcmV0dXJuIHUgPSBvZS5jb21waWxlID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBbXSwgaSA9IFtdLCBvID0ga1tlICsgIiAiXTsgaWYgKCFvKSB7IHQgfHwgKHQgPSBhKGUpKSwgbiA9IHQubGVuZ3RoOyB3aGlsZSAobi0tKSAobyA9IFRlKHRbbl0pKVt4XSA/IHIucHVzaChvKSA6IGkucHVzaChvKTsgKG8gPSBrKGUsIEVlKGksIHIpKSkuc2VsZWN0b3IgPSBlIH0gcmV0dXJuIG8gfSwgcyA9IG9lLnNlbGVjdCA9IGZ1bmN0aW9uIChlLCB0LCBuLCBpKSB7IHZhciBvLCBzLCBsLCBjLCBmLCBkID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlLCBwID0gIWkgJiYgYShlID0gZC5zZWxlY3RvciB8fCBlKTsgaWYgKG4gPSBuIHx8IFtdLCAxID09PSBwLmxlbmd0aCkgeyBpZiAoKHMgPSBwWzBdID0gcFswXS5zbGljZSgwKSkubGVuZ3RoID4gMiAmJiAiSUQiID09PSAobCA9IHNbMF0pLnR5cGUgJiYgOSA9PT0gdC5ub2RlVHlwZSAmJiBnICYmIHIucmVsYXRpdmVbc1sxXS50eXBlXSkgeyBpZiAoISh0ID0gKHIuZmluZC5JRChsLm1hdGNoZXNbMF0ucmVwbGFjZShaLCBlZSksIHQpIHx8IFtdKVswXSkpIHJldHVybiBuOyBkICYmICh0ID0gdC5wYXJlbnROb2RlKSwgZSA9IGUuc2xpY2Uocy5zaGlmdCgpLnZhbHVlLmxlbmd0aCkgfSBvID0gWC5uZWVkc0NvbnRleHQudGVzdChlKSA/IDAgOiBzLmxlbmd0aDsgd2hpbGUgKG8tLSkgeyBpZiAobCA9IHNbb10sIHIucmVsYXRpdmVbYyA9IGwudHlwZV0pIGJyZWFrOyBpZiAoKGYgPSByLmZpbmRbY10pICYmIChpID0gZihsLm1hdGNoZXNbMF0ucmVwbGFjZShaLCBlZSksIEoudGVzdChzWzBdLnR5cGUpICYmIGdlKHQucGFyZW50Tm9kZSkgfHwgdCkpKSB7IGlmIChzLnNwbGljZShvLCAxKSwgIShlID0gaS5sZW5ndGggJiYgeWUocykpKSByZXR1cm4gcS5hcHBseShuLCBpKSwgbjsgYnJlYWsgfSB9IH0gcmV0dXJuIChkIHx8IHUoZSwgcCkpKGksIHQsICFnLCBuLCAhdCB8fCBKLnRlc3QoZSkgJiYgZ2UodC5wYXJlbnROb2RlKSB8fCB0KSwgbiB9LCBuLnNvcnRTdGFibGUgPSB4LnNwbGl0KCIiKS5zb3J0KEEpLmpvaW4oIiIpID09PSB4LCBuLmRldGVjdER1cGxpY2F0ZXMgPSAhIWYsIGQoKSwgbi5zb3J0RGV0YWNoZWQgPSBzZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gMSAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKSB9KSwgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4iLCAiIyIgPT09IGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSB9KSB8fCBsZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICghbikgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsICJ0eXBlIiA9PT0gdC50b0xvd2VyQ2FzZSgpID8gMSA6IDIpIH0pLCBuLmF0dHJpYnV0ZXMgJiYgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxpbnB1dC8+IiwgZS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksICIiID09PSBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpIH0pIHx8IGxlKCJ2YWx1ZSIsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICghbiAmJiAiaW5wdXQiID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBlLmRlZmF1bHRWYWx1ZSB9KSwgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgfSkgfHwgbGUoSCwgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHI7IGlmICghbikgcmV0dXJuICEwID09PSBlW3RdID8gdC50b0xvd2VyQ2FzZSgpIDogKHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpICYmIHIuc3BlY2lmaWVkID8gci52YWx1ZSA6IG51bGwgfSksIG9lIH0oZSk7IHcuZmluZCA9IEUsIHcuZXhwciA9IEUuc2VsZWN0b3JzLCB3LmV4cHJbIjoiXSA9IHcuZXhwci5wc2V1ZG9zLCB3LnVuaXF1ZVNvcnQgPSB3LnVuaXF1ZSA9IEUudW5pcXVlU29ydCwgdy50ZXh0ID0gRS5nZXRUZXh0LCB3LmlzWE1MRG9jID0gRS5pc1hNTCwgdy5jb250YWlucyA9IEUuY29udGFpbnMsIHcuZXNjYXBlU2VsZWN0b3IgPSBFLmVzY2FwZTsgdmFyIE4gPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9IFtdLCBpID0gdm9pZCAwICE9PSBuOyB3aGlsZSAoKGUgPSBlW3RdKSAmJiA5ICE9PSBlLm5vZGVUeXBlKSBpZiAoMSA9PT0gZS5ub2RlVHlwZSkgeyBpZiAoaSAmJiB3KGUpLmlzKG4pKSBicmVhazsgci5wdXNoKGUpIH0gcmV0dXJuIHIgfSwgayA9IGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSBbXTsgZTsgZSA9IGUubmV4dFNpYmxpbmcpMSA9PT0gZS5ub2RlVHlwZSAmJiBlICE9PSB0ICYmIG4ucHVzaChlKTsgcmV0dXJuIG4gfSwgQSA9IHcuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7IGZ1bmN0aW9uIEQoZSwgdCkgeyByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQudG9Mb3dlckNhc2UoKSB9IHZhciBTID0gL148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7IGZ1bmN0aW9uIEwoZSwgdCwgbikgeyByZXR1cm4gZyh0KSA/IHcuZ3JlcChlLCBmdW5jdGlvbiAoZSwgcikgeyByZXR1cm4gISF0LmNhbGwoZSwgciwgZSkgIT09IG4gfSkgOiB0Lm5vZGVUeXBlID8gdy5ncmVwKGUsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID09PSB0ICE9PSBuIH0pIDogInN0cmluZyIgIT0gdHlwZW9mIHQgPyB3LmdyZXAoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHMuY2FsbCh0LCBlKSA+IC0xICE9PSBuIH0pIDogdy5maWx0ZXIodCwgZSwgbikgfSB3LmZpbHRlciA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gdFswXTsgcmV0dXJuIG4gJiYgKGUgPSAiOm5vdCgiICsgZSArICIpIiksIDEgPT09IHQubGVuZ3RoICYmIDEgPT09IHIubm9kZVR5cGUgPyB3LmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsIGUpID8gW3JdIDogW10gOiB3LmZpbmQubWF0Y2hlcyhlLCB3LmdyZXAodCwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUgfSkpIH0sIHcuZm4uZXh0ZW5kKHsgZmluZDogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIgPSB0aGlzLmxlbmd0aCwgaSA9IHRoaXM7IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHcoZSkuZmlsdGVyKGZ1bmN0aW9uICgpIHsgZm9yICh0ID0gMDsgdCA8IHI7IHQrKylpZiAody5jb250YWlucyhpW3RdLCB0aGlzKSkgcmV0dXJuICEwIH0pKTsgZm9yIChuID0gdGhpcy5wdXNoU3RhY2soW10pLCB0ID0gMDsgdCA8IHI7IHQrKyl3LmZpbmQoZSwgaVt0XSwgbik7IHJldHVybiByID4gMSA/IHcudW5pcXVlU29ydChuKSA6IG4gfSwgZmlsdGVyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2soTCh0aGlzLCBlIHx8IFtdLCAhMSkpIH0sIG5vdDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKEwodGhpcywgZSB8fCBbXSwgITApKSB9LCBpczogZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhTCh0aGlzLCAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBBLnRlc3QoZSkgPyB3KGUpIDogZSB8fCBbXSwgITEpLmxlbmd0aCB9IH0pOyB2YXIgaiwgcSA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87ICh3LmZuLmluaXQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgaSwgbzsgaWYgKCFlKSByZXR1cm4gdGhpczsgaWYgKG4gPSBuIHx8IGosICJzdHJpbmciID09IHR5cGVvZiBlKSB7IGlmICghKGkgPSAiPCIgPT09IGVbMF0gJiYgIj4iID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgZS5sZW5ndGggPj0gMyA/IFtudWxsLCBlLCBudWxsXSA6IHEuZXhlYyhlKSkgfHwgIWlbMV0gJiYgdCkgcmV0dXJuICF0IHx8IHQuanF1ZXJ5ID8gKHQgfHwgbikuZmluZChlKSA6IHRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTsgaWYgKGlbMV0pIHsgaWYgKHQgPSB0IGluc3RhbmNlb2YgdyA/IHRbMF0gOiB0LCB3Lm1lcmdlKHRoaXMsIHcucGFyc2VIVE1MKGlbMV0sIHQgJiYgdC5ub2RlVHlwZSA/IHQub3duZXJEb2N1bWVudCB8fCB0IDogciwgITApKSwgUy50ZXN0KGlbMV0pICYmIHcuaXNQbGFpbk9iamVjdCh0KSkgZm9yIChpIGluIHQpIGcodGhpc1tpXSkgPyB0aGlzW2ldKHRbaV0pIDogdGhpcy5hdHRyKGksIHRbaV0pOyByZXR1cm4gdGhpcyB9IHJldHVybiAobyA9IHIuZ2V0RWxlbWVudEJ5SWQoaVsyXSkpICYmICh0aGlzWzBdID0gbywgdGhpcy5sZW5ndGggPSAxKSwgdGhpcyB9IHJldHVybiBlLm5vZGVUeXBlID8gKHRoaXNbMF0gPSBlLCB0aGlzLmxlbmd0aCA9IDEsIHRoaXMpIDogZyhlKSA/IHZvaWQgMCAhPT0gbi5yZWFkeSA/IG4ucmVhZHkoZSkgOiBlKHcpIDogdy5tYWtlQXJyYXkoZSwgdGhpcykgfSkucHJvdG90eXBlID0gdy5mbiwgaiA9IHcocik7IHZhciBPID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sIFAgPSB7IGNoaWxkcmVuOiAhMCwgY29udGVudHM6ICEwLCBuZXh0OiAhMCwgcHJldjogITAgfTsgdy5mbi5leHRlbmQoeyBoYXM6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdyhlLCB0aGlzKSwgbiA9IHQubGVuZ3RoOyByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlID0gMDsgZSA8IG47IGUrKylpZiAody5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwIH0pIH0sIGNsb3Nlc3Q6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHRoaXMubGVuZ3RoLCBvID0gW10sIGEgPSAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiB3KGUpOyBpZiAoIUEudGVzdChlKSkgZm9yICg7IHIgPCBpOyByKyspZm9yIChuID0gdGhpc1tyXTsgbiAmJiBuICE9PSB0OyBuID0gbi5wYXJlbnROb2RlKWlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyBhLmluZGV4KG4pID4gLTEgOiAxID09PSBuLm5vZGVUeXBlICYmIHcuZmluZC5tYXRjaGVzU2VsZWN0b3IobiwgZSkpKSB7IG8ucHVzaChuKTsgYnJlYWsgfSByZXR1cm4gdGhpcy5wdXNoU3RhY2soby5sZW5ndGggPiAxID8gdy51bmlxdWVTb3J0KG8pIDogbykgfSwgaW5kZXg6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID8gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBzLmNhbGwodyhlKSwgdGhpc1swXSkgOiBzLmNhbGwodGhpcywgZS5qcXVlcnkgPyBlWzBdIDogZSkgOiB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTEgfSwgYWRkOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2sody51bmlxdWVTb3J0KHcubWVyZ2UodGhpcy5nZXQoKSwgdyhlLCB0KSkpKSB9LCBhZGRCYWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5hZGQobnVsbCA9PSBlID8gdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSkgfSB9KTsgZnVuY3Rpb24gSChlLCB0KSB7IHdoaWxlICgoZSA9IGVbdF0pICYmIDEgIT09IGUubm9kZVR5cGUpOyByZXR1cm4gZSB9IHcuZWFjaCh7IHBhcmVudDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIDExICE9PSB0Lm5vZGVUeXBlID8gdCA6IG51bGwgfSwgcGFyZW50czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIE4oZSwgInBhcmVudE5vZGUiKSB9LCBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBOKGUsICJwYXJlbnROb2RlIiwgbikgfSwgbmV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEgoZSwgIm5leHRTaWJsaW5nIikgfSwgcHJldjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEgoZSwgInByZXZpb3VzU2libGluZyIpIH0sIG5leHRBbGw6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBOKGUsICJuZXh0U2libGluZyIpIH0sIHByZXZBbGw6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBOKGUsICJwcmV2aW91c1NpYmxpbmciKSB9LCBuZXh0VW50aWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBOKGUsICJuZXh0U2libGluZyIsIG4pIH0sIHByZXZVbnRpbDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIE4oZSwgInByZXZpb3VzU2libGluZyIsIG4pIH0sIHNpYmxpbmdzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaygoZS5wYXJlbnROb2RlIHx8IHt9KS5maXJzdENoaWxkLCBlKSB9LCBjaGlsZHJlbjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGsoZS5maXJzdENoaWxkKSB9LCBjb250ZW50czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEQoZSwgImlmcmFtZSIpID8gZS5jb250ZW50RG9jdW1lbnQgOiAoRChlLCAidGVtcGxhdGUiKSAmJiAoZSA9IGUuY29udGVudCB8fCBlKSwgdy5tZXJnZShbXSwgZS5jaGlsZE5vZGVzKSkgfSB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmZuW2VdID0gZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSB3Lm1hcCh0aGlzLCB0LCBuKTsgcmV0dXJuICJVbnRpbCIgIT09IGUuc2xpY2UoLTUpICYmIChyID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgKGkgPSB3LmZpbHRlcihyLCBpKSksIHRoaXMubGVuZ3RoID4gMSAmJiAoUFtlXSB8fCB3LnVuaXF1ZVNvcnQoaSksIE8udGVzdChlKSAmJiBpLnJldmVyc2UoKSksIHRoaXMucHVzaFN0YWNrKGkpIH0gfSk7IHZhciBJID0gL1teXHgyMFx0XHJcblxmXSsvZzsgZnVuY3Rpb24gUihlKSB7IHZhciB0ID0ge307IHJldHVybiB3LmVhY2goZS5tYXRjaChJKSB8fCBbXSwgZnVuY3Rpb24gKGUsIG4pIHsgdFtuXSA9ICEwIH0pLCB0IH0gdy5DYWxsYmFja3MgPSBmdW5jdGlvbiAoZSkgeyBlID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBSKGUpIDogdy5leHRlbmQoe30sIGUpOyB2YXIgdCwgbiwgciwgaSwgbyA9IFtdLCBhID0gW10sIHUgPSAtMSwgcyA9IGZ1bmN0aW9uICgpIHsgZm9yIChpID0gaSB8fCBlLm9uY2UsIHIgPSB0ID0gITA7IGEubGVuZ3RoOyB1ID0gLTEpIHsgbiA9IGEuc2hpZnQoKTsgd2hpbGUgKCsrdSA8IG8ubGVuZ3RoKSAhMSA9PT0gb1t1XS5hcHBseShuWzBdLCBuWzFdKSAmJiBlLnN0b3BPbkZhbHNlICYmICh1ID0gby5sZW5ndGgsIG4gPSAhMSkgfSBlLm1lbW9yeSB8fCAobiA9ICExKSwgdCA9ICExLCBpICYmIChvID0gbiA/IFtdIDogIiIpIH0sIGwgPSB7IGFkZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbyAmJiAobiAmJiAhdCAmJiAodSA9IG8ubGVuZ3RoIC0gMSwgYS5wdXNoKG4pKSwgZnVuY3Rpb24gdChuKSB7IHcuZWFjaChuLCBmdW5jdGlvbiAobiwgcikgeyBnKHIpID8gZS51bmlxdWUgJiYgbC5oYXMocikgfHwgby5wdXNoKHIpIDogciAmJiByLmxlbmd0aCAmJiAic3RyaW5nIiAhPT0gYihyKSAmJiB0KHIpIH0pIH0oYXJndW1lbnRzKSwgbiAmJiAhdCAmJiBzKCkpLCB0aGlzIH0sIHJlbW92ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG47IHdoaWxlICgobiA9IHcuaW5BcnJheSh0LCBvLCBuKSkgPiAtMSkgby5zcGxpY2UobiwgMSksIG4gPD0gdSAmJiB1LS0gfSksIHRoaXMgfSwgaGFzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA/IHcuaW5BcnJheShlLCBvKSA+IC0xIDogby5sZW5ndGggPiAwIH0sIGVtcHR5OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvICYmIChvID0gW10pLCB0aGlzIH0sIGRpc2FibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkgPSBhID0gW10sIG8gPSBuID0gIiIsIHRoaXMgfSwgZGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFvIH0sIGxvY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkgPSBhID0gW10sIG4gfHwgdCB8fCAobyA9IG4gPSAiIiksIHRoaXMgfSwgbG9ja2VkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIWkgfSwgZmlyZVdpdGg6IGZ1bmN0aW9uIChlLCBuKSB7IHJldHVybiBpIHx8IChuID0gW2UsIChuID0gbiB8fCBbXSkuc2xpY2UgPyBuLnNsaWNlKCkgOiBuXSwgYS5wdXNoKG4pLCB0IHx8IHMoKSksIHRoaXMgfSwgZmlyZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbC5maXJlV2l0aCh0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIGZpcmVkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIXIgfSB9OyByZXR1cm4gbCB9OyBmdW5jdGlvbiBCKGUpIHsgcmV0dXJuIGUgfSBmdW5jdGlvbiBNKGUpIHsgdGhyb3cgZSB9IGZ1bmN0aW9uIFcoZSwgdCwgbiwgcikgeyB2YXIgaTsgdHJ5IHsgZSAmJiBnKGkgPSBlLnByb21pc2UpID8gaS5jYWxsKGUpLmRvbmUodCkuZmFpbChuKSA6IGUgJiYgZyhpID0gZS50aGVuKSA/IGkuY2FsbChlLCB0LCBuKSA6IHQuYXBwbHkodm9pZCAwLCBbZV0uc2xpY2UocikpIH0gY2F0Y2ggKGUpIHsgbi5hcHBseSh2b2lkIDAsIFtlXSkgfSB9IHcuZXh0ZW5kKHsgRGVmZXJyZWQ6IGZ1bmN0aW9uICh0KSB7IHZhciBuID0gW1sibm90aWZ5IiwgInByb2dyZXNzIiwgdy5DYWxsYmFja3MoIm1lbW9yeSIpLCB3LkNhbGxiYWNrcygibWVtb3J5IiksIDJdLCBbInJlc29sdmUiLCAiZG9uZSIsIHcuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMCwgInJlc29sdmVkIl0sIFsicmVqZWN0IiwgImZhaWwiLCB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgdy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIDEsICJyZWplY3RlZCJdXSwgciA9ICJwZW5kaW5nIiwgaSA9IHsgc3RhdGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIgfSwgYWx3YXlzOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksIHRoaXMgfSwgImNhdGNoIjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGkudGhlbihudWxsLCBlKSB9LCBwaXBlOiBmdW5jdGlvbiAoKSB7IHZhciBlID0gYXJndW1lbnRzOyByZXR1cm4gdy5EZWZlcnJlZChmdW5jdGlvbiAodCkgeyB3LmVhY2gobiwgZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSBnKGVbcls0XV0pICYmIGVbcls0XV07IG9bclsxXV0oZnVuY3Rpb24gKCkgeyB2YXIgZSA9IGkgJiYgaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyBlICYmIGcoZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLnByb2dyZXNzKHQubm90aWZ5KS5kb25lKHQucmVzb2x2ZSkuZmFpbCh0LnJlamVjdCkgOiB0W3JbMF0gKyAiV2l0aCJdKHRoaXMsIGkgPyBbZV0gOiBhcmd1bWVudHMpIH0pIH0pLCBlID0gbnVsbCB9KS5wcm9taXNlKCkgfSwgdGhlbjogZnVuY3Rpb24gKHQsIHIsIGkpIHsgdmFyIG8gPSAwOyBmdW5jdGlvbiBhKHQsIG4sIHIsIGkpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIHUgPSB0aGlzLCBzID0gYXJndW1lbnRzLCBsID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgbDsgaWYgKCEodCA8IG8pKSB7IGlmICgoZSA9IHIuYXBwbHkodSwgcykpID09PSBuLnByb21pc2UoKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uIik7IGwgPSBlICYmICgib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSAmJiBlLnRoZW4sIGcobCkgPyBpID8gbC5jYWxsKGUsIGEobywgbiwgQiwgaSksIGEobywgbiwgTSwgaSkpIDogKG8rKyAsIGwuY2FsbChlLCBhKG8sIG4sIEIsIGkpLCBhKG8sIG4sIE0sIGkpLCBhKG8sIG4sIEIsIG4ubm90aWZ5V2l0aCkpKSA6IChyICE9PSBCICYmICh1ID0gdm9pZCAwLCBzID0gW2VdKSwgKGkgfHwgbi5yZXNvbHZlV2l0aCkodSwgcykpIH0gfSwgYyA9IGkgPyBsIDogZnVuY3Rpb24gKCkgeyB0cnkgeyBsKCkgfSBjYXRjaCAoZSkgeyB3LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgdy5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGUsIGMuc3RhY2tUcmFjZSksIHQgKyAxID49IG8gJiYgKHIgIT09IE0gJiYgKHUgPSB2b2lkIDAsIHMgPSBbZV0pLCBuLnJlamVjdFdpdGgodSwgcykpIH0gfTsgdCA/IGMoKSA6ICh3LkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAoYy5zdGFja1RyYWNlID0gdy5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksIGUuc2V0VGltZW91dChjKSkgfSB9IHJldHVybiB3LkRlZmVycmVkKGZ1bmN0aW9uIChlKSB7IG5bMF1bM10uYWRkKGEoMCwgZSwgZyhpKSA/IGkgOiBCLCBlLm5vdGlmeVdpdGgpKSwgblsxXVszXS5hZGQoYSgwLCBlLCBnKHQpID8gdCA6IEIpKSwgblsyXVszXS5hZGQoYSgwLCBlLCBnKHIpID8gciA6IE0pKSB9KS5wcm9taXNlKCkgfSwgcHJvbWlzZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgIT0gZSA/IHcuZXh0ZW5kKGUsIGkpIDogaSB9IH0sIG8gPSB7fTsgcmV0dXJuIHcuZWFjaChuLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgYSA9IHRbMl0sIHUgPSB0WzVdOyBpW3RbMV1dID0gYS5hZGQsIHUgJiYgYS5hZGQoZnVuY3Rpb24gKCkgeyByID0gdSB9LCBuWzMgLSBlXVsyXS5kaXNhYmxlLCBuWzMgLSBlXVszXS5kaXNhYmxlLCBuWzBdWzJdLmxvY2ssIG5bMF1bM10ubG9jayksIGEuYWRkKHRbM10uZmlyZSksIG9bdFswXV0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvW3RbMF0gKyAiV2l0aCJdKHRoaXMgPT09IG8gPyB2b2lkIDAgOiB0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIG9bdFswXSArICJXaXRoIl0gPSBhLmZpcmVXaXRoIH0pLCBpLnByb21pc2UobyksIHQgJiYgdC5jYWxsKG8sIG8pLCBvIH0sIHdoZW46IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCwgbiA9IHQsIHIgPSBBcnJheShuKSwgaSA9IG8uY2FsbChhcmd1bWVudHMpLCBhID0gdy5EZWZlcnJlZCgpLCB1ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGZ1bmN0aW9uIChuKSB7IHJbZV0gPSB0aGlzLCBpW2VdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBvLmNhbGwoYXJndW1lbnRzKSA6IG4sIC0tdCB8fCBhLnJlc29sdmVXaXRoKHIsIGkpIH0gfTsgaWYgKHQgPD0gMSAmJiAoVyhlLCBhLmRvbmUodShuKSkucmVzb2x2ZSwgYS5yZWplY3QsICF0KSwgInBlbmRpbmciID09PSBhLnN0YXRlKCkgfHwgZyhpW25dICYmIGlbbl0udGhlbikpKSByZXR1cm4gYS50aGVuKCk7IHdoaWxlIChuLS0pIFcoaVtuXSwgdShuKSwgYS5yZWplY3QpOyByZXR1cm4gYS5wcm9taXNlKCkgfSB9KTsgdmFyICQgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsgdy5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24gKHQsIG4pIHsgZS5jb25zb2xlICYmIGUuY29uc29sZS53YXJuICYmIHQgJiYgJC50ZXN0KHQubmFtZSkgJiYgZS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyB0Lm1lc3NhZ2UsIHQuc3RhY2ssIG4pIH0sIHcucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiAodCkgeyBlLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0aHJvdyB0IH0pIH07IHZhciBGID0gdy5EZWZlcnJlZCgpOyB3LmZuLnJlYWR5ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEYudGhlbihlKVsiY2F0Y2giXShmdW5jdGlvbiAoZSkgeyB3LnJlYWR5RXhjZXB0aW9uKGUpIH0pLCB0aGlzIH0sIHcuZXh0ZW5kKHsgaXNSZWFkeTogITEsIHJlYWR5V2FpdDogMSwgcmVhZHk6IGZ1bmN0aW9uIChlKSB7ICghMCA9PT0gZSA/IC0tdy5yZWFkeVdhaXQgOiB3LmlzUmVhZHkpIHx8ICh3LmlzUmVhZHkgPSAhMCwgITAgIT09IGUgJiYgLS13LnJlYWR5V2FpdCA+IDAgfHwgRi5yZXNvbHZlV2l0aChyLCBbd10pKSB9IH0pLCB3LnJlYWR5LnRoZW4gPSBGLnRoZW47IGZ1bmN0aW9uIHooKSB7IHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHopLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCB6KSwgdy5yZWFkeSgpIH0gImNvbXBsZXRlIiA9PT0gci5yZWFkeVN0YXRlIHx8ICJsb2FkaW5nIiAhPT0gci5yZWFkeVN0YXRlICYmICFyLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCA/IGUuc2V0VGltZW91dCh3LnJlYWR5KSA6IChyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB6KSwgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgeikpOyB2YXIgXyA9IGZ1bmN0aW9uIChlLCB0LCBuLCByLCBpLCBvLCBhKSB7IHZhciB1ID0gMCwgcyA9IGUubGVuZ3RoLCBsID0gbnVsbCA9PSBuOyBpZiAoIm9iamVjdCIgPT09IGIobikpIHsgaSA9ICEwOyBmb3IgKHUgaW4gbikgXyhlLCB0LCB1LCBuW3VdLCAhMCwgbywgYSkgfSBlbHNlIGlmICh2b2lkIDAgIT09IHIgJiYgKGkgPSAhMCwgZyhyKSB8fCAoYSA9ICEwKSwgbCAmJiAoYSA/ICh0LmNhbGwoZSwgciksIHQgPSBudWxsKSA6IChsID0gdCwgdCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBsLmNhbGwodyhlKSwgbikgfSkpLCB0KSkgZm9yICg7IHUgPCBzOyB1KyspdChlW3VdLCBuLCBhID8gciA6IHIuY2FsbChlW3VdLCB1LCB0KGVbdV0sIG4pKSk7IHJldHVybiBpID8gZSA6IGwgPyB0LmNhbGwoZSkgOiBzID8gdChlWzBdLCBuKSA6IG8gfSwgVSA9IC9eLW1zLS8sIFYgPSAvLShbYS16XSkvZzsgZnVuY3Rpb24gWChlLCB0KSB7IHJldHVybiB0LnRvVXBwZXJDYXNlKCkgfSBmdW5jdGlvbiBRKGUpIHsgcmV0dXJuIGUucmVwbGFjZShVLCAibXMtIikucmVwbGFjZShWLCBYKSB9IHZhciBZID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUgfHwgOSA9PT0gZS5ub2RlVHlwZSB8fCAhK2Uubm9kZVR5cGUgfTsgZnVuY3Rpb24gRygpIHsgdGhpcy5leHBhbmRvID0gdy5leHBhbmRvICsgRy51aWQrKyB9IEcudWlkID0gMSwgRy5wcm90b3R5cGUgPSB7IGNhY2hlOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGVbdGhpcy5leHBhbmRvXTsgcmV0dXJuIHQgfHwgKHQgPSB7fSwgWShlKSAmJiAoZS5ub2RlVHlwZSA/IGVbdGhpcy5leHBhbmRvXSA9IHQgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdGhpcy5leHBhbmRvLCB7IHZhbHVlOiB0LCBjb25maWd1cmFibGU6ICEwIH0pKSksIHQgfSwgc2V0OiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSA9IHRoaXMuY2FjaGUoZSk7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgaVtRKHQpXSA9IG47IGVsc2UgZm9yIChyIGluIHQpIGlbUShyKV0gPSB0W3JdOyByZXR1cm4gaSB9LCBnZXQ6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB2b2lkIDAgPT09IHQgPyB0aGlzLmNhY2hlKGUpIDogZVt0aGlzLmV4cGFuZG9dICYmIGVbdGhpcy5leHBhbmRvXVtRKHQpXSB9LCBhY2Nlc3M6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiB2b2lkIDAgPT09IHQgfHwgdCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiB2b2lkIDAgPT09IG4gPyB0aGlzLmdldChlLCB0KSA6ICh0aGlzLnNldChlLCB0LCBuKSwgdm9pZCAwICE9PSBuID8gbiA6IHQpIH0sIHJlbW92ZTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBlW3RoaXMuZXhwYW5kb107IGlmICh2b2lkIDAgIT09IHIpIHsgaWYgKHZvaWQgMCAhPT0gdCkgeyBuID0gKHQgPSBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoUSkgOiAodCA9IFEodCkpIGluIHIgPyBbdF0gOiB0Lm1hdGNoKEkpIHx8IFtdKS5sZW5ndGg7IHdoaWxlIChuLS0pIGRlbGV0ZSByW3Rbbl1dIH0gKHZvaWQgMCA9PT0gdCB8fCB3LmlzRW1wdHlPYmplY3QocikpICYmIChlLm5vZGVUeXBlID8gZVt0aGlzLmV4cGFuZG9dID0gdm9pZCAwIDogZGVsZXRlIGVbdGhpcy5leHBhbmRvXSkgfSB9LCBoYXNEYXRhOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGVbdGhpcy5leHBhbmRvXTsgcmV0dXJuIHZvaWQgMCAhPT0gdCAmJiAhdy5pc0VtcHR5T2JqZWN0KHQpIH0gfTsgdmFyIEsgPSBuZXcgRywgSiA9IG5ldyBHLCBaID0gL14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLywgZWUgPSAvW0EtWl0vZzsgZnVuY3Rpb24gdGUoZSkgeyByZXR1cm4gInRydWUiID09PSBlIHx8ICJmYWxzZSIgIT09IGUgJiYgKCJudWxsIiA9PT0gZSA/IG51bGwgOiBlID09PSArZSArICIiID8gK2UgOiBaLnRlc3QoZSkgPyBKU09OLnBhcnNlKGUpIDogZSkgfSBmdW5jdGlvbiBuZShlLCB0LCBuKSB7IHZhciByOyBpZiAodm9pZCAwID09PSBuICYmIDEgPT09IGUubm9kZVR5cGUpIGlmIChyID0gImRhdGEtIiArIHQucmVwbGFjZShlZSwgIi0kJiIpLnRvTG93ZXJDYXNlKCksICJzdHJpbmciID09IHR5cGVvZiAobiA9IGUuZ2V0QXR0cmlidXRlKHIpKSkgeyB0cnkgeyBuID0gdGUobikgfSBjYXRjaCAoZSkgeyB9IEouc2V0KGUsIHQsIG4pIH0gZWxzZSBuID0gdm9pZCAwOyByZXR1cm4gbiB9IHcuZXh0ZW5kKHsgaGFzRGF0YTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEouaGFzRGF0YShlKSB8fCBLLmhhc0RhdGEoZSkgfSwgZGF0YTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIEouYWNjZXNzKGUsIHQsIG4pIH0sIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IEoucmVtb3ZlKGUsIHQpIH0sIF9kYXRhOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gSy5hY2Nlc3MoZSwgdCwgbikgfSwgX3JlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IEsucmVtb3ZlKGUsIHQpIH0gfSksIHcuZm4uZXh0ZW5kKHsgZGF0YTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGksIG8gPSB0aGlzWzBdLCBhID0gbyAmJiBvLmF0dHJpYnV0ZXM7IGlmICh2b2lkIDAgPT09IGUpIHsgaWYgKHRoaXMubGVuZ3RoICYmIChpID0gSi5nZXQobyksIDEgPT09IG8ubm9kZVR5cGUgJiYgIUsuZ2V0KG8sICJoYXNEYXRhQXR0cnMiKSkpIHsgbiA9IGEubGVuZ3RoOyB3aGlsZSAobi0tKSBhW25dICYmIDAgPT09IChyID0gYVtuXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChyID0gUShyLnNsaWNlKDUpKSwgbmUobywgciwgaVtyXSkpOyBLLnNldChvLCAiaGFzRGF0YUF0dHJzIiwgITApIH0gcmV0dXJuIGkgfSByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgPyB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyBKLnNldCh0aGlzLCBlKSB9KSA6IF8odGhpcywgZnVuY3Rpb24gKHQpIHsgdmFyIG47IGlmIChvICYmIHZvaWQgMCA9PT0gdCkgeyBpZiAodm9pZCAwICE9PSAobiA9IEouZ2V0KG8sIGUpKSkgcmV0dXJuIG47IGlmICh2b2lkIDAgIT09IChuID0gbmUobywgZSkpKSByZXR1cm4gbiB9IGVsc2UgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgSi5zZXQodGhpcywgZSwgdCkgfSkgfSwgbnVsbCwgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsICEwKSB9LCByZW1vdmVEYXRhOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgSi5yZW1vdmUodGhpcywgZSkgfSkgfSB9KSwgdy5leHRlbmQoeyBxdWV1ZTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHI7IGlmIChlKSByZXR1cm4gdCA9ICh0IHx8ICJmeCIpICsgInF1ZXVlIiwgciA9IEsuZ2V0KGUsIHQpLCBuICYmICghciB8fCBBcnJheS5pc0FycmF5KG4pID8gciA9IEsuYWNjZXNzKGUsIHQsIHcubWFrZUFycmF5KG4pKSA6IHIucHVzaChuKSksIHIgfHwgW10gfSwgZGVxdWV1ZTogZnVuY3Rpb24gKGUsIHQpIHsgdCA9IHQgfHwgImZ4IjsgdmFyIG4gPSB3LnF1ZXVlKGUsIHQpLCByID0gbi5sZW5ndGgsIGkgPSBuLnNoaWZ0KCksIG8gPSB3Ll9xdWV1ZUhvb2tzKGUsIHQpLCBhID0gZnVuY3Rpb24gKCkgeyB3LmRlcXVldWUoZSwgdCkgfTsgImlucHJvZ3Jlc3MiID09PSBpICYmIChpID0gbi5zaGlmdCgpLCByLS0pLCBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpIH0sIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHQgKyAicXVldWVIb29rcyI7IHJldHVybiBLLmdldChlLCBuKSB8fCBLLmFjY2VzcyhlLCBuLCB7IGVtcHR5OiB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24gKCkgeyBLLnJlbW92ZShlLCBbdCArICJxdWV1ZSIsIG5dKSB9KSB9KSB9IH0pLCB3LmZuLmV4dGVuZCh7IHF1ZXVlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IDI7IHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAodCA9IGUsIGUgPSAiZngiLCBuLS0pLCBhcmd1bWVudHMubGVuZ3RoIDwgbiA/IHcucXVldWUodGhpc1swXSwgZSkgOiB2b2lkIDAgPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdmFyIG4gPSB3LnF1ZXVlKHRoaXMsIGUsIHQpOyB3Ll9xdWV1ZUhvb2tzKHRoaXMsIGUpLCAiZngiID09PSBlICYmICJpbnByb2dyZXNzIiAhPT0gblswXSAmJiB3LmRlcXVldWUodGhpcywgZSkgfSkgfSwgZGVxdWV1ZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHcuZGVxdWV1ZSh0aGlzLCBlKSB9KSB9LCBjbGVhclF1ZXVlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKSB9LCBwcm9taXNlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciA9IDEsIGkgPSB3LkRlZmVycmVkKCksIG8gPSB0aGlzLCBhID0gdGhpcy5sZW5ndGgsIHUgPSBmdW5jdGlvbiAoKSB7IC0tciB8fCBpLnJlc29sdmVXaXRoKG8sIFtvXSkgfTsgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKHQgPSBlLCBlID0gdm9pZCAwKSwgZSA9IGUgfHwgImZ4Ijsgd2hpbGUgKGEtLSkgKG4gPSBLLmdldChvW2FdLCBlICsgInF1ZXVlSG9va3MiKSkgJiYgbi5lbXB0eSAmJiAocisrICwgbi5lbXB0eS5hZGQodSkpOyByZXR1cm4gdSgpLCBpLnByb21pc2UodCkgfSB9KTsgdmFyIHJlID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsIGllID0gbmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgcmUgKyAiKShbYS16JV0qKSQiLCAiaSIpLCBvZSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sIGFlID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuICJub25lIiA9PT0gKGUgPSB0IHx8IGUpLnN0eWxlLmRpc3BsYXkgfHwgIiIgPT09IGUuc3R5bGUuZGlzcGxheSAmJiB3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgJiYgIm5vbmUiID09PSB3LmNzcyhlLCAiZGlzcGxheSIpIH0sIHVlID0gZnVuY3Rpb24gKGUsIHQsIG4sIHIpIHsgdmFyIGksIG8sIGEgPSB7fTsgZm9yIChvIGluIHQpIGFbb10gPSBlLnN0eWxlW29dLCBlLnN0eWxlW29dID0gdFtvXTsgaSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7IGZvciAobyBpbiB0KSBlLnN0eWxlW29dID0gYVtvXTsgcmV0dXJuIGkgfTsgZnVuY3Rpb24gc2UoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSA9IDIwLCB1ID0gciA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIuY3VyKCkgfSA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHcuY3NzKGUsIHQsICIiKSB9LCBzID0gdSgpLCBsID0gbiAmJiBuWzNdIHx8ICh3LmNzc051bWJlclt0XSA/ICIiIDogInB4IiksIGMgPSAody5jc3NOdW1iZXJbdF0gfHwgInB4IiAhPT0gbCAmJiArcykgJiYgaWUuZXhlYyh3LmNzcyhlLCB0KSk7IGlmIChjICYmIGNbM10gIT09IGwpIHsgcyAvPSAyLCBsID0gbCB8fCBjWzNdLCBjID0gK3MgfHwgMTsgd2hpbGUgKGEtLSkgdy5zdHlsZShlLCB0LCBjICsgbCksICgxIC0gbykgKiAoMSAtIChvID0gdSgpIC8gcyB8fCAuNSkpIDw9IDAgJiYgKGEgPSAwKSwgYyAvPSBvOyBjICo9IDIsIHcuc3R5bGUoZSwgdCwgYyArIGwpLCBuID0gbiB8fCBbXSB9IHJldHVybiBuICYmIChjID0gK2MgfHwgK3MgfHwgMCwgaSA9IG5bMV0gPyBjICsgKG5bMV0gKyAxKSAqIG5bMl0gOiArblsyXSwgciAmJiAoci51bml0ID0gbCwgci5zdGFydCA9IGMsIHIuZW5kID0gaSkpLCBpIH0gdmFyIGxlID0ge307IGZ1bmN0aW9uIGNlKGUpIHsgdmFyIHQsIG4gPSBlLm93bmVyRG9jdW1lbnQsIHIgPSBlLm5vZGVOYW1lLCBpID0gbGVbcl07IHJldHVybiBpIHx8ICh0ID0gbi5ib2R5LmFwcGVuZENoaWxkKG4uY3JlYXRlRWxlbWVudChyKSksIGkgPSB3LmNzcyh0LCAiZGlzcGxheSIpLCB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksICJub25lIiA9PT0gaSAmJiAoaSA9ICJibG9jayIpLCBsZVtyXSA9IGksIGkpIH0gZnVuY3Rpb24gZmUoZSwgdCkgeyBmb3IgKHZhciBuLCByLCBpID0gW10sIG8gPSAwLCBhID0gZS5sZW5ndGg7IG8gPCBhOyBvKyspKHIgPSBlW29dKS5zdHlsZSAmJiAobiA9IHIuc3R5bGUuZGlzcGxheSwgdCA/ICgibm9uZSIgPT09IG4gJiYgKGlbb10gPSBLLmdldChyLCAiZGlzcGxheSIpIHx8IG51bGwsIGlbb10gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIiKSksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgYWUocikgJiYgKGlbb10gPSBjZShyKSkpIDogIm5vbmUiICE9PSBuICYmIChpW29dID0gIm5vbmUiLCBLLnNldChyLCAiZGlzcGxheSIsIG4pKSk7IGZvciAobyA9IDA7IG8gPCBhOyBvKyspbnVsbCAhPSBpW29dICYmIChlW29dLnN0eWxlLmRpc3BsYXkgPSBpW29dKTsgcmV0dXJuIGUgfSB3LmZuLmV4dGVuZCh7IHNob3c6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZlKHRoaXMsICEwKSB9LCBoaWRlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBmZSh0aGlzKSB9LCB0b2dnbGU6IGZ1bmN0aW9uIChlKSB7IHJldHVybiAiYm9vbGVhbiIgPT0gdHlwZW9mIGUgPyBlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKSA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IGFlKHRoaXMpID8gdyh0aGlzKS5zaG93KCkgOiB3KHRoaXMpLmhpZGUoKSB9KSB9IH0pOyB2YXIgZGUgPSAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSwgcGUgPSAvPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKykvaSwgaGUgPSAvXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksIGdlID0geyBvcHRpb246IFsxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iXSwgdGhlYWQ6IFsxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiJdLCBjb2w6IFsyLCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiJdLCB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+Il0sIHRkOiBbMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSwgX2RlZmF1bHQ6IFswLCAiIiwgIiJdIH07IGdlLm9wdGdyb3VwID0gZ2Uub3B0aW9uLCBnZS50Ym9keSA9IGdlLnRmb290ID0gZ2UuY29sZ3JvdXAgPSBnZS5jYXB0aW9uID0gZ2UudGhlYWQsIGdlLnRoID0gZ2UudGQ7IGZ1bmN0aW9uIHZlKGUsIHQpIHsgdmFyIG47IHJldHVybiBuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQgfHwgIioiKSA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwgPyBlLnF1ZXJ5U2VsZWN0b3JBbGwodCB8fCAiKiIpIDogW10sIHZvaWQgMCA9PT0gdCB8fCB0ICYmIEQoZSwgdCkgPyB3Lm1lcmdlKFtlXSwgbikgOiBuIH0gZnVuY3Rpb24geWUoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKUsuc2V0KGVbbl0sICJnbG9iYWxFdmFsIiwgIXQgfHwgSy5nZXQodFtuXSwgImdsb2JhbEV2YWwiKSkgfSB2YXIgbWUgPSAvPHwmIz9cdys7LzsgZnVuY3Rpb24gYmUoZSwgdCwgbiwgciwgaSkgeyBmb3IgKHZhciBvLCBhLCB1LCBzLCBsLCBjLCBmID0gdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIGQgPSBbXSwgcCA9IDAsIGggPSBlLmxlbmd0aDsgcCA8IGg7IHArKylpZiAoKG8gPSBlW3BdKSB8fCAwID09PSBvKSBpZiAoIm9iamVjdCIgPT09IGIobykpIHcubWVyZ2UoZCwgby5ub2RlVHlwZSA/IFtvXSA6IG8pOyBlbHNlIGlmIChtZS50ZXN0KG8pKSB7IGEgPSBhIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHUgPSAocGUuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwgcyA9IGdlW3VdIHx8IGdlLl9kZWZhdWx0LCBhLmlubmVySFRNTCA9IHNbMV0gKyB3Lmh0bWxQcmVmaWx0ZXIobykgKyBzWzJdLCBjID0gc1swXTsgd2hpbGUgKGMtLSkgYSA9IGEubGFzdENoaWxkOyB3Lm1lcmdlKGQsIGEuY2hpbGROb2RlcyksIChhID0gZi5maXJzdENoaWxkKS50ZXh0Q29udGVudCA9ICIiIH0gZWxzZSBkLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7IGYudGV4dENvbnRlbnQgPSAiIiwgcCA9IDA7IHdoaWxlIChvID0gZFtwKytdKSBpZiAociAmJiB3LmluQXJyYXkobywgcikgPiAtMSkgaSAmJiBpLnB1c2gobyk7IGVsc2UgaWYgKGwgPSB3LmNvbnRhaW5zKG8ub3duZXJEb2N1bWVudCwgbyksIGEgPSB2ZShmLmFwcGVuZENoaWxkKG8pLCAic2NyaXB0IiksIGwgJiYgeWUoYSksIG4pIHsgYyA9IDA7IHdoaWxlIChvID0gYVtjKytdKSBoZS50ZXN0KG8udHlwZSB8fCAiIikgJiYgbi5wdXNoKG8pIH0gcmV0dXJuIGYgfSAhZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmFwcGVuZENoaWxkKHIuY3JlYXRlRWxlbWVudCgiZGl2IikpLCB0ID0gci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLCB0LnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJjaGVja2VkIiksIHQuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwgZS5hcHBlbmRDaGlsZCh0KSwgaC5jaGVja0Nsb25lID0gZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGUuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCBoLm5vQ2xvbmVDaGVja2VkID0gISFlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSB9KCk7IHZhciB4ZSA9IHIuZG9jdW1lbnRFbGVtZW50LCB3ZSA9IC9ea2V5LywgQ2UgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sIFRlID0gL14oW14uXSopKD86XC4oLispfCkvOyBmdW5jdGlvbiBFZSgpIHsgcmV0dXJuICEwIH0gZnVuY3Rpb24gTmUoKSB7IHJldHVybiAhMSB9IGZ1bmN0aW9uIGtlKCkgeyB0cnkgeyByZXR1cm4gci5hY3RpdmVFbGVtZW50IH0gY2F0Y2ggKGUpIHsgfSB9IGZ1bmN0aW9uIEFlKGUsIHQsIG4sIHIsIGksIG8pIHsgdmFyIGEsIHU7IGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCkgeyAic3RyaW5nIiAhPSB0eXBlb2YgbiAmJiAociA9IHIgfHwgbiwgbiA9IHZvaWQgMCk7IGZvciAodSBpbiB0KSBBZShlLCB1LCBuLCByLCB0W3VdLCBvKTsgcmV0dXJuIGUgfSBpZiAobnVsbCA9PSByICYmIG51bGwgPT0gaSA/IChpID0gbiwgciA9IG4gPSB2b2lkIDApIDogbnVsbCA9PSBpICYmICgic3RyaW5nIiA9PSB0eXBlb2YgbiA/IChpID0gciwgciA9IHZvaWQgMCkgOiAoaSA9IHIsIHIgPSBuLCBuID0gdm9pZCAwKSksICExID09PSBpKSBpID0gTmU7IGVsc2UgaWYgKCFpKSByZXR1cm4gZTsgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSBpLCAoaSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiB3KCkub2ZmKGUpLCBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfSkuZ3VpZCA9IGEuZ3VpZCB8fCAoYS5ndWlkID0gdy5ndWlkKyspKSwgZS5lYWNoKGZ1bmN0aW9uICgpIHsgdy5ldmVudC5hZGQodGhpcywgdCwgaSwgciwgbikgfSkgfSB3LmV2ZW50ID0geyBnbG9iYWw6IHt9LCBhZGQ6IGZ1bmN0aW9uIChlLCB0LCBuLCByLCBpKSB7IHZhciBvLCBhLCB1LCBzLCBsLCBjLCBmLCBkLCBwLCBoLCBnLCB2ID0gSy5nZXQoZSk7IGlmICh2KSB7IG4uaGFuZGxlciAmJiAobiA9IChvID0gbikuaGFuZGxlciwgaSA9IG8uc2VsZWN0b3IpLCBpICYmIHcuZmluZC5tYXRjaGVzU2VsZWN0b3IoeGUsIGkpLCBuLmd1aWQgfHwgKG4uZ3VpZCA9IHcuZ3VpZCsrKSwgKHMgPSB2LmV2ZW50cykgfHwgKHMgPSB2LmV2ZW50cyA9IHt9KSwgKGEgPSB2LmhhbmRsZSkgfHwgKGEgPSB2LmhhbmRsZSA9IGZ1bmN0aW9uICh0KSB7IHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgdyAmJiB3LmV2ZW50LnRyaWdnZXJlZCAhPT0gdC50eXBlID8gdy5ldmVudC5kaXNwYXRjaC5hcHBseShlLCBhcmd1bWVudHMpIDogdm9pZCAwIH0pLCBsID0gKHQgPSAodCB8fCAiIikubWF0Y2goSSkgfHwgWyIiXSkubGVuZ3RoOyB3aGlsZSAobC0tKSBwID0gZyA9ICh1ID0gVGUuZXhlYyh0W2xdKSB8fCBbXSlbMV0sIGggPSAodVsyXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIHAgJiYgKGYgPSB3LmV2ZW50LnNwZWNpYWxbcF0gfHwge30sIHAgPSAoaSA/IGYuZGVsZWdhdGVUeXBlIDogZi5iaW5kVHlwZSkgfHwgcCwgZiA9IHcuZXZlbnQuc3BlY2lhbFtwXSB8fCB7fSwgYyA9IHcuZXh0ZW5kKHsgdHlwZTogcCwgb3JpZ1R5cGU6IGcsIGRhdGE6IHIsIGhhbmRsZXI6IG4sIGd1aWQ6IG4uZ3VpZCwgc2VsZWN0b3I6IGksIG5lZWRzQ29udGV4dDogaSAmJiB3LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksIG5hbWVzcGFjZTogaC5qb2luKCIuIikgfSwgbyksIChkID0gc1twXSkgfHwgKChkID0gc1twXSA9IFtdKS5kZWxlZ2F0ZUNvdW50ID0gMCwgZi5zZXR1cCAmJiAhMSAhPT0gZi5zZXR1cC5jYWxsKGUsIHIsIGgsIGEpIHx8IGUuYWRkRXZlbnRMaXN0ZW5lciAmJiBlLmFkZEV2ZW50TGlzdGVuZXIocCwgYSkpLCBmLmFkZCAmJiAoZi5hZGQuY2FsbChlLCBjKSwgYy5oYW5kbGVyLmd1aWQgfHwgKGMuaGFuZGxlci5ndWlkID0gbi5ndWlkKSksIGkgPyBkLnNwbGljZShkLmRlbGVnYXRlQ291bnQrKywgMCwgYykgOiBkLnB1c2goYyksIHcuZXZlbnQuZ2xvYmFsW3BdID0gITApIH0gfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSwgdCwgbiwgciwgaSkgeyB2YXIgbywgYSwgdSwgcywgbCwgYywgZiwgZCwgcCwgaCwgZywgdiA9IEsuaGFzRGF0YShlKSAmJiBLLmdldChlKTsgaWYgKHYgJiYgKHMgPSB2LmV2ZW50cykpIHsgbCA9ICh0ID0gKHQgfHwgIiIpLm1hdGNoKEkpIHx8IFsiIl0pLmxlbmd0aDsgd2hpbGUgKGwtLSkgaWYgKHUgPSBUZS5leGVjKHRbbF0pIHx8IFtdLCBwID0gZyA9IHVbMV0sIGggPSAodVsyXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIHApIHsgZiA9IHcuZXZlbnQuc3BlY2lhbFtwXSB8fCB7fSwgZCA9IHNbcCA9IChyID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBwXSB8fCBbXSwgdSA9IHVbMl0gJiYgbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIGEgPSBvID0gZC5sZW5ndGg7IHdoaWxlIChvLS0pIGMgPSBkW29dLCAhaSAmJiBnICE9PSBjLm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBjLmd1aWQgfHwgdSAmJiAhdS50ZXN0KGMubmFtZXNwYWNlKSB8fCByICYmIHIgIT09IGMuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWMuc2VsZWN0b3IpIHx8IChkLnNwbGljZShvLCAxKSwgYy5zZWxlY3RvciAmJiBkLmRlbGVnYXRlQ291bnQtLSAsIGYucmVtb3ZlICYmIGYucmVtb3ZlLmNhbGwoZSwgYykpOyBhICYmICFkLmxlbmd0aCAmJiAoZi50ZWFyZG93biAmJiAhMSAhPT0gZi50ZWFyZG93bi5jYWxsKGUsIGgsIHYuaGFuZGxlKSB8fCB3LnJlbW92ZUV2ZW50KGUsIHAsIHYuaGFuZGxlKSwgZGVsZXRlIHNbcF0pIH0gZWxzZSBmb3IgKHAgaW4gcykgdy5ldmVudC5yZW1vdmUoZSwgcCArIHRbbF0sIG4sIHIsICEwKTsgdy5pc0VtcHR5T2JqZWN0KHMpICYmIEsucmVtb3ZlKGUsICJoYW5kbGUgZXZlbnRzIikgfSB9LCBkaXNwYXRjaDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSB3LmV2ZW50LmZpeChlKSwgbiwgciwgaSwgbywgYSwgdSwgcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSwgbCA9IChLLmdldCh0aGlzLCAiZXZlbnRzIikgfHwge30pW3QudHlwZV0gfHwgW10sIGMgPSB3LmV2ZW50LnNwZWNpYWxbdC50eXBlXSB8fCB7fTsgZm9yIChzWzBdID0gdCwgbiA9IDE7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspc1tuXSA9IGFyZ3VtZW50c1tuXTsgaWYgKHQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzLCAhYy5wcmVEaXNwYXRjaCB8fCAhMSAhPT0gYy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsIHQpKSB7IHUgPSB3LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgdCwgbCksIG4gPSAwOyB3aGlsZSAoKG8gPSB1W24rK10pICYmICF0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsgdC5jdXJyZW50VGFyZ2V0ID0gby5lbGVtLCByID0gMDsgd2hpbGUgKChhID0gby5oYW5kbGVyc1tyKytdKSAmJiAhdC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSB0LnJuYW1lc3BhY2UgJiYgIXQucm5hbWVzcGFjZS50ZXN0KGEubmFtZXNwYWNlKSB8fCAodC5oYW5kbGVPYmogPSBhLCB0LmRhdGEgPSBhLmRhdGEsIHZvaWQgMCAhPT0gKGkgPSAoKHcuZXZlbnQuc3BlY2lhbFthLm9yaWdUeXBlXSB8fCB7fSkuaGFuZGxlIHx8IGEuaGFuZGxlcikuYXBwbHkoby5lbGVtLCBzKSkgJiYgITEgPT09ICh0LnJlc3VsdCA9IGkpICYmICh0LnByZXZlbnREZWZhdWx0KCksIHQuc3RvcFByb3BhZ2F0aW9uKCkpKSB9IHJldHVybiBjLnBvc3REaXNwYXRjaCAmJiBjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsIHQpLCB0LnJlc3VsdCB9IH0sIGhhbmRsZXJzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciwgaSwgbywgYSwgdSA9IFtdLCBzID0gdC5kZWxlZ2F0ZUNvdW50LCBsID0gZS50YXJnZXQ7IGlmIChzICYmIGwubm9kZVR5cGUgJiYgISgiY2xpY2siID09PSBlLnR5cGUgJiYgZS5idXR0b24gPj0gMSkpIGZvciAoOyBsICE9PSB0aGlzOyBsID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpaWYgKDEgPT09IGwubm9kZVR5cGUgJiYgKCJjbGljayIgIT09IGUudHlwZSB8fCAhMCAhPT0gbC5kaXNhYmxlZCkpIHsgZm9yIChvID0gW10sIGEgPSB7fSwgbiA9IDA7IG4gPCBzOyBuKyspdm9pZCAwID09PSBhW2kgPSAociA9IHRbbl0pLnNlbGVjdG9yICsgIiAiXSAmJiAoYVtpXSA9IHIubmVlZHNDb250ZXh0ID8gdyhpLCB0aGlzKS5pbmRleChsKSA+IC0xIDogdy5maW5kKGksIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgYVtpXSAmJiBvLnB1c2gocik7IG8ubGVuZ3RoICYmIHUucHVzaCh7IGVsZW06IGwsIGhhbmRsZXJzOiBvIH0pIH0gcmV0dXJuIGwgPSB0aGlzLCBzIDwgdC5sZW5ndGggJiYgdS5wdXNoKHsgZWxlbTogbCwgaGFuZGxlcnM6IHQuc2xpY2UocykgfSksIHUgfSwgYWRkUHJvcDogZnVuY3Rpb24gKGUsIHQpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuRXZlbnQucHJvdG90eXBlLCBlLCB7IGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCBnZXQ6IGcodCkgPyBmdW5jdGlvbiAoKSB7IGlmICh0aGlzLm9yaWdpbmFsRXZlbnQpIHJldHVybiB0KHRoaXMub3JpZ2luYWxFdmVudCkgfSA6IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFtlXSB9LCBzZXQ6IGZ1bmN0aW9uICh0KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBlLCB7IGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITAsIHZhbHVlOiB0IH0pIH0gfSkgfSwgZml4OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVt3LmV4cGFuZG9dID8gZSA6IG5ldyB3LkV2ZW50KGUpIH0sIHNwZWNpYWw6IHsgbG9hZDogeyBub0J1YmJsZTogITAgfSwgZm9jdXM6IHsgdHJpZ2dlcjogZnVuY3Rpb24gKCkgeyBpZiAodGhpcyAhPT0ga2UoKSAmJiB0aGlzLmZvY3VzKSByZXR1cm4gdGhpcy5mb2N1cygpLCAhMSB9LCBkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIiB9LCBibHVyOiB7IHRyaWdnZXI6IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMgPT09IGtlKCkgJiYgdGhpcy5ibHVyKSByZXR1cm4gdGhpcy5ibHVyKCksICExIH0sIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IiB9LCBjbGljazogeyB0cmlnZ2VyOiBmdW5jdGlvbiAoKSB7IGlmICgiY2hlY2tib3giID09PSB0aGlzLnR5cGUgJiYgdGhpcy5jbGljayAmJiBEKHRoaXMsICJpbnB1dCIpKSByZXR1cm4gdGhpcy5jbGljaygpLCAhMSB9LCBfZGVmYXVsdDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEQoZS50YXJnZXQsICJhIikgfSB9LCBiZWZvcmV1bmxvYWQ6IHsgcG9zdERpc3BhdGNoOiBmdW5jdGlvbiAoZSkgeyB2b2lkIDAgIT09IGUucmVzdWx0ICYmIGUub3JpZ2luYWxFdmVudCAmJiAoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZS5yZXN1bHQpIH0gfSB9IH0sIHcucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIG4pIH0sIHcuRXZlbnQgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoISh0aGlzIGluc3RhbmNlb2Ygdy5FdmVudCkpIHJldHVybiBuZXcgdy5FdmVudChlLCB0KTsgZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5hbEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZCB8fCB2b2lkIDAgPT09IGUuZGVmYXVsdFByZXZlbnRlZCAmJiAhMSA9PT0gZS5yZXR1cm5WYWx1ZSA/IEVlIDogTmUsIHRoaXMudGFyZ2V0ID0gZS50YXJnZXQgJiYgMyA9PT0gZS50YXJnZXQubm9kZVR5cGUgPyBlLnRhcmdldC5wYXJlbnROb2RlIDogZS50YXJnZXQsIHRoaXMuY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCwgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gZS5yZWxhdGVkVGFyZ2V0KSA6IHRoaXMudHlwZSA9IGUsIHQgJiYgdy5leHRlbmQodGhpcywgdCksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpLCB0aGlzW3cuZXhwYW5kb10gPSAhMCB9LCB3LkV2ZW50LnByb3RvdHlwZSA9IHsgY29uc3RydWN0b3I6IHcuRXZlbnQsIGlzRGVmYXVsdFByZXZlbnRlZDogTmUsIGlzUHJvcGFnYXRpb25TdG9wcGVkOiBOZSwgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IE5lLCBpc1NpbXVsYXRlZDogITEsIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OyB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IEVlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUucHJldmVudERlZmF1bHQoKSB9LCBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7IHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBFZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BQcm9wYWdhdGlvbigpIH0sIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IEVlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkgfSB9LCB3LmVhY2goeyBhbHRLZXk6ICEwLCBidWJibGVzOiAhMCwgY2FuY2VsYWJsZTogITAsIGNoYW5nZWRUb3VjaGVzOiAhMCwgY3RybEtleTogITAsIGRldGFpbDogITAsIGV2ZW50UGhhc2U6ICEwLCBtZXRhS2V5OiAhMCwgcGFnZVg6ICEwLCBwYWdlWTogITAsIHNoaWZ0S2V5OiAhMCwgdmlldzogITAsICJjaGFyIjogITAsIGNoYXJDb2RlOiAhMCwga2V5OiAhMCwga2V5Q29kZTogITAsIGJ1dHRvbjogITAsIGJ1dHRvbnM6ICEwLCBjbGllbnRYOiAhMCwgY2xpZW50WTogITAsIG9mZnNldFg6ICEwLCBvZmZzZXRZOiAhMCwgcG9pbnRlcklkOiAhMCwgcG9pbnRlclR5cGU6ICEwLCBzY3JlZW5YOiAhMCwgc2NyZWVuWTogITAsIHRhcmdldFRvdWNoZXM6ICEwLCB0b0VsZW1lbnQ6ICEwLCB0b3VjaGVzOiAhMCwgd2hpY2g6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5idXR0b247IHJldHVybiBudWxsID09IGUud2hpY2ggJiYgd2UudGVzdChlLnR5cGUpID8gbnVsbCAhPSBlLmNoYXJDb2RlID8gZS5jaGFyQ29kZSA6IGUua2V5Q29kZSA6ICFlLndoaWNoICYmIHZvaWQgMCAhPT0gdCAmJiBDZS50ZXN0KGUudHlwZSkgPyAxICYgdCA/IDEgOiAyICYgdCA/IDMgOiA0ICYgdCA/IDIgOiAwIDogZS53aGljaCB9IH0sIHcuZXZlbnQuYWRkUHJvcCksIHcuZWFjaCh7IG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLCBtb3VzZWxlYXZlOiAibW91c2VvdXQiLCBwb2ludGVyZW50ZXI6ICJwb2ludGVyb3ZlciIsIHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiIH0sIGZ1bmN0aW9uIChlLCB0KSB7IHcuZXZlbnQuc3BlY2lhbFtlXSA9IHsgZGVsZWdhdGVUeXBlOiB0LCBiaW5kVHlwZTogdCwgaGFuZGxlOiBmdW5jdGlvbiAoZSkgeyB2YXIgbiwgciA9IHRoaXMsIGkgPSBlLnJlbGF0ZWRUYXJnZXQsIG8gPSBlLmhhbmRsZU9iajsgcmV0dXJuIGkgJiYgKGkgPT09IHIgfHwgdy5jb250YWlucyhyLCBpKSkgfHwgKGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4gfSB9IH0pLCB3LmZuLmV4dGVuZCh7IG9uOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gQWUodGhpcywgZSwgdCwgbiwgcikgfSwgb25lOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gQWUodGhpcywgZSwgdCwgbiwgciwgMSkgfSwgb2ZmOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaTsgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCAmJiBlLmhhbmRsZU9iaikgcmV0dXJuIHIgPSBlLmhhbmRsZU9iaiwgdyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2UgPyByLm9yaWdUeXBlICsgIi4iICsgci5uYW1lc3BhY2UgOiByLm9yaWdUeXBlLCByLnNlbGVjdG9yLCByLmhhbmRsZXIpLCB0aGlzOyBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHsgZm9yIChpIGluIGUpIHRoaXMub2ZmKGksIHQsIGVbaV0pOyByZXR1cm4gdGhpcyB9IHJldHVybiAhMSAhPT0gdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0IHx8IChuID0gdCwgdCA9IHZvaWQgMCksICExID09PSBuICYmIChuID0gTmUpLCB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB3LmV2ZW50LnJlbW92ZSh0aGlzLCBlLCBuLCB0KSB9KSB9IH0pOyB2YXIgRGUgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksIFNlID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksIExlID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksIGplID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nOyBmdW5jdGlvbiBxZShlLCB0KSB7IHJldHVybiBEKGUsICJ0YWJsZSIpICYmIEQoMTEgIT09IHQubm9kZVR5cGUgPyB0IDogdC5maXJzdENoaWxkLCAidHIiKSA/IHcoZSkuY2hpbGRyZW4oInRib2R5IilbMF0gfHwgZSA6IGUgfSBmdW5jdGlvbiBPZShlKSB7IHJldHVybiBlLnR5cGUgPSAobnVsbCAhPT0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgKyAiLyIgKyBlLnR5cGUsIGUgfSBmdW5jdGlvbiBQZShlKSB7IHJldHVybiAidHJ1ZS8iID09PSAoZS50eXBlIHx8ICIiKS5zbGljZSgwLCA1KSA/IGUudHlwZSA9IGUudHlwZS5zbGljZSg1KSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksIGUgfSBmdW5jdGlvbiBIZShlLCB0KSB7IHZhciBuLCByLCBpLCBvLCBhLCB1LCBzLCBsOyBpZiAoMSA9PT0gdC5ub2RlVHlwZSkgeyBpZiAoSy5oYXNEYXRhKGUpICYmIChvID0gSy5hY2Nlc3MoZSksIGEgPSBLLnNldCh0LCBvKSwgbCA9IG8uZXZlbnRzKSkgeyBkZWxldGUgYS5oYW5kbGUsIGEuZXZlbnRzID0ge307IGZvciAoaSBpbiBsKSBmb3IgKG4gPSAwLCByID0gbFtpXS5sZW5ndGg7IG4gPCByOyBuKyspdy5ldmVudC5hZGQodCwgaSwgbFtpXVtuXSkgfSBKLmhhc0RhdGEoZSkgJiYgKHUgPSBKLmFjY2VzcyhlKSwgcyA9IHcuZXh0ZW5kKHt9LCB1KSwgSi5zZXQodCwgcykpIH0gfSBmdW5jdGlvbiBJZShlLCB0KSB7IHZhciBuID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyAiaW5wdXQiID09PSBuICYmIGRlLnRlc3QoZS50eXBlKSA/IHQuY2hlY2tlZCA9IGUuY2hlY2tlZCA6ICJpbnB1dCIgIT09IG4gJiYgInRleHRhcmVhIiAhPT0gbiB8fCAodC5kZWZhdWx0VmFsdWUgPSBlLmRlZmF1bHRWYWx1ZSkgfSBmdW5jdGlvbiBSZShlLCB0LCBuLCByKSB7IHQgPSBhLmFwcGx5KFtdLCB0KTsgdmFyIGksIG8sIHUsIHMsIGwsIGMsIGYgPSAwLCBkID0gZS5sZW5ndGgsIHAgPSBkIC0gMSwgdiA9IHRbMF0sIHkgPSBnKHYpOyBpZiAoeSB8fCBkID4gMSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdiAmJiAhaC5jaGVja0Nsb25lICYmIExlLnRlc3QodikpIHJldHVybiBlLmVhY2goZnVuY3Rpb24gKGkpIHsgdmFyIG8gPSBlLmVxKGkpOyB5ICYmICh0WzBdID0gdi5jYWxsKHRoaXMsIGksIG8uaHRtbCgpKSksIFJlKG8sIHQsIG4sIHIpIH0pOyBpZiAoZCAmJiAoaSA9IGJlKHQsIGVbMF0ub3duZXJEb2N1bWVudCwgITEsIGUsIHIpLCBvID0gaS5maXJzdENoaWxkLCAxID09PSBpLmNoaWxkTm9kZXMubGVuZ3RoICYmIChpID0gbyksIG8gfHwgcikpIHsgZm9yIChzID0gKHUgPSB3Lm1hcCh2ZShpLCAic2NyaXB0IiksIE9lKSkubGVuZ3RoOyBmIDwgZDsgZisrKWwgPSBpLCBmICE9PSBwICYmIChsID0gdy5jbG9uZShsLCAhMCwgITApLCBzICYmIHcubWVyZ2UodSwgdmUobCwgInNjcmlwdCIpKSksIG4uY2FsbChlW2ZdLCBsLCBmKTsgaWYgKHMpIGZvciAoYyA9IHVbdS5sZW5ndGggLSAxXS5vd25lckRvY3VtZW50LCB3Lm1hcCh1LCBQZSksIGYgPSAwOyBmIDwgczsgZisrKWwgPSB1W2ZdLCBoZS50ZXN0KGwudHlwZSB8fCAiIikgJiYgIUsuYWNjZXNzKGwsICJnbG9iYWxFdmFsIikgJiYgdy5jb250YWlucyhjLCBsKSAmJiAobC5zcmMgJiYgIm1vZHVsZSIgIT09IChsLnR5cGUgfHwgIiIpLnRvTG93ZXJDYXNlKCkgPyB3Ll9ldmFsVXJsICYmIHcuX2V2YWxVcmwobC5zcmMpIDogbShsLnRleHRDb250ZW50LnJlcGxhY2UoamUsICIiKSwgYywgbCkpIH0gcmV0dXJuIGUgfSBmdW5jdGlvbiBCZShlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSB0ID8gdy5maWx0ZXIodCwgZSkgOiBlLCBvID0gMDsgbnVsbCAhPSAociA9IGlbb10pOyBvKyspbiB8fCAxICE9PSByLm5vZGVUeXBlIHx8IHcuY2xlYW5EYXRhKHZlKHIpKSwgci5wYXJlbnROb2RlICYmIChuICYmIHcuY29udGFpbnMoci5vd25lckRvY3VtZW50LCByKSAmJiB5ZSh2ZShyLCAic2NyaXB0IikpLCByLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpOyByZXR1cm4gZSB9IHcuZXh0ZW5kKHsgaHRtbFByZWZpbHRlcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucmVwbGFjZShEZSwgIjwkMT48LyQyPiIpIH0sIGNsb25lOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSwgdSA9IGUuY2xvbmVOb2RlKCEwKSwgcyA9IHcuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKTsgaWYgKCEoaC5ub0Nsb25lQ2hlY2tlZCB8fCAxICE9PSBlLm5vZGVUeXBlICYmIDExICE9PSBlLm5vZGVUeXBlIHx8IHcuaXNYTUxEb2MoZSkpKSBmb3IgKGEgPSB2ZSh1KSwgciA9IDAsIGkgPSAobyA9IHZlKGUpKS5sZW5ndGg7IHIgPCBpOyByKyspSWUob1tyXSwgYVtyXSk7IGlmICh0KSBpZiAobikgZm9yIChvID0gbyB8fCB2ZShlKSwgYSA9IGEgfHwgdmUodSksIHIgPSAwLCBpID0gby5sZW5ndGg7IHIgPCBpOyByKyspSGUob1tyXSwgYVtyXSk7IGVsc2UgSGUoZSwgdSk7IHJldHVybiAoYSA9IHZlKHUsICJzY3JpcHQiKSkubGVuZ3RoID4gMCAmJiB5ZShhLCAhcyAmJiB2ZShlLCAic2NyaXB0IikpLCB1IH0sIGNsZWFuRGF0YTogZnVuY3Rpb24gKGUpIHsgZm9yICh2YXIgdCwgbiwgciwgaSA9IHcuZXZlbnQuc3BlY2lhbCwgbyA9IDA7IHZvaWQgMCAhPT0gKG4gPSBlW29dKTsgbysrKWlmIChZKG4pKSB7IGlmICh0ID0gbltLLmV4cGFuZG9dKSB7IGlmICh0LmV2ZW50cykgZm9yIChyIGluIHQuZXZlbnRzKSBpW3JdID8gdy5ldmVudC5yZW1vdmUobiwgcikgOiB3LnJlbW92ZUV2ZW50KG4sIHIsIHQuaGFuZGxlKTsgbltLLmV4cGFuZG9dID0gdm9pZCAwIH0gbltKLmV4cGFuZG9dICYmIChuW0ouZXhwYW5kb10gPSB2b2lkIDApIH0gfSB9KSwgdy5mbi5leHRlbmQoeyBkZXRhY2g6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBCZSh0aGlzLCBlLCAhMCkgfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gQmUodGhpcywgZSkgfSwgdGV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF8odGhpcywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IHcudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uICgpIHsgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8ICh0aGlzLnRleHRDb250ZW50ID0gZSkgfSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgYXBwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IDEgIT09IHRoaXMubm9kZVR5cGUgJiYgMTEgIT09IHRoaXMubm9kZVR5cGUgJiYgOSAhPT0gdGhpcy5ub2RlVHlwZSB8fCBxZSh0aGlzLCBlKS5hcHBlbmRDaGlsZChlKSB9KSB9LCBwcmVwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IGlmICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09PSB0aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpIHsgdmFyIHQgPSBxZSh0aGlzLCBlKTsgdC5pbnNlcnRCZWZvcmUoZSwgdC5maXJzdENoaWxkKSB9IH0pIH0sIGJlZm9yZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzKSB9KSB9LCBhZnRlcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzLm5leHRTaWJsaW5nKSB9KSB9LCBlbXB0eTogZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlLCB0ID0gMDsgbnVsbCAhPSAoZSA9IHRoaXNbdF0pOyB0KyspMSA9PT0gZS5ub2RlVHlwZSAmJiAody5jbGVhbkRhdGEodmUoZSwgITEpKSwgZS50ZXh0Q29udGVudCA9ICIiKTsgcmV0dXJuIHRoaXMgfSwgY2xvbmU6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBlID0gbnVsbCAhPSBlICYmIGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwgdGhpcy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5jbG9uZSh0aGlzLCBlLCB0KSB9KSB9LCBodG1sOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gXyh0aGlzLCBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXNbMF0gfHwge30sIG4gPSAwLCByID0gdGhpcy5sZW5ndGg7IGlmICh2b2lkIDAgPT09IGUgJiYgMSA9PT0gdC5ub2RlVHlwZSkgcmV0dXJuIHQuaW5uZXJIVE1MOyBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgIVNlLnRlc3QoZSkgJiYgIWdlWyhwZS5leGVjKGUpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkgeyBlID0gdy5odG1sUHJlZmlsdGVyKGUpOyB0cnkgeyBmb3IgKDsgbiA8IHI7IG4rKykxID09PSAodCA9IHRoaXNbbl0gfHwge30pLm5vZGVUeXBlICYmICh3LmNsZWFuRGF0YSh2ZSh0LCAhMSkpLCB0LmlubmVySFRNTCA9IGUpOyB0ID0gMCB9IGNhdGNoIChlKSB7IH0gfSB0ICYmIHRoaXMuZW1wdHkoKS5hcHBlbmQoZSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBbXTsgcmV0dXJuIFJlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSB0aGlzLnBhcmVudE5vZGU7IHcuaW5BcnJheSh0aGlzLCBlKSA8IDAgJiYgKHcuY2xlYW5EYXRhKHZlKHRoaXMpKSwgbiAmJiBuLnJlcGxhY2VDaGlsZCh0LCB0aGlzKSkgfSwgZSkgfSB9KSwgdy5lYWNoKHsgYXBwZW5kVG86ICJhcHBlbmQiLCBwcmVwZW5kVG86ICJwcmVwZW5kIiwgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIgfSwgZnVuY3Rpb24gKGUsIHQpIHsgdy5mbltlXSA9IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4sIHIgPSBbXSwgaSA9IHcoZSksIG8gPSBpLmxlbmd0aCAtIDEsIGEgPSAwOyBhIDw9IG87IGErKyluID0gYSA9PT0gbyA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwgdyhpW2FdKVt0XShuKSwgdS5hcHBseShyLCBuLmdldCgpKTsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHIpIH0gfSk7IHZhciBNZSA9IG5ldyBSZWdFeHAoIl4oIiArIHJlICsgIikoPyFweClbYS16JV0rJCIsICJpIiksIFdlID0gZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7IHJldHVybiBuICYmIG4ub3BlbmVyIHx8IChuID0gZSksIG4uZ2V0Q29tcHV0ZWRTdHlsZSh0KSB9LCAkZSA9IG5ldyBSZWdFeHAob2Uuam9pbigifCIpLCAiaSIpOyAhZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiB0KCkgeyBpZiAoYykgeyBsLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsIGMuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIiwgeGUuYXBwZW5kQ2hpbGQobCkuYXBwZW5kQ2hpbGQoYyk7IHZhciB0ID0gZS5nZXRDb21wdXRlZFN0eWxlKGMpOyBpID0gIjElIiAhPT0gdC50b3AsIHMgPSAxMiA9PT0gbih0Lm1hcmdpbkxlZnQpLCBjLnN0eWxlLnJpZ2h0ID0gIjYwJSIsIHUgPSAzNiA9PT0gbih0LnJpZ2h0KSwgbyA9IDM2ID09PSBuKHQud2lkdGgpLCBjLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiwgYSA9IDM2ID09PSBjLm9mZnNldFdpZHRoIHx8ICJhYnNvbHV0ZSIsIHhlLnJlbW92ZUNoaWxkKGwpLCBjID0gbnVsbCB9IH0gZnVuY3Rpb24gbihlKSB7IHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpIH0gdmFyIGksIG8sIGEsIHUsIHMsIGwgPSByLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCBjID0gci5jcmVhdGVFbGVtZW50KCJkaXYiKTsgYy5zdHlsZSAmJiAoYy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCIsIGMuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICIiLCBoLmNsZWFyQ2xvbmVTdHlsZSA9ICJjb250ZW50LWJveCIgPT09IGMuc3R5bGUuYmFja2dyb3VuZENsaXAsIHcuZXh0ZW5kKGgsIHsgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgbyB9LCBwaXhlbEJveFN0eWxlczogZnVuY3Rpb24gKCkgeyByZXR1cm4gdCgpLCB1IH0sIHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgaSB9LCByZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgcyB9LCBzY3JvbGxib3hTaXplOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0KCksIGEgfSB9KSkgfSgpOyBmdW5jdGlvbiBGZShlLCB0LCBuKSB7IHZhciByLCBpLCBvLCBhLCB1ID0gZS5zdHlsZTsgcmV0dXJuIChuID0gbiB8fCBXZShlKSkgJiYgKCIiICE9PSAoYSA9IG4uZ2V0UHJvcGVydHlWYWx1ZSh0KSB8fCBuW3RdKSB8fCB3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgfHwgKGEgPSB3LnN0eWxlKGUsIHQpKSwgIWgucGl4ZWxCb3hTdHlsZXMoKSAmJiBNZS50ZXN0KGEpICYmICRlLnRlc3QodCkgJiYgKHIgPSB1LndpZHRoLCBpID0gdS5taW5XaWR0aCwgbyA9IHUubWF4V2lkdGgsIHUubWluV2lkdGggPSB1Lm1heFdpZHRoID0gdS53aWR0aCA9IGEsIGEgPSBuLndpZHRoLCB1LndpZHRoID0gciwgdS5taW5XaWR0aCA9IGksIHUubWF4V2lkdGggPSBvKSksIHZvaWQgMCAhPT0gYSA/IGEgKyAiIiA6IGEgfSBmdW5jdGlvbiB6ZShlLCB0KSB7IHJldHVybiB7IGdldDogZnVuY3Rpb24gKCkgeyBpZiAoIWUoKSkgcmV0dXJuICh0aGlzLmdldCA9IHQpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IGRlbGV0ZSB0aGlzLmdldCB9IH0gfSB2YXIgX2UgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sIFVlID0gL14tLS8sIFZlID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwgWGUgPSB7IGxldHRlclNwYWNpbmc6ICIwIiwgZm9udFdlaWdodDogIjQwMCIgfSwgUWUgPSBbIldlYmtpdCIsICJNb3oiLCAibXMiXSwgWWUgPSByLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlOyBmdW5jdGlvbiBHZShlKSB7IGlmIChlIGluIFllKSByZXR1cm4gZTsgdmFyIHQgPSBlWzBdLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpLCBuID0gUWUubGVuZ3RoOyB3aGlsZSAobi0tKSBpZiAoKGUgPSBRZVtuXSArIHQpIGluIFllKSByZXR1cm4gZSB9IGZ1bmN0aW9uIEtlKGUpIHsgdmFyIHQgPSB3LmNzc1Byb3BzW2VdOyByZXR1cm4gdCB8fCAodCA9IHcuY3NzUHJvcHNbZV0gPSBHZShlKSB8fCBlKSwgdCB9IGZ1bmN0aW9uIEplKGUsIHQsIG4pIHsgdmFyIHIgPSBpZS5leGVjKHQpOyByZXR1cm4gciA/IE1hdGgubWF4KDAsIHJbMl0gLSAobiB8fCAwKSkgKyAoclszXSB8fCAicHgiKSA6IHQgfSBmdW5jdGlvbiBaZShlLCB0LCBuLCByLCBpLCBvKSB7IHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLCB1ID0gMCwgcyA9IDA7IGlmIChuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQiKSkgcmV0dXJuIDA7IGZvciAoOyBhIDwgNDsgYSArPSAyKSJtYXJnaW4iID09PSBuICYmIChzICs9IHcuY3NzKGUsIG4gKyBvZVthXSwgITAsIGkpKSwgciA/ICgiY29udGVudCIgPT09IG4gJiYgKHMgLT0gdy5jc3MoZSwgInBhZGRpbmciICsgb2VbYV0sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmIChzIC09IHcuY3NzKGUsICJib3JkZXIiICsgb2VbYV0gKyAiV2lkdGgiLCAhMCwgaSkpKSA6IChzICs9IHcuY3NzKGUsICJwYWRkaW5nIiArIG9lW2FdLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiA/IHMgKz0gdy5jc3MoZSwgImJvcmRlciIgKyBvZVthXSArICJXaWR0aCIsICEwLCBpKSA6IHUgKz0gdy5jc3MoZSwgImJvcmRlciIgKyBvZVthXSArICJXaWR0aCIsICEwLCBpKSk7IHJldHVybiAhciAmJiBvID49IDAgJiYgKHMgKz0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSAtIG8gLSBzIC0gdSAtIC41KSkpLCBzIH0gZnVuY3Rpb24gZXQoZSwgdCwgbikgeyB2YXIgciA9IFdlKGUpLCBpID0gRmUoZSwgdCwgciksIG8gPSAiYm9yZGVyLWJveCIgPT09IHcuY3NzKGUsICJib3hTaXppbmciLCAhMSwgciksIGEgPSBvOyBpZiAoTWUudGVzdChpKSkgeyBpZiAoIW4pIHJldHVybiBpOyBpID0gImF1dG8iIH0gcmV0dXJuIGEgPSBhICYmIChoLmJveFNpemluZ1JlbGlhYmxlKCkgfHwgaSA9PT0gZS5zdHlsZVt0XSksICgiYXV0byIgPT09IGkgfHwgIXBhcnNlRmxvYXQoaSkgJiYgImlubGluZSIgPT09IHcuY3NzKGUsICJkaXNwbGF5IiwgITEsIHIpKSAmJiAoaSA9IGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSwgYSA9ICEwKSwgKGkgPSBwYXJzZUZsb2F0KGkpIHx8IDApICsgWmUoZSwgdCwgbiB8fCAobyA/ICJib3JkZXIiIDogImNvbnRlbnQiKSwgYSwgciwgaSkgKyAicHgiIH0gdy5leHRlbmQoeyBjc3NIb29rczogeyBvcGFjaXR5OiB7IGdldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKHQpIHsgdmFyIG4gPSBGZShlLCAib3BhY2l0eSIpOyByZXR1cm4gIiIgPT09IG4gPyAiMSIgOiBuIH0gfSB9IH0sIGNzc051bWJlcjogeyBhbmltYXRpb25JdGVyYXRpb25Db3VudDogITAsIGNvbHVtbkNvdW50OiAhMCwgZmlsbE9wYWNpdHk6ICEwLCBmbGV4R3JvdzogITAsIGZsZXhTaHJpbms6ICEwLCBmb250V2VpZ2h0OiAhMCwgbGluZUhlaWdodDogITAsIG9wYWNpdHk6ICEwLCBvcmRlcjogITAsIG9ycGhhbnM6ICEwLCB3aWRvd3M6ICEwLCB6SW5kZXg6ICEwLCB6b29tOiAhMCB9LCBjc3NQcm9wczoge30sIHN0eWxlOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyBpZiAoZSAmJiAzICE9PSBlLm5vZGVUeXBlICYmIDggIT09IGUubm9kZVR5cGUgJiYgZS5zdHlsZSkgeyB2YXIgaSwgbywgYSwgdSA9IFEodCksIHMgPSBVZS50ZXN0KHQpLCBsID0gZS5zdHlsZTsgaWYgKHMgfHwgKHQgPSBLZSh1KSksIGEgPSB3LmNzc0hvb2tzW3RdIHx8IHcuY3NzSG9va3NbdV0sIHZvaWQgMCA9PT0gbikgcmV0dXJuIGEgJiYgImdldCIgaW4gYSAmJiB2b2lkIDAgIT09IChpID0gYS5nZXQoZSwgITEsIHIpKSA/IGkgOiBsW3RdOyAic3RyaW5nIiA9PSAobyA9IHR5cGVvZiBuKSAmJiAoaSA9IGllLmV4ZWMobikpICYmIGlbMV0gJiYgKG4gPSBzZShlLCB0LCBpKSwgbyA9ICJudW1iZXIiKSwgbnVsbCAhPSBuICYmIG4gPT09IG4gJiYgKCJudW1iZXIiID09PSBvICYmIChuICs9IGkgJiYgaVszXSB8fCAody5jc3NOdW1iZXJbdV0gPyAiIiA6ICJweCIpKSwgaC5jbGVhckNsb25lU3R5bGUgfHwgIiIgIT09IG4gfHwgMCAhPT0gdC5pbmRleE9mKCJiYWNrZ3JvdW5kIikgfHwgKGxbdF0gPSAiaW5oZXJpdCIpLCBhICYmICJzZXQiIGluIGEgJiYgdm9pZCAwID09PSAobiA9IGEuc2V0KGUsIG4sIHIpKSB8fCAocyA/IGwuc2V0UHJvcGVydHkodCwgbikgOiBsW3RdID0gbikpIH0gfSwgY3NzOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSwgdSA9IFEodCk7IHJldHVybiBVZS50ZXN0KHQpIHx8ICh0ID0gS2UodSkpLCAoYSA9IHcuY3NzSG9va3NbdF0gfHwgdy5jc3NIb29rc1t1XSkgJiYgImdldCIgaW4gYSAmJiAoaSA9IGEuZ2V0KGUsICEwLCBuKSksIHZvaWQgMCA9PT0gaSAmJiAoaSA9IEZlKGUsIHQsIHIpKSwgIm5vcm1hbCIgPT09IGkgJiYgdCBpbiBYZSAmJiAoaSA9IFhlW3RdKSwgIiIgPT09IG4gfHwgbiA/IChvID0gcGFyc2VGbG9hdChpKSwgITAgPT09IG4gfHwgaXNGaW5pdGUobykgPyBvIHx8IDAgOiBpKSA6IGkgfSB9KSwgdy5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIl0sIGZ1bmN0aW9uIChlLCB0KSB7IHcuY3NzSG9va3NbdF0gPSB7IGdldDogZnVuY3Rpb24gKGUsIG4sIHIpIHsgaWYgKG4pIHJldHVybiAhX2UudGVzdCh3LmNzcyhlLCAiZGlzcGxheSIpKSB8fCBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPyBldChlLCB0LCByKSA6IHVlKGUsIFZlLCBmdW5jdGlvbiAoKSB7IHJldHVybiBldChlLCB0LCByKSB9KSB9LCBzZXQ6IGZ1bmN0aW9uIChlLCBuLCByKSB7IHZhciBpLCBvID0gV2UoZSksIGEgPSAiYm9yZGVyLWJveCIgPT09IHcuY3NzKGUsICJib3hTaXppbmciLCAhMSwgbyksIHUgPSByICYmIFplKGUsIHQsIHIsIGEsIG8pOyByZXR1cm4gYSAmJiBoLnNjcm9sbGJveFNpemUoKSA9PT0gby5wb3NpdGlvbiAmJiAodSAtPSBNYXRoLmNlaWwoZVsib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSldIC0gcGFyc2VGbG9hdChvW3RdKSAtIFplKGUsIHQsICJib3JkZXIiLCAhMSwgbykgLSAuNSkpLCB1ICYmIChpID0gaWUuZXhlYyhuKSkgJiYgInB4IiAhPT0gKGlbM10gfHwgInB4IikgJiYgKGUuc3R5bGVbdF0gPSBuLCBuID0gdy5jc3MoZSwgdCkpLCBKZShlLCBuLCB1KSB9IH0gfSksIHcuY3NzSG9va3MubWFyZ2luTGVmdCA9IHplKGgucmVsaWFibGVNYXJnaW5MZWZ0LCBmdW5jdGlvbiAoZSwgdCkgeyBpZiAodCkgcmV0dXJuIChwYXJzZUZsb2F0KEZlKGUsICJtYXJnaW5MZWZ0IikpIHx8IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIHVlKGUsIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgfSkpICsgInB4IiB9KSwgdy5lYWNoKHsgbWFyZ2luOiAiIiwgcGFkZGluZzogIiIsIGJvcmRlcjogIldpZHRoIiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmNzc0hvb2tzW2UgKyB0XSA9IHsgZXhwYW5kOiBmdW5jdGlvbiAobikgeyBmb3IgKHZhciByID0gMCwgaSA9IHt9LCBvID0gInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnNwbGl0KCIgIikgOiBbbl07IHIgPCA0OyByKyspaVtlICsgb2Vbcl0gKyB0XSA9IG9bcl0gfHwgb1tyIC0gMl0gfHwgb1swXTsgcmV0dXJuIGkgfSB9LCAibWFyZ2luIiAhPT0gZSAmJiAody5jc3NIb29rc1tlICsgdF0uc2V0ID0gSmUpIH0pLCB3LmZuLmV4dGVuZCh7IGNzczogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIF8odGhpcywgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSB7fSwgYSA9IDA7IGlmIChBcnJheS5pc0FycmF5KHQpKSB7IGZvciAociA9IFdlKGUpLCBpID0gdC5sZW5ndGg7IGEgPCBpOyBhKyspb1t0W2FdXSA9IHcuY3NzKGUsIHRbYV0sICExLCByKTsgcmV0dXJuIG8gfSByZXR1cm4gdm9pZCAwICE9PSBuID8gdy5zdHlsZShlLCB0LCBuKSA6IHcuY3NzKGUsIHQpIH0sIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9IH0pLCB3LmZuLmRlbGF5ID0gZnVuY3Rpb24gKHQsIG4pIHsgcmV0dXJuIHQgPSB3LmZ4ID8gdy5meC5zcGVlZHNbdF0gfHwgdCA6IHQsIG4gPSBuIHx8ICJmeCIsIHRoaXMucXVldWUobiwgZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSBlLnNldFRpbWVvdXQobiwgdCk7IHIuc3RvcCA9IGZ1bmN0aW9uICgpIHsgZS5jbGVhclRpbWVvdXQoaSkgfSB9KSB9LCBmdW5jdGlvbiAoKSB7IHZhciBlID0gci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLCB0ID0gci5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChyLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTsgZS50eXBlID0gImNoZWNrYm94IiwgaC5jaGVja09uID0gIiIgIT09IGUudmFsdWUsIGgub3B0U2VsZWN0ZWQgPSB0LnNlbGVjdGVkLCAoZSA9IHIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudmFsdWUgPSAidCIsIGUudHlwZSA9ICJyYWRpbyIsIGgucmFkaW9WYWx1ZSA9ICJ0IiA9PT0gZS52YWx1ZSB9KCk7IHZhciB0dCwgbnQgPSB3LmV4cHIuYXR0ckhhbmRsZTsgdy5mbi5leHRlbmQoeyBhdHRyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gXyh0aGlzLCB3LmF0dHIsIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9LCByZW1vdmVBdHRyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdy5yZW1vdmVBdHRyKHRoaXMsIGUpIH0pIH0gfSksIHcuZXh0ZW5kKHsgYXR0cjogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGUgPyB3LnByb3AoZSwgdCwgbikgOiAoMSA9PT0gbyAmJiB3LmlzWE1MRG9jKGUpIHx8IChpID0gdy5hdHRySG9va3NbdC50b0xvd2VyQ2FzZSgpXSB8fCAody5leHByLm1hdGNoLmJvb2wudGVzdCh0KSA/IHR0IDogdm9pZCAwKSksIHZvaWQgMCAhPT0gbiA/IG51bGwgPT09IG4gPyB2b2lkIHcucmVtb3ZlQXR0cihlLCB0KSA6IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IGkgJiYgImdldCIgaW4gaSAmJiBudWxsICE9PSAociA9IGkuZ2V0KGUsIHQpKSA/IHIgOiBudWxsID09IChyID0gdy5maW5kLmF0dHIoZSwgdCkpID8gdm9pZCAwIDogcikgfSwgYXR0ckhvb2tzOiB7IHR5cGU6IHsgc2V0OiBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoIWgucmFkaW9WYWx1ZSAmJiAicmFkaW8iID09PSB0ICYmIEQoZSwgImlucHV0IikpIHsgdmFyIG4gPSBlLnZhbHVlOyByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0IH0gfSB9IH0sIHJlbW92ZUF0dHI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHQgJiYgdC5tYXRjaChJKTsgaWYgKGkgJiYgMSA9PT0gZS5ub2RlVHlwZSkgd2hpbGUgKG4gPSBpW3IrK10pIGUucmVtb3ZlQXR0cmlidXRlKG4pIH0gfSksIHR0ID0geyBzZXQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiAhMSA9PT0gdCA/IHcucmVtb3ZlQXR0cihlLCBuKSA6IGUuc2V0QXR0cmlidXRlKG4sIG4pLCBuIH0gfSwgdy5lYWNoKHcuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IG50W3RdIHx8IHcuZmluZC5hdHRyOyBudFt0XSA9IGZ1bmN0aW9uIChlLCB0LCByKSB7IHZhciBpLCBvLCBhID0gdC50b0xvd2VyQ2FzZSgpOyByZXR1cm4gciB8fCAobyA9IG50W2FdLCBudFthXSA9IGksIGkgPSBudWxsICE9IG4oZSwgdCwgcikgPyBhIDogbnVsbCwgbnRbYV0gPSBvKSwgaSB9IH0pOyB2YXIgcnQgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLCBpdCA9IC9eKD86YXxhcmVhKSQvaTsgdy5mbi5leHRlbmQoeyBwcm9wOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gXyh0aGlzLCB3LnByb3AsIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9LCByZW1vdmVQcm9wOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgZGVsZXRlIHRoaXNbdy5wcm9wRml4W2VdIHx8IGVdIH0pIH0gfSksIHcuZXh0ZW5kKHsgcHJvcDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAxID09PSBvICYmIHcuaXNYTUxEb2MoZSkgfHwgKHQgPSB3LnByb3BGaXhbdF0gfHwgdCwgaSA9IHcucHJvcEhvb2tzW3RdKSwgdm9pZCAwICE9PSBuID8gaSAmJiAic2V0IiBpbiBpICYmIHZvaWQgMCAhPT0gKHIgPSBpLnNldChlLCBuLCB0KSkgPyByIDogZVt0XSA9IG4gOiBpICYmICJnZXQiIGluIGkgJiYgbnVsbCAhPT0gKHIgPSBpLmdldChlLCB0KSkgPyByIDogZVt0XSB9LCBwcm9wSG9va3M6IHsgdGFiSW5kZXg6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHcuZmluZC5hdHRyKGUsICJ0YWJpbmRleCIpOyByZXR1cm4gdCA/IHBhcnNlSW50KHQsIDEwKSA6IHJ0LnRlc3QoZS5ub2RlTmFtZSkgfHwgaXQudGVzdChlLm5vZGVOYW1lKSAmJiBlLmhyZWYgPyAwIDogLTEgfSB9IH0sIHByb3BGaXg6IHsgImZvciI6ICJodG1sRm9yIiwgImNsYXNzIjogImNsYXNzTmFtZSIgfSB9KSwgaC5vcHRTZWxlY3RlZCB8fCAody5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7IGdldDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbCB9LCBzZXQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5wYXJlbnROb2RlOyB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkgfSB9KSwgdy5lYWNoKFsidGFiSW5kZXgiLCAicmVhZE9ubHkiLCAibWF4TGVuZ3RoIiwgImNlbGxTcGFjaW5nIiwgImNlbGxQYWRkaW5nIiwgInJvd1NwYW4iLCAiY29sU3BhbiIsICJ1c2VNYXAiLCAiZnJhbWVCb3JkZXIiLCAiY29udGVudEVkaXRhYmxlIl0sIGZ1bmN0aW9uICgpIHsgdy5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV0gPSB0aGlzIH0pOyBmdW5jdGlvbiBvdChlKSB7IHJldHVybiAoZS5tYXRjaChJKSB8fCBbXSkuam9pbigiICIpIH0gZnVuY3Rpb24gYXQoZSkgeyByZXR1cm4gZS5nZXRBdHRyaWJ1dGUgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIgfSBmdW5jdGlvbiB1dChlKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGUpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZiBlID8gZS5tYXRjaChJKSB8fCBbXSA6IFtdIH0gdy5mbi5leHRlbmQoeyBhZGRDbGFzczogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIsIGksIG8sIGEsIHUsIHMgPSAwOyBpZiAoZyhlKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAodCkgeyB3KHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0aGlzLCB0LCBhdCh0aGlzKSkpIH0pOyBpZiAoKHQgPSB1dChlKSkubGVuZ3RoKSB3aGlsZSAobiA9IHRoaXNbcysrXSkgaWYgKGkgPSBhdChuKSwgciA9IDEgPT09IG4ubm9kZVR5cGUgJiYgIiAiICsgb3QoaSkgKyAiICIpIHsgYSA9IDA7IHdoaWxlIChvID0gdFthKytdKSByLmluZGV4T2YoIiAiICsgbyArICIgIikgPCAwICYmIChyICs9IG8gKyAiICIpOyBpICE9PSAodSA9IG90KHIpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB1KSB9IHJldHVybiB0aGlzIH0sIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgdSwgcyA9IDA7IGlmIChnKGUpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7IHcodGhpcykucmVtb3ZlQ2xhc3MoZS5jYWxsKHRoaXMsIHQsIGF0KHRoaXMpKSkgfSk7IGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCAiIik7IGlmICgodCA9IHV0KGUpKS5sZW5ndGgpIHdoaWxlIChuID0gdGhpc1tzKytdKSBpZiAoaSA9IGF0KG4pLCByID0gMSA9PT0gbi5ub2RlVHlwZSAmJiAiICIgKyBvdChpKSArICIgIikgeyBhID0gMDsgd2hpbGUgKG8gPSB0W2ErK10pIHdoaWxlIChyLmluZGV4T2YoIiAiICsgbyArICIgIikgPiAtMSkgciA9IHIucmVwbGFjZSgiICIgKyBvICsgIiAiLCAiICIpOyBpICE9PSAodSA9IG90KHIpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB1KSB9IHJldHVybiB0aGlzIH0sIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHR5cGVvZiBlLCByID0gInN0cmluZyIgPT09IG4gfHwgQXJyYXkuaXNBcnJheShlKTsgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiByID8gdCA/IHRoaXMuYWRkQ2xhc3MoZSkgOiB0aGlzLnJlbW92ZUNsYXNzKGUpIDogZyhlKSA/IHRoaXMuZWFjaChmdW5jdGlvbiAobikgeyB3KHRoaXMpLnRvZ2dsZUNsYXNzKGUuY2FsbCh0aGlzLCBuLCBhdCh0aGlzKSwgdCksIHQpIH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdmFyIHQsIGksIG8sIGE7IGlmIChyKSB7IGkgPSAwLCBvID0gdyh0aGlzKSwgYSA9IHV0KGUpOyB3aGlsZSAodCA9IGFbaSsrXSkgby5oYXNDbGFzcyh0KSA/IG8ucmVtb3ZlQ2xhc3ModCkgOiBvLmFkZENsYXNzKHQpIH0gZWxzZSB2b2lkIDAgIT09IGUgJiYgImJvb2xlYW4iICE9PSBuIHx8ICgodCA9IGF0KHRoaXMpKSAmJiBLLnNldCh0aGlzLCAiX19jbGFzc05hbWVfXyIsIHQpLCB0aGlzLnNldEF0dHJpYnV0ZSAmJiB0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB0IHx8ICExID09PSBlID8gIiIgOiBLLmdldCh0aGlzLCAiX19jbGFzc05hbWVfXyIpIHx8ICIiKSkgfSkgfSwgaGFzQ2xhc3M6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuLCByID0gMDsgdCA9ICIgIiArIGUgKyAiICI7IHdoaWxlIChuID0gdGhpc1tyKytdKSBpZiAoMSA9PT0gbi5ub2RlVHlwZSAmJiAoIiAiICsgb3QoYXQobikpICsgIiAiKS5pbmRleE9mKHQpID4gLTEpIHJldHVybiAhMDsgcmV0dXJuICExIH0gfSk7IHZhciBzdCA9IC9cci9nOyB3LmZuLmV4dGVuZCh7IHZhbDogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIsIGkgPSB0aGlzWzBdOyB7IGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gciA9IGcoZSksIHRoaXMuZWFjaChmdW5jdGlvbiAobikgeyB2YXIgaTsgMSA9PT0gdGhpcy5ub2RlVHlwZSAmJiAobnVsbCA9PSAoaSA9IHIgPyBlLmNhbGwodGhpcywgbiwgdyh0aGlzKS52YWwoKSkgOiBlKSA/IGkgPSAiIiA6ICJudW1iZXIiID09IHR5cGVvZiBpID8gaSArPSAiIiA6IEFycmF5LmlzQXJyYXkoaSkgJiYgKGkgPSB3Lm1hcChpLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiBlICsgIiIgfSkpLCAodCA9IHcudmFsSG9va3NbdGhpcy50eXBlXSB8fCB3LnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJzZXQiIGluIHQgJiYgdm9pZCAwICE9PSB0LnNldCh0aGlzLCBpLCAidmFsdWUiKSB8fCAodGhpcy52YWx1ZSA9IGkpKSB9KTsgaWYgKGkpIHJldHVybiAodCA9IHcudmFsSG9va3NbaS50eXBlXSB8fCB3LnZhbEhvb2tzW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJnZXQiIGluIHQgJiYgdm9pZCAwICE9PSAobiA9IHQuZ2V0KGksICJ2YWx1ZSIpKSA/IG4gOiAic3RyaW5nIiA9PSB0eXBlb2YgKG4gPSBpLnZhbHVlKSA/IG4ucmVwbGFjZShzdCwgIiIpIDogbnVsbCA9PSBuID8gIiIgOiBuIH0gfSB9KSwgdy5leHRlbmQoeyB2YWxIb29rczogeyBvcHRpb246IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHcuZmluZC5hdHRyKGUsICJ2YWx1ZSIpOyByZXR1cm4gbnVsbCAhPSB0ID8gdCA6IG90KHcudGV4dChlKSkgfSB9LCBzZWxlY3Q6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSA9IGUub3B0aW9ucywgbyA9IGUuc2VsZWN0ZWRJbmRleCwgYSA9ICJzZWxlY3Qtb25lIiA9PT0gZS50eXBlLCB1ID0gYSA/IG51bGwgOiBbXSwgcyA9IGEgPyBvICsgMSA6IGkubGVuZ3RoOyBmb3IgKHIgPSBvIDwgMCA/IHMgOiBhID8gbyA6IDA7IHIgPCBzOyByKyspaWYgKCgobiA9IGlbcl0pLnNlbGVjdGVkIHx8IHIgPT09IG8pICYmICFuLmRpc2FibGVkICYmICghbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFEKG4ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIikpKSB7IGlmICh0ID0gdyhuKS52YWwoKSwgYSkgcmV0dXJuIHQ7IHUucHVzaCh0KSB9IHJldHVybiB1IH0sIHNldDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGkgPSBlLm9wdGlvbnMsIG8gPSB3Lm1ha2VBcnJheSh0KSwgYSA9IGkubGVuZ3RoOyB3aGlsZSAoYS0tKSAoKHIgPSBpW2FdKS5zZWxlY3RlZCA9IHcuaW5BcnJheSh3LnZhbEhvb2tzLm9wdGlvbi5nZXQociksIG8pID4gLTEpICYmIChuID0gITApOyByZXR1cm4gbiB8fCAoZS5zZWxlY3RlZEluZGV4ID0gLTEpLCBvIH0gfSB9IH0pLCB3LmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbiAoKSB7IHcudmFsSG9va3NbdGhpc10gPSB7IHNldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSB3LmluQXJyYXkodyhlKS52YWwoKSwgdCkgPiAtMSB9IH0sIGguY2hlY2tPbiB8fCAody52YWxIb29rc1t0aGlzXS5nZXQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PT0gZS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPyAib24iIDogZS52YWx1ZSB9KSB9KSwgaC5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gZTsgdmFyIGx0ID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLCBjdCA9IGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfTsgdy5leHRlbmQody5ldmVudCwgeyB0cmlnZ2VyOiBmdW5jdGlvbiAodCwgbiwgaSwgbykgeyB2YXIgYSwgdSwgcywgbCwgYywgZCwgcCwgaCwgeSA9IFtpIHx8IHJdLCBtID0gZi5jYWxsKHQsICJ0eXBlIikgPyB0LnR5cGUgOiB0LCBiID0gZi5jYWxsKHQsICJuYW1lc3BhY2UiKSA/IHQubmFtZXNwYWNlLnNwbGl0KCIuIikgOiBbXTsgaWYgKHUgPSBoID0gcyA9IGkgPSBpIHx8IHIsIDMgIT09IGkubm9kZVR5cGUgJiYgOCAhPT0gaS5ub2RlVHlwZSAmJiAhbHQudGVzdChtICsgdy5ldmVudC50cmlnZ2VyZWQpICYmIChtLmluZGV4T2YoIi4iKSA+IC0xICYmIChtID0gKGIgPSBtLnNwbGl0KCIuIikpLnNoaWZ0KCksIGIuc29ydCgpKSwgYyA9IG0uaW5kZXhPZigiOiIpIDwgMCAmJiAib24iICsgbSwgdCA9IHRbdy5leHBhbmRvXSA/IHQgOiBuZXcgdy5FdmVudChtLCAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0KSwgdC5pc1RyaWdnZXIgPSBvID8gMiA6IDMsIHQubmFtZXNwYWNlID0gYi5qb2luKCIuIiksIHQucm5hbWVzcGFjZSA9IHQubmFtZXNwYWNlID8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBiLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCB0LnJlc3VsdCA9IHZvaWQgMCwgdC50YXJnZXQgfHwgKHQudGFyZ2V0ID0gaSksIG4gPSBudWxsID09IG4gPyBbdF0gOiB3Lm1ha2VBcnJheShuLCBbdF0pLCBwID0gdy5ldmVudC5zcGVjaWFsW21dIHx8IHt9LCBvIHx8ICFwLnRyaWdnZXIgfHwgITEgIT09IHAudHJpZ2dlci5hcHBseShpLCBuKSkpIHsgaWYgKCFvICYmICFwLm5vQnViYmxlICYmICF2KGkpKSB7IGZvciAobCA9IHAuZGVsZWdhdGVUeXBlIHx8IG0sIGx0LnRlc3QobCArIG0pIHx8ICh1ID0gdS5wYXJlbnROb2RlKTsgdTsgdSA9IHUucGFyZW50Tm9kZSl5LnB1c2godSksIHMgPSB1OyBzID09PSAoaS5vd25lckRvY3VtZW50IHx8IHIpICYmIHkucHVzaChzLmRlZmF1bHRWaWV3IHx8IHMucGFyZW50V2luZG93IHx8IGUpIH0gYSA9IDA7IHdoaWxlICgodSA9IHlbYSsrXSkgJiYgIXQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgaCA9IHUsIHQudHlwZSA9IGEgPiAxID8gbCA6IHAuYmluZFR5cGUgfHwgbSwgKGQgPSAoSy5nZXQodSwgImV2ZW50cyIpIHx8IHt9KVt0LnR5cGVdICYmIEsuZ2V0KHUsICJoYW5kbGUiKSkgJiYgZC5hcHBseSh1LCBuKSwgKGQgPSBjICYmIHVbY10pICYmIGQuYXBwbHkgJiYgWSh1KSAmJiAodC5yZXN1bHQgPSBkLmFwcGx5KHUsIG4pLCAhMSA9PT0gdC5yZXN1bHQgJiYgdC5wcmV2ZW50RGVmYXVsdCgpKTsgcmV0dXJuIHQudHlwZSA9IG0sIG8gfHwgdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBwLl9kZWZhdWx0ICYmICExICE9PSBwLl9kZWZhdWx0LmFwcGx5KHkucG9wKCksIG4pIHx8ICFZKGkpIHx8IGMgJiYgZyhpW21dKSAmJiAhdihpKSAmJiAoKHMgPSBpW2NdKSAmJiAoaVtjXSA9IG51bGwpLCB3LmV2ZW50LnRyaWdnZXJlZCA9IG0sIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBoLmFkZEV2ZW50TGlzdGVuZXIobSwgY3QpLCBpW21dKCksIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBoLnJlbW92ZUV2ZW50TGlzdGVuZXIobSwgY3QpLCB3LmV2ZW50LnRyaWdnZXJlZCA9IHZvaWQgMCwgcyAmJiAoaVtjXSA9IHMpKSwgdC5yZXN1bHQgfSB9LCBzaW11bGF0ZTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIgPSB3LmV4dGVuZChuZXcgdy5FdmVudCwgbiwgeyB0eXBlOiBlLCBpc1NpbXVsYXRlZDogITAgfSk7IHcuZXZlbnQudHJpZ2dlcihyLCBudWxsLCB0KSB9IH0pLCB3LmZuLmV4dGVuZCh7IHRyaWdnZXI6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB3LmV2ZW50LnRyaWdnZXIoZSwgdCwgdGhpcykgfSkgfSwgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gdGhpc1swXTsgaWYgKG4pIHJldHVybiB3LmV2ZW50LnRyaWdnZXIoZSwgdCwgbiwgITApIH0gfSksIGguZm9jdXNpbiB8fCB3LmVhY2goeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gZnVuY3Rpb24gKGUpIHsgdy5ldmVudC5zaW11bGF0ZSh0LCBlLnRhcmdldCwgdy5ldmVudC5maXgoZSkpIH07IHcuZXZlbnQuc3BlY2lhbFt0XSA9IHsgc2V0dXA6IGZ1bmN0aW9uICgpIHsgdmFyIHIgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywgaSA9IEsuYWNjZXNzKHIsIHQpOyBpIHx8IHIuYWRkRXZlbnRMaXN0ZW5lcihlLCBuLCAhMCksIEsuYWNjZXNzKHIsIHQsIChpIHx8IDApICsgMSkgfSwgdGVhcmRvd246IGZ1bmN0aW9uICgpIHsgdmFyIHIgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywgaSA9IEsuYWNjZXNzKHIsIHQpIC0gMTsgaSA/IEsuYWNjZXNzKHIsIHQsIGkpIDogKHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBuLCAhMCksIEsucmVtb3ZlKHIsIHQpKSB9IH0gfSk7IHZhciBmdCA9IC9cW1xdJC8sIGR0ID0gL1xyP1xuL2csIHB0ID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLCBodCA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsgZnVuY3Rpb24gZ3QoZSwgdCwgbiwgcikgeyB2YXIgaTsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHcuZWFjaCh0LCBmdW5jdGlvbiAodCwgaSkgeyBuIHx8IGZ0LnRlc3QoZSkgPyByKGUsIGkpIDogZ3QoZSArICJbIiArICgib2JqZWN0IiA9PSB0eXBlb2YgaSAmJiBudWxsICE9IGkgPyB0IDogIiIpICsgIl0iLCBpLCBuLCByKSB9KTsgZWxzZSBpZiAobiB8fCAib2JqZWN0IiAhPT0gYih0KSkgcihlLCB0KTsgZWxzZSBmb3IgKGkgaW4gdCkgZ3QoZSArICJbIiArIGkgKyAiXSIsIHRbaV0sIG4sIHIpIH0gdy5wYXJhbSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gW10sIGkgPSBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGcodCkgPyB0KCkgOiB0OyByW3IubGVuZ3RoXSA9IGVuY29kZVVSSUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudChudWxsID09IG4gPyAiIiA6IG4pIH07IGlmIChBcnJheS5pc0FycmF5KGUpIHx8IGUuanF1ZXJ5ICYmICF3LmlzUGxhaW5PYmplY3QoZSkpIHcuZWFjaChlLCBmdW5jdGlvbiAoKSB7IGkodGhpcy5uYW1lLCB0aGlzLnZhbHVlKSB9KTsgZWxzZSBmb3IgKG4gaW4gZSkgZ3QobiwgZVtuXSwgdCwgaSk7IHJldHVybiByLmpvaW4oIiYiKSB9LCB3LmZuLmV4dGVuZCh7IHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpIH0sIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoKSB7IHZhciBlID0gdy5wcm9wKHRoaXMsICJlbGVtZW50cyIpOyByZXR1cm4gZSA/IHcubWFrZUFycmF5KGUpIDogdGhpcyB9KS5maWx0ZXIoZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMudHlwZTsgcmV0dXJuIHRoaXMubmFtZSAmJiAhdyh0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgaHQudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAhcHQudGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICFkZS50ZXN0KGUpKSB9KS5tYXAoZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB3KHRoaXMpLnZhbCgpOyByZXR1cm4gbnVsbCA9PSBuID8gbnVsbCA6IEFycmF5LmlzQXJyYXkobikgPyB3Lm1hcChuLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4geyBuYW1lOiB0Lm5hbWUsIHZhbHVlOiBlLnJlcGxhY2UoZHQsICJcclxuIikgfSB9KSA6IHsgbmFtZTogdC5uYW1lLCB2YWx1ZTogbi5yZXBsYWNlKGR0LCAiXHJcbiIpIH0gfSkuZ2V0KCkgfSB9KSwgdy5mbi5leHRlbmQoeyB3cmFwQWxsOiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuIHRoaXNbMF0gJiYgKGcoZSkgJiYgKGUgPSBlLmNhbGwodGhpc1swXSkpLCB0ID0gdyhlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSwgdGhpc1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLCB0Lm1hcChmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpczsgd2hpbGUgKGUuZmlyc3RFbGVtZW50Q2hpbGQpIGUgPSBlLmZpcnN0RWxlbWVudENoaWxkOyByZXR1cm4gZSB9KS5hcHBlbmQodGhpcykpLCB0aGlzIH0sIHdyYXBJbm5lcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGcoZSkgPyB0aGlzLmVhY2goZnVuY3Rpb24gKHQpIHsgdyh0aGlzKS53cmFwSW5uZXIoZS5jYWxsKHRoaXMsIHQpKSB9KSA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHZhciB0ID0gdyh0aGlzKSwgbiA9IHQuY29udGVudHMoKTsgbi5sZW5ndGggPyBuLndyYXBBbGwoZSkgOiB0LmFwcGVuZChlKSB9KSB9LCB3cmFwOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGcoZSk7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKG4pIHsgdyh0aGlzKS53cmFwQWxsKHQgPyBlLmNhbGwodGhpcywgbikgOiBlKSB9KSB9LCB1bndyYXA6IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLnBhcmVudChlKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uICgpIHsgdyh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpIH0pLCB0aGlzIH0gfSksIHcuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiAhdy5leHByLnBzZXVkb3MudmlzaWJsZShlKSB9LCB3LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhKGUub2Zmc2V0V2lkdGggfHwgZS5vZmZzZXRIZWlnaHQgfHwgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkgfSwgaC5jcmVhdGVIVE1MRG9jdW1lbnQgPSBmdW5jdGlvbiAoKSB7IHZhciBlID0gci5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHk7IHJldHVybiBlLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IGUuY2hpbGROb2Rlcy5sZW5ndGggfSgpLCB3LnBhcnNlSFRNTCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIFtdOyAiYm9vbGVhbiIgPT0gdHlwZW9mIHQgJiYgKG4gPSB0LCB0ID0gITEpOyB2YXIgaSwgbywgYTsgcmV0dXJuIHQgfHwgKGguY3JlYXRlSFRNTERvY3VtZW50ID8gKChpID0gKHQgPSByLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZiA9IHIubG9jYXRpb24uaHJlZiwgdC5oZWFkLmFwcGVuZENoaWxkKGkpKSA6IHQgPSByKSwgbyA9IFMuZXhlYyhlKSwgYSA9ICFuICYmIFtdLCBvID8gW3QuY3JlYXRlRWxlbWVudChvWzFdKV0gOiAobyA9IGJlKFtlXSwgdCwgYSksIGEgJiYgYS5sZW5ndGggJiYgdyhhKS5yZW1vdmUoKSwgdy5tZXJnZShbXSwgby5jaGlsZE5vZGVzKSkgfSwgdy5vZmZzZXQgPSB7IHNldE9mZnNldDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8sIGEsIHUsIHMsIGwsIGMgPSB3LmNzcyhlLCAicG9zaXRpb24iKSwgZiA9IHcoZSksIGQgPSB7fTsgInN0YXRpYyIgPT09IGMgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKSwgdSA9IGYub2Zmc2V0KCksIG8gPSB3LmNzcyhlLCAidG9wIiksIHMgPSB3LmNzcyhlLCAibGVmdCIpLCAobCA9ICgiYWJzb2x1dGUiID09PSBjIHx8ICJmaXhlZCIgPT09IGMpICYmIChvICsgcykuaW5kZXhPZigiYXV0byIpID4gLTEpID8gKGEgPSAociA9IGYucG9zaXRpb24oKSkudG9wLCBpID0gci5sZWZ0KSA6IChhID0gcGFyc2VGbG9hdChvKSB8fCAwLCBpID0gcGFyc2VGbG9hdChzKSB8fCAwKSwgZyh0KSAmJiAodCA9IHQuY2FsbChlLCBuLCB3LmV4dGVuZCh7fSwgdSkpKSwgbnVsbCAhPSB0LnRvcCAmJiAoZC50b3AgPSB0LnRvcCAtIHUudG9wICsgYSksIG51bGwgIT0gdC5sZWZ0ICYmIChkLmxlZnQgPSB0LmxlZnQgLSB1LmxlZnQgKyBpKSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGQpIDogZi5jc3MoZCkgfSB9LCB3LmZuLmV4dGVuZCh7IG9mZnNldDogZnVuY3Rpb24gKGUpIHsgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB2b2lkIDAgPT09IGUgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7IHcub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0KSB9KTsgdmFyIHQsIG4sIHIgPSB0aGlzWzBdOyBpZiAocikgcmV0dXJuIHIuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPyAodCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIG4gPSByLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsIHsgdG9wOiB0LnRvcCArIG4ucGFnZVlPZmZzZXQsIGxlZnQ6IHQubGVmdCArIG4ucGFnZVhPZmZzZXQgfSkgOiB7IHRvcDogMCwgbGVmdDogMCB9IH0sIHBvc2l0aW9uOiBmdW5jdGlvbiAoKSB7IGlmICh0aGlzWzBdKSB7IHZhciBlLCB0LCBuLCByID0gdGhpc1swXSwgaSA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07IGlmICgiZml4ZWQiID09PSB3LmNzcyhyLCAicG9zaXRpb24iKSkgdCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGVsc2UgeyB0ID0gdGhpcy5vZmZzZXQoKSwgbiA9IHIub3duZXJEb2N1bWVudCwgZSA9IHIub2Zmc2V0UGFyZW50IHx8IG4uZG9jdW1lbnRFbGVtZW50OyB3aGlsZSAoZSAmJiAoZSA9PT0gbi5ib2R5IHx8IGUgPT09IG4uZG9jdW1lbnRFbGVtZW50KSAmJiAic3RhdGljIiA9PT0gdy5jc3MoZSwgInBvc2l0aW9uIikpIGUgPSBlLnBhcmVudE5vZGU7IGUgJiYgZSAhPT0gciAmJiAxID09PSBlLm5vZGVUeXBlICYmICgoaSA9IHcoZSkub2Zmc2V0KCkpLnRvcCArPSB3LmNzcyhlLCAiYm9yZGVyVG9wV2lkdGgiLCAhMCksIGkubGVmdCArPSB3LmNzcyhlLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKSB9IHJldHVybiB7IHRvcDogdC50b3AgLSBpLnRvcCAtIHcuY3NzKHIsICJtYXJnaW5Ub3AiLCAhMCksIGxlZnQ6IHQubGVmdCAtIGkubGVmdCAtIHcuY3NzKHIsICJtYXJnaW5MZWZ0IiwgITApIH0gfSB9LCBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsgd2hpbGUgKGUgJiYgInN0YXRpYyIgPT09IHcuY3NzKGUsICJwb3NpdGlvbiIpKSBlID0gZS5vZmZzZXRQYXJlbnQ7IHJldHVybiBlIHx8IHhlIH0pIH0gfSksIHcuZWFjaCh7IHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9ICJwYWdlWU9mZnNldCIgPT09IHQ7IHcuZm5bZV0gPSBmdW5jdGlvbiAocikgeyByZXR1cm4gXyh0aGlzLCBmdW5jdGlvbiAoZSwgciwgaSkgeyB2YXIgbzsgaWYgKHYoZSkgPyBvID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKG8gPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSBpKSByZXR1cm4gbyA/IG9bdF0gOiBlW3JdOyBvID8gby5zY3JvbGxUbyhuID8gby5wYWdlWE9mZnNldCA6IGksIG4gPyBpIDogby5wYWdlWU9mZnNldCkgOiBlW3JdID0gaSB9LCBlLCByLCBhcmd1bWVudHMubGVuZ3RoKSB9IH0pLCB3LmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbiAoZSwgdCkgeyB3LmNzc0hvb2tzW3RdID0gemUoaC5waXhlbFBvc2l0aW9uLCBmdW5jdGlvbiAoZSwgbikgeyBpZiAobikgcmV0dXJuIG4gPSBGZShlLCB0KSwgTWUudGVzdChuKSA/IHcoZSkucG9zaXRpb24oKVt0XSArICJweCIgOiBuIH0pIH0pLCB3LmVhY2goeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRoIiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmVhY2goeyBwYWRkaW5nOiAiaW5uZXIiICsgZSwgY29udGVudDogdCwgIiI6ICJvdXRlciIgKyBlIH0sIGZ1bmN0aW9uIChuLCByKSB7IHcuZm5bcl0gPSBmdW5jdGlvbiAoaSwgbykgeyB2YXIgYSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKG4gfHwgImJvb2xlYW4iICE9IHR5cGVvZiBpKSwgdSA9IG4gfHwgKCEwID09PSBpIHx8ICEwID09PSBvID8gIm1hcmdpbiIgOiAiYm9yZGVyIik7IHJldHVybiBfKHRoaXMsIGZ1bmN0aW9uICh0LCBuLCBpKSB7IHZhciBvOyByZXR1cm4gdih0KSA/IDAgPT09IHIuaW5kZXhPZigib3V0ZXIiKSA/IHRbImlubmVyIiArIGVdIDogdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBlXSA6IDkgPT09IHQubm9kZVR5cGUgPyAobyA9IHQuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heCh0LmJvZHlbInNjcm9sbCIgKyBlXSwgb1sic2Nyb2xsIiArIGVdLCB0LmJvZHlbIm9mZnNldCIgKyBlXSwgb1sib2Zmc2V0IiArIGVdLCBvWyJjbGllbnQiICsgZV0pKSA6IHZvaWQgMCA9PT0gaSA/IHcuY3NzKHQsIG4sIHUpIDogdy5zdHlsZSh0LCBuLCBpLCB1KSB9LCB0LCBhID8gaSA6IHZvaWQgMCwgYSkgfSB9KSB9KSwgdy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLCBmdW5jdGlvbiAoZSwgdCkgeyB3LmZuW3RdID0gZnVuY3Rpb24gKGUsIG4pIHsgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gdGhpcy5vbih0LCBudWxsLCBlLCBuKSA6IHRoaXMudHJpZ2dlcih0KSB9IH0pLCB3LmZuLmV4dGVuZCh7IGhvdmVyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodCB8fCBlKSB9IH0pLCB3LmZuLmV4dGVuZCh7IGJpbmQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiB0aGlzLm9uKGUsIG51bGwsIHQsIG4pIH0sIHVuYmluZDogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIHRoaXMub2ZmKGUsIG51bGwsIHQpIH0sIGRlbGVnYXRlOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gdGhpcy5vbih0LCBlLCBuLCByKSB9LCB1bmRlbGVnYXRlOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGUsICIqKiIpIDogdGhpcy5vZmYodCwgZSB8fCAiKioiLCBuKSB9IH0pLCB3LnByb3h5ID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGk7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGVbdF0sIHQgPSBlLCBlID0gbiksIGcoZSkpIHJldHVybiByID0gby5jYWxsKGFyZ3VtZW50cywgMiksIGkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlLmFwcGx5KHQgfHwgdGhpcywgci5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykpKSB9LCBpLmd1aWQgPSBlLmd1aWQgPSBlLmd1aWQgfHwgdy5ndWlkKysgLCBpIH0sIHcuaG9sZFJlYWR5ID0gZnVuY3Rpb24gKGUpIHsgZSA/IHcucmVhZHlXYWl0KysgOiB3LnJlYWR5KCEwKSB9LCB3LmlzQXJyYXkgPSBBcnJheS5pc0FycmF5LCB3LnBhcnNlSlNPTiA9IEpTT04ucGFyc2UsIHcubm9kZU5hbWUgPSBELCB3LmlzRnVuY3Rpb24gPSBnLCB3LmlzV2luZG93ID0gdiwgdy5jYW1lbENhc2UgPSBRLCB3LnR5cGUgPSBiLCB3Lm5vdyA9IERhdGUubm93LCB3LmlzTnVtZXJpYyA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdy50eXBlKGUpOyByZXR1cm4gKCJudW1iZXIiID09PSB0IHx8ICJzdHJpbmciID09PSB0KSAmJiAhaXNOYU4oZSAtIHBhcnNlRmxvYXQoZSkpIH0sICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHcgfSk7IHZhciB2dCA9IGUualF1ZXJ5LCB5dCA9IGUuJDsgcmV0dXJuIHcubm9Db25mbGljdCA9IGZ1bmN0aW9uICh0KSB7IHJldHVybiBlLiQgPT09IHcgJiYgKGUuJCA9IHl0KSwgdCAmJiBlLmpRdWVyeSA9PT0gdyAmJiAoZS5qUXVlcnkgPSB2dCksIHcgfSwgdCB8fCAoZS5qUXVlcnkgPSBlLiQgPSB3KSwgdyB9KTs=\"") - packr.PackJSONBytes("./assets/default", "wails.js", "\"Ly8gV2FpbHMgcnVudGltZSBKUwoKKGZ1bmN0aW9uICgpIHsKCXdpbmRvdy53YWlscyA9IHdpbmRvdy53YWlscyB8fCB7CgkJJDoge30KCX07CgoJLyoqKioqKioqKioqKioqKioqKiBVdGlsaXR5IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gLS0tLS0tLS0tLS0tLS0gUmFuZG9tIC0tLS0tLS0tLS0tLS0tCgkvLyBBd2Vzb21lUmFuZG9tCglmdW5jdGlvbiBjcnlwdG9SYW5kb20oKSB7CgkJdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOwoJCXJldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSlbMF07Cgl9CgoJLy8gTE9MUmFuZG9tCglmdW5jdGlvbiBiYXNpY1JhbmRvbSgpIHsKCQlyZXR1cm4gTWF0aC5yYW5kb20oKSAqIDkwMDcxOTkyNTQ3NDA5OTE7Cgl9CgoJLy8gUGljayBvbmUgYmFzZWQgb24gYnJvd3NlciBjYXBhYmlsaXR5Cgl2YXIgcmFuZG9tRnVuYzsKCWlmICh3aW5kb3cuY3J5cHRvKSB7CgkJcmFuZG9tRnVuYyA9IGNyeXB0b1JhbmRvbTsKCX0gZWxzZSB7CgkJcmFuZG9tRnVuYyA9IGJhc2ljUmFuZG9tOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIElkZW50aWZpZXJzIC0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyKG5hbWUpIHsKCQkvLyBEb24ndCB4c3MgeW91cnNlbGYgOi0pCgkJdHJ5IHsKCQkJbmV3IEZ1bmN0aW9uKCJ2YXIgIiArIG5hbWUpOwoJCQlyZXR1cm4gdHJ1ZQoJCX0gY2F0Y2ggKGUpIHsKCQkJcmV0dXJuIGZhbHNlCgkJfQoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEpTIC0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFkZFNjcmlwdChqcywgY2FsbGJhY2tJRCkgewoJCWNvbnNvbGUubG9nKCJBZGRpbmcgc2NyaXB0OiAiICsganMpCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoJCXNjcmlwdC50ZXh0ID0ganM7CgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoJCWNvbnNvbGUubG9nKCJDYWxsaW5nIGJhY2sgd2l0aDoiICsgY2FsbGJhY2tJRCk7CgkJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KGNhbGxiYWNrSUQpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEhUTUwgLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIHNldERvY3VtZW50KGh0bWwpIHsKCQlkb2N1bWVudC5vcGVuKCk7CgkJZG9jdW1lbnQud3JpdGUoaHRtbCk7CgkJZG9jdW1lbnQuY2xvc2UoKTsKCX0KCgkvLyAtLS0tLS0tLS0tLS0tLSBDU1MgLS0tLS0tLS0tLS0tLS0tCgkvLyBBZGFwdGVkIGZyb20gd2VidmlldyAtIHRoYW5rcyB6c2VyZ2UhCglmdW5jdGlvbiBpbmplY3RDU1MoY3NzKSB7CgkJdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwoJCWVsZW0uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7CgkJaWYgKGVsZW0uc3R5bGVTaGVldCkgewoJCQllbGVtLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzczsKCQl9IGVsc2UgewoJCQllbGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpOwoJCX0KCQl2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsKCQloZWFkLmFwcGVuZENoaWxkKGVsZW0pCgl9CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKiogQmluZGluZ3MgKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl2YXIgYmluZGluZ3NCYXNlUGF0aCA9IHdpbmRvdy53YWlscy4kOwoKCS8vIENyZWF0ZXMgdGhlIHBhdGggZ2l2ZW4gaW4gdGhlIGJpbmRpbmdzIHBhdGgKCWZ1bmN0aW9uIGFkZEJpbmRpbmdQYXRoKHBhdGhTZWN0aW9ucykgewoJCS8vIFN0YXJ0IGF0IHRoZSBiYXNlIHBhdGgKCQl2YXIgY3VycmVudFBhdGggPSBiaW5kaW5nc0Jhc2VQYXRoCgkJLy8gZm9yIGVhY2ggc2VjdGlvbiBvZiB0aGUgZ2l2ZW4gcGF0aAoJCWZvciAodmFyIHNlY3Rpb24gb2YgcGF0aFNlY3Rpb25zKSB7CgoJCQkvLyBJcyBzZWN0aW9uIGEgdmFsaWQgamF2YXNjcmlwdCBpZGVudGlmaWVyPwoJCQlpZiAoIWlzVmFsaWRJZGVudGlmaWVyKHNlY3Rpb24pKSB7CgkJCQl2YXIgZXJyTWVzc2FnZSA9IHNlY3Rpb24gKyAiIGlzIG5vdCBhIHZhbGlkIGphdmFzY3JpcHQgaWRlbnRpZmllci4iCgkJCQl2YXIgZXJyID0gbmV3IEVycm9yKGVyck1lc3NhZ2UpCgkJCQlyZXR1cm4gW251bGwsIGVycl0KCQkJfQoKCQkJLy8gQWRkIGlmIGRvZXNuJ3QgZXhpc3QKCQkJaWYgKCFjdXJyZW50UGF0aFtzZWN0aW9uXSkgewoJCQkJY3VycmVudFBhdGhbc2VjdGlvbl0gPSB7fQoJCQl9CgkJCS8vIHVwZGF0ZSBjdXJyZW50IHBhdGggdG8gbmV3IHBhdGgKCQkJY3VycmVudFBhdGggPSBjdXJyZW50UGF0aFtzZWN0aW9uXQoJCX0KCQlyZXR1cm4gW2N1cnJlbnRQYXRoLCBudWxsXQoJfQoKCWZ1bmN0aW9uIG5ld0JpbmRpbmcoYmluZGluZ05hbWUpIHsKCgkJLy8gR2V0IGFsbCB0aGUgc2VjdGlvbnMgb2YgdGhlIGJpbmRpbmcKCQl2YXIgYmluZGluZ1NlY3Rpb25zID0gYmluZGluZ05hbWUuc3BsaXQoJy4nKTsKCgkJLy8gR2V0IHRoZSBhY3R1YWwgZnVuY3Rpb24vbWV0aG9kIGNhbGwgbmFtZQoJCXZhciBjYWxsTmFtZSA9IGJpbmRpbmdTZWN0aW9ucy5wb3AoKTsKCgkJLy8gQWRkIHBhdGggdG8gYmluZGluZwoJCVtwYXRoVG9CaW5kaW5nLCBlcnJdID0gYWRkQmluZGluZ1BhdGgoYmluZGluZ1NlY3Rpb25zKQoKCQlpZiAoZXJyICE9IG51bGwpIHsKCQkJLy8gV2UgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IKCQkJLy8gd2luZG93LndhaWxzLmxvZy5FcnJvcigiIikKCQkJcmV0dXJuCgkJfQoKCQkvLyBBZGQgYmluZGluZyBjYWxsCgkJcGF0aFRvQmluZGluZ1tjYWxsTmFtZV0gPSBmdW5jdGlvbiAoKSB7CgoJCQkvLyBObyB0aW1lb3V0IGJ5IGRlZmF1bHQKCQkJdmFyIHRpbWVvdXQgPSAwOwoKCQkJLy8gQWN0dWFsIGZ1bmN0aW9uCgkJCWZ1bmN0aW9uIGR5bmFtaWMoKSB7CgkJCQl2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKQoJCQkJcmV0dXJuIGNhbGwoYmluZGluZ05hbWUsIGFyZ3MsIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBBbGxvdyBzZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG5ld1RpbWVvdXQpIHsKCQkJCXRpbWVvdXQgPSBuZXdUaW1lb3V0OwoJCQl9CgoJCQkvLyBBbGxvdyBnZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5nZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkgewoJCQkJcmV0dXJuIHRpbWVvdXQ7CgkJCX0KCgkJCXJldHVybiBkeW5hbWljOwoJCX0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2FsbHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGNhbGxiYWNrcyA9IHt9OwoKCS8vIENhbGwgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHRvIGNhbGwgdGhlIGJpbmRpbmcgd2l0aCB0aGUKCS8vIGdpdmVuIGRhdGEuIEEgcHJvbWlzZSBpcyByZXR1cm5lZCBhbmQgd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKCS8vIGJhY2tlbmQgcmVzcG9uZHMuIFRoaXMgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsCgkvLyBvciByZWplY3RlZCBpZiBhbiBlcnJvciBpcyBwYXNzZWQgYmFjay4KCS8vIFRoZXJlIGlzIGEgdGltZW91dCBtZWNoYW5pc20uIElmIHRoZSBjYWxsIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aGUgZ2l2ZW4KCS8vIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KCglmdW5jdGlvbiBjYWxsKGJpbmRpbmdOYW1lLCBkYXRhLCB0aW1lb3V0KSB7CgoJCS8vIFRpbWVvdXQgaW5maW5pdGUgYnkgZGVmYXVsdAoJCWlmICh0aW1lb3V0ID09IG51bGwgfHwgdGltZW91dCA9PSB1bmRlZmluZWQpIHsKCQkJdGltZW91dCA9IDA7CgkJfQoKCQkvLyBDcmVhdGUgYSBwcm9taXNlCgkJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCgkJCS8vIENyZWF0ZSBhIHVuaXF1ZSBjYWxsYmFja0lECgkJCXZhciBjYWxsYmFja0lEOwoJCQlkbyB7CgkJCQljYWxsYmFja0lEID0gYmluZGluZ05hbWUgKyAiLSIgKyByYW5kb21GdW5jKCk7CgkJCX0gd2hpbGUgKGNhbGxiYWNrc1tjYWxsYmFja0lEXSkKCgkJCS8vIFNldCB0aW1lb3V0CgkJCWlmICh0aW1lb3V0ID4gMCkgewoJCQkJdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlyZWplY3QoRXJyb3IoIkNhbGwgdG8gIiArIGJpbmRpbmdOYW1lICsgIiB0aW1lZCBvdXQuIFJlcXVlc3QgSUQ6ICIgKyBjYWxsYmFja0lEKSkKCQkJCX0sIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBTdG9yZSBjYWxsYmFjawoJCQljYWxsYmFja3NbY2FsbGJhY2tJRF0gPSB7CgkJCQl0aW1lb3V0SGFuZGxlOiB0aW1lb3V0SGFuZGxlLAoJCQkJcmVqZWN0OiByZWplY3QsCgkJCQlyZXNvbHZlOiByZXNvbHZlCgkJCX0KCQkJdHJ5IHsKCQkJCXZhciBwYXlsb2FkZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpCgkJCQkvLyBDcmVhdGUgdGhlIG1lc3NhZ2UKCQkJCW1lc3NhZ2UgPSB7CgkJCQkJdHlwZTogImNhbGwiLAoJCQkJCWNhbGxiYWNraWQ6IGNhbGxiYWNrSUQsCgkJCQkJcGF5bG9hZDogewoJCQkJCQliaW5kaW5nTmFtZTogYmluZGluZ05hbWUsCgkJCQkJCWRhdGE6IHBheWxvYWRkYXRhLAoJCQkJCX0KCQkJCX0KCgkJCQkvLyBNYWtlIHRoZSBjYWxsCgkJCQl2YXIgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpCgkJCQlleHRlcm5hbC5pbnZva2UocGF5bG9hZCk7CgkJCX0gY2F0Y2ggKGUpIHsKCQkJCWNvbnNvbGUuZXJyb3IoZSkKCQkJfQoJCX0pCgl9CgoKCS8vIENhbGxlZCBieSB0aGUgYmFja2VuZCB0byByZXR1cm4gZGF0YSB0byBhIHByZXZpb3VzbHkgY2FsbGVkCgkvLyBiaW5kaW5nIGludm9jYXRpb24KCWZ1bmN0aW9uIGNhbGxiYWNrKGluY29taW5nTWVzc2FnZSkgewoJCS8vIHdhaWxzLmxvZy5kZWJ1ZygiY2FsbGJhY2sgY2FsbGVkIHdpdGg6ICIgKyBpbmNvbWluZ01lc3NhZ2UpCgkJLy8gUGFyc2UgdGhlIG1lc3NhZ2UKCQl2YXIgbWVzc2FnZQoJCS8vIHdhaWxzLmxvZy5kZWJ1ZyhpbmNvbWluZ01lc3NhZ2UpCgkJdHJ5IHsKCQkJbWVzc2FnZSA9IEpTT04ucGFyc2UoaW5jb21pbmdNZXNzYWdlKQoJCX0gY2F0Y2ggKGUpIHsKCQkJd2FpbHMubG9nLmRlYnVnKCJJbnZhbGlkIEpTT04gcGFzc2VkIHRvIGNhbGxiYWNrOiAiICsgZS5tZXNzYWdlKQoJCQl3YWlscy5sb2cuZGVidWcoIk1lc3NhZ2U6ICIgKyBpbmNvbWluZ01lc3NhZ2UpCgkJCXJldHVybgoJCX0KCQljYWxsYmFja0lEID0gbWVzc2FnZS5jYWxsYmFja2lkCgkJY2FsbGJhY2tEYXRhID0gY2FsbGJhY2tzW2NhbGxiYWNrSURdCgkJaWYgKCFjYWxsYmFja0RhdGEpIHsKCQkJY29uc29sZS5lcnJvcigiQ2FsbGJhY2sgJyIgKyBjYWxsYmFja0lEICsgIicgbm90IHJlZ2lzdGVkISEhIikKCQkJcmV0dXJuCgkJfQoJCWNsZWFyVGltZW91dChjYWxsYmFja0RhdGEudGltZW91dEhhbmRsZSkKCQlkZWxldGUgY2FsbGJhY2tzW2NhbGxiYWNrSURdCgkJaWYgKG1lc3NhZ2UuZXJyb3IpIHsKCQkJcmV0dXJuIGNhbGxiYWNrRGF0YS5yZWplY3QobWVzc2FnZS5lcnJvcikKCQl9CgkJcmV0dXJuIGNhbGxiYWNrRGF0YS5yZXNvbHZlKG1lc3NhZ2UuZGF0YSkKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiogRXZlbnRzICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXZhciBldmVudExpc3RlbmVycyA9IHt9OwoKCS8vIFJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMKCWZ1bmN0aW9uIG9uKGV2ZW50TmFtZSwgY2FsbGJhY2spIHsKCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdID0gZXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXTsKCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdLnB1c2goY2FsbGJhY2spOwoJfQoKCS8vIG5vdGlmeSBpbmZvcm1zIGZyb250ZW5kIGxpc3RlbmVycyB0aGF0IGFuIGV2ZW50IHdhcyBlbWl0dGVkIHdpdGggdGhlIGdpdmVuIGRhdGEKCWZ1bmN0aW9uIG5vdGlmeShldmVudE5hbWUsIGRhdGEpIHsKCQlpZiAoZXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSkgewoJCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdLmZvckVhY2goZWxlbWVudCA9PiB7CgkJCQl2YXIgcGFyc2VkRGF0YSA9IFtdCgkJCQkvLyBQYXJzZSBkYXRhIGlmIHdlIGhhdmUgaXQKCQkJCWlmIChkYXRhKSB7CgkJCQkJdHJ5IHsKCQkJCQkJcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CgkJCQkJfSBjYXRjaCAoZSkgewoJCQkJCQl3YWlscy5sb2cuZXJyb3IoIkludmFsaWQgSlNPTiBkYXRhIHNlbnQgdG8gbm90aWZ5LiBFdmVudCBuYW1lID0gIiArIGV2ZW50TmFtZSkKCQkJCQl9CgkJCQl9CgkJCQllbGVtZW50LmFwcGx5KG51bGwsIHBhcnNlZERhdGEpOwoJCQl9KTsKCQl9Cgl9CgoJLy8gZW1pdCBhbiBldmVudCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBkYXRhCglmdW5jdGlvbiBlbWl0KGV2ZW50TmFtZSkgewoKCQkvLyBDYWxjdWxhdGUgdGhlIGRhdGEKCQl2YXIgZGF0YSA9IEpTT04uc3RyaW5naWZ5KFtdLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykuc2xpY2UoMSkpOwoKCQkvLyBOb3RpZnkgYmFja2VuZAoJCW1lc3NhZ2UgPSB7CgkJCXR5cGU6ICJldmVudCIsCgkJCXBheWxvYWQ6IHsKCQkJCW5hbWU6IGV2ZW50TmFtZSwKCQkJCWRhdGE6IGRhdGEsCgkJCX0KCQl9CgkJZXh0ZXJuYWwuaW52b2tlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTsKCX0KCgkvLyBFdmVudHMgY2FsbHMKCXdpbmRvdy53YWlscy5ldmVudHMgPSB7IGVtaXQ6IGVtaXQsIG9uOiBvbiB9OwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLyoqKioqKioqKioqKioqKioqKioqKioqKiogTG9nZ2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvLyBTZW5kcyBhIGxvZyBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHdpdGggdGhlIGdpdmVuCgkvLyBsZXZlbCArIG1lc3NhZ2UKCWZ1bmN0aW9uIHNlbmRMb2dNZXNzYWdlKGxldmVsLCBtZXNzYWdlKSB7CgoJCS8vIExvZyBNZXNzYWdlCgkJbWVzc2FnZSA9IHsKCQkJdHlwZTogImxvZyIsCgkJCXBheWxvYWQ6IHsKCQkJCWxldmVsOiBsZXZlbCwKCQkJCW1lc3NhZ2U6IG1lc3NhZ2UsCgkJCX0KCQl9CgkJZXh0ZXJuYWwuaW52b2tlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTsKCX0KCglmdW5jdGlvbiBsb2dEZWJ1ZyhtZXNzYWdlKSB7CgkJc2VuZExvZ01lc3NhZ2UoImRlYnVnIiwgbWVzc2FnZSk7Cgl9CglmdW5jdGlvbiBsb2dJbmZvKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiaW5mbyIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nV2FybmluZyhtZXNzYWdlKSB7CgkJc2VuZExvZ01lc3NhZ2UoIndhcm5pbmciLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0Vycm9yKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZXJyb3IiLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0ZhdGFsKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZmF0YWwiLCBtZXNzYWdlKTsKCX0KCgl3aW5kb3cud2FpbHMubG9nID0gewoJCWRlYnVnOiBsb2dEZWJ1ZywKCQlpbmZvOiBsb2dJbmZvLAoJCXdhcm5pbmc6IGxvZ1dhcm5pbmcsCgkJZXJyb3I6IGxvZ0Vycm9yLAoJCWZhdGFsOiBsb2dGYXRhbCwKCX07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqIEV4cG9ydHMgKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl3aW5kb3cud2FpbHMuXyA9IHsKCQluZXdCaW5kaW5nOiBuZXdCaW5kaW5nLAoJCWNhbGxiYWNrOiBjYWxsYmFjaywKCQlub3RpZnk6IG5vdGlmeSwKCQlzZW5kTG9nTWVzc2FnZTogc2VuZExvZ01lc3NhZ2UsCgkJY2FsbGJhY2tzOiBjYWxsYmFja3MsCgkJaW5qZWN0Q1NTOiBpbmplY3RDU1MsCgkJYWRkU2NyaXB0OiBhZGRTY3JpcHQsCgkJc2V0RG9jdW1lbnQ6IHNldERvY3VtZW50LAoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gTm90aWZ5IGJhY2tlbmQgdGhhdCB0aGUgcnVudGltZSBoYXMgZmluaXNoZWQgbG9hZGluZwoJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KCJ3YWlsczpsb2FkZWQiKTsKCn0pKCk=\"") + packr.PackJSONBytes("./assets/default", "wails.js", "\"Ly8gV2FpbHMgcnVudGltZSBKUwoKKGZ1bmN0aW9uICgpIHsKCXdpbmRvdy53YWlscyA9IHdpbmRvdy53YWlscyB8fCB7CgkJJDoge30KCX07CgoJLyoqKioqKioqKioqKioqKioqKiBVdGlsaXR5IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gLS0tLS0tLS0tLS0tLS0gUmFuZG9tIC0tLS0tLS0tLS0tLS0tCgkvLyBBd2Vzb21lUmFuZG9tCglmdW5jdGlvbiBjcnlwdG9SYW5kb20oKSB7CgkJdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOwoJCXJldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSlbMF07Cgl9CgoJLy8gTE9MUmFuZG9tCglmdW5jdGlvbiBiYXNpY1JhbmRvbSgpIHsKCQlyZXR1cm4gTWF0aC5yYW5kb20oKSAqIDkwMDcxOTkyNTQ3NDA5OTE7Cgl9CgoJLy8gUGljayBvbmUgYmFzZWQgb24gYnJvd3NlciBjYXBhYmlsaXR5Cgl2YXIgcmFuZG9tRnVuYzsKCWlmICh3aW5kb3cuY3J5cHRvKSB7CgkJcmFuZG9tRnVuYyA9IGNyeXB0b1JhbmRvbTsKCX0gZWxzZSB7CgkJcmFuZG9tRnVuYyA9IGJhc2ljUmFuZG9tOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIElkZW50aWZpZXJzIC0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyKG5hbWUpIHsKCQkvLyBEb24ndCB4c3MgeW91cnNlbGYgOi0pCgkJdHJ5IHsKCQkJbmV3IEZ1bmN0aW9uKCJ2YXIgIiArIG5hbWUpOwoJCQlyZXR1cm4gdHJ1ZQoJCX0gY2F0Y2ggKGUpIHsKCQkJcmV0dXJuIGZhbHNlCgkJfQoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEpTIC0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFkZFNjcmlwdChqcywgY2FsbGJhY2tJRCkgewoJCWNvbnNvbGUubG9nKCJBZGRpbmcgc2NyaXB0OiAiICsganMpCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoJCXNjcmlwdC50ZXh0ID0ganM7CgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoJCWNvbnNvbGUubG9nKCJDYWxsaW5nIGJhY2sgd2l0aDoiICsgY2FsbGJhY2tJRCk7CgkJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KGNhbGxiYWNrSUQpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIENTUyAtLS0tLS0tLS0tLS0tLS0KCS8vIEFkYXB0ZWQgZnJvbSB3ZWJ2aWV3IC0gdGhhbmtzIHpzZXJnZSEKCWZ1bmN0aW9uIGluamVjdENTUyhjc3MpIHsKCQl2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CgkJZWxlbS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTsKCQlpZiAoZWxlbS5zdHlsZVNoZWV0KSB7CgkJCWVsZW0uc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzOwoJCX0gZWxzZSB7CgkJCWVsZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7CgkJfQoJCXZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwoJCWhlYWQuYXBwZW5kQ2hpbGQoZWxlbSkKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiBCaW5kaW5ncyAqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXZhciBiaW5kaW5nc0Jhc2VQYXRoID0gd2luZG93LndhaWxzLiQ7CgoJLy8gQ3JlYXRlcyB0aGUgcGF0aCBnaXZlbiBpbiB0aGUgYmluZGluZ3MgcGF0aAoJZnVuY3Rpb24gYWRkQmluZGluZ1BhdGgocGF0aFNlY3Rpb25zKSB7CgkJLy8gU3RhcnQgYXQgdGhlIGJhc2UgcGF0aAoJCXZhciBjdXJyZW50UGF0aCA9IGJpbmRpbmdzQmFzZVBhdGgKCQkvLyBmb3IgZWFjaCBzZWN0aW9uIG9mIHRoZSBnaXZlbiBwYXRoCgkJZm9yICh2YXIgc2VjdGlvbiBvZiBwYXRoU2VjdGlvbnMpIHsKCgkJCS8vIElzIHNlY3Rpb24gYSB2YWxpZCBqYXZhc2NyaXB0IGlkZW50aWZpZXI/CgkJCWlmICghaXNWYWxpZElkZW50aWZpZXIoc2VjdGlvbikpIHsKCQkJCXZhciBlcnJNZXNzYWdlID0gc2VjdGlvbiArICIgaXMgbm90IGEgdmFsaWQgamF2YXNjcmlwdCBpZGVudGlmaWVyLiIKCQkJCXZhciBlcnIgPSBuZXcgRXJyb3IoZXJyTWVzc2FnZSkKCQkJCXJldHVybiBbbnVsbCwgZXJyXQoJCQl9CgoJCQkvLyBBZGQgaWYgZG9lc24ndCBleGlzdAoJCQlpZiAoIWN1cnJlbnRQYXRoW3NlY3Rpb25dKSB7CgkJCQljdXJyZW50UGF0aFtzZWN0aW9uXSA9IHt9CgkJCX0KCQkJLy8gdXBkYXRlIGN1cnJlbnQgcGF0aCB0byBuZXcgcGF0aAoJCQljdXJyZW50UGF0aCA9IGN1cnJlbnRQYXRoW3NlY3Rpb25dCgkJfQoJCXJldHVybiBbY3VycmVudFBhdGgsIG51bGxdCgl9CgoJZnVuY3Rpb24gbmV3QmluZGluZyhiaW5kaW5nTmFtZSkgewoKCQkvLyBHZXQgYWxsIHRoZSBzZWN0aW9ucyBvZiB0aGUgYmluZGluZwoJCXZhciBiaW5kaW5nU2VjdGlvbnMgPSBiaW5kaW5nTmFtZS5zcGxpdCgnLicpOwoKCQkvLyBHZXQgdGhlIGFjdHVhbCBmdW5jdGlvbi9tZXRob2QgY2FsbCBuYW1lCgkJdmFyIGNhbGxOYW1lID0gYmluZGluZ1NlY3Rpb25zLnBvcCgpOwoKCQkvLyBBZGQgcGF0aCB0byBiaW5kaW5nCgkJW3BhdGhUb0JpbmRpbmcsIGVycl0gPSBhZGRCaW5kaW5nUGF0aChiaW5kaW5nU2VjdGlvbnMpCgoJCWlmIChlcnIgIT0gbnVsbCkgewoJCQkvLyBXZSBuZWVkIHRvIHJldHVybiBhbiBlcnJvcgoJCQlyZXR1cm4gZXJyCgkJfQoKCQkvLyBBZGQgYmluZGluZyBjYWxsCgkJcGF0aFRvQmluZGluZ1tjYWxsTmFtZV0gPSBmdW5jdGlvbiAoKSB7CgoJCQkvLyBObyB0aW1lb3V0IGJ5IGRlZmF1bHQKCQkJdmFyIHRpbWVvdXQgPSAwOwoKCQkJLy8gQWN0dWFsIGZ1bmN0aW9uCgkJCWZ1bmN0aW9uIGR5bmFtaWMoKSB7CgkJCQl2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKQoJCQkJcmV0dXJuIGNhbGwoYmluZGluZ05hbWUsIGFyZ3MsIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBBbGxvdyBzZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG5ld1RpbWVvdXQpIHsKCQkJCXRpbWVvdXQgPSBuZXdUaW1lb3V0OwoJCQl9CgoJCQkvLyBBbGxvdyBnZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5nZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkgewoJCQkJcmV0dXJuIHRpbWVvdXQ7CgkJCX0KCgkJCXJldHVybiBkeW5hbWljOwoJCX0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2FsbHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGNhbGxiYWNrcyA9IHt9OwoKCS8vIENhbGwgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHRvIGNhbGwgdGhlIGJpbmRpbmcgd2l0aCB0aGUKCS8vIGdpdmVuIGRhdGEuIEEgcHJvbWlzZSBpcyByZXR1cm5lZCBhbmQgd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKCS8vIGJhY2tlbmQgcmVzcG9uZHMuIFRoaXMgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsCgkvLyBvciByZWplY3RlZCBpZiBhbiBlcnJvciBpcyBwYXNzZWQgYmFjay4KCS8vIFRoZXJlIGlzIGEgdGltZW91dCBtZWNoYW5pc20uIElmIHRoZSBjYWxsIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aGUgZ2l2ZW4KCS8vIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KCglmdW5jdGlvbiBjYWxsKGJpbmRpbmdOYW1lLCBkYXRhLCB0aW1lb3V0KSB7CgoJCS8vIFRpbWVvdXQgaW5maW5pdGUgYnkgZGVmYXVsdAoJCWlmICh0aW1lb3V0ID09IG51bGwgfHwgdGltZW91dCA9PSB1bmRlZmluZWQpIHsKCQkJdGltZW91dCA9IDA7CgkJfQoKCQkvLyBDcmVhdGUgYSBwcm9taXNlCgkJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCgkJCS8vIENyZWF0ZSBhIHVuaXF1ZSBjYWxsYmFja0lECgkJCXZhciBjYWxsYmFja0lEOwoJCQlkbyB7CgkJCQljYWxsYmFja0lEID0gYmluZGluZ05hbWUgKyAiLSIgKyByYW5kb21GdW5jKCk7CgkJCX0gd2hpbGUgKGNhbGxiYWNrc1tjYWxsYmFja0lEXSkKCgkJCS8vIFNldCB0aW1lb3V0CgkJCWlmICh0aW1lb3V0ID4gMCkgewoJCQkJdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlyZWplY3QoRXJyb3IoIkNhbGwgdG8gIiArIGJpbmRpbmdOYW1lICsgIiB0aW1lZCBvdXQuIFJlcXVlc3QgSUQ6ICIgKyBjYWxsYmFja0lEKSkKCQkJCX0sIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBTdG9yZSBjYWxsYmFjawoJCQljYWxsYmFja3NbY2FsbGJhY2tJRF0gPSB7CgkJCQl0aW1lb3V0SGFuZGxlOiB0aW1lb3V0SGFuZGxlLAoJCQkJcmVqZWN0OiByZWplY3QsCgkJCQlyZXNvbHZlOiByZXNvbHZlCgkJCX0KCQkJdHJ5IHsKCQkJCXZhciBwYXlsb2FkZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpCgkJCQkvLyBDcmVhdGUgdGhlIG1lc3NhZ2UKCQkJCW1lc3NhZ2UgPSB7CgkJCQkJdHlwZTogImNhbGwiLAoJCQkJCWNhbGxiYWNraWQ6IGNhbGxiYWNrSUQsCgkJCQkJcGF5bG9hZDogewoJCQkJCQliaW5kaW5nTmFtZTogYmluZGluZ05hbWUsCgkJCQkJCWRhdGE6IHBheWxvYWRkYXRhLAoJCQkJCX0KCQkJCX0KCgkJCQkvLyBNYWtlIHRoZSBjYWxsCgkJCQl2YXIgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpCgkJCQlleHRlcm5hbC5pbnZva2UocGF5bG9hZCk7CgkJCX0gY2F0Y2ggKGUpIHsKCQkJCWNvbnNvbGUuZXJyb3IoZSkKCQkJfQoJCX0pCgl9CgoKCS8vIENhbGxlZCBieSB0aGUgYmFja2VuZCB0byByZXR1cm4gZGF0YSB0byBhIHByZXZpb3VzbHkgY2FsbGVkCgkvLyBiaW5kaW5nIGludm9jYXRpb24KCWZ1bmN0aW9uIGNhbGxiYWNrKGluY29taW5nTWVzc2FnZSkgewoJCS8vIFBhcnNlIHRoZSBtZXNzYWdlCgkJdmFyIG1lc3NhZ2UKCQl0cnkgewoJCQltZXNzYWdlID0gSlNPTi5wYXJzZShpbmNvbWluZ01lc3NhZ2UpCgkJfSBjYXRjaCAoZSkgewoJCQl3YWlscy5sb2cuZGVidWcoIkludmFsaWQgSlNPTiBwYXNzZWQgdG8gY2FsbGJhY2s6ICIgKyBlLm1lc3NhZ2UpCgkJCXdhaWxzLmxvZy5kZWJ1ZygiTWVzc2FnZTogIiArIGluY29taW5nTWVzc2FnZSkKCQkJcmV0dXJuCgkJfQoJCWNhbGxiYWNrSUQgPSBtZXNzYWdlLmNhbGxiYWNraWQKCQljYWxsYmFja0RhdGEgPSBjYWxsYmFja3NbY2FsbGJhY2tJRF0KCQlpZiAoIWNhbGxiYWNrRGF0YSkgewoJCQljb25zb2xlLmVycm9yKCJDYWxsYmFjayAnIiArIGNhbGxiYWNrSUQgKyAiJyBub3QgcmVnaXN0ZWQhISEiKQoJCQlyZXR1cm4KCQl9CgkJY2xlYXJUaW1lb3V0KGNhbGxiYWNrRGF0YS50aW1lb3V0SGFuZGxlKQoJCWRlbGV0ZSBjYWxsYmFja3NbY2FsbGJhY2tJRF0KCQlpZiAobWVzc2FnZS5lcnJvcikgewoJCQlyZXR1cm4gY2FsbGJhY2tEYXRhLnJlamVjdChtZXNzYWdlLmVycm9yKQoJCX0KCQlyZXR1cm4gY2FsbGJhY2tEYXRhLnJlc29sdmUobWVzc2FnZS5kYXRhKQoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiBFdmVudHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGV2ZW50TGlzdGVuZXJzID0ge307CgoJLy8gUmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycwoJZnVuY3Rpb24gb24oZXZlbnROYW1lLCBjYWxsYmFjaykgewoJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gPSBldmVudExpc3RlbmVyc1tldmVudE5hbWVdIHx8IFtdOwoJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0ucHVzaChjYWxsYmFjayk7Cgl9CgoJLy8gbm90aWZ5IGluZm9ybXMgZnJvbnRlbmQgbGlzdGVuZXJzIHRoYXQgYW4gZXZlbnQgd2FzIGVtaXR0ZWQgd2l0aCB0aGUgZ2l2ZW4gZGF0YQoJZnVuY3Rpb24gbm90aWZ5KGV2ZW50TmFtZSwgZGF0YSkgewoJCWlmIChldmVudExpc3RlbmVyc1tldmVudE5hbWVdKSB7CgkJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0uZm9yRWFjaChlbGVtZW50ID0+IHsKCQkJCXZhciBwYXJzZWREYXRhID0gW10KCQkJCS8vIFBhcnNlIGRhdGEgaWYgd2UgaGF2ZSBpdAoJCQkJaWYgKGRhdGEpIHsKCQkJCQl0cnkgewoJCQkJCQlwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTsKCQkJCQl9IGNhdGNoIChlKSB7CgkJCQkJCXdhaWxzLmxvZy5lcnJvcigiSW52YWxpZCBKU09OIGRhdGEgc2VudCB0byBub3RpZnkuIEV2ZW50IG5hbWUgPSAiICsgZXZlbnROYW1lKQoJCQkJCX0KCQkJCX0KCQkJCWVsZW1lbnQuYXBwbHkobnVsbCwgcGFyc2VkRGF0YSk7CgkJCX0pOwoJCX0KCX0KCgkvLyBlbWl0IGFuIGV2ZW50IHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIGRhdGEKCWZ1bmN0aW9uIGVtaXQoZXZlbnROYW1lKSB7CgoJCS8vIENhbGN1bGF0ZSB0aGUgZGF0YQoJCXZhciBkYXRhID0gSlNPTi5zdHJpbmdpZnkoW10uc2xpY2UuYXBwbHkoYXJndW1lbnRzKS5zbGljZSgxKSk7CgoJCS8vIE5vdGlmeSBiYWNrZW5kCgkJbWVzc2FnZSA9IHsKCQkJdHlwZTogImV2ZW50IiwKCQkJcGF5bG9hZDogewoJCQkJbmFtZTogZXZlbnROYW1lLAoJCQkJZGF0YTogZGF0YSwKCQkJfQoJCX0KCQlleHRlcm5hbC5pbnZva2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwoJfQoKCS8vIEV2ZW50cyBjYWxscwoJd2luZG93LndhaWxzLmV2ZW50cyA9IHsgZW1pdDogZW1pdCwgb246IG9uIH07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiBMb2dnaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8vIFNlbmRzIGEgbG9nIG1lc3NhZ2UgdG8gdGhlIGJhY2tlbmQgd2l0aCB0aGUgZ2l2ZW4KCS8vIGxldmVsICsgbWVzc2FnZQoJZnVuY3Rpb24gc2VuZExvZ01lc3NhZ2UobGV2ZWwsIG1lc3NhZ2UpIHsKCgkJLy8gTG9nIE1lc3NhZ2UKCQltZXNzYWdlID0gewoJCQl0eXBlOiAibG9nIiwKCQkJcGF5bG9hZDogewoJCQkJbGV2ZWw6IGxldmVsLAoJCQkJbWVzc2FnZTogbWVzc2FnZSwKCQkJfQoJCX0KCQlleHRlcm5hbC5pbnZva2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwoJfQoKCWZ1bmN0aW9uIGxvZ0RlYnVnKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZGVidWciLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0luZm8obWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJpbmZvIiwgbWVzc2FnZSk7Cgl9CglmdW5jdGlvbiBsb2dXYXJuaW5nKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgid2FybmluZyIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nRXJyb3IobWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJlcnJvciIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nRmF0YWwobWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJmYXRhbCIsIG1lc3NhZ2UpOwoJfQoKCXdpbmRvdy53YWlscy5sb2cgPSB7CgkJZGVidWc6IGxvZ0RlYnVnLAoJCWluZm86IGxvZ0luZm8sCgkJd2FybmluZzogbG9nV2FybmluZywKCQllcnJvcjogbG9nRXJyb3IsCgkJZmF0YWw6IGxvZ0ZhdGFsLAoJfTsKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiogRXhwb3J0cyAqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXdpbmRvdy53YWlscy5fID0gewoJCW5ld0JpbmRpbmc6IG5ld0JpbmRpbmcsCgkJY2FsbGJhY2s6IGNhbGxiYWNrLAoJCW5vdGlmeTogbm90aWZ5LAoJCXNlbmRMb2dNZXNzYWdlOiBzZW5kTG9nTWVzc2FnZSwKCQljYWxsYmFja3M6IGNhbGxiYWNrcywKCQlpbmplY3RDU1M6IGluamVjdENTUywKCQlhZGRTY3JpcHQ6IGFkZFNjcmlwdCwKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8vIE5vdGlmeSBiYWNrZW5kIHRoYXQgdGhlIHJ1bnRpbWUgaGFzIGZpbmlzaGVkIGxvYWRpbmcKCXdpbmRvdy53YWlscy5ldmVudHMuZW1pdCgid2FpbHM6bG9hZGVkIik7Cgp9KSgp\"") packr.PackJSONBytes("./assets/default", "default.html", "\"PGRpdiBpZD0iYXBwIj48L2Rpdj4=\"") packr.PackJSONBytes("./assets/default", "jquery.3.3.1.min.js", "\"LyohIGpRdWVyeSB2My4zLjEgLWFqYXgsLWFqYXgvanNvbnAsLWFqYXgvbG9hZCwtYWpheC9wYXJzZVhNTCwtYWpheC9zY3JpcHQsLWFqYXgvdmFyL2xvY2F0aW9uLC1hamF4L3Zhci9ub25jZSwtYWpheC92YXIvcnF1ZXJ5LC1hamF4L3hociwtbWFuaXB1bGF0aW9uL19ldmFsVXJsLC1ldmVudC9hamF4LC1lZmZlY3RzLC1lZmZlY3RzL1R3ZWVuLC1lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbiAoZSwgdCkgeyAidXNlIHN0cmljdCI7ICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBlLmRvY3VtZW50ID8gdChlLCAhMCkgOiBmdW5jdGlvbiAoZSkgeyBpZiAoIWUuZG9jdW1lbnQpIHRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpOyByZXR1cm4gdChlKSB9IDogdChlKSB9KCJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiAoZSwgdCkgeyAidXNlIHN0cmljdCI7IHZhciBuID0gW10sIHIgPSBlLmRvY3VtZW50LCBpID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBvID0gbi5zbGljZSwgYSA9IG4uY29uY2F0LCB1ID0gbi5wdXNoLCBzID0gbi5pbmRleE9mLCBsID0ge30sIGMgPSBsLnRvU3RyaW5nLCBmID0gbC5oYXNPd25Qcm9wZXJ0eSwgZCA9IGYudG9TdHJpbmcsIHAgPSBkLmNhbGwoT2JqZWN0KSwgaCA9IHt9LCBnID0gZnVuY3Rpb24gZSh0KSB7IHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmICJudW1iZXIiICE9IHR5cGVvZiB0Lm5vZGVUeXBlIH0sIHYgPSBmdW5jdGlvbiBlKHQpIHsgcmV0dXJuIG51bGwgIT0gdCAmJiB0ID09PSB0LndpbmRvdyB9LCB5ID0geyB0eXBlOiAhMCwgc3JjOiAhMCwgbm9Nb2R1bGU6ICEwIH07IGZ1bmN0aW9uIG0oZSwgdCwgbikgeyB2YXIgaSwgbyA9ICh0ID0gdCB8fCByKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsgaWYgKG8udGV4dCA9IGUsIG4pIGZvciAoaSBpbiB5KSBuW2ldICYmIChvW2ldID0gbltpXSk7IHQuaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pIH0gZnVuY3Rpb24gYihlKSB7IHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbFtjLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUgfSB2YXIgeCA9ICIzLjMuMSAtYWpheCwtYWpheC9qc29ucCwtYWpheC9sb2FkLC1hamF4L3BhcnNlWE1MLC1hamF4L3NjcmlwdCwtYWpheC92YXIvbG9jYXRpb24sLWFqYXgvdmFyL25vbmNlLC1hamF4L3Zhci9ycXVlcnksLWFqYXgveGhyLC1tYW5pcHVsYXRpb24vX2V2YWxVcmwsLWV2ZW50L2FqYXgsLWVmZmVjdHMsLWVmZmVjdHMvVHdlZW4sLWVmZmVjdHMvYW5pbWF0ZWRTZWxlY3RvciIsIHcgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gbmV3IHcuZm4uaW5pdChlLCB0KSB9LCBDID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nOyB3LmZuID0gdy5wcm90b3R5cGUgPSB7IGpxdWVyeTogeCwgY29uc3RydWN0b3I6IHcsIGxlbmd0aDogMCwgdG9BcnJheTogZnVuY3Rpb24gKCkgeyByZXR1cm4gby5jYWxsKHRoaXMpIH0sIGdldDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZSA/IG8uY2FsbCh0aGlzKSA6IGUgPCAwID8gdGhpc1tlICsgdGhpcy5sZW5ndGhdIDogdGhpc1tlXSB9LCBwdXNoU3RhY2s6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksIGUpOyByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdCB9LCBlYWNoOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdy5lYWNoKHRoaXMsIGUpIH0sIG1hcDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHcubWFwKHRoaXMsIGZ1bmN0aW9uICh0LCBuKSB7IHJldHVybiBlLmNhbGwodCwgbiwgdCkgfSkpIH0sIHNsaWNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnB1c2hTdGFjayhvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIH0sIGZpcnN0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVxKDApIH0sIGxhc3Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZXEoLTEpIH0sIGVxOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXMubGVuZ3RoLCBuID0gK2UgKyAoZSA8IDAgPyB0IDogMCk7IHJldHVybiB0aGlzLnB1c2hTdGFjayhuID49IDAgJiYgbiA8IHQgPyBbdGhpc1tuXV0gOiBbXSkgfSwgZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpIH0sIHB1c2g6IHUsIHNvcnQ6IG4uc29ydCwgc3BsaWNlOiBuLnNwbGljZSB9LCB3LmV4dGVuZCA9IHcuZm4uZXh0ZW5kID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbiwgciwgaSwgbywgYSA9IGFyZ3VtZW50c1swXSB8fCB7fSwgdSA9IDEsIHMgPSBhcmd1bWVudHMubGVuZ3RoLCBsID0gITE7IGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChsID0gYSwgYSA9IGFyZ3VtZW50c1t1XSB8fCB7fSwgdSsrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgZyhhKSB8fCAoYSA9IHt9KSwgdSA9PT0gcyAmJiAoYSA9IHRoaXMsIHUtLSk7IHUgPCBzOyB1KyspaWYgKG51bGwgIT0gKGUgPSBhcmd1bWVudHNbdV0pKSBmb3IgKHQgaW4gZSkgbiA9IGFbdF0sIGEgIT09IChyID0gZVt0XSkgJiYgKGwgJiYgciAmJiAody5pc1BsYWluT2JqZWN0KHIpIHx8IChpID0gQXJyYXkuaXNBcnJheShyKSkpID8gKGkgPyAoaSA9ICExLCBvID0gbiAmJiBBcnJheS5pc0FycmF5KG4pID8gbiA6IFtdKSA6IG8gPSBuICYmIHcuaXNQbGFpbk9iamVjdChuKSA/IG4gOiB7fSwgYVt0XSA9IHcuZXh0ZW5kKGwsIG8sIHIpKSA6IHZvaWQgMCAhPT0gciAmJiAoYVt0XSA9IHIpKTsgcmV0dXJuIGEgfSwgdy5leHRlbmQoeyBleHBhbmRvOiAialF1ZXJ5IiArICh4ICsgTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywgIiIpLCBpc1JlYWR5OiAhMCwgZXJyb3I6IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcihlKSB9LCBub29wOiBmdW5jdGlvbiAoKSB7IH0sIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuOyByZXR1cm4gISghZSB8fCAiW29iamVjdCBPYmplY3RdIiAhPT0gYy5jYWxsKGUpKSAmJiAoISh0ID0gaShlKSkgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgKG4gPSBmLmNhbGwodCwgImNvbnN0cnVjdG9yIikgJiYgdC5jb25zdHJ1Y3RvcikgJiYgZC5jYWxsKG4pID09PSBwKSB9LCBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgZm9yICh0IGluIGUpIHJldHVybiAhMTsgcmV0dXJuICEwIH0sIGdsb2JhbEV2YWw6IGZ1bmN0aW9uIChlKSB7IG0oZSkgfSwgZWFjaDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSAwOyBpZiAoVChlKSkgeyBmb3IgKG4gPSBlLmxlbmd0aDsgciA8IG47IHIrKylpZiAoITEgPT09IHQuY2FsbChlW3JdLCByLCBlW3JdKSkgYnJlYWsgfSBlbHNlIGZvciAociBpbiBlKSBpZiAoITEgPT09IHQuY2FsbChlW3JdLCByLCBlW3JdKSkgYnJlYWs7IHJldHVybiBlIH0sIHRyaW06IGZ1bmN0aW9uIChlKSB7IHJldHVybiBudWxsID09IGUgPyAiIiA6IChlICsgIiIpLnJlcGxhY2UoQywgIiIpIH0sIG1ha2VBcnJheTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB0IHx8IFtdOyByZXR1cm4gbnVsbCAhPSBlICYmIChUKE9iamVjdChlKSkgPyB3Lm1lcmdlKG4sICJzdHJpbmciID09IHR5cGVvZiBlID8gW2VdIDogZSkgOiB1LmNhbGwobiwgZSkpLCBuIH0sIGluQXJyYXk6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBudWxsID09IHQgPyAtMSA6IHMuY2FsbCh0LCBlLCBuKSB9LCBtZXJnZTogZnVuY3Rpb24gKGUsIHQpIHsgZm9yICh2YXIgbiA9ICt0Lmxlbmd0aCwgciA9IDAsIGkgPSBlLmxlbmd0aDsgciA8IG47IHIrKyllW2krK10gPSB0W3JdOyByZXR1cm4gZS5sZW5ndGggPSBpLCBlIH0sIGdyZXA6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSBbXSwgbyA9IDAsIGEgPSBlLmxlbmd0aCwgdSA9ICFuOyBvIDwgYTsgbysrKShyID0gIXQoZVtvXSwgbykpICE9PSB1ICYmIGkucHVzaChlW29dKTsgcmV0dXJuIGkgfSwgbWFwOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbyA9IDAsIHUgPSBbXTsgaWYgKFQoZSkpIGZvciAociA9IGUubGVuZ3RoOyBvIDwgcjsgbysrKW51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiB1LnB1c2goaSk7IGVsc2UgZm9yIChvIGluIGUpIG51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiB1LnB1c2goaSk7IHJldHVybiBhLmFwcGx5KFtdLCB1KSB9LCBndWlkOiAxLCBzdXBwb3J0OiBoIH0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgKHcuZm5bU3ltYm9sLml0ZXJhdG9yXSA9IG5bU3ltYm9sLml0ZXJhdG9yXSksIHcuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksIGZ1bmN0aW9uIChlLCB0KSB7IGxbIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpIH0pOyBmdW5jdGlvbiBUKGUpIHsgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwgbiA9IGIoZSk7IHJldHVybiAhZyhlKSAmJiAhdihlKSAmJiAoImFycmF5IiA9PT0gbiB8fCAwID09PSB0IHx8ICJudW1iZXIiID09IHR5cGVvZiB0ICYmIHQgPiAwICYmIHQgLSAxIGluIGUpIH0gdmFyIEUgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgdSwgcywgbCwgYywgZiwgZCwgcCwgaCwgZywgdiwgeSwgbSwgYiwgeCA9ICJzaXp6bGUiICsgMSAqIG5ldyBEYXRlLCB3ID0gZS5kb2N1bWVudCwgQyA9IDAsIFQgPSAwLCBFID0gYWUoKSwgTiA9IGFlKCksIGsgPSBhZSgpLCBBID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIGUgPT09IHQgJiYgKGYgPSAhMCksIDAgfSwgRCA9IHt9Lmhhc093blByb3BlcnR5LCBTID0gW10sIEwgPSBTLnBvcCwgaiA9IFMucHVzaCwgcSA9IFMucHVzaCwgTyA9IFMuc2xpY2UsIFAgPSBmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKWlmIChlW25dID09PSB0KSByZXR1cm4gbjsgcmV0dXJuIC0xIH0sIEggPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLCBJID0gIltcXHgyMFxcdFxcclxcblxcZl0iLCBSID0gIig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIiwgQiA9ICJcXFsiICsgSSArICIqKCIgKyBSICsgIikoPzoiICsgSSArICIqKFsqXiR8IX5dPz0pIiArIEkgKyAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiICsgUiArICIpKXwpIiArIEkgKyAiKlxcXSIsIE0gPSAiOigiICsgUiArICIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiArIEIgKyAiKSopfC4qKVxcKXwpIiwgVyA9IG5ldyBSZWdFeHAoSSArICIrIiwgImciKSwgJCA9IG5ldyBSZWdFeHAoIl4iICsgSSArICIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiICsgSSArICIrJCIsICJnIiksIEYgPSBuZXcgUmVnRXhwKCJeIiArIEkgKyAiKiwiICsgSSArICIqIiksIHogPSBuZXcgUmVnRXhwKCJeIiArIEkgKyAiKihbPit+XXwiICsgSSArICIpIiArIEkgKyAiKiIpLCBfID0gbmV3IFJlZ0V4cCgiPSIgKyBJICsgIiooW15cXF0nXCJdKj8pIiArIEkgKyAiKlxcXSIsICJnIiksIFUgPSBuZXcgUmVnRXhwKE0pLCBWID0gbmV3IFJlZ0V4cCgiXiIgKyBSICsgIiQiKSwgWCA9IHsgSUQ6IG5ldyBSZWdFeHAoIl4jKCIgKyBSICsgIikiKSwgQ0xBU1M6IG5ldyBSZWdFeHAoIl5cXC4oIiArIFIgKyAiKSIpLCBUQUc6IG5ldyBSZWdFeHAoIl4oIiArIFIgKyAifFsqXSkiKSwgQVRUUjogbmV3IFJlZ0V4cCgiXiIgKyBCKSwgUFNFVURPOiBuZXcgUmVnRXhwKCJeIiArIE0pLCBDSElMRDogbmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIEkgKyAiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyBJICsgIiooPzooWystXXwpIiArIEkgKyAiKihcXGQrKXwpKSIgKyBJICsgIipcXCl8KSIsICJpIiksIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgSCArICIpJCIsICJpIiksIG5lZWRzQ29udGV4dDogbmV3IFJlZ0V4cCgiXiIgKyBJICsgIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKyBJICsgIiooKD86LVxcZCk/XFxkKikiICsgSSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiKSB9LCBRID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwgWSA9IC9eaFxkJC9pLCBHID0gL15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLCBLID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywgSiA9IC9bK35dLywgWiA9IG5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIgKyBJICsgIj98KCIgKyBJICsgIil8LikiLCAiaWciKSwgZWUgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9ICIweCIgKyB0IC0gNjU1MzY7IHJldHVybiByICE9PSByIHx8IG4gPyB0IDogciA8IDAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKHIgKyA2NTUzNikgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKHIgPj4gMTAgfCA1NTI5NiwgMTAyMyAmIHIgfCA1NjMyMCkgfSwgdGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywgbmUgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdCA/ICJcMCIgPT09IGUgPyAiXHVmZmZkIiA6IGUuc2xpY2UoMCwgLTEpICsgIlxcIiArIGUuY2hhckNvZGVBdChlLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBlIH0sIHJlID0gZnVuY3Rpb24gKCkgeyBkKCkgfSwgaWUgPSBtZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgKCJmb3JtIiBpbiBlIHx8ICJsYWJlbCIgaW4gZSkgfSwgeyBkaXI6ICJwYXJlbnROb2RlIiwgbmV4dDogImxlZ2VuZCIgfSk7IHRyeSB7IHEuYXBwbHkoUyA9IE8uY2FsbCh3LmNoaWxkTm9kZXMpLCB3LmNoaWxkTm9kZXMpLCBTW3cuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlIH0gY2F0Y2ggKGUpIHsgcSA9IHsgYXBwbHk6IFMubGVuZ3RoID8gZnVuY3Rpb24gKGUsIHQpIHsgai5hcHBseShlLCBPLmNhbGwodCkpIH0gOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGUubGVuZ3RoLCByID0gMDsgd2hpbGUgKGVbbisrXSA9IHRbcisrXSk7IGUubGVuZ3RoID0gbiAtIDEgfSB9IH0gZnVuY3Rpb24gb2UoZSwgdCwgciwgaSkgeyB2YXIgbywgdSwgbCwgYywgZiwgaCwgeSwgbSA9IHQgJiYgdC5vd25lckRvY3VtZW50LCBDID0gdCA/IHQubm9kZVR5cGUgOiA5OyBpZiAociA9IHIgfHwgW10sICJzdHJpbmciICE9IHR5cGVvZiBlIHx8ICFlIHx8IDEgIT09IEMgJiYgOSAhPT0gQyAmJiAxMSAhPT0gQykgcmV0dXJuIHI7IGlmICghaSAmJiAoKHQgPyB0Lm93bmVyRG9jdW1lbnQgfHwgdCA6IHcpICE9PSBwICYmIGQodCksIHQgPSB0IHx8IHAsIGcpKSB7IGlmICgxMSAhPT0gQyAmJiAoZiA9IEsuZXhlYyhlKSkpIGlmIChvID0gZlsxXSkgeyBpZiAoOSA9PT0gQykgeyBpZiAoIShsID0gdC5nZXRFbGVtZW50QnlJZChvKSkpIHJldHVybiByOyBpZiAobC5pZCA9PT0gbykgcmV0dXJuIHIucHVzaChsKSwgciB9IGVsc2UgaWYgKG0gJiYgKGwgPSBtLmdldEVsZW1lbnRCeUlkKG8pKSAmJiBiKHQsIGwpICYmIGwuaWQgPT09IG8pIHJldHVybiByLnB1c2gobCksIHIgfSBlbHNlIHsgaWYgKGZbMl0pIHJldHVybiBxLmFwcGx5KHIsIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSkpLCByOyBpZiAoKG8gPSBmWzNdKSAmJiBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSByZXR1cm4gcS5hcHBseShyLCB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobykpLCByIH0gaWYgKG4ucXNhICYmICFrW2UgKyAiICJdICYmICghdiB8fCAhdi50ZXN0KGUpKSkgeyBpZiAoMSAhPT0gQykgbSA9IHQsIHkgPSBlOyBlbHNlIGlmICgib2JqZWN0IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSB7IChjID0gdC5nZXRBdHRyaWJ1dGUoImlkIikpID8gYyA9IGMucmVwbGFjZSh0ZSwgbmUpIDogdC5zZXRBdHRyaWJ1dGUoImlkIiwgYyA9IHgpLCB1ID0gKGggPSBhKGUpKS5sZW5ndGg7IHdoaWxlICh1LS0pIGhbdV0gPSAiIyIgKyBjICsgIiAiICsgeWUoaFt1XSk7IHkgPSBoLmpvaW4oIiwiKSwgbSA9IEoudGVzdChlKSAmJiBnZSh0LnBhcmVudE5vZGUpIHx8IHQgfSBpZiAoeSkgdHJ5IHsgcmV0dXJuIHEuYXBwbHkociwgbS5xdWVyeVNlbGVjdG9yQWxsKHkpKSwgciB9IGNhdGNoIChlKSB7IH0gZmluYWxseSB7IGMgPT09IHggJiYgdC5yZW1vdmVBdHRyaWJ1dGUoImlkIikgfSB9IH0gcmV0dXJuIHMoZS5yZXBsYWNlKCQsICIkMSIpLCB0LCByLCBpKSB9IGZ1bmN0aW9uIGFlKCkgeyB2YXIgZSA9IFtdOyBmdW5jdGlvbiB0KG4sIGkpIHsgcmV0dXJuIGUucHVzaChuICsgIiAiKSA+IHIuY2FjaGVMZW5ndGggJiYgZGVsZXRlIHRbZS5zaGlmdCgpXSwgdFtuICsgIiAiXSA9IGkgfSByZXR1cm4gdCB9IGZ1bmN0aW9uIHVlKGUpIHsgcmV0dXJuIGVbeF0gPSAhMCwgZSB9IGZ1bmN0aW9uIHNlKGUpIHsgdmFyIHQgPSBwLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7IHRyeSB7IHJldHVybiAhIWUodCkgfSBjYXRjaCAoZSkgeyByZXR1cm4gITEgfSBmaW5hbGx5IHsgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwgfSB9IGZ1bmN0aW9uIGxlKGUsIHQpIHsgdmFyIG4gPSBlLnNwbGl0KCJ8IiksIGkgPSBuLmxlbmd0aDsgd2hpbGUgKGktLSkgci5hdHRySGFuZGxlW25baV1dID0gdCB9IGZ1bmN0aW9uIGNlKGUsIHQpIHsgdmFyIG4gPSB0ICYmIGUsIHIgPSBuICYmIDEgPT09IGUubm9kZVR5cGUgJiYgMSA9PT0gdC5ub2RlVHlwZSAmJiBlLnNvdXJjZUluZGV4IC0gdC5zb3VyY2VJbmRleDsgaWYgKHIpIHJldHVybiByOyBpZiAobikgd2hpbGUgKG4gPSBuLm5leHRTaWJsaW5nKSBpZiAobiA9PT0gdCkgcmV0dXJuIC0xOyByZXR1cm4gZSA/IDEgOiAtMSB9IGZ1bmN0aW9uIGZlKGUpIHsgcmV0dXJuIGZ1bmN0aW9uICh0KSB7IHJldHVybiAiaW5wdXQiID09PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgJiYgdC50eXBlID09PSBlIH0gfSBmdW5jdGlvbiBkZShlKSB7IHJldHVybiBmdW5jdGlvbiAodCkgeyB2YXIgbiA9IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICgiaW5wdXQiID09PSBuIHx8ICJidXR0b24iID09PSBuKSAmJiB0LnR5cGUgPT09IGUgfSB9IGZ1bmN0aW9uIHBlKGUpIHsgcmV0dXJuIGZ1bmN0aW9uICh0KSB7IHJldHVybiAiZm9ybSIgaW4gdCA/IHQucGFyZW50Tm9kZSAmJiAhMSA9PT0gdC5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gdCA/ICJsYWJlbCIgaW4gdC5wYXJlbnROb2RlID8gdC5wYXJlbnROb2RlLmRpc2FibGVkID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6IHQuaXNEaXNhYmxlZCA9PT0gZSB8fCB0LmlzRGlzYWJsZWQgIT09ICFlICYmIGllKHQpID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6ICJsYWJlbCIgaW4gdCAmJiB0LmRpc2FibGVkID09PSBlIH0gfSBmdW5jdGlvbiBoZShlKSB7IHJldHVybiB1ZShmdW5jdGlvbiAodCkgeyByZXR1cm4gdCA9ICt0LCB1ZShmdW5jdGlvbiAobiwgcikgeyB2YXIgaSwgbyA9IGUoW10sIG4ubGVuZ3RoLCB0KSwgYSA9IG8ubGVuZ3RoOyB3aGlsZSAoYS0tKSBuW2kgPSBvW2FdXSAmJiAobltpXSA9ICEocltpXSA9IG5baV0pKSB9KSB9KSB9IGZ1bmN0aW9uIGdlKGUpIHsgcmV0dXJuIGUgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgJiYgZSB9IG4gPSBvZS5zdXBwb3J0ID0ge30sIG8gPSBvZS5pc1hNTCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxlbWVudDsgcmV0dXJuICEhdCAmJiAiSFRNTCIgIT09IHQubm9kZU5hbWUgfSwgZCA9IG9lLnNldERvY3VtZW50ID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQsIGksIGEgPSBlID8gZS5vd25lckRvY3VtZW50IHx8IGUgOiB3OyByZXR1cm4gYSAhPT0gcCAmJiA5ID09PSBhLm5vZGVUeXBlICYmIGEuZG9jdW1lbnRFbGVtZW50ID8gKHAgPSBhLCBoID0gcC5kb2N1bWVudEVsZW1lbnQsIGcgPSAhbyhwKSwgdyAhPT0gcCAmJiAoaSA9IHAuZGVmYXVsdFZpZXcpICYmIGkudG9wICE9PSBpICYmIChpLmFkZEV2ZW50TGlzdGVuZXIgPyBpLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsIHJlLCAhMSkgOiBpLmF0dGFjaEV2ZW50ICYmIGkuYXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgcmUpKSwgbi5hdHRyaWJ1dGVzID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuY2xhc3NOYW1lID0gImkiLCAhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpIH0pLCBuLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuYXBwZW5kQ2hpbGQocC5jcmVhdGVDb21tZW50KCIiKSksICFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoIH0pLCBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBHLnRlc3QocC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSwgbi5nZXRCeUlkID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGguYXBwZW5kQ2hpbGQoZSkuaWQgPSB4LCAhcC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhcC5nZXRFbGVtZW50c0J5TmFtZSh4KS5sZW5ndGggfSksIG4uZ2V0QnlJZCA/IChyLmZpbHRlci5JRCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5yZXBsYWNlKFosIGVlKTsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gdCB9IH0sIHIuZmluZC5JRCA9IGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAmJiBnKSB7IHZhciBuID0gdC5nZXRFbGVtZW50QnlJZChlKTsgcmV0dXJuIG4gPyBbbl0gOiBbXSB9IH0pIDogKHIuZmlsdGVyLklEID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnJlcGxhY2UoWiwgZWUpOyByZXR1cm4gZnVuY3Rpb24gKGUpIHsgdmFyIG4gPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlICYmIGUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsgcmV0dXJuIG4gJiYgbi52YWx1ZSA9PT0gdCB9IH0sIHIuZmluZC5JRCA9IGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAmJiBnKSB7IHZhciBuLCByLCBpLCBvID0gdC5nZXRFbGVtZW50QnlJZChlKTsgaWYgKG8pIHsgaWYgKChuID0gby5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSAmJiBuLnZhbHVlID09PSBlKSByZXR1cm4gW29dOyBpID0gdC5nZXRFbGVtZW50c0J5TmFtZShlKSwgciA9IDA7IHdoaWxlIChvID0gaVtyKytdKSBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb10gfSByZXR1cm4gW10gfSB9KSwgci5maW5kLlRBRyA9IG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpIDogbi5xc2EgPyB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSkgOiB2b2lkIDAgfSA6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gW10sIGkgPSAwLCBvID0gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTsgaWYgKCIqIiA9PT0gZSkgeyB3aGlsZSAobiA9IG9baSsrXSkgMSA9PT0gbi5ub2RlVHlwZSAmJiByLnB1c2gobik7IHJldHVybiByIH0gcmV0dXJuIG8gfSwgci5maW5kLkNMQVNTID0gbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGcpIHJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSkgfSwgeSA9IFtdLCB2ID0gW10sIChuLnFzYSA9IEcudGVzdChwLnF1ZXJ5U2VsZWN0b3JBbGwpKSAmJiAoc2UoZnVuY3Rpb24gKGUpIHsgaC5hcHBlbmRDaGlsZChlKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIgKyB4ICsgIic+PC9hPjxzZWxlY3QgaWQ9JyIgKyB4ICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggJiYgdi5wdXNoKCJbKl4kXT0iICsgSSArICIqKD86Jyd8XCJcIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IHYucHVzaCgiXFxbIiArIEkgKyAiKig/OnZhbHVlfCIgKyBIICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyB4ICsgIi1dIikubGVuZ3RoIHx8IHYucHVzaCgifj0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCB2LnB1c2goIjpjaGVja2VkIiksIGUucXVlcnlTZWxlY3RvckFsbCgiYSMiICsgeCArICIrKiIpLmxlbmd0aCB8fCB2LnB1c2goIi4jLitbK35dIikgfSksIHNlKGZ1bmN0aW9uIChlKSB7IGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7IHZhciB0ID0gcC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJoaWRkZW4iKSwgZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAiRCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoICYmIHYucHVzaCgibmFtZSIgKyBJICsgIipbKl4kfCF+XT89IiksIDIgIT09IGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggJiYgdi5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgaC5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZCA9ICEwLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAmJiB2LnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSwgdi5wdXNoKCIsLio6IikgfSkpLCAobi5tYXRjaGVzU2VsZWN0b3IgPSBHLnRlc3QobSA9IGgubWF0Y2hlcyB8fCBoLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBoLm1vek1hdGNoZXNTZWxlY3RvciB8fCBoLm9NYXRjaGVzU2VsZWN0b3IgfHwgaC5tc01hdGNoZXNTZWxlY3RvcikpICYmIHNlKGZ1bmN0aW9uIChlKSB7IG4uZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNhbGwoZSwgIioiKSwgbS5jYWxsKGUsICJbcyE9JyddOngiKSwgeS5wdXNoKCIhPSIsIE0pIH0pLCB2ID0gdi5sZW5ndGggJiYgbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSksIHkgPSB5Lmxlbmd0aCAmJiBuZXcgUmVnRXhwKHkuam9pbigifCIpKSwgdCA9IEcudGVzdChoLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSwgYiA9IHQgfHwgRy50ZXN0KGguY29udGFpbnMpID8gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSA5ID09PSBlLm5vZGVUeXBlID8gZS5kb2N1bWVudEVsZW1lbnQgOiBlLCByID0gdCAmJiB0LnBhcmVudE5vZGU7IHJldHVybiBlID09PSByIHx8ICEoIXIgfHwgMSAhPT0gci5ub2RlVHlwZSB8fCAhKG4uY29udGFpbnMgPyBuLmNvbnRhaW5zKHIpIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKHQpIHdoaWxlICh0ID0gdC5wYXJlbnROb2RlKSBpZiAodCA9PT0gZSkgcmV0dXJuICEwOyByZXR1cm4gITEgfSwgQSA9IHQgPyBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoZSA9PT0gdCkgcmV0dXJuIGYgPSAhMCwgMDsgdmFyIHIgPSAhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOyByZXR1cm4gciB8fCAoMSAmIChyID0gKGUub3duZXJEb2N1bWVudCB8fCBlKSA9PT0gKHQub3duZXJEb2N1bWVudCB8fCB0KSA/IGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkgOiAxKSB8fCAhbi5zb3J0RGV0YWNoZWQgJiYgdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSA9PT0gciA/IGUgPT09IHAgfHwgZS5vd25lckRvY3VtZW50ID09PSB3ICYmIGIodywgZSkgPyAtMSA6IHQgPT09IHAgfHwgdC5vd25lckRvY3VtZW50ID09PSB3ICYmIGIodywgdCkgPyAxIDogYyA/IFAoYywgZSkgLSBQKGMsIHQpIDogMCA6IDQgJiByID8gLTEgOiAxKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKGUgPT09IHQpIHJldHVybiBmID0gITAsIDA7IHZhciBuLCByID0gMCwgaSA9IGUucGFyZW50Tm9kZSwgbyA9IHQucGFyZW50Tm9kZSwgYSA9IFtlXSwgdSA9IFt0XTsgaWYgKCFpIHx8ICFvKSByZXR1cm4gZSA9PT0gcCA/IC0xIDogdCA9PT0gcCA/IDEgOiBpID8gLTEgOiBvID8gMSA6IGMgPyBQKGMsIGUpIC0gUChjLCB0KSA6IDA7IGlmIChpID09PSBvKSByZXR1cm4gY2UoZSwgdCk7IG4gPSBlOyB3aGlsZSAobiA9IG4ucGFyZW50Tm9kZSkgYS51bnNoaWZ0KG4pOyBuID0gdDsgd2hpbGUgKG4gPSBuLnBhcmVudE5vZGUpIHUudW5zaGlmdChuKTsgd2hpbGUgKGFbcl0gPT09IHVbcl0pIHIrKzsgcmV0dXJuIHIgPyBjZShhW3JdLCB1W3JdKSA6IGFbcl0gPT09IHcgPyAtMSA6IHVbcl0gPT09IHcgPyAxIDogMCB9LCBwKSA6IHAgfSwgb2UubWF0Y2hlcyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBvZShlLCBudWxsLCBudWxsLCB0KSB9LCBvZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAmJiBkKGUpLCB0ID0gdC5yZXBsYWNlKF8sICI9JyQxJ10iKSwgbi5tYXRjaGVzU2VsZWN0b3IgJiYgZyAmJiAha1t0ICsgIiAiXSAmJiAoIXkgfHwgIXkudGVzdCh0KSkgJiYgKCF2IHx8ICF2LnRlc3QodCkpKSB0cnkgeyB2YXIgciA9IG0uY2FsbChlLCB0KTsgaWYgKHIgfHwgbi5kaXNjb25uZWN0ZWRNYXRjaCB8fCBlLmRvY3VtZW50ICYmIDExICE9PSBlLmRvY3VtZW50Lm5vZGVUeXBlKSByZXR1cm4gciB9IGNhdGNoIChlKSB7IH0gcmV0dXJuIG9lKHQsIHAsIG51bGwsIFtlXSkubGVuZ3RoID4gMCB9LCBvZS5jb250YWlucyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9PSBwICYmIGQoZSksIGIoZSwgdCkgfSwgb2UuYXR0ciA9IGZ1bmN0aW9uIChlLCB0KSB7IChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAgJiYgZChlKTsgdmFyIGkgPSByLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSwgbyA9IGkgJiYgRC5jYWxsKHIuYXR0ckhhbmRsZSwgdC50b0xvd2VyQ2FzZSgpKSA/IGkoZSwgdCwgIWcpIDogdm9pZCAwOyByZXR1cm4gdm9pZCAwICE9PSBvID8gbyA6IG4uYXR0cmlidXRlcyB8fCAhZyA/IGUuZ2V0QXR0cmlidXRlKHQpIDogKG8gPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpICYmIG8uc3BlY2lmaWVkID8gby52YWx1ZSA6IG51bGwgfSwgb2UuZXNjYXBlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIChlICsgIiIpLnJlcGxhY2UodGUsIG5lKSB9LCBvZS5lcnJvciA9IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGUpIH0sIG9lLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgciA9IFtdLCBpID0gMCwgbyA9IDA7IGlmIChmID0gIW4uZGV0ZWN0RHVwbGljYXRlcywgYyA9ICFuLnNvcnRTdGFibGUgJiYgZS5zbGljZSgwKSwgZS5zb3J0KEEpLCBmKSB7IHdoaWxlICh0ID0gZVtvKytdKSB0ID09PSBlW29dICYmIChpID0gci5wdXNoKG8pKTsgd2hpbGUgKGktLSkgZS5zcGxpY2UocltpXSwgMSkgfSByZXR1cm4gYyA9IG51bGwsIGUgfSwgaSA9IG9lLmdldFRleHQgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiA9ICIiLCByID0gMCwgbyA9IGUubm9kZVR5cGU7IGlmIChvKSB7IGlmICgxID09PSBvIHx8IDkgPT09IG8gfHwgMTEgPT09IG8pIHsgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlLnRleHRDb250ZW50KSByZXR1cm4gZS50ZXh0Q29udGVudDsgZm9yIChlID0gZS5maXJzdENoaWxkOyBlOyBlID0gZS5uZXh0U2libGluZyluICs9IGkoZSkgfSBlbHNlIGlmICgzID09PSBvIHx8IDQgPT09IG8pIHJldHVybiBlLm5vZGVWYWx1ZSB9IGVsc2Ugd2hpbGUgKHQgPSBlW3IrK10pIG4gKz0gaSh0KTsgcmV0dXJuIG4gfSwgKHIgPSBvZS5zZWxlY3RvcnMgPSB7IGNhY2hlTGVuZ3RoOiA1MCwgY3JlYXRlUHNldWRvOiB1ZSwgbWF0Y2g6IFgsIGF0dHJIYW5kbGU6IHt9LCBmaW5kOiB7fSwgcmVsYXRpdmU6IHsgIj4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogITAgfSwgIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sICIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogITAgfSwgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfSB9LCBwcmVGaWx0ZXI6IHsgQVRUUjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGVbMV0gPSBlWzFdLnJlcGxhY2UoWiwgZWUpLCBlWzNdID0gKGVbM10gfHwgZVs0XSB8fCBlWzVdIHx8ICIiKS5yZXBsYWNlKFosIGVlKSwgIn49IiA9PT0gZVsyXSAmJiAoZVszXSA9ICIgIiArIGVbM10gKyAiICIpLCBlLnNsaWNlKDAsIDQpIH0sIENISUxEOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsxXSA9IGVbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGVbMV0uc2xpY2UoMCwgMykgPyAoZVszXSB8fCBvZS5lcnJvcihlWzBdKSwgZVs0XSA9ICsoZVs0XSA/IGVbNV0gKyAoZVs2XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBlWzNdIHx8ICJvZGQiID09PSBlWzNdKSksIGVbNV0gPSArKGVbN10gKyBlWzhdIHx8ICJvZGQiID09PSBlWzNdKSkgOiBlWzNdICYmIG9lLmVycm9yKGVbMF0pLCBlIH0sIFBTRVVETzogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOyByZXR1cm4gWC5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgVS50ZXN0KG4pICYmICh0ID0gYShuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkgfSB9LCBmaWx0ZXI6IHsgVEFHOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUucmVwbGFjZShaLCBlZSkudG9Mb3dlckNhc2UoKTsgcmV0dXJuICIqIiA9PT0gZSA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuICEwIH0gOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQgfSB9LCBDTEFTUzogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBFW2UgKyAiICJdOyByZXR1cm4gdCB8fCAodCA9IG5ldyBSZWdFeHAoIihefCIgKyBJICsgIikiICsgZSArICIoIiArIEkgKyAifCQpIikpICYmIEUoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHQudGVzdCgic3RyaW5nIiA9PSB0eXBlb2YgZS5jbGFzc05hbWUgJiYgZS5jbGFzc05hbWUgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKSB9KSB9LCBBVFRSOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gZnVuY3Rpb24gKHIpIHsgdmFyIGkgPSBvZS5hdHRyKHIsIGUpOyByZXR1cm4gbnVsbCA9PSBpID8gIiE9IiA9PT0gdCA6ICF0IHx8IChpICs9ICIiLCAiPSIgPT09IHQgPyBpID09PSBuIDogIiE9IiA9PT0gdCA/IGkgIT09IG4gOiAiXj0iID09PSB0ID8gbiAmJiAwID09PSBpLmluZGV4T2YobikgOiAiKj0iID09PSB0ID8gbiAmJiBpLmluZGV4T2YobikgPiAtMSA6ICIkPSIgPT09IHQgPyBuICYmIGkuc2xpY2UoLW4ubGVuZ3RoKSA9PT0gbiA6ICJ+PSIgPT09IHQgPyAoIiAiICsgaS5yZXBsYWNlKFcsICIgIikgKyAiICIpLmluZGV4T2YobikgPiAtMSA6ICJ8PSIgPT09IHQgJiYgKGkgPT09IG4gfHwgaS5zbGljZSgwLCBuLmxlbmd0aCArIDEpID09PSBuICsgIi0iKSkgfSB9LCBDSElMRDogZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGkpIHsgdmFyIG8gPSAibnRoIiAhPT0gZS5zbGljZSgwLCAzKSwgYSA9ICJsYXN0IiAhPT0gZS5zbGljZSgtNCksIHUgPSAib2YtdHlwZSIgPT09IHQ7IHJldHVybiAxID09PSByICYmIDAgPT09IGkgPyBmdW5jdGlvbiAoZSkgeyByZXR1cm4gISFlLnBhcmVudE5vZGUgfSA6IGZ1bmN0aW9uICh0LCBuLCBzKSB7IHZhciBsLCBjLCBmLCBkLCBwLCBoLCBnID0gbyAhPT0gYSA/ICJuZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwgdiA9IHQucGFyZW50Tm9kZSwgeSA9IHUgJiYgdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBtID0gIXMgJiYgIXUsIGIgPSAhMTsgaWYgKHYpIHsgaWYgKG8pIHsgd2hpbGUgKGcpIHsgZCA9IHQ7IHdoaWxlIChkID0gZFtnXSkgaWYgKHUgPyBkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHkgOiAxID09PSBkLm5vZGVUeXBlKSByZXR1cm4gITE7IGggPSBnID0gIm9ubHkiID09PSBlICYmICFoICYmICJuZXh0U2libGluZyIgfSByZXR1cm4gITAgfSBpZiAoaCA9IFthID8gdi5maXJzdENoaWxkIDogdi5sYXN0Q2hpbGRdLCBhICYmIG0pIHsgYiA9IChwID0gKGwgPSAoYyA9IChmID0gKGQgPSB2KVt4XSB8fCAoZFt4XSA9IHt9KSlbZC51bmlxdWVJRF0gfHwgKGZbZC51bmlxdWVJRF0gPSB7fSkpW2VdIHx8IFtdKVswXSA9PT0gQyAmJiBsWzFdKSAmJiBsWzJdLCBkID0gcCAmJiB2LmNoaWxkTm9kZXNbcF07IHdoaWxlIChkID0gKytwICYmIGQgJiYgZFtnXSB8fCAoYiA9IHAgPSAwKSB8fCBoLnBvcCgpKSBpZiAoMSA9PT0gZC5ub2RlVHlwZSAmJiArK2IgJiYgZCA9PT0gdCkgeyBjW2VdID0gW0MsIHAsIGJdOyBicmVhayB9IH0gZWxzZSBpZiAobSAmJiAoYiA9IHAgPSAobCA9IChjID0gKGYgPSAoZCA9IHQpW3hdIHx8IChkW3hdID0ge30pKVtkLnVuaXF1ZUlEXSB8fCAoZltkLnVuaXF1ZUlEXSA9IHt9KSlbZV0gfHwgW10pWzBdID09PSBDICYmIGxbMV0pLCAhMSA9PT0gYikgd2hpbGUgKGQgPSArK3AgJiYgZCAmJiBkW2ddIHx8IChiID0gcCA9IDApIHx8IGgucG9wKCkpIGlmICgodSA/IGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0geSA6IDEgPT09IGQubm9kZVR5cGUpICYmICsrYiAmJiAobSAmJiAoKGMgPSAoZiA9IGRbeF0gfHwgKGRbeF0gPSB7fSkpW2QudW5pcXVlSURdIHx8IChmW2QudW5pcXVlSURdID0ge30pKVtlXSA9IFtDLCBiXSksIGQgPT09IHQpKSBicmVhazsgcmV0dXJuIChiIC09IGkpID09PSByIHx8IGIgJSByID09IDAgJiYgYiAvIHIgPj0gMCB9IH0gfSwgUFNFVURPOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgaSA9IHIucHNldWRvc1tlXSB8fCByLnNldEZpbHRlcnNbZS50b0xvd2VyQ2FzZSgpXSB8fCBvZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgZSk7IHJldHVybiBpW3hdID8gaSh0KSA6IGkubGVuZ3RoID4gMSA/IChuID0gW2UsIGUsICIiLCB0XSwgci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSkgPyB1ZShmdW5jdGlvbiAoZSwgbikgeyB2YXIgciwgbyA9IGkoZSwgdCksIGEgPSBvLmxlbmd0aDsgd2hpbGUgKGEtLSkgZVtyID0gUChlLCBvW2FdKV0gPSAhKG5bcl0gPSBvW2FdKSB9KSA6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBpKGUsIDAsIG4pIH0pIDogaSB9IH0sIHBzZXVkb3M6IHsgbm90OiB1ZShmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IFtdLCBuID0gW10sIHIgPSB1KGUucmVwbGFjZSgkLCAiJDEiKSk7IHJldHVybiByW3hdID8gdWUoZnVuY3Rpb24gKGUsIHQsIG4sIGkpIHsgdmFyIG8sIGEgPSByKGUsIG51bGwsIGksIFtdKSwgdSA9IGUubGVuZ3RoOyB3aGlsZSAodS0tKSAobyA9IGFbdV0pICYmIChlW3VdID0gISh0W3VdID0gbykpIH0pIDogZnVuY3Rpb24gKGUsIGksIG8pIHsgcmV0dXJuIHRbMF0gPSBlLCByKHQsIG51bGwsIG8sIG4pLCB0WzBdID0gbnVsbCwgIW4ucG9wKCkgfSB9KSwgaGFzOiB1ZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gZnVuY3Rpb24gKHQpIHsgcmV0dXJuIG9lKGUsIHQpLmxlbmd0aCA+IDAgfSB9KSwgY29udGFpbnM6IHVlKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID0gZS5yZXBsYWNlKFosIGVlKSwgZnVuY3Rpb24gKHQpIHsgcmV0dXJuICh0LnRleHRDb250ZW50IHx8IHQuaW5uZXJUZXh0IHx8IGkodCkpLmluZGV4T2YoZSkgPiAtMSB9IH0pLCBsYW5nOiB1ZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gVi50ZXN0KGUgfHwgIiIpIHx8IG9lLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgZSksIGUgPSBlLnJlcGxhY2UoWiwgZWUpLnRvTG93ZXJDYXNlKCksIGZ1bmN0aW9uICh0KSB7IHZhciBuOyBkbyB7IGlmIChuID0gZyA/IHQubGFuZyA6IHQuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IHQuZ2V0QXR0cmlidXRlKCJsYW5nIikpIHJldHVybiAobiA9IG4udG9Mb3dlckNhc2UoKSkgPT09IGUgfHwgMCA9PT0gbi5pbmRleE9mKGUgKyAiLSIpIH0gd2hpbGUgKCh0ID0gdC5wYXJlbnROb2RlKSAmJiAxID09PSB0Lm5vZGVUeXBlKTsgcmV0dXJuICExIH0gfSksIHRhcmdldDogZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSBlLmxvY2F0aW9uICYmIGUubG9jYXRpb24uaGFzaDsgcmV0dXJuIG4gJiYgbi5zbGljZSgxKSA9PT0gdC5pZCB9LCByb290OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA9PT0gaCB9LCBmb2N1czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IHAuYWN0aXZlRWxlbWVudCAmJiAoIXAuaGFzRm9jdXMgfHwgcC5oYXNGb2N1cygpKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KSB9LCBlbmFibGVkOiBwZSghMSksIGRpc2FibGVkOiBwZSghMCksIGNoZWNrZWQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyByZXR1cm4gImlucHV0IiA9PT0gdCAmJiAhIWUuY2hlY2tlZCB8fCAib3B0aW9uIiA9PT0gdCAmJiAhIWUuc2VsZWN0ZWQgfSwgc2VsZWN0ZWQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsICEwID09PSBlLnNlbGVjdGVkIH0sIGVtcHR5OiBmdW5jdGlvbiAoZSkgeyBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKWlmIChlLm5vZGVUeXBlIDwgNikgcmV0dXJuICExOyByZXR1cm4gITAgfSwgcGFyZW50OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXIucHNldWRvcy5lbXB0eShlKSB9LCBoZWFkZXI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBZLnRlc3QoZS5ub2RlTmFtZSkgfSwgaW5wdXQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBRLnRlc3QoZS5ub2RlTmFtZSkgfSwgYnV0dG9uOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICJpbnB1dCIgPT09IHQgJiYgImJ1dHRvbiIgPT09IGUudHlwZSB8fCAiYnV0dG9uIiA9PT0gdCB9LCB0ZXh0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuICJpbnB1dCIgPT09IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAidGV4dCIgPT09IGUudHlwZSAmJiAobnVsbCA9PSAodCA9IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpIHx8ICJ0ZXh0IiA9PT0gdC50b0xvd2VyQ2FzZSgpKSB9LCBmaXJzdDogaGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gWzBdIH0pLCBsYXN0OiBoZShmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gW3QgLSAxXSB9KSwgZXE6IGhlKGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBbbiA8IDAgPyBuICsgdCA6IG5dIH0pLCBldmVuOiBoZShmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMDsgbiA8IHQ7IG4gKz0gMillLnB1c2gobik7IHJldHVybiBlIH0pLCBvZGQ6IGhlKGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSAxOyBuIDwgdDsgbiArPSAyKWUucHVzaChuKTsgcmV0dXJuIGUgfSksIGx0OiBoZShmdW5jdGlvbiAoZSwgdCwgbikgeyBmb3IgKHZhciByID0gbiA8IDAgPyBuICsgdCA6IG47IC0tciA+PSAwOyllLnB1c2gocik7IHJldHVybiBlIH0pLCBndDogaGUoZnVuY3Rpb24gKGUsIHQsIG4pIHsgZm9yICh2YXIgciA9IG4gPCAwID8gbiArIHQgOiBuOyArK3IgPCB0OyllLnB1c2gocik7IHJldHVybiBlIH0pIH0gfSkucHNldWRvcy5udGggPSByLnBzZXVkb3MuZXE7IGZvciAodCBpbiB7IHJhZGlvOiAhMCwgY2hlY2tib3g6ICEwLCBmaWxlOiAhMCwgcGFzc3dvcmQ6ICEwLCBpbWFnZTogITAgfSkgci5wc2V1ZG9zW3RdID0gZmUodCk7IGZvciAodCBpbiB7IHN1Ym1pdDogITAsIHJlc2V0OiAhMCB9KSByLnBzZXVkb3NbdF0gPSBkZSh0KTsgZnVuY3Rpb24gdmUoKSB7IH0gdmUucHJvdG90eXBlID0gci5maWx0ZXJzID0gci5wc2V1ZG9zLCByLnNldEZpbHRlcnMgPSBuZXcgdmUsIGEgPSBvZS50b2tlbml6ZSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCBpLCBvLCBhLCB1LCBzLCBsLCBjID0gTltlICsgIiAiXTsgaWYgKGMpIHJldHVybiB0ID8gMCA6IGMuc2xpY2UoMCk7IHUgPSBlLCBzID0gW10sIGwgPSByLnByZUZpbHRlcjsgd2hpbGUgKHUpIHsgbiAmJiAhKGkgPSBGLmV4ZWModSkpIHx8IChpICYmICh1ID0gdS5zbGljZShpWzBdLmxlbmd0aCkgfHwgdSksIHMucHVzaChvID0gW10pKSwgbiA9ICExLCAoaSA9IHouZXhlYyh1KSkgJiYgKG4gPSBpLnNoaWZ0KCksIG8ucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBpWzBdLnJlcGxhY2UoJCwgIiAiKSB9KSwgdSA9IHUuc2xpY2Uobi5sZW5ndGgpKTsgZm9yIChhIGluIHIuZmlsdGVyKSAhKGkgPSBYW2FdLmV4ZWModSkpIHx8IGxbYV0gJiYgIShpID0gbFthXShpKSkgfHwgKG4gPSBpLnNoaWZ0KCksIG8ucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBhLCBtYXRjaGVzOiBpIH0pLCB1ID0gdS5zbGljZShuLmxlbmd0aCkpOyBpZiAoIW4pIGJyZWFrIH0gcmV0dXJuIHQgPyB1Lmxlbmd0aCA6IHUgPyBvZS5lcnJvcihlKSA6IE4oZSwgcykuc2xpY2UoMCkgfTsgZnVuY3Rpb24geWUoZSkgeyBmb3IgKHZhciB0ID0gMCwgbiA9IGUubGVuZ3RoLCByID0gIiI7IHQgPCBuOyB0KyspciArPSBlW3RdLnZhbHVlOyByZXR1cm4gciB9IGZ1bmN0aW9uIG1lKGUsIHQsIG4pIHsgdmFyIHIgPSB0LmRpciwgaSA9IHQubmV4dCwgbyA9IGkgfHwgciwgYSA9IG4gJiYgInBhcmVudE5vZGUiID09PSBvLCB1ID0gVCsrOyByZXR1cm4gdC5maXJzdCA/IGZ1bmN0aW9uICh0LCBuLCBpKSB7IHdoaWxlICh0ID0gdFtyXSkgaWYgKDEgPT09IHQubm9kZVR5cGUgfHwgYSkgcmV0dXJuIGUodCwgbiwgaSk7IHJldHVybiAhMSB9IDogZnVuY3Rpb24gKHQsIG4sIHMpIHsgdmFyIGwsIGMsIGYsIGQgPSBbQywgdV07IGlmIChzKSB7IHdoaWxlICh0ID0gdFtyXSkgaWYgKCgxID09PSB0Lm5vZGVUeXBlIHx8IGEpICYmIGUodCwgbiwgcykpIHJldHVybiAhMCB9IGVsc2Ugd2hpbGUgKHQgPSB0W3JdKSBpZiAoMSA9PT0gdC5ub2RlVHlwZSB8fCBhKSBpZiAoZiA9IHRbeF0gfHwgKHRbeF0gPSB7fSksIGMgPSBmW3QudW5pcXVlSURdIHx8IChmW3QudW5pcXVlSURdID0ge30pLCBpICYmIGkgPT09IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgdCA9IHRbcl0gfHwgdDsgZWxzZSB7IGlmICgobCA9IGNbb10pICYmIGxbMF0gPT09IEMgJiYgbFsxXSA9PT0gdSkgcmV0dXJuIGRbMl0gPSBsWzJdOyBpZiAoY1tvXSA9IGQsIGRbMl0gPSBlKHQsIG4sIHMpKSByZXR1cm4gITAgfSByZXR1cm4gITEgfSB9IGZ1bmN0aW9uIGJlKGUpIHsgcmV0dXJuIGUubGVuZ3RoID4gMSA/IGZ1bmN0aW9uICh0LCBuLCByKSB7IHZhciBpID0gZS5sZW5ndGg7IHdoaWxlIChpLS0pIGlmICghZVtpXSh0LCBuLCByKSkgcmV0dXJuICExOyByZXR1cm4gITAgfSA6IGVbMF0gfSBmdW5jdGlvbiB4ZShlLCB0LCBuKSB7IGZvciAodmFyIHIgPSAwLCBpID0gdC5sZW5ndGg7IHIgPCBpOyByKyspb2UoZSwgdFtyXSwgbik7IHJldHVybiBuIH0gZnVuY3Rpb24gd2UoZSwgdCwgbiwgciwgaSkgeyBmb3IgKHZhciBvLCBhID0gW10sIHUgPSAwLCBzID0gZS5sZW5ndGgsIGwgPSBudWxsICE9IHQ7IHUgPCBzOyB1KyspKG8gPSBlW3VdKSAmJiAobiAmJiAhbihvLCByLCBpKSB8fCAoYS5wdXNoKG8pLCBsICYmIHQucHVzaCh1KSkpOyByZXR1cm4gYSB9IGZ1bmN0aW9uIENlKGUsIHQsIG4sIHIsIGksIG8pIHsgcmV0dXJuIHIgJiYgIXJbeF0gJiYgKHIgPSBDZShyKSksIGkgJiYgIWlbeF0gJiYgKGkgPSBDZShpLCBvKSksIHVlKGZ1bmN0aW9uIChvLCBhLCB1LCBzKSB7IHZhciBsLCBjLCBmLCBkID0gW10sIHAgPSBbXSwgaCA9IGEubGVuZ3RoLCBnID0gbyB8fCB4ZSh0IHx8ICIqIiwgdS5ub2RlVHlwZSA/IFt1XSA6IHUsIFtdKSwgdiA9ICFlIHx8ICFvICYmIHQgPyBnIDogd2UoZywgZCwgZSwgdSwgcyksIHkgPSBuID8gaSB8fCAobyA/IGUgOiBoIHx8IHIpID8gW10gOiBhIDogdjsgaWYgKG4gJiYgbih2LCB5LCB1LCBzKSwgcikgeyBsID0gd2UoeSwgcCksIHIobCwgW10sIHUsIHMpLCBjID0gbC5sZW5ndGg7IHdoaWxlIChjLS0pIChmID0gbFtjXSkgJiYgKHlbcFtjXV0gPSAhKHZbcFtjXV0gPSBmKSkgfSBpZiAobykgeyBpZiAoaSB8fCBlKSB7IGlmIChpKSB7IGwgPSBbXSwgYyA9IHkubGVuZ3RoOyB3aGlsZSAoYy0tKSAoZiA9IHlbY10pICYmIGwucHVzaCh2W2NdID0gZik7IGkobnVsbCwgeSA9IFtdLCBsLCBzKSB9IGMgPSB5Lmxlbmd0aDsgd2hpbGUgKGMtLSkgKGYgPSB5W2NdKSAmJiAobCA9IGkgPyBQKG8sIGYpIDogZFtjXSkgPiAtMSAmJiAob1tsXSA9ICEoYVtsXSA9IGYpKSB9IH0gZWxzZSB5ID0gd2UoeSA9PT0gYSA/IHkuc3BsaWNlKGgsIHkubGVuZ3RoKSA6IHkpLCBpID8gaShudWxsLCBhLCB5LCBzKSA6IHEuYXBwbHkoYSwgeSkgfSkgfSBmdW5jdGlvbiBUZShlKSB7IGZvciAodmFyIHQsIG4sIGksIG8gPSBlLmxlbmd0aCwgYSA9IHIucmVsYXRpdmVbZVswXS50eXBlXSwgdSA9IGEgfHwgci5yZWxhdGl2ZVsiICJdLCBzID0gYSA/IDEgOiAwLCBjID0gbWUoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IHQgfSwgdSwgITApLCBmID0gbWUoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFAodCwgZSkgPiAtMSB9LCB1LCAhMCksIGQgPSBbZnVuY3Rpb24gKGUsIG4sIHIpIHsgdmFyIGkgPSAhYSAmJiAociB8fCBuICE9PSBsKSB8fCAoKHQgPSBuKS5ub2RlVHlwZSA/IGMoZSwgbiwgcikgOiBmKGUsIG4sIHIpKTsgcmV0dXJuIHQgPSBudWxsLCBpIH1dOyBzIDwgbzsgcysrKWlmIChuID0gci5yZWxhdGl2ZVtlW3NdLnR5cGVdKSBkID0gW21lKGJlKGQpLCBuKV07IGVsc2UgeyBpZiAoKG4gPSByLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsIGVbc10ubWF0Y2hlcykpW3hdKSB7IGZvciAoaSA9ICsrczsgaSA8IG87IGkrKylpZiAoci5yZWxhdGl2ZVtlW2ldLnR5cGVdKSBicmVhazsgcmV0dXJuIENlKHMgPiAxICYmIGJlKGQpLCBzID4gMSAmJiB5ZShlLnNsaWNlKDAsIHMgLSAxKS5jb25jYXQoeyB2YWx1ZTogIiAiID09PSBlW3MgLSAyXS50eXBlID8gIioiIDogIiIgfSkpLnJlcGxhY2UoJCwgIiQxIiksIG4sIHMgPCBpICYmIFRlKGUuc2xpY2UocywgaSkpLCBpIDwgbyAmJiBUZShlID0gZS5zbGljZShpKSksIGkgPCBvICYmIHllKGUpKSB9IGQucHVzaChuKSB9IHJldHVybiBiZShkKSB9IGZ1bmN0aW9uIEVlKGUsIHQpIHsgdmFyIG4gPSB0Lmxlbmd0aCA+IDAsIGkgPSBlLmxlbmd0aCA+IDAsIG8gPSBmdW5jdGlvbiAobywgYSwgdSwgcywgYykgeyB2YXIgZiwgaCwgdiwgeSA9IDAsIG0gPSAiMCIsIGIgPSBvICYmIFtdLCB4ID0gW10sIHcgPSBsLCBUID0gbyB8fCBpICYmIHIuZmluZC5UQUcoIioiLCBjKSwgRSA9IEMgKz0gbnVsbCA9PSB3ID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgLjEsIE4gPSBULmxlbmd0aDsgZm9yIChjICYmIChsID0gYSA9PT0gcCB8fCBhIHx8IGMpOyBtICE9PSBOICYmIG51bGwgIT0gKGYgPSBUW21dKTsgbSsrKSB7IGlmIChpICYmIGYpIHsgaCA9IDAsIGEgfHwgZi5vd25lckRvY3VtZW50ID09PSBwIHx8IChkKGYpLCB1ID0gIWcpOyB3aGlsZSAodiA9IGVbaCsrXSkgaWYgKHYoZiwgYSB8fCBwLCB1KSkgeyBzLnB1c2goZik7IGJyZWFrIH0gYyAmJiAoQyA9IEUpIH0gbiAmJiAoKGYgPSAhdiAmJiBmKSAmJiB5LS0gLCBvICYmIGIucHVzaChmKSkgfSBpZiAoeSArPSBtLCBuICYmIG0gIT09IHkpIHsgaCA9IDA7IHdoaWxlICh2ID0gdFtoKytdKSB2KGIsIHgsIGEsIHUpOyBpZiAobykgeyBpZiAoeSA+IDApIHdoaWxlIChtLS0pIGJbbV0gfHwgeFttXSB8fCAoeFttXSA9IEwuY2FsbChzKSk7IHggPSB3ZSh4KSB9IHEuYXBwbHkocywgeCksIGMgJiYgIW8gJiYgeC5sZW5ndGggPiAwICYmIHkgKyB0Lmxlbmd0aCA+IDEgJiYgb2UudW5pcXVlU29ydChzKSB9IHJldHVybiBjICYmIChDID0gRSwgbCA9IHcpLCBiIH07IHJldHVybiBuID8gdWUobykgOiBvIH0gcmV0dXJuIHUgPSBvZS5jb21waWxlID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBbXSwgaSA9IFtdLCBvID0ga1tlICsgIiAiXTsgaWYgKCFvKSB7IHQgfHwgKHQgPSBhKGUpKSwgbiA9IHQubGVuZ3RoOyB3aGlsZSAobi0tKSAobyA9IFRlKHRbbl0pKVt4XSA/IHIucHVzaChvKSA6IGkucHVzaChvKTsgKG8gPSBrKGUsIEVlKGksIHIpKSkuc2VsZWN0b3IgPSBlIH0gcmV0dXJuIG8gfSwgcyA9IG9lLnNlbGVjdCA9IGZ1bmN0aW9uIChlLCB0LCBuLCBpKSB7IHZhciBvLCBzLCBsLCBjLCBmLCBkID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlLCBwID0gIWkgJiYgYShlID0gZC5zZWxlY3RvciB8fCBlKTsgaWYgKG4gPSBuIHx8IFtdLCAxID09PSBwLmxlbmd0aCkgeyBpZiAoKHMgPSBwWzBdID0gcFswXS5zbGljZSgwKSkubGVuZ3RoID4gMiAmJiAiSUQiID09PSAobCA9IHNbMF0pLnR5cGUgJiYgOSA9PT0gdC5ub2RlVHlwZSAmJiBnICYmIHIucmVsYXRpdmVbc1sxXS50eXBlXSkgeyBpZiAoISh0ID0gKHIuZmluZC5JRChsLm1hdGNoZXNbMF0ucmVwbGFjZShaLCBlZSksIHQpIHx8IFtdKVswXSkpIHJldHVybiBuOyBkICYmICh0ID0gdC5wYXJlbnROb2RlKSwgZSA9IGUuc2xpY2Uocy5zaGlmdCgpLnZhbHVlLmxlbmd0aCkgfSBvID0gWC5uZWVkc0NvbnRleHQudGVzdChlKSA/IDAgOiBzLmxlbmd0aDsgd2hpbGUgKG8tLSkgeyBpZiAobCA9IHNbb10sIHIucmVsYXRpdmVbYyA9IGwudHlwZV0pIGJyZWFrOyBpZiAoKGYgPSByLmZpbmRbY10pICYmIChpID0gZihsLm1hdGNoZXNbMF0ucmVwbGFjZShaLCBlZSksIEoudGVzdChzWzBdLnR5cGUpICYmIGdlKHQucGFyZW50Tm9kZSkgfHwgdCkpKSB7IGlmIChzLnNwbGljZShvLCAxKSwgIShlID0gaS5sZW5ndGggJiYgeWUocykpKSByZXR1cm4gcS5hcHBseShuLCBpKSwgbjsgYnJlYWsgfSB9IH0gcmV0dXJuIChkIHx8IHUoZSwgcCkpKGksIHQsICFnLCBuLCAhdCB8fCBKLnRlc3QoZSkgJiYgZ2UodC5wYXJlbnROb2RlKSB8fCB0KSwgbiB9LCBuLnNvcnRTdGFibGUgPSB4LnNwbGl0KCIiKS5zb3J0KEEpLmpvaW4oIiIpID09PSB4LCBuLmRldGVjdER1cGxpY2F0ZXMgPSAhIWYsIGQoKSwgbi5zb3J0RGV0YWNoZWQgPSBzZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gMSAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKSB9KSwgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4iLCAiIyIgPT09IGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSB9KSB8fCBsZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICghbikgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsICJ0eXBlIiA9PT0gdC50b0xvd2VyQ2FzZSgpID8gMSA6IDIpIH0pLCBuLmF0dHJpYnV0ZXMgJiYgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxpbnB1dC8+IiwgZS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksICIiID09PSBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpIH0pIHx8IGxlKCJ2YWx1ZSIsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICghbiAmJiAiaW5wdXQiID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBlLmRlZmF1bHRWYWx1ZSB9KSwgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgfSkgfHwgbGUoSCwgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHI7IGlmICghbikgcmV0dXJuICEwID09PSBlW3RdID8gdC50b0xvd2VyQ2FzZSgpIDogKHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpICYmIHIuc3BlY2lmaWVkID8gci52YWx1ZSA6IG51bGwgfSksIG9lIH0oZSk7IHcuZmluZCA9IEUsIHcuZXhwciA9IEUuc2VsZWN0b3JzLCB3LmV4cHJbIjoiXSA9IHcuZXhwci5wc2V1ZG9zLCB3LnVuaXF1ZVNvcnQgPSB3LnVuaXF1ZSA9IEUudW5pcXVlU29ydCwgdy50ZXh0ID0gRS5nZXRUZXh0LCB3LmlzWE1MRG9jID0gRS5pc1hNTCwgdy5jb250YWlucyA9IEUuY29udGFpbnMsIHcuZXNjYXBlU2VsZWN0b3IgPSBFLmVzY2FwZTsgdmFyIE4gPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9IFtdLCBpID0gdm9pZCAwICE9PSBuOyB3aGlsZSAoKGUgPSBlW3RdKSAmJiA5ICE9PSBlLm5vZGVUeXBlKSBpZiAoMSA9PT0gZS5ub2RlVHlwZSkgeyBpZiAoaSAmJiB3KGUpLmlzKG4pKSBicmVhazsgci5wdXNoKGUpIH0gcmV0dXJuIHIgfSwgayA9IGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSBbXTsgZTsgZSA9IGUubmV4dFNpYmxpbmcpMSA9PT0gZS5ub2RlVHlwZSAmJiBlICE9PSB0ICYmIG4ucHVzaChlKTsgcmV0dXJuIG4gfSwgQSA9IHcuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7IGZ1bmN0aW9uIEQoZSwgdCkgeyByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQudG9Mb3dlckNhc2UoKSB9IHZhciBTID0gL148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7IGZ1bmN0aW9uIEwoZSwgdCwgbikgeyByZXR1cm4gZyh0KSA/IHcuZ3JlcChlLCBmdW5jdGlvbiAoZSwgcikgeyByZXR1cm4gISF0LmNhbGwoZSwgciwgZSkgIT09IG4gfSkgOiB0Lm5vZGVUeXBlID8gdy5ncmVwKGUsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID09PSB0ICE9PSBuIH0pIDogInN0cmluZyIgIT0gdHlwZW9mIHQgPyB3LmdyZXAoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHMuY2FsbCh0LCBlKSA+IC0xICE9PSBuIH0pIDogdy5maWx0ZXIodCwgZSwgbikgfSB3LmZpbHRlciA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gdFswXTsgcmV0dXJuIG4gJiYgKGUgPSAiOm5vdCgiICsgZSArICIpIiksIDEgPT09IHQubGVuZ3RoICYmIDEgPT09IHIubm9kZVR5cGUgPyB3LmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsIGUpID8gW3JdIDogW10gOiB3LmZpbmQubWF0Y2hlcyhlLCB3LmdyZXAodCwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUgfSkpIH0sIHcuZm4uZXh0ZW5kKHsgZmluZDogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIgPSB0aGlzLmxlbmd0aCwgaSA9IHRoaXM7IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHcoZSkuZmlsdGVyKGZ1bmN0aW9uICgpIHsgZm9yICh0ID0gMDsgdCA8IHI7IHQrKylpZiAody5jb250YWlucyhpW3RdLCB0aGlzKSkgcmV0dXJuICEwIH0pKTsgZm9yIChuID0gdGhpcy5wdXNoU3RhY2soW10pLCB0ID0gMDsgdCA8IHI7IHQrKyl3LmZpbmQoZSwgaVt0XSwgbik7IHJldHVybiByID4gMSA/IHcudW5pcXVlU29ydChuKSA6IG4gfSwgZmlsdGVyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2soTCh0aGlzLCBlIHx8IFtdLCAhMSkpIH0sIG5vdDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKEwodGhpcywgZSB8fCBbXSwgITApKSB9LCBpczogZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhTCh0aGlzLCAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBBLnRlc3QoZSkgPyB3KGUpIDogZSB8fCBbXSwgITEpLmxlbmd0aCB9IH0pOyB2YXIgaiwgcSA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87ICh3LmZuLmluaXQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgaSwgbzsgaWYgKCFlKSByZXR1cm4gdGhpczsgaWYgKG4gPSBuIHx8IGosICJzdHJpbmciID09IHR5cGVvZiBlKSB7IGlmICghKGkgPSAiPCIgPT09IGVbMF0gJiYgIj4iID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgZS5sZW5ndGggPj0gMyA/IFtudWxsLCBlLCBudWxsXSA6IHEuZXhlYyhlKSkgfHwgIWlbMV0gJiYgdCkgcmV0dXJuICF0IHx8IHQuanF1ZXJ5ID8gKHQgfHwgbikuZmluZChlKSA6IHRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTsgaWYgKGlbMV0pIHsgaWYgKHQgPSB0IGluc3RhbmNlb2YgdyA/IHRbMF0gOiB0LCB3Lm1lcmdlKHRoaXMsIHcucGFyc2VIVE1MKGlbMV0sIHQgJiYgdC5ub2RlVHlwZSA/IHQub3duZXJEb2N1bWVudCB8fCB0IDogciwgITApKSwgUy50ZXN0KGlbMV0pICYmIHcuaXNQbGFpbk9iamVjdCh0KSkgZm9yIChpIGluIHQpIGcodGhpc1tpXSkgPyB0aGlzW2ldKHRbaV0pIDogdGhpcy5hdHRyKGksIHRbaV0pOyByZXR1cm4gdGhpcyB9IHJldHVybiAobyA9IHIuZ2V0RWxlbWVudEJ5SWQoaVsyXSkpICYmICh0aGlzWzBdID0gbywgdGhpcy5sZW5ndGggPSAxKSwgdGhpcyB9IHJldHVybiBlLm5vZGVUeXBlID8gKHRoaXNbMF0gPSBlLCB0aGlzLmxlbmd0aCA9IDEsIHRoaXMpIDogZyhlKSA/IHZvaWQgMCAhPT0gbi5yZWFkeSA/IG4ucmVhZHkoZSkgOiBlKHcpIDogdy5tYWtlQXJyYXkoZSwgdGhpcykgfSkucHJvdG90eXBlID0gdy5mbiwgaiA9IHcocik7IHZhciBPID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sIFAgPSB7IGNoaWxkcmVuOiAhMCwgY29udGVudHM6ICEwLCBuZXh0OiAhMCwgcHJldjogITAgfTsgdy5mbi5leHRlbmQoeyBoYXM6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdyhlLCB0aGlzKSwgbiA9IHQubGVuZ3RoOyByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlID0gMDsgZSA8IG47IGUrKylpZiAody5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwIH0pIH0sIGNsb3Nlc3Q6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHRoaXMubGVuZ3RoLCBvID0gW10sIGEgPSAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiB3KGUpOyBpZiAoIUEudGVzdChlKSkgZm9yICg7IHIgPCBpOyByKyspZm9yIChuID0gdGhpc1tyXTsgbiAmJiBuICE9PSB0OyBuID0gbi5wYXJlbnROb2RlKWlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyBhLmluZGV4KG4pID4gLTEgOiAxID09PSBuLm5vZGVUeXBlICYmIHcuZmluZC5tYXRjaGVzU2VsZWN0b3IobiwgZSkpKSB7IG8ucHVzaChuKTsgYnJlYWsgfSByZXR1cm4gdGhpcy5wdXNoU3RhY2soby5sZW5ndGggPiAxID8gdy51bmlxdWVTb3J0KG8pIDogbykgfSwgaW5kZXg6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID8gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBzLmNhbGwodyhlKSwgdGhpc1swXSkgOiBzLmNhbGwodGhpcywgZS5qcXVlcnkgPyBlWzBdIDogZSkgOiB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTEgfSwgYWRkOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2sody51bmlxdWVTb3J0KHcubWVyZ2UodGhpcy5nZXQoKSwgdyhlLCB0KSkpKSB9LCBhZGRCYWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5hZGQobnVsbCA9PSBlID8gdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSkgfSB9KTsgZnVuY3Rpb24gSChlLCB0KSB7IHdoaWxlICgoZSA9IGVbdF0pICYmIDEgIT09IGUubm9kZVR5cGUpOyByZXR1cm4gZSB9IHcuZWFjaCh7IHBhcmVudDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIDExICE9PSB0Lm5vZGVUeXBlID8gdCA6IG51bGwgfSwgcGFyZW50czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIE4oZSwgInBhcmVudE5vZGUiKSB9LCBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBOKGUsICJwYXJlbnROb2RlIiwgbikgfSwgbmV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEgoZSwgIm5leHRTaWJsaW5nIikgfSwgcHJldjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEgoZSwgInByZXZpb3VzU2libGluZyIpIH0sIG5leHRBbGw6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBOKGUsICJuZXh0U2libGluZyIpIH0sIHByZXZBbGw6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBOKGUsICJwcmV2aW91c1NpYmxpbmciKSB9LCBuZXh0VW50aWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBOKGUsICJuZXh0U2libGluZyIsIG4pIH0sIHByZXZVbnRpbDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIE4oZSwgInByZXZpb3VzU2libGluZyIsIG4pIH0sIHNpYmxpbmdzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaygoZS5wYXJlbnROb2RlIHx8IHt9KS5maXJzdENoaWxkLCBlKSB9LCBjaGlsZHJlbjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGsoZS5maXJzdENoaWxkKSB9LCBjb250ZW50czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEQoZSwgImlmcmFtZSIpID8gZS5jb250ZW50RG9jdW1lbnQgOiAoRChlLCAidGVtcGxhdGUiKSAmJiAoZSA9IGUuY29udGVudCB8fCBlKSwgdy5tZXJnZShbXSwgZS5jaGlsZE5vZGVzKSkgfSB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmZuW2VdID0gZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSB3Lm1hcCh0aGlzLCB0LCBuKTsgcmV0dXJuICJVbnRpbCIgIT09IGUuc2xpY2UoLTUpICYmIChyID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgKGkgPSB3LmZpbHRlcihyLCBpKSksIHRoaXMubGVuZ3RoID4gMSAmJiAoUFtlXSB8fCB3LnVuaXF1ZVNvcnQoaSksIE8udGVzdChlKSAmJiBpLnJldmVyc2UoKSksIHRoaXMucHVzaFN0YWNrKGkpIH0gfSk7IHZhciBJID0gL1teXHgyMFx0XHJcblxmXSsvZzsgZnVuY3Rpb24gUihlKSB7IHZhciB0ID0ge307IHJldHVybiB3LmVhY2goZS5tYXRjaChJKSB8fCBbXSwgZnVuY3Rpb24gKGUsIG4pIHsgdFtuXSA9ICEwIH0pLCB0IH0gdy5DYWxsYmFja3MgPSBmdW5jdGlvbiAoZSkgeyBlID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBSKGUpIDogdy5leHRlbmQoe30sIGUpOyB2YXIgdCwgbiwgciwgaSwgbyA9IFtdLCBhID0gW10sIHUgPSAtMSwgcyA9IGZ1bmN0aW9uICgpIHsgZm9yIChpID0gaSB8fCBlLm9uY2UsIHIgPSB0ID0gITA7IGEubGVuZ3RoOyB1ID0gLTEpIHsgbiA9IGEuc2hpZnQoKTsgd2hpbGUgKCsrdSA8IG8ubGVuZ3RoKSAhMSA9PT0gb1t1XS5hcHBseShuWzBdLCBuWzFdKSAmJiBlLnN0b3BPbkZhbHNlICYmICh1ID0gby5sZW5ndGgsIG4gPSAhMSkgfSBlLm1lbW9yeSB8fCAobiA9ICExKSwgdCA9ICExLCBpICYmIChvID0gbiA/IFtdIDogIiIpIH0sIGwgPSB7IGFkZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbyAmJiAobiAmJiAhdCAmJiAodSA9IG8ubGVuZ3RoIC0gMSwgYS5wdXNoKG4pKSwgZnVuY3Rpb24gdChuKSB7IHcuZWFjaChuLCBmdW5jdGlvbiAobiwgcikgeyBnKHIpID8gZS51bmlxdWUgJiYgbC5oYXMocikgfHwgby5wdXNoKHIpIDogciAmJiByLmxlbmd0aCAmJiAic3RyaW5nIiAhPT0gYihyKSAmJiB0KHIpIH0pIH0oYXJndW1lbnRzKSwgbiAmJiAhdCAmJiBzKCkpLCB0aGlzIH0sIHJlbW92ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG47IHdoaWxlICgobiA9IHcuaW5BcnJheSh0LCBvLCBuKSkgPiAtMSkgby5zcGxpY2UobiwgMSksIG4gPD0gdSAmJiB1LS0gfSksIHRoaXMgfSwgaGFzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA/IHcuaW5BcnJheShlLCBvKSA+IC0xIDogby5sZW5ndGggPiAwIH0sIGVtcHR5OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvICYmIChvID0gW10pLCB0aGlzIH0sIGRpc2FibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkgPSBhID0gW10sIG8gPSBuID0gIiIsIHRoaXMgfSwgZGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFvIH0sIGxvY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkgPSBhID0gW10sIG4gfHwgdCB8fCAobyA9IG4gPSAiIiksIHRoaXMgfSwgbG9ja2VkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIWkgfSwgZmlyZVdpdGg6IGZ1bmN0aW9uIChlLCBuKSB7IHJldHVybiBpIHx8IChuID0gW2UsIChuID0gbiB8fCBbXSkuc2xpY2UgPyBuLnNsaWNlKCkgOiBuXSwgYS5wdXNoKG4pLCB0IHx8IHMoKSksIHRoaXMgfSwgZmlyZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbC5maXJlV2l0aCh0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIGZpcmVkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIXIgfSB9OyByZXR1cm4gbCB9OyBmdW5jdGlvbiBCKGUpIHsgcmV0dXJuIGUgfSBmdW5jdGlvbiBNKGUpIHsgdGhyb3cgZSB9IGZ1bmN0aW9uIFcoZSwgdCwgbiwgcikgeyB2YXIgaTsgdHJ5IHsgZSAmJiBnKGkgPSBlLnByb21pc2UpID8gaS5jYWxsKGUpLmRvbmUodCkuZmFpbChuKSA6IGUgJiYgZyhpID0gZS50aGVuKSA/IGkuY2FsbChlLCB0LCBuKSA6IHQuYXBwbHkodm9pZCAwLCBbZV0uc2xpY2UocikpIH0gY2F0Y2ggKGUpIHsgbi5hcHBseSh2b2lkIDAsIFtlXSkgfSB9IHcuZXh0ZW5kKHsgRGVmZXJyZWQ6IGZ1bmN0aW9uICh0KSB7IHZhciBuID0gW1sibm90aWZ5IiwgInByb2dyZXNzIiwgdy5DYWxsYmFja3MoIm1lbW9yeSIpLCB3LkNhbGxiYWNrcygibWVtb3J5IiksIDJdLCBbInJlc29sdmUiLCAiZG9uZSIsIHcuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMCwgInJlc29sdmVkIl0sIFsicmVqZWN0IiwgImZhaWwiLCB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgdy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIDEsICJyZWplY3RlZCJdXSwgciA9ICJwZW5kaW5nIiwgaSA9IHsgc3RhdGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIgfSwgYWx3YXlzOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksIHRoaXMgfSwgImNhdGNoIjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGkudGhlbihudWxsLCBlKSB9LCBwaXBlOiBmdW5jdGlvbiAoKSB7IHZhciBlID0gYXJndW1lbnRzOyByZXR1cm4gdy5EZWZlcnJlZChmdW5jdGlvbiAodCkgeyB3LmVhY2gobiwgZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSBnKGVbcls0XV0pICYmIGVbcls0XV07IG9bclsxXV0oZnVuY3Rpb24gKCkgeyB2YXIgZSA9IGkgJiYgaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyBlICYmIGcoZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLnByb2dyZXNzKHQubm90aWZ5KS5kb25lKHQucmVzb2x2ZSkuZmFpbCh0LnJlamVjdCkgOiB0W3JbMF0gKyAiV2l0aCJdKHRoaXMsIGkgPyBbZV0gOiBhcmd1bWVudHMpIH0pIH0pLCBlID0gbnVsbCB9KS5wcm9taXNlKCkgfSwgdGhlbjogZnVuY3Rpb24gKHQsIHIsIGkpIHsgdmFyIG8gPSAwOyBmdW5jdGlvbiBhKHQsIG4sIHIsIGkpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIHUgPSB0aGlzLCBzID0gYXJndW1lbnRzLCBsID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgbDsgaWYgKCEodCA8IG8pKSB7IGlmICgoZSA9IHIuYXBwbHkodSwgcykpID09PSBuLnByb21pc2UoKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uIik7IGwgPSBlICYmICgib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSAmJiBlLnRoZW4sIGcobCkgPyBpID8gbC5jYWxsKGUsIGEobywgbiwgQiwgaSksIGEobywgbiwgTSwgaSkpIDogKG8rKyAsIGwuY2FsbChlLCBhKG8sIG4sIEIsIGkpLCBhKG8sIG4sIE0sIGkpLCBhKG8sIG4sIEIsIG4ubm90aWZ5V2l0aCkpKSA6IChyICE9PSBCICYmICh1ID0gdm9pZCAwLCBzID0gW2VdKSwgKGkgfHwgbi5yZXNvbHZlV2l0aCkodSwgcykpIH0gfSwgYyA9IGkgPyBsIDogZnVuY3Rpb24gKCkgeyB0cnkgeyBsKCkgfSBjYXRjaCAoZSkgeyB3LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgdy5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGUsIGMuc3RhY2tUcmFjZSksIHQgKyAxID49IG8gJiYgKHIgIT09IE0gJiYgKHUgPSB2b2lkIDAsIHMgPSBbZV0pLCBuLnJlamVjdFdpdGgodSwgcykpIH0gfTsgdCA/IGMoKSA6ICh3LkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAoYy5zdGFja1RyYWNlID0gdy5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksIGUuc2V0VGltZW91dChjKSkgfSB9IHJldHVybiB3LkRlZmVycmVkKGZ1bmN0aW9uIChlKSB7IG5bMF1bM10uYWRkKGEoMCwgZSwgZyhpKSA/IGkgOiBCLCBlLm5vdGlmeVdpdGgpKSwgblsxXVszXS5hZGQoYSgwLCBlLCBnKHQpID8gdCA6IEIpKSwgblsyXVszXS5hZGQoYSgwLCBlLCBnKHIpID8gciA6IE0pKSB9KS5wcm9taXNlKCkgfSwgcHJvbWlzZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgIT0gZSA/IHcuZXh0ZW5kKGUsIGkpIDogaSB9IH0sIG8gPSB7fTsgcmV0dXJuIHcuZWFjaChuLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgYSA9IHRbMl0sIHUgPSB0WzVdOyBpW3RbMV1dID0gYS5hZGQsIHUgJiYgYS5hZGQoZnVuY3Rpb24gKCkgeyByID0gdSB9LCBuWzMgLSBlXVsyXS5kaXNhYmxlLCBuWzMgLSBlXVszXS5kaXNhYmxlLCBuWzBdWzJdLmxvY2ssIG5bMF1bM10ubG9jayksIGEuYWRkKHRbM10uZmlyZSksIG9bdFswXV0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvW3RbMF0gKyAiV2l0aCJdKHRoaXMgPT09IG8gPyB2b2lkIDAgOiB0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIG9bdFswXSArICJXaXRoIl0gPSBhLmZpcmVXaXRoIH0pLCBpLnByb21pc2UobyksIHQgJiYgdC5jYWxsKG8sIG8pLCBvIH0sIHdoZW46IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCwgbiA9IHQsIHIgPSBBcnJheShuKSwgaSA9IG8uY2FsbChhcmd1bWVudHMpLCBhID0gdy5EZWZlcnJlZCgpLCB1ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGZ1bmN0aW9uIChuKSB7IHJbZV0gPSB0aGlzLCBpW2VdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBvLmNhbGwoYXJndW1lbnRzKSA6IG4sIC0tdCB8fCBhLnJlc29sdmVXaXRoKHIsIGkpIH0gfTsgaWYgKHQgPD0gMSAmJiAoVyhlLCBhLmRvbmUodShuKSkucmVzb2x2ZSwgYS5yZWplY3QsICF0KSwgInBlbmRpbmciID09PSBhLnN0YXRlKCkgfHwgZyhpW25dICYmIGlbbl0udGhlbikpKSByZXR1cm4gYS50aGVuKCk7IHdoaWxlIChuLS0pIFcoaVtuXSwgdShuKSwgYS5yZWplY3QpOyByZXR1cm4gYS5wcm9taXNlKCkgfSB9KTsgdmFyICQgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsgdy5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24gKHQsIG4pIHsgZS5jb25zb2xlICYmIGUuY29uc29sZS53YXJuICYmIHQgJiYgJC50ZXN0KHQubmFtZSkgJiYgZS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyB0Lm1lc3NhZ2UsIHQuc3RhY2ssIG4pIH0sIHcucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiAodCkgeyBlLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0aHJvdyB0IH0pIH07IHZhciBGID0gdy5EZWZlcnJlZCgpOyB3LmZuLnJlYWR5ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEYudGhlbihlKVsiY2F0Y2giXShmdW5jdGlvbiAoZSkgeyB3LnJlYWR5RXhjZXB0aW9uKGUpIH0pLCB0aGlzIH0sIHcuZXh0ZW5kKHsgaXNSZWFkeTogITEsIHJlYWR5V2FpdDogMSwgcmVhZHk6IGZ1bmN0aW9uIChlKSB7ICghMCA9PT0gZSA/IC0tdy5yZWFkeVdhaXQgOiB3LmlzUmVhZHkpIHx8ICh3LmlzUmVhZHkgPSAhMCwgITAgIT09IGUgJiYgLS13LnJlYWR5V2FpdCA+IDAgfHwgRi5yZXNvbHZlV2l0aChyLCBbd10pKSB9IH0pLCB3LnJlYWR5LnRoZW4gPSBGLnRoZW47IGZ1bmN0aW9uIHooKSB7IHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHopLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCB6KSwgdy5yZWFkeSgpIH0gImNvbXBsZXRlIiA9PT0gci5yZWFkeVN0YXRlIHx8ICJsb2FkaW5nIiAhPT0gci5yZWFkeVN0YXRlICYmICFyLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCA/IGUuc2V0VGltZW91dCh3LnJlYWR5KSA6IChyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB6KSwgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgeikpOyB2YXIgXyA9IGZ1bmN0aW9uIChlLCB0LCBuLCByLCBpLCBvLCBhKSB7IHZhciB1ID0gMCwgcyA9IGUubGVuZ3RoLCBsID0gbnVsbCA9PSBuOyBpZiAoIm9iamVjdCIgPT09IGIobikpIHsgaSA9ICEwOyBmb3IgKHUgaW4gbikgXyhlLCB0LCB1LCBuW3VdLCAhMCwgbywgYSkgfSBlbHNlIGlmICh2b2lkIDAgIT09IHIgJiYgKGkgPSAhMCwgZyhyKSB8fCAoYSA9ICEwKSwgbCAmJiAoYSA/ICh0LmNhbGwoZSwgciksIHQgPSBudWxsKSA6IChsID0gdCwgdCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBsLmNhbGwodyhlKSwgbikgfSkpLCB0KSkgZm9yICg7IHUgPCBzOyB1KyspdChlW3VdLCBuLCBhID8gciA6IHIuY2FsbChlW3VdLCB1LCB0KGVbdV0sIG4pKSk7IHJldHVybiBpID8gZSA6IGwgPyB0LmNhbGwoZSkgOiBzID8gdChlWzBdLCBuKSA6IG8gfSwgVSA9IC9eLW1zLS8sIFYgPSAvLShbYS16XSkvZzsgZnVuY3Rpb24gWChlLCB0KSB7IHJldHVybiB0LnRvVXBwZXJDYXNlKCkgfSBmdW5jdGlvbiBRKGUpIHsgcmV0dXJuIGUucmVwbGFjZShVLCAibXMtIikucmVwbGFjZShWLCBYKSB9IHZhciBZID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUgfHwgOSA9PT0gZS5ub2RlVHlwZSB8fCAhK2Uubm9kZVR5cGUgfTsgZnVuY3Rpb24gRygpIHsgdGhpcy5leHBhbmRvID0gdy5leHBhbmRvICsgRy51aWQrKyB9IEcudWlkID0gMSwgRy5wcm90b3R5cGUgPSB7IGNhY2hlOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGVbdGhpcy5leHBhbmRvXTsgcmV0dXJuIHQgfHwgKHQgPSB7fSwgWShlKSAmJiAoZS5ub2RlVHlwZSA/IGVbdGhpcy5leHBhbmRvXSA9IHQgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdGhpcy5leHBhbmRvLCB7IHZhbHVlOiB0LCBjb25maWd1cmFibGU6ICEwIH0pKSksIHQgfSwgc2V0OiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSA9IHRoaXMuY2FjaGUoZSk7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgaVtRKHQpXSA9IG47IGVsc2UgZm9yIChyIGluIHQpIGlbUShyKV0gPSB0W3JdOyByZXR1cm4gaSB9LCBnZXQ6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB2b2lkIDAgPT09IHQgPyB0aGlzLmNhY2hlKGUpIDogZVt0aGlzLmV4cGFuZG9dICYmIGVbdGhpcy5leHBhbmRvXVtRKHQpXSB9LCBhY2Nlc3M6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiB2b2lkIDAgPT09IHQgfHwgdCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiB2b2lkIDAgPT09IG4gPyB0aGlzLmdldChlLCB0KSA6ICh0aGlzLnNldChlLCB0LCBuKSwgdm9pZCAwICE9PSBuID8gbiA6IHQpIH0sIHJlbW92ZTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBlW3RoaXMuZXhwYW5kb107IGlmICh2b2lkIDAgIT09IHIpIHsgaWYgKHZvaWQgMCAhPT0gdCkgeyBuID0gKHQgPSBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoUSkgOiAodCA9IFEodCkpIGluIHIgPyBbdF0gOiB0Lm1hdGNoKEkpIHx8IFtdKS5sZW5ndGg7IHdoaWxlIChuLS0pIGRlbGV0ZSByW3Rbbl1dIH0gKHZvaWQgMCA9PT0gdCB8fCB3LmlzRW1wdHlPYmplY3QocikpICYmIChlLm5vZGVUeXBlID8gZVt0aGlzLmV4cGFuZG9dID0gdm9pZCAwIDogZGVsZXRlIGVbdGhpcy5leHBhbmRvXSkgfSB9LCBoYXNEYXRhOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGVbdGhpcy5leHBhbmRvXTsgcmV0dXJuIHZvaWQgMCAhPT0gdCAmJiAhdy5pc0VtcHR5T2JqZWN0KHQpIH0gfTsgdmFyIEsgPSBuZXcgRywgSiA9IG5ldyBHLCBaID0gL14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLywgZWUgPSAvW0EtWl0vZzsgZnVuY3Rpb24gdGUoZSkgeyByZXR1cm4gInRydWUiID09PSBlIHx8ICJmYWxzZSIgIT09IGUgJiYgKCJudWxsIiA9PT0gZSA/IG51bGwgOiBlID09PSArZSArICIiID8gK2UgOiBaLnRlc3QoZSkgPyBKU09OLnBhcnNlKGUpIDogZSkgfSBmdW5jdGlvbiBuZShlLCB0LCBuKSB7IHZhciByOyBpZiAodm9pZCAwID09PSBuICYmIDEgPT09IGUubm9kZVR5cGUpIGlmIChyID0gImRhdGEtIiArIHQucmVwbGFjZShlZSwgIi0kJiIpLnRvTG93ZXJDYXNlKCksICJzdHJpbmciID09IHR5cGVvZiAobiA9IGUuZ2V0QXR0cmlidXRlKHIpKSkgeyB0cnkgeyBuID0gdGUobikgfSBjYXRjaCAoZSkgeyB9IEouc2V0KGUsIHQsIG4pIH0gZWxzZSBuID0gdm9pZCAwOyByZXR1cm4gbiB9IHcuZXh0ZW5kKHsgaGFzRGF0YTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEouaGFzRGF0YShlKSB8fCBLLmhhc0RhdGEoZSkgfSwgZGF0YTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIEouYWNjZXNzKGUsIHQsIG4pIH0sIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IEoucmVtb3ZlKGUsIHQpIH0sIF9kYXRhOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gSy5hY2Nlc3MoZSwgdCwgbikgfSwgX3JlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IEsucmVtb3ZlKGUsIHQpIH0gfSksIHcuZm4uZXh0ZW5kKHsgZGF0YTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGksIG8gPSB0aGlzWzBdLCBhID0gbyAmJiBvLmF0dHJpYnV0ZXM7IGlmICh2b2lkIDAgPT09IGUpIHsgaWYgKHRoaXMubGVuZ3RoICYmIChpID0gSi5nZXQobyksIDEgPT09IG8ubm9kZVR5cGUgJiYgIUsuZ2V0KG8sICJoYXNEYXRhQXR0cnMiKSkpIHsgbiA9IGEubGVuZ3RoOyB3aGlsZSAobi0tKSBhW25dICYmIDAgPT09IChyID0gYVtuXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChyID0gUShyLnNsaWNlKDUpKSwgbmUobywgciwgaVtyXSkpOyBLLnNldChvLCAiaGFzRGF0YUF0dHJzIiwgITApIH0gcmV0dXJuIGkgfSByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgPyB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyBKLnNldCh0aGlzLCBlKSB9KSA6IF8odGhpcywgZnVuY3Rpb24gKHQpIHsgdmFyIG47IGlmIChvICYmIHZvaWQgMCA9PT0gdCkgeyBpZiAodm9pZCAwICE9PSAobiA9IEouZ2V0KG8sIGUpKSkgcmV0dXJuIG47IGlmICh2b2lkIDAgIT09IChuID0gbmUobywgZSkpKSByZXR1cm4gbiB9IGVsc2UgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgSi5zZXQodGhpcywgZSwgdCkgfSkgfSwgbnVsbCwgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsICEwKSB9LCByZW1vdmVEYXRhOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgSi5yZW1vdmUodGhpcywgZSkgfSkgfSB9KSwgdy5leHRlbmQoeyBxdWV1ZTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHI7IGlmIChlKSByZXR1cm4gdCA9ICh0IHx8ICJmeCIpICsgInF1ZXVlIiwgciA9IEsuZ2V0KGUsIHQpLCBuICYmICghciB8fCBBcnJheS5pc0FycmF5KG4pID8gciA9IEsuYWNjZXNzKGUsIHQsIHcubWFrZUFycmF5KG4pKSA6IHIucHVzaChuKSksIHIgfHwgW10gfSwgZGVxdWV1ZTogZnVuY3Rpb24gKGUsIHQpIHsgdCA9IHQgfHwgImZ4IjsgdmFyIG4gPSB3LnF1ZXVlKGUsIHQpLCByID0gbi5sZW5ndGgsIGkgPSBuLnNoaWZ0KCksIG8gPSB3Ll9xdWV1ZUhvb2tzKGUsIHQpLCBhID0gZnVuY3Rpb24gKCkgeyB3LmRlcXVldWUoZSwgdCkgfTsgImlucHJvZ3Jlc3MiID09PSBpICYmIChpID0gbi5zaGlmdCgpLCByLS0pLCBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpIH0sIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHQgKyAicXVldWVIb29rcyI7IHJldHVybiBLLmdldChlLCBuKSB8fCBLLmFjY2VzcyhlLCBuLCB7IGVtcHR5OiB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24gKCkgeyBLLnJlbW92ZShlLCBbdCArICJxdWV1ZSIsIG5dKSB9KSB9KSB9IH0pLCB3LmZuLmV4dGVuZCh7IHF1ZXVlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IDI7IHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAodCA9IGUsIGUgPSAiZngiLCBuLS0pLCBhcmd1bWVudHMubGVuZ3RoIDwgbiA/IHcucXVldWUodGhpc1swXSwgZSkgOiB2b2lkIDAgPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdmFyIG4gPSB3LnF1ZXVlKHRoaXMsIGUsIHQpOyB3Ll9xdWV1ZUhvb2tzKHRoaXMsIGUpLCAiZngiID09PSBlICYmICJpbnByb2dyZXNzIiAhPT0gblswXSAmJiB3LmRlcXVldWUodGhpcywgZSkgfSkgfSwgZGVxdWV1ZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHcuZGVxdWV1ZSh0aGlzLCBlKSB9KSB9LCBjbGVhclF1ZXVlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKSB9LCBwcm9taXNlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciA9IDEsIGkgPSB3LkRlZmVycmVkKCksIG8gPSB0aGlzLCBhID0gdGhpcy5sZW5ndGgsIHUgPSBmdW5jdGlvbiAoKSB7IC0tciB8fCBpLnJlc29sdmVXaXRoKG8sIFtvXSkgfTsgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKHQgPSBlLCBlID0gdm9pZCAwKSwgZSA9IGUgfHwgImZ4Ijsgd2hpbGUgKGEtLSkgKG4gPSBLLmdldChvW2FdLCBlICsgInF1ZXVlSG9va3MiKSkgJiYgbi5lbXB0eSAmJiAocisrICwgbi5lbXB0eS5hZGQodSkpOyByZXR1cm4gdSgpLCBpLnByb21pc2UodCkgfSB9KTsgdmFyIHJlID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsIGllID0gbmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgcmUgKyAiKShbYS16JV0qKSQiLCAiaSIpLCBvZSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sIGFlID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuICJub25lIiA9PT0gKGUgPSB0IHx8IGUpLnN0eWxlLmRpc3BsYXkgfHwgIiIgPT09IGUuc3R5bGUuZGlzcGxheSAmJiB3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgJiYgIm5vbmUiID09PSB3LmNzcyhlLCAiZGlzcGxheSIpIH0sIHVlID0gZnVuY3Rpb24gKGUsIHQsIG4sIHIpIHsgdmFyIGksIG8sIGEgPSB7fTsgZm9yIChvIGluIHQpIGFbb10gPSBlLnN0eWxlW29dLCBlLnN0eWxlW29dID0gdFtvXTsgaSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7IGZvciAobyBpbiB0KSBlLnN0eWxlW29dID0gYVtvXTsgcmV0dXJuIGkgfTsgZnVuY3Rpb24gc2UoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSA9IDIwLCB1ID0gciA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIuY3VyKCkgfSA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHcuY3NzKGUsIHQsICIiKSB9LCBzID0gdSgpLCBsID0gbiAmJiBuWzNdIHx8ICh3LmNzc051bWJlclt0XSA/ICIiIDogInB4IiksIGMgPSAody5jc3NOdW1iZXJbdF0gfHwgInB4IiAhPT0gbCAmJiArcykgJiYgaWUuZXhlYyh3LmNzcyhlLCB0KSk7IGlmIChjICYmIGNbM10gIT09IGwpIHsgcyAvPSAyLCBsID0gbCB8fCBjWzNdLCBjID0gK3MgfHwgMTsgd2hpbGUgKGEtLSkgdy5zdHlsZShlLCB0LCBjICsgbCksICgxIC0gbykgKiAoMSAtIChvID0gdSgpIC8gcyB8fCAuNSkpIDw9IDAgJiYgKGEgPSAwKSwgYyAvPSBvOyBjICo9IDIsIHcuc3R5bGUoZSwgdCwgYyArIGwpLCBuID0gbiB8fCBbXSB9IHJldHVybiBuICYmIChjID0gK2MgfHwgK3MgfHwgMCwgaSA9IG5bMV0gPyBjICsgKG5bMV0gKyAxKSAqIG5bMl0gOiArblsyXSwgciAmJiAoci51bml0ID0gbCwgci5zdGFydCA9IGMsIHIuZW5kID0gaSkpLCBpIH0gdmFyIGxlID0ge307IGZ1bmN0aW9uIGNlKGUpIHsgdmFyIHQsIG4gPSBlLm93bmVyRG9jdW1lbnQsIHIgPSBlLm5vZGVOYW1lLCBpID0gbGVbcl07IHJldHVybiBpIHx8ICh0ID0gbi5ib2R5LmFwcGVuZENoaWxkKG4uY3JlYXRlRWxlbWVudChyKSksIGkgPSB3LmNzcyh0LCAiZGlzcGxheSIpLCB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksICJub25lIiA9PT0gaSAmJiAoaSA9ICJibG9jayIpLCBsZVtyXSA9IGksIGkpIH0gZnVuY3Rpb24gZmUoZSwgdCkgeyBmb3IgKHZhciBuLCByLCBpID0gW10sIG8gPSAwLCBhID0gZS5sZW5ndGg7IG8gPCBhOyBvKyspKHIgPSBlW29dKS5zdHlsZSAmJiAobiA9IHIuc3R5bGUuZGlzcGxheSwgdCA/ICgibm9uZSIgPT09IG4gJiYgKGlbb10gPSBLLmdldChyLCAiZGlzcGxheSIpIHx8IG51bGwsIGlbb10gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIiKSksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgYWUocikgJiYgKGlbb10gPSBjZShyKSkpIDogIm5vbmUiICE9PSBuICYmIChpW29dID0gIm5vbmUiLCBLLnNldChyLCAiZGlzcGxheSIsIG4pKSk7IGZvciAobyA9IDA7IG8gPCBhOyBvKyspbnVsbCAhPSBpW29dICYmIChlW29dLnN0eWxlLmRpc3BsYXkgPSBpW29dKTsgcmV0dXJuIGUgfSB3LmZuLmV4dGVuZCh7IHNob3c6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZlKHRoaXMsICEwKSB9LCBoaWRlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBmZSh0aGlzKSB9LCB0b2dnbGU6IGZ1bmN0aW9uIChlKSB7IHJldHVybiAiYm9vbGVhbiIgPT0gdHlwZW9mIGUgPyBlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKSA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IGFlKHRoaXMpID8gdyh0aGlzKS5zaG93KCkgOiB3KHRoaXMpLmhpZGUoKSB9KSB9IH0pOyB2YXIgZGUgPSAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSwgcGUgPSAvPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKykvaSwgaGUgPSAvXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksIGdlID0geyBvcHRpb246IFsxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iXSwgdGhlYWQ6IFsxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiJdLCBjb2w6IFsyLCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiJdLCB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+Il0sIHRkOiBbMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSwgX2RlZmF1bHQ6IFswLCAiIiwgIiJdIH07IGdlLm9wdGdyb3VwID0gZ2Uub3B0aW9uLCBnZS50Ym9keSA9IGdlLnRmb290ID0gZ2UuY29sZ3JvdXAgPSBnZS5jYXB0aW9uID0gZ2UudGhlYWQsIGdlLnRoID0gZ2UudGQ7IGZ1bmN0aW9uIHZlKGUsIHQpIHsgdmFyIG47IHJldHVybiBuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQgfHwgIioiKSA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwgPyBlLnF1ZXJ5U2VsZWN0b3JBbGwodCB8fCAiKiIpIDogW10sIHZvaWQgMCA9PT0gdCB8fCB0ICYmIEQoZSwgdCkgPyB3Lm1lcmdlKFtlXSwgbikgOiBuIH0gZnVuY3Rpb24geWUoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKUsuc2V0KGVbbl0sICJnbG9iYWxFdmFsIiwgIXQgfHwgSy5nZXQodFtuXSwgImdsb2JhbEV2YWwiKSkgfSB2YXIgbWUgPSAvPHwmIz9cdys7LzsgZnVuY3Rpb24gYmUoZSwgdCwgbiwgciwgaSkgeyBmb3IgKHZhciBvLCBhLCB1LCBzLCBsLCBjLCBmID0gdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIGQgPSBbXSwgcCA9IDAsIGggPSBlLmxlbmd0aDsgcCA8IGg7IHArKylpZiAoKG8gPSBlW3BdKSB8fCAwID09PSBvKSBpZiAoIm9iamVjdCIgPT09IGIobykpIHcubWVyZ2UoZCwgby5ub2RlVHlwZSA/IFtvXSA6IG8pOyBlbHNlIGlmIChtZS50ZXN0KG8pKSB7IGEgPSBhIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHUgPSAocGUuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwgcyA9IGdlW3VdIHx8IGdlLl9kZWZhdWx0LCBhLmlubmVySFRNTCA9IHNbMV0gKyB3Lmh0bWxQcmVmaWx0ZXIobykgKyBzWzJdLCBjID0gc1swXTsgd2hpbGUgKGMtLSkgYSA9IGEubGFzdENoaWxkOyB3Lm1lcmdlKGQsIGEuY2hpbGROb2RlcyksIChhID0gZi5maXJzdENoaWxkKS50ZXh0Q29udGVudCA9ICIiIH0gZWxzZSBkLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7IGYudGV4dENvbnRlbnQgPSAiIiwgcCA9IDA7IHdoaWxlIChvID0gZFtwKytdKSBpZiAociAmJiB3LmluQXJyYXkobywgcikgPiAtMSkgaSAmJiBpLnB1c2gobyk7IGVsc2UgaWYgKGwgPSB3LmNvbnRhaW5zKG8ub3duZXJEb2N1bWVudCwgbyksIGEgPSB2ZShmLmFwcGVuZENoaWxkKG8pLCAic2NyaXB0IiksIGwgJiYgeWUoYSksIG4pIHsgYyA9IDA7IHdoaWxlIChvID0gYVtjKytdKSBoZS50ZXN0KG8udHlwZSB8fCAiIikgJiYgbi5wdXNoKG8pIH0gcmV0dXJuIGYgfSAhZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmFwcGVuZENoaWxkKHIuY3JlYXRlRWxlbWVudCgiZGl2IikpLCB0ID0gci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLCB0LnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJjaGVja2VkIiksIHQuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwgZS5hcHBlbmRDaGlsZCh0KSwgaC5jaGVja0Nsb25lID0gZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGUuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCBoLm5vQ2xvbmVDaGVja2VkID0gISFlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSB9KCk7IHZhciB4ZSA9IHIuZG9jdW1lbnRFbGVtZW50LCB3ZSA9IC9ea2V5LywgQ2UgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sIFRlID0gL14oW14uXSopKD86XC4oLispfCkvOyBmdW5jdGlvbiBFZSgpIHsgcmV0dXJuICEwIH0gZnVuY3Rpb24gTmUoKSB7IHJldHVybiAhMSB9IGZ1bmN0aW9uIGtlKCkgeyB0cnkgeyByZXR1cm4gci5hY3RpdmVFbGVtZW50IH0gY2F0Y2ggKGUpIHsgfSB9IGZ1bmN0aW9uIEFlKGUsIHQsIG4sIHIsIGksIG8pIHsgdmFyIGEsIHU7IGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCkgeyAic3RyaW5nIiAhPSB0eXBlb2YgbiAmJiAociA9IHIgfHwgbiwgbiA9IHZvaWQgMCk7IGZvciAodSBpbiB0KSBBZShlLCB1LCBuLCByLCB0W3VdLCBvKTsgcmV0dXJuIGUgfSBpZiAobnVsbCA9PSByICYmIG51bGwgPT0gaSA/IChpID0gbiwgciA9IG4gPSB2b2lkIDApIDogbnVsbCA9PSBpICYmICgic3RyaW5nIiA9PSB0eXBlb2YgbiA/IChpID0gciwgciA9IHZvaWQgMCkgOiAoaSA9IHIsIHIgPSBuLCBuID0gdm9pZCAwKSksICExID09PSBpKSBpID0gTmU7IGVsc2UgaWYgKCFpKSByZXR1cm4gZTsgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSBpLCAoaSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiB3KCkub2ZmKGUpLCBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfSkuZ3VpZCA9IGEuZ3VpZCB8fCAoYS5ndWlkID0gdy5ndWlkKyspKSwgZS5lYWNoKGZ1bmN0aW9uICgpIHsgdy5ldmVudC5hZGQodGhpcywgdCwgaSwgciwgbikgfSkgfSB3LmV2ZW50ID0geyBnbG9iYWw6IHt9LCBhZGQ6IGZ1bmN0aW9uIChlLCB0LCBuLCByLCBpKSB7IHZhciBvLCBhLCB1LCBzLCBsLCBjLCBmLCBkLCBwLCBoLCBnLCB2ID0gSy5nZXQoZSk7IGlmICh2KSB7IG4uaGFuZGxlciAmJiAobiA9IChvID0gbikuaGFuZGxlciwgaSA9IG8uc2VsZWN0b3IpLCBpICYmIHcuZmluZC5tYXRjaGVzU2VsZWN0b3IoeGUsIGkpLCBuLmd1aWQgfHwgKG4uZ3VpZCA9IHcuZ3VpZCsrKSwgKHMgPSB2LmV2ZW50cykgfHwgKHMgPSB2LmV2ZW50cyA9IHt9KSwgKGEgPSB2LmhhbmRsZSkgfHwgKGEgPSB2LmhhbmRsZSA9IGZ1bmN0aW9uICh0KSB7IHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgdyAmJiB3LmV2ZW50LnRyaWdnZXJlZCAhPT0gdC50eXBlID8gdy5ldmVudC5kaXNwYXRjaC5hcHBseShlLCBhcmd1bWVudHMpIDogdm9pZCAwIH0pLCBsID0gKHQgPSAodCB8fCAiIikubWF0Y2goSSkgfHwgWyIiXSkubGVuZ3RoOyB3aGlsZSAobC0tKSBwID0gZyA9ICh1ID0gVGUuZXhlYyh0W2xdKSB8fCBbXSlbMV0sIGggPSAodVsyXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIHAgJiYgKGYgPSB3LmV2ZW50LnNwZWNpYWxbcF0gfHwge30sIHAgPSAoaSA/IGYuZGVsZWdhdGVUeXBlIDogZi5iaW5kVHlwZSkgfHwgcCwgZiA9IHcuZXZlbnQuc3BlY2lhbFtwXSB8fCB7fSwgYyA9IHcuZXh0ZW5kKHsgdHlwZTogcCwgb3JpZ1R5cGU6IGcsIGRhdGE6IHIsIGhhbmRsZXI6IG4sIGd1aWQ6IG4uZ3VpZCwgc2VsZWN0b3I6IGksIG5lZWRzQ29udGV4dDogaSAmJiB3LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksIG5hbWVzcGFjZTogaC5qb2luKCIuIikgfSwgbyksIChkID0gc1twXSkgfHwgKChkID0gc1twXSA9IFtdKS5kZWxlZ2F0ZUNvdW50ID0gMCwgZi5zZXR1cCAmJiAhMSAhPT0gZi5zZXR1cC5jYWxsKGUsIHIsIGgsIGEpIHx8IGUuYWRkRXZlbnRMaXN0ZW5lciAmJiBlLmFkZEV2ZW50TGlzdGVuZXIocCwgYSkpLCBmLmFkZCAmJiAoZi5hZGQuY2FsbChlLCBjKSwgYy5oYW5kbGVyLmd1aWQgfHwgKGMuaGFuZGxlci5ndWlkID0gbi5ndWlkKSksIGkgPyBkLnNwbGljZShkLmRlbGVnYXRlQ291bnQrKywgMCwgYykgOiBkLnB1c2goYyksIHcuZXZlbnQuZ2xvYmFsW3BdID0gITApIH0gfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSwgdCwgbiwgciwgaSkgeyB2YXIgbywgYSwgdSwgcywgbCwgYywgZiwgZCwgcCwgaCwgZywgdiA9IEsuaGFzRGF0YShlKSAmJiBLLmdldChlKTsgaWYgKHYgJiYgKHMgPSB2LmV2ZW50cykpIHsgbCA9ICh0ID0gKHQgfHwgIiIpLm1hdGNoKEkpIHx8IFsiIl0pLmxlbmd0aDsgd2hpbGUgKGwtLSkgaWYgKHUgPSBUZS5leGVjKHRbbF0pIHx8IFtdLCBwID0gZyA9IHVbMV0sIGggPSAodVsyXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIHApIHsgZiA9IHcuZXZlbnQuc3BlY2lhbFtwXSB8fCB7fSwgZCA9IHNbcCA9IChyID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBwXSB8fCBbXSwgdSA9IHVbMl0gJiYgbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIGEgPSBvID0gZC5sZW5ndGg7IHdoaWxlIChvLS0pIGMgPSBkW29dLCAhaSAmJiBnICE9PSBjLm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBjLmd1aWQgfHwgdSAmJiAhdS50ZXN0KGMubmFtZXNwYWNlKSB8fCByICYmIHIgIT09IGMuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWMuc2VsZWN0b3IpIHx8IChkLnNwbGljZShvLCAxKSwgYy5zZWxlY3RvciAmJiBkLmRlbGVnYXRlQ291bnQtLSAsIGYucmVtb3ZlICYmIGYucmVtb3ZlLmNhbGwoZSwgYykpOyBhICYmICFkLmxlbmd0aCAmJiAoZi50ZWFyZG93biAmJiAhMSAhPT0gZi50ZWFyZG93bi5jYWxsKGUsIGgsIHYuaGFuZGxlKSB8fCB3LnJlbW92ZUV2ZW50KGUsIHAsIHYuaGFuZGxlKSwgZGVsZXRlIHNbcF0pIH0gZWxzZSBmb3IgKHAgaW4gcykgdy5ldmVudC5yZW1vdmUoZSwgcCArIHRbbF0sIG4sIHIsICEwKTsgdy5pc0VtcHR5T2JqZWN0KHMpICYmIEsucmVtb3ZlKGUsICJoYW5kbGUgZXZlbnRzIikgfSB9LCBkaXNwYXRjaDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSB3LmV2ZW50LmZpeChlKSwgbiwgciwgaSwgbywgYSwgdSwgcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSwgbCA9IChLLmdldCh0aGlzLCAiZXZlbnRzIikgfHwge30pW3QudHlwZV0gfHwgW10sIGMgPSB3LmV2ZW50LnNwZWNpYWxbdC50eXBlXSB8fCB7fTsgZm9yIChzWzBdID0gdCwgbiA9IDE7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspc1tuXSA9IGFyZ3VtZW50c1tuXTsgaWYgKHQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzLCAhYy5wcmVEaXNwYXRjaCB8fCAhMSAhPT0gYy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsIHQpKSB7IHUgPSB3LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgdCwgbCksIG4gPSAwOyB3aGlsZSAoKG8gPSB1W24rK10pICYmICF0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsgdC5jdXJyZW50VGFyZ2V0ID0gby5lbGVtLCByID0gMDsgd2hpbGUgKChhID0gby5oYW5kbGVyc1tyKytdKSAmJiAhdC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSB0LnJuYW1lc3BhY2UgJiYgIXQucm5hbWVzcGFjZS50ZXN0KGEubmFtZXNwYWNlKSB8fCAodC5oYW5kbGVPYmogPSBhLCB0LmRhdGEgPSBhLmRhdGEsIHZvaWQgMCAhPT0gKGkgPSAoKHcuZXZlbnQuc3BlY2lhbFthLm9yaWdUeXBlXSB8fCB7fSkuaGFuZGxlIHx8IGEuaGFuZGxlcikuYXBwbHkoby5lbGVtLCBzKSkgJiYgITEgPT09ICh0LnJlc3VsdCA9IGkpICYmICh0LnByZXZlbnREZWZhdWx0KCksIHQuc3RvcFByb3BhZ2F0aW9uKCkpKSB9IHJldHVybiBjLnBvc3REaXNwYXRjaCAmJiBjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsIHQpLCB0LnJlc3VsdCB9IH0sIGhhbmRsZXJzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciwgaSwgbywgYSwgdSA9IFtdLCBzID0gdC5kZWxlZ2F0ZUNvdW50LCBsID0gZS50YXJnZXQ7IGlmIChzICYmIGwubm9kZVR5cGUgJiYgISgiY2xpY2siID09PSBlLnR5cGUgJiYgZS5idXR0b24gPj0gMSkpIGZvciAoOyBsICE9PSB0aGlzOyBsID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpaWYgKDEgPT09IGwubm9kZVR5cGUgJiYgKCJjbGljayIgIT09IGUudHlwZSB8fCAhMCAhPT0gbC5kaXNhYmxlZCkpIHsgZm9yIChvID0gW10sIGEgPSB7fSwgbiA9IDA7IG4gPCBzOyBuKyspdm9pZCAwID09PSBhW2kgPSAociA9IHRbbl0pLnNlbGVjdG9yICsgIiAiXSAmJiAoYVtpXSA9IHIubmVlZHNDb250ZXh0ID8gdyhpLCB0aGlzKS5pbmRleChsKSA+IC0xIDogdy5maW5kKGksIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgYVtpXSAmJiBvLnB1c2gocik7IG8ubGVuZ3RoICYmIHUucHVzaCh7IGVsZW06IGwsIGhhbmRsZXJzOiBvIH0pIH0gcmV0dXJuIGwgPSB0aGlzLCBzIDwgdC5sZW5ndGggJiYgdS5wdXNoKHsgZWxlbTogbCwgaGFuZGxlcnM6IHQuc2xpY2UocykgfSksIHUgfSwgYWRkUHJvcDogZnVuY3Rpb24gKGUsIHQpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuRXZlbnQucHJvdG90eXBlLCBlLCB7IGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCBnZXQ6IGcodCkgPyBmdW5jdGlvbiAoKSB7IGlmICh0aGlzLm9yaWdpbmFsRXZlbnQpIHJldHVybiB0KHRoaXMub3JpZ2luYWxFdmVudCkgfSA6IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFtlXSB9LCBzZXQ6IGZ1bmN0aW9uICh0KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBlLCB7IGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITAsIHZhbHVlOiB0IH0pIH0gfSkgfSwgZml4OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVt3LmV4cGFuZG9dID8gZSA6IG5ldyB3LkV2ZW50KGUpIH0sIHNwZWNpYWw6IHsgbG9hZDogeyBub0J1YmJsZTogITAgfSwgZm9jdXM6IHsgdHJpZ2dlcjogZnVuY3Rpb24gKCkgeyBpZiAodGhpcyAhPT0ga2UoKSAmJiB0aGlzLmZvY3VzKSByZXR1cm4gdGhpcy5mb2N1cygpLCAhMSB9LCBkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIiB9LCBibHVyOiB7IHRyaWdnZXI6IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMgPT09IGtlKCkgJiYgdGhpcy5ibHVyKSByZXR1cm4gdGhpcy5ibHVyKCksICExIH0sIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IiB9LCBjbGljazogeyB0cmlnZ2VyOiBmdW5jdGlvbiAoKSB7IGlmICgiY2hlY2tib3giID09PSB0aGlzLnR5cGUgJiYgdGhpcy5jbGljayAmJiBEKHRoaXMsICJpbnB1dCIpKSByZXR1cm4gdGhpcy5jbGljaygpLCAhMSB9LCBfZGVmYXVsdDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEQoZS50YXJnZXQsICJhIikgfSB9LCBiZWZvcmV1bmxvYWQ6IHsgcG9zdERpc3BhdGNoOiBmdW5jdGlvbiAoZSkgeyB2b2lkIDAgIT09IGUucmVzdWx0ICYmIGUub3JpZ2luYWxFdmVudCAmJiAoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZS5yZXN1bHQpIH0gfSB9IH0sIHcucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIG4pIH0sIHcuRXZlbnQgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoISh0aGlzIGluc3RhbmNlb2Ygdy5FdmVudCkpIHJldHVybiBuZXcgdy5FdmVudChlLCB0KTsgZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5hbEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZCB8fCB2b2lkIDAgPT09IGUuZGVmYXVsdFByZXZlbnRlZCAmJiAhMSA9PT0gZS5yZXR1cm5WYWx1ZSA/IEVlIDogTmUsIHRoaXMudGFyZ2V0ID0gZS50YXJnZXQgJiYgMyA9PT0gZS50YXJnZXQubm9kZVR5cGUgPyBlLnRhcmdldC5wYXJlbnROb2RlIDogZS50YXJnZXQsIHRoaXMuY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCwgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gZS5yZWxhdGVkVGFyZ2V0KSA6IHRoaXMudHlwZSA9IGUsIHQgJiYgdy5leHRlbmQodGhpcywgdCksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpLCB0aGlzW3cuZXhwYW5kb10gPSAhMCB9LCB3LkV2ZW50LnByb3RvdHlwZSA9IHsgY29uc3RydWN0b3I6IHcuRXZlbnQsIGlzRGVmYXVsdFByZXZlbnRlZDogTmUsIGlzUHJvcGFnYXRpb25TdG9wcGVkOiBOZSwgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IE5lLCBpc1NpbXVsYXRlZDogITEsIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OyB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IEVlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUucHJldmVudERlZmF1bHQoKSB9LCBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7IHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBFZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BQcm9wYWdhdGlvbigpIH0sIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IEVlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkgfSB9LCB3LmVhY2goeyBhbHRLZXk6ICEwLCBidWJibGVzOiAhMCwgY2FuY2VsYWJsZTogITAsIGNoYW5nZWRUb3VjaGVzOiAhMCwgY3RybEtleTogITAsIGRldGFpbDogITAsIGV2ZW50UGhhc2U6ICEwLCBtZXRhS2V5OiAhMCwgcGFnZVg6ICEwLCBwYWdlWTogITAsIHNoaWZ0S2V5OiAhMCwgdmlldzogITAsICJjaGFyIjogITAsIGNoYXJDb2RlOiAhMCwga2V5OiAhMCwga2V5Q29kZTogITAsIGJ1dHRvbjogITAsIGJ1dHRvbnM6ICEwLCBjbGllbnRYOiAhMCwgY2xpZW50WTogITAsIG9mZnNldFg6ICEwLCBvZmZzZXRZOiAhMCwgcG9pbnRlcklkOiAhMCwgcG9pbnRlclR5cGU6ICEwLCBzY3JlZW5YOiAhMCwgc2NyZWVuWTogITAsIHRhcmdldFRvdWNoZXM6ICEwLCB0b0VsZW1lbnQ6ICEwLCB0b3VjaGVzOiAhMCwgd2hpY2g6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5idXR0b247IHJldHVybiBudWxsID09IGUud2hpY2ggJiYgd2UudGVzdChlLnR5cGUpID8gbnVsbCAhPSBlLmNoYXJDb2RlID8gZS5jaGFyQ29kZSA6IGUua2V5Q29kZSA6ICFlLndoaWNoICYmIHZvaWQgMCAhPT0gdCAmJiBDZS50ZXN0KGUudHlwZSkgPyAxICYgdCA/IDEgOiAyICYgdCA/IDMgOiA0ICYgdCA/IDIgOiAwIDogZS53aGljaCB9IH0sIHcuZXZlbnQuYWRkUHJvcCksIHcuZWFjaCh7IG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLCBtb3VzZWxlYXZlOiAibW91c2VvdXQiLCBwb2ludGVyZW50ZXI6ICJwb2ludGVyb3ZlciIsIHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiIH0sIGZ1bmN0aW9uIChlLCB0KSB7IHcuZXZlbnQuc3BlY2lhbFtlXSA9IHsgZGVsZWdhdGVUeXBlOiB0LCBiaW5kVHlwZTogdCwgaGFuZGxlOiBmdW5jdGlvbiAoZSkgeyB2YXIgbiwgciA9IHRoaXMsIGkgPSBlLnJlbGF0ZWRUYXJnZXQsIG8gPSBlLmhhbmRsZU9iajsgcmV0dXJuIGkgJiYgKGkgPT09IHIgfHwgdy5jb250YWlucyhyLCBpKSkgfHwgKGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4gfSB9IH0pLCB3LmZuLmV4dGVuZCh7IG9uOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gQWUodGhpcywgZSwgdCwgbiwgcikgfSwgb25lOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gQWUodGhpcywgZSwgdCwgbiwgciwgMSkgfSwgb2ZmOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaTsgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCAmJiBlLmhhbmRsZU9iaikgcmV0dXJuIHIgPSBlLmhhbmRsZU9iaiwgdyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2UgPyByLm9yaWdUeXBlICsgIi4iICsgci5uYW1lc3BhY2UgOiByLm9yaWdUeXBlLCByLnNlbGVjdG9yLCByLmhhbmRsZXIpLCB0aGlzOyBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHsgZm9yIChpIGluIGUpIHRoaXMub2ZmKGksIHQsIGVbaV0pOyByZXR1cm4gdGhpcyB9IHJldHVybiAhMSAhPT0gdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0IHx8IChuID0gdCwgdCA9IHZvaWQgMCksICExID09PSBuICYmIChuID0gTmUpLCB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB3LmV2ZW50LnJlbW92ZSh0aGlzLCBlLCBuLCB0KSB9KSB9IH0pOyB2YXIgRGUgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksIFNlID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksIExlID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksIGplID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nOyBmdW5jdGlvbiBxZShlLCB0KSB7IHJldHVybiBEKGUsICJ0YWJsZSIpICYmIEQoMTEgIT09IHQubm9kZVR5cGUgPyB0IDogdC5maXJzdENoaWxkLCAidHIiKSA/IHcoZSkuY2hpbGRyZW4oInRib2R5IilbMF0gfHwgZSA6IGUgfSBmdW5jdGlvbiBPZShlKSB7IHJldHVybiBlLnR5cGUgPSAobnVsbCAhPT0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgKyAiLyIgKyBlLnR5cGUsIGUgfSBmdW5jdGlvbiBQZShlKSB7IHJldHVybiAidHJ1ZS8iID09PSAoZS50eXBlIHx8ICIiKS5zbGljZSgwLCA1KSA/IGUudHlwZSA9IGUudHlwZS5zbGljZSg1KSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksIGUgfSBmdW5jdGlvbiBIZShlLCB0KSB7IHZhciBuLCByLCBpLCBvLCBhLCB1LCBzLCBsOyBpZiAoMSA9PT0gdC5ub2RlVHlwZSkgeyBpZiAoSy5oYXNEYXRhKGUpICYmIChvID0gSy5hY2Nlc3MoZSksIGEgPSBLLnNldCh0LCBvKSwgbCA9IG8uZXZlbnRzKSkgeyBkZWxldGUgYS5oYW5kbGUsIGEuZXZlbnRzID0ge307IGZvciAoaSBpbiBsKSBmb3IgKG4gPSAwLCByID0gbFtpXS5sZW5ndGg7IG4gPCByOyBuKyspdy5ldmVudC5hZGQodCwgaSwgbFtpXVtuXSkgfSBKLmhhc0RhdGEoZSkgJiYgKHUgPSBKLmFjY2VzcyhlKSwgcyA9IHcuZXh0ZW5kKHt9LCB1KSwgSi5zZXQodCwgcykpIH0gfSBmdW5jdGlvbiBJZShlLCB0KSB7IHZhciBuID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyAiaW5wdXQiID09PSBuICYmIGRlLnRlc3QoZS50eXBlKSA/IHQuY2hlY2tlZCA9IGUuY2hlY2tlZCA6ICJpbnB1dCIgIT09IG4gJiYgInRleHRhcmVhIiAhPT0gbiB8fCAodC5kZWZhdWx0VmFsdWUgPSBlLmRlZmF1bHRWYWx1ZSkgfSBmdW5jdGlvbiBSZShlLCB0LCBuLCByKSB7IHQgPSBhLmFwcGx5KFtdLCB0KTsgdmFyIGksIG8sIHUsIHMsIGwsIGMsIGYgPSAwLCBkID0gZS5sZW5ndGgsIHAgPSBkIC0gMSwgdiA9IHRbMF0sIHkgPSBnKHYpOyBpZiAoeSB8fCBkID4gMSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdiAmJiAhaC5jaGVja0Nsb25lICYmIExlLnRlc3QodikpIHJldHVybiBlLmVhY2goZnVuY3Rpb24gKGkpIHsgdmFyIG8gPSBlLmVxKGkpOyB5ICYmICh0WzBdID0gdi5jYWxsKHRoaXMsIGksIG8uaHRtbCgpKSksIFJlKG8sIHQsIG4sIHIpIH0pOyBpZiAoZCAmJiAoaSA9IGJlKHQsIGVbMF0ub3duZXJEb2N1bWVudCwgITEsIGUsIHIpLCBvID0gaS5maXJzdENoaWxkLCAxID09PSBpLmNoaWxkTm9kZXMubGVuZ3RoICYmIChpID0gbyksIG8gfHwgcikpIHsgZm9yIChzID0gKHUgPSB3Lm1hcCh2ZShpLCAic2NyaXB0IiksIE9lKSkubGVuZ3RoOyBmIDwgZDsgZisrKWwgPSBpLCBmICE9PSBwICYmIChsID0gdy5jbG9uZShsLCAhMCwgITApLCBzICYmIHcubWVyZ2UodSwgdmUobCwgInNjcmlwdCIpKSksIG4uY2FsbChlW2ZdLCBsLCBmKTsgaWYgKHMpIGZvciAoYyA9IHVbdS5sZW5ndGggLSAxXS5vd25lckRvY3VtZW50LCB3Lm1hcCh1LCBQZSksIGYgPSAwOyBmIDwgczsgZisrKWwgPSB1W2ZdLCBoZS50ZXN0KGwudHlwZSB8fCAiIikgJiYgIUsuYWNjZXNzKGwsICJnbG9iYWxFdmFsIikgJiYgdy5jb250YWlucyhjLCBsKSAmJiAobC5zcmMgJiYgIm1vZHVsZSIgIT09IChsLnR5cGUgfHwgIiIpLnRvTG93ZXJDYXNlKCkgPyB3Ll9ldmFsVXJsICYmIHcuX2V2YWxVcmwobC5zcmMpIDogbShsLnRleHRDb250ZW50LnJlcGxhY2UoamUsICIiKSwgYywgbCkpIH0gcmV0dXJuIGUgfSBmdW5jdGlvbiBCZShlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSB0ID8gdy5maWx0ZXIodCwgZSkgOiBlLCBvID0gMDsgbnVsbCAhPSAociA9IGlbb10pOyBvKyspbiB8fCAxICE9PSByLm5vZGVUeXBlIHx8IHcuY2xlYW5EYXRhKHZlKHIpKSwgci5wYXJlbnROb2RlICYmIChuICYmIHcuY29udGFpbnMoci5vd25lckRvY3VtZW50LCByKSAmJiB5ZSh2ZShyLCAic2NyaXB0IikpLCByLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpOyByZXR1cm4gZSB9IHcuZXh0ZW5kKHsgaHRtbFByZWZpbHRlcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucmVwbGFjZShEZSwgIjwkMT48LyQyPiIpIH0sIGNsb25lOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSwgdSA9IGUuY2xvbmVOb2RlKCEwKSwgcyA9IHcuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKTsgaWYgKCEoaC5ub0Nsb25lQ2hlY2tlZCB8fCAxICE9PSBlLm5vZGVUeXBlICYmIDExICE9PSBlLm5vZGVUeXBlIHx8IHcuaXNYTUxEb2MoZSkpKSBmb3IgKGEgPSB2ZSh1KSwgciA9IDAsIGkgPSAobyA9IHZlKGUpKS5sZW5ndGg7IHIgPCBpOyByKyspSWUob1tyXSwgYVtyXSk7IGlmICh0KSBpZiAobikgZm9yIChvID0gbyB8fCB2ZShlKSwgYSA9IGEgfHwgdmUodSksIHIgPSAwLCBpID0gby5sZW5ndGg7IHIgPCBpOyByKyspSGUob1tyXSwgYVtyXSk7IGVsc2UgSGUoZSwgdSk7IHJldHVybiAoYSA9IHZlKHUsICJzY3JpcHQiKSkubGVuZ3RoID4gMCAmJiB5ZShhLCAhcyAmJiB2ZShlLCAic2NyaXB0IikpLCB1IH0sIGNsZWFuRGF0YTogZnVuY3Rpb24gKGUpIHsgZm9yICh2YXIgdCwgbiwgciwgaSA9IHcuZXZlbnQuc3BlY2lhbCwgbyA9IDA7IHZvaWQgMCAhPT0gKG4gPSBlW29dKTsgbysrKWlmIChZKG4pKSB7IGlmICh0ID0gbltLLmV4cGFuZG9dKSB7IGlmICh0LmV2ZW50cykgZm9yIChyIGluIHQuZXZlbnRzKSBpW3JdID8gdy5ldmVudC5yZW1vdmUobiwgcikgOiB3LnJlbW92ZUV2ZW50KG4sIHIsIHQuaGFuZGxlKTsgbltLLmV4cGFuZG9dID0gdm9pZCAwIH0gbltKLmV4cGFuZG9dICYmIChuW0ouZXhwYW5kb10gPSB2b2lkIDApIH0gfSB9KSwgdy5mbi5leHRlbmQoeyBkZXRhY2g6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBCZSh0aGlzLCBlLCAhMCkgfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gQmUodGhpcywgZSkgfSwgdGV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF8odGhpcywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IHcudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uICgpIHsgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8ICh0aGlzLnRleHRDb250ZW50ID0gZSkgfSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgYXBwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IDEgIT09IHRoaXMubm9kZVR5cGUgJiYgMTEgIT09IHRoaXMubm9kZVR5cGUgJiYgOSAhPT0gdGhpcy5ub2RlVHlwZSB8fCBxZSh0aGlzLCBlKS5hcHBlbmRDaGlsZChlKSB9KSB9LCBwcmVwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IGlmICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09PSB0aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpIHsgdmFyIHQgPSBxZSh0aGlzLCBlKTsgdC5pbnNlcnRCZWZvcmUoZSwgdC5maXJzdENoaWxkKSB9IH0pIH0sIGJlZm9yZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzKSB9KSB9LCBhZnRlcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzLm5leHRTaWJsaW5nKSB9KSB9LCBlbXB0eTogZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlLCB0ID0gMDsgbnVsbCAhPSAoZSA9IHRoaXNbdF0pOyB0KyspMSA9PT0gZS5ub2RlVHlwZSAmJiAody5jbGVhbkRhdGEodmUoZSwgITEpKSwgZS50ZXh0Q29udGVudCA9ICIiKTsgcmV0dXJuIHRoaXMgfSwgY2xvbmU6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBlID0gbnVsbCAhPSBlICYmIGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwgdGhpcy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5jbG9uZSh0aGlzLCBlLCB0KSB9KSB9LCBodG1sOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gXyh0aGlzLCBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXNbMF0gfHwge30sIG4gPSAwLCByID0gdGhpcy5sZW5ndGg7IGlmICh2b2lkIDAgPT09IGUgJiYgMSA9PT0gdC5ub2RlVHlwZSkgcmV0dXJuIHQuaW5uZXJIVE1MOyBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgIVNlLnRlc3QoZSkgJiYgIWdlWyhwZS5leGVjKGUpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkgeyBlID0gdy5odG1sUHJlZmlsdGVyKGUpOyB0cnkgeyBmb3IgKDsgbiA8IHI7IG4rKykxID09PSAodCA9IHRoaXNbbl0gfHwge30pLm5vZGVUeXBlICYmICh3LmNsZWFuRGF0YSh2ZSh0LCAhMSkpLCB0LmlubmVySFRNTCA9IGUpOyB0ID0gMCB9IGNhdGNoIChlKSB7IH0gfSB0ICYmIHRoaXMuZW1wdHkoKS5hcHBlbmQoZSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBbXTsgcmV0dXJuIFJlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSB0aGlzLnBhcmVudE5vZGU7IHcuaW5BcnJheSh0aGlzLCBlKSA8IDAgJiYgKHcuY2xlYW5EYXRhKHZlKHRoaXMpKSwgbiAmJiBuLnJlcGxhY2VDaGlsZCh0LCB0aGlzKSkgfSwgZSkgfSB9KSwgdy5lYWNoKHsgYXBwZW5kVG86ICJhcHBlbmQiLCBwcmVwZW5kVG86ICJwcmVwZW5kIiwgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIgfSwgZnVuY3Rpb24gKGUsIHQpIHsgdy5mbltlXSA9IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4sIHIgPSBbXSwgaSA9IHcoZSksIG8gPSBpLmxlbmd0aCAtIDEsIGEgPSAwOyBhIDw9IG87IGErKyluID0gYSA9PT0gbyA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwgdyhpW2FdKVt0XShuKSwgdS5hcHBseShyLCBuLmdldCgpKTsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHIpIH0gfSk7IHZhciBNZSA9IG5ldyBSZWdFeHAoIl4oIiArIHJlICsgIikoPyFweClbYS16JV0rJCIsICJpIiksIFdlID0gZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7IHJldHVybiBuICYmIG4ub3BlbmVyIHx8IChuID0gZSksIG4uZ2V0Q29tcHV0ZWRTdHlsZSh0KSB9LCAkZSA9IG5ldyBSZWdFeHAob2Uuam9pbigifCIpLCAiaSIpOyAhZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiB0KCkgeyBpZiAoYykgeyBsLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsIGMuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIiwgeGUuYXBwZW5kQ2hpbGQobCkuYXBwZW5kQ2hpbGQoYyk7IHZhciB0ID0gZS5nZXRDb21wdXRlZFN0eWxlKGMpOyBpID0gIjElIiAhPT0gdC50b3AsIHMgPSAxMiA9PT0gbih0Lm1hcmdpbkxlZnQpLCBjLnN0eWxlLnJpZ2h0ID0gIjYwJSIsIHUgPSAzNiA9PT0gbih0LnJpZ2h0KSwgbyA9IDM2ID09PSBuKHQud2lkdGgpLCBjLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiwgYSA9IDM2ID09PSBjLm9mZnNldFdpZHRoIHx8ICJhYnNvbHV0ZSIsIHhlLnJlbW92ZUNoaWxkKGwpLCBjID0gbnVsbCB9IH0gZnVuY3Rpb24gbihlKSB7IHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpIH0gdmFyIGksIG8sIGEsIHUsIHMsIGwgPSByLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCBjID0gci5jcmVhdGVFbGVtZW50KCJkaXYiKTsgYy5zdHlsZSAmJiAoYy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCIsIGMuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICIiLCBoLmNsZWFyQ2xvbmVTdHlsZSA9ICJjb250ZW50LWJveCIgPT09IGMuc3R5bGUuYmFja2dyb3VuZENsaXAsIHcuZXh0ZW5kKGgsIHsgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgbyB9LCBwaXhlbEJveFN0eWxlczogZnVuY3Rpb24gKCkgeyByZXR1cm4gdCgpLCB1IH0sIHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgaSB9LCByZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgcyB9LCBzY3JvbGxib3hTaXplOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0KCksIGEgfSB9KSkgfSgpOyBmdW5jdGlvbiBGZShlLCB0LCBuKSB7IHZhciByLCBpLCBvLCBhLCB1ID0gZS5zdHlsZTsgcmV0dXJuIChuID0gbiB8fCBXZShlKSkgJiYgKCIiICE9PSAoYSA9IG4uZ2V0UHJvcGVydHlWYWx1ZSh0KSB8fCBuW3RdKSB8fCB3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgfHwgKGEgPSB3LnN0eWxlKGUsIHQpKSwgIWgucGl4ZWxCb3hTdHlsZXMoKSAmJiBNZS50ZXN0KGEpICYmICRlLnRlc3QodCkgJiYgKHIgPSB1LndpZHRoLCBpID0gdS5taW5XaWR0aCwgbyA9IHUubWF4V2lkdGgsIHUubWluV2lkdGggPSB1Lm1heFdpZHRoID0gdS53aWR0aCA9IGEsIGEgPSBuLndpZHRoLCB1LndpZHRoID0gciwgdS5taW5XaWR0aCA9IGksIHUubWF4V2lkdGggPSBvKSksIHZvaWQgMCAhPT0gYSA/IGEgKyAiIiA6IGEgfSBmdW5jdGlvbiB6ZShlLCB0KSB7IHJldHVybiB7IGdldDogZnVuY3Rpb24gKCkgeyBpZiAoIWUoKSkgcmV0dXJuICh0aGlzLmdldCA9IHQpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IGRlbGV0ZSB0aGlzLmdldCB9IH0gfSB2YXIgX2UgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sIFVlID0gL14tLS8sIFZlID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwgWGUgPSB7IGxldHRlclNwYWNpbmc6ICIwIiwgZm9udFdlaWdodDogIjQwMCIgfSwgUWUgPSBbIldlYmtpdCIsICJNb3oiLCAibXMiXSwgWWUgPSByLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlOyBmdW5jdGlvbiBHZShlKSB7IGlmIChlIGluIFllKSByZXR1cm4gZTsgdmFyIHQgPSBlWzBdLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpLCBuID0gUWUubGVuZ3RoOyB3aGlsZSAobi0tKSBpZiAoKGUgPSBRZVtuXSArIHQpIGluIFllKSByZXR1cm4gZSB9IGZ1bmN0aW9uIEtlKGUpIHsgdmFyIHQgPSB3LmNzc1Byb3BzW2VdOyByZXR1cm4gdCB8fCAodCA9IHcuY3NzUHJvcHNbZV0gPSBHZShlKSB8fCBlKSwgdCB9IGZ1bmN0aW9uIEplKGUsIHQsIG4pIHsgdmFyIHIgPSBpZS5leGVjKHQpOyByZXR1cm4gciA/IE1hdGgubWF4KDAsIHJbMl0gLSAobiB8fCAwKSkgKyAoclszXSB8fCAicHgiKSA6IHQgfSBmdW5jdGlvbiBaZShlLCB0LCBuLCByLCBpLCBvKSB7IHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLCB1ID0gMCwgcyA9IDA7IGlmIChuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQiKSkgcmV0dXJuIDA7IGZvciAoOyBhIDwgNDsgYSArPSAyKSJtYXJnaW4iID09PSBuICYmIChzICs9IHcuY3NzKGUsIG4gKyBvZVthXSwgITAsIGkpKSwgciA/ICgiY29udGVudCIgPT09IG4gJiYgKHMgLT0gdy5jc3MoZSwgInBhZGRpbmciICsgb2VbYV0sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmIChzIC09IHcuY3NzKGUsICJib3JkZXIiICsgb2VbYV0gKyAiV2lkdGgiLCAhMCwgaSkpKSA6IChzICs9IHcuY3NzKGUsICJwYWRkaW5nIiArIG9lW2FdLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiA/IHMgKz0gdy5jc3MoZSwgImJvcmRlciIgKyBvZVthXSArICJXaWR0aCIsICEwLCBpKSA6IHUgKz0gdy5jc3MoZSwgImJvcmRlciIgKyBvZVthXSArICJXaWR0aCIsICEwLCBpKSk7IHJldHVybiAhciAmJiBvID49IDAgJiYgKHMgKz0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSAtIG8gLSBzIC0gdSAtIC41KSkpLCBzIH0gZnVuY3Rpb24gZXQoZSwgdCwgbikgeyB2YXIgciA9IFdlKGUpLCBpID0gRmUoZSwgdCwgciksIG8gPSAiYm9yZGVyLWJveCIgPT09IHcuY3NzKGUsICJib3hTaXppbmciLCAhMSwgciksIGEgPSBvOyBpZiAoTWUudGVzdChpKSkgeyBpZiAoIW4pIHJldHVybiBpOyBpID0gImF1dG8iIH0gcmV0dXJuIGEgPSBhICYmIChoLmJveFNpemluZ1JlbGlhYmxlKCkgfHwgaSA9PT0gZS5zdHlsZVt0XSksICgiYXV0byIgPT09IGkgfHwgIXBhcnNlRmxvYXQoaSkgJiYgImlubGluZSIgPT09IHcuY3NzKGUsICJkaXNwbGF5IiwgITEsIHIpKSAmJiAoaSA9IGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSwgYSA9ICEwKSwgKGkgPSBwYXJzZUZsb2F0KGkpIHx8IDApICsgWmUoZSwgdCwgbiB8fCAobyA/ICJib3JkZXIiIDogImNvbnRlbnQiKSwgYSwgciwgaSkgKyAicHgiIH0gdy5leHRlbmQoeyBjc3NIb29rczogeyBvcGFjaXR5OiB7IGdldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKHQpIHsgdmFyIG4gPSBGZShlLCAib3BhY2l0eSIpOyByZXR1cm4gIiIgPT09IG4gPyAiMSIgOiBuIH0gfSB9IH0sIGNzc051bWJlcjogeyBhbmltYXRpb25JdGVyYXRpb25Db3VudDogITAsIGNvbHVtbkNvdW50OiAhMCwgZmlsbE9wYWNpdHk6ICEwLCBmbGV4R3JvdzogITAsIGZsZXhTaHJpbms6ICEwLCBmb250V2VpZ2h0OiAhMCwgbGluZUhlaWdodDogITAsIG9wYWNpdHk6ICEwLCBvcmRlcjogITAsIG9ycGhhbnM6ICEwLCB3aWRvd3M6ICEwLCB6SW5kZXg6ICEwLCB6b29tOiAhMCB9LCBjc3NQcm9wczoge30sIHN0eWxlOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyBpZiAoZSAmJiAzICE9PSBlLm5vZGVUeXBlICYmIDggIT09IGUubm9kZVR5cGUgJiYgZS5zdHlsZSkgeyB2YXIgaSwgbywgYSwgdSA9IFEodCksIHMgPSBVZS50ZXN0KHQpLCBsID0gZS5zdHlsZTsgaWYgKHMgfHwgKHQgPSBLZSh1KSksIGEgPSB3LmNzc0hvb2tzW3RdIHx8IHcuY3NzSG9va3NbdV0sIHZvaWQgMCA9PT0gbikgcmV0dXJuIGEgJiYgImdldCIgaW4gYSAmJiB2b2lkIDAgIT09IChpID0gYS5nZXQoZSwgITEsIHIpKSA/IGkgOiBsW3RdOyAic3RyaW5nIiA9PSAobyA9IHR5cGVvZiBuKSAmJiAoaSA9IGllLmV4ZWMobikpICYmIGlbMV0gJiYgKG4gPSBzZShlLCB0LCBpKSwgbyA9ICJudW1iZXIiKSwgbnVsbCAhPSBuICYmIG4gPT09IG4gJiYgKCJudW1iZXIiID09PSBvICYmIChuICs9IGkgJiYgaVszXSB8fCAody5jc3NOdW1iZXJbdV0gPyAiIiA6ICJweCIpKSwgaC5jbGVhckNsb25lU3R5bGUgfHwgIiIgIT09IG4gfHwgMCAhPT0gdC5pbmRleE9mKCJiYWNrZ3JvdW5kIikgfHwgKGxbdF0gPSAiaW5oZXJpdCIpLCBhICYmICJzZXQiIGluIGEgJiYgdm9pZCAwID09PSAobiA9IGEuc2V0KGUsIG4sIHIpKSB8fCAocyA/IGwuc2V0UHJvcGVydHkodCwgbikgOiBsW3RdID0gbikpIH0gfSwgY3NzOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSwgdSA9IFEodCk7IHJldHVybiBVZS50ZXN0KHQpIHx8ICh0ID0gS2UodSkpLCAoYSA9IHcuY3NzSG9va3NbdF0gfHwgdy5jc3NIb29rc1t1XSkgJiYgImdldCIgaW4gYSAmJiAoaSA9IGEuZ2V0KGUsICEwLCBuKSksIHZvaWQgMCA9PT0gaSAmJiAoaSA9IEZlKGUsIHQsIHIpKSwgIm5vcm1hbCIgPT09IGkgJiYgdCBpbiBYZSAmJiAoaSA9IFhlW3RdKSwgIiIgPT09IG4gfHwgbiA/IChvID0gcGFyc2VGbG9hdChpKSwgITAgPT09IG4gfHwgaXNGaW5pdGUobykgPyBvIHx8IDAgOiBpKSA6IGkgfSB9KSwgdy5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIl0sIGZ1bmN0aW9uIChlLCB0KSB7IHcuY3NzSG9va3NbdF0gPSB7IGdldDogZnVuY3Rpb24gKGUsIG4sIHIpIHsgaWYgKG4pIHJldHVybiAhX2UudGVzdCh3LmNzcyhlLCAiZGlzcGxheSIpKSB8fCBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPyBldChlLCB0LCByKSA6IHVlKGUsIFZlLCBmdW5jdGlvbiAoKSB7IHJldHVybiBldChlLCB0LCByKSB9KSB9LCBzZXQ6IGZ1bmN0aW9uIChlLCBuLCByKSB7IHZhciBpLCBvID0gV2UoZSksIGEgPSAiYm9yZGVyLWJveCIgPT09IHcuY3NzKGUsICJib3hTaXppbmciLCAhMSwgbyksIHUgPSByICYmIFplKGUsIHQsIHIsIGEsIG8pOyByZXR1cm4gYSAmJiBoLnNjcm9sbGJveFNpemUoKSA9PT0gby5wb3NpdGlvbiAmJiAodSAtPSBNYXRoLmNlaWwoZVsib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSldIC0gcGFyc2VGbG9hdChvW3RdKSAtIFplKGUsIHQsICJib3JkZXIiLCAhMSwgbykgLSAuNSkpLCB1ICYmIChpID0gaWUuZXhlYyhuKSkgJiYgInB4IiAhPT0gKGlbM10gfHwgInB4IikgJiYgKGUuc3R5bGVbdF0gPSBuLCBuID0gdy5jc3MoZSwgdCkpLCBKZShlLCBuLCB1KSB9IH0gfSksIHcuY3NzSG9va3MubWFyZ2luTGVmdCA9IHplKGgucmVsaWFibGVNYXJnaW5MZWZ0LCBmdW5jdGlvbiAoZSwgdCkgeyBpZiAodCkgcmV0dXJuIChwYXJzZUZsb2F0KEZlKGUsICJtYXJnaW5MZWZ0IikpIHx8IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIHVlKGUsIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgfSkpICsgInB4IiB9KSwgdy5lYWNoKHsgbWFyZ2luOiAiIiwgcGFkZGluZzogIiIsIGJvcmRlcjogIldpZHRoIiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmNzc0hvb2tzW2UgKyB0XSA9IHsgZXhwYW5kOiBmdW5jdGlvbiAobikgeyBmb3IgKHZhciByID0gMCwgaSA9IHt9LCBvID0gInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnNwbGl0KCIgIikgOiBbbl07IHIgPCA0OyByKyspaVtlICsgb2Vbcl0gKyB0XSA9IG9bcl0gfHwgb1tyIC0gMl0gfHwgb1swXTsgcmV0dXJuIGkgfSB9LCAibWFyZ2luIiAhPT0gZSAmJiAody5jc3NIb29rc1tlICsgdF0uc2V0ID0gSmUpIH0pLCB3LmZuLmV4dGVuZCh7IGNzczogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIF8odGhpcywgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSB7fSwgYSA9IDA7IGlmIChBcnJheS5pc0FycmF5KHQpKSB7IGZvciAociA9IFdlKGUpLCBpID0gdC5sZW5ndGg7IGEgPCBpOyBhKyspb1t0W2FdXSA9IHcuY3NzKGUsIHRbYV0sICExLCByKTsgcmV0dXJuIG8gfSByZXR1cm4gdm9pZCAwICE9PSBuID8gdy5zdHlsZShlLCB0LCBuKSA6IHcuY3NzKGUsIHQpIH0sIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9IH0pLCB3LmZuLmRlbGF5ID0gZnVuY3Rpb24gKHQsIG4pIHsgcmV0dXJuIHQgPSB3LmZ4ID8gdy5meC5zcGVlZHNbdF0gfHwgdCA6IHQsIG4gPSBuIHx8ICJmeCIsIHRoaXMucXVldWUobiwgZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSBlLnNldFRpbWVvdXQobiwgdCk7IHIuc3RvcCA9IGZ1bmN0aW9uICgpIHsgZS5jbGVhclRpbWVvdXQoaSkgfSB9KSB9LCBmdW5jdGlvbiAoKSB7IHZhciBlID0gci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLCB0ID0gci5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChyLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTsgZS50eXBlID0gImNoZWNrYm94IiwgaC5jaGVja09uID0gIiIgIT09IGUudmFsdWUsIGgub3B0U2VsZWN0ZWQgPSB0LnNlbGVjdGVkLCAoZSA9IHIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudmFsdWUgPSAidCIsIGUudHlwZSA9ICJyYWRpbyIsIGgucmFkaW9WYWx1ZSA9ICJ0IiA9PT0gZS52YWx1ZSB9KCk7IHZhciB0dCwgbnQgPSB3LmV4cHIuYXR0ckhhbmRsZTsgdy5mbi5leHRlbmQoeyBhdHRyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gXyh0aGlzLCB3LmF0dHIsIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9LCByZW1vdmVBdHRyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdy5yZW1vdmVBdHRyKHRoaXMsIGUpIH0pIH0gfSksIHcuZXh0ZW5kKHsgYXR0cjogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGUgPyB3LnByb3AoZSwgdCwgbikgOiAoMSA9PT0gbyAmJiB3LmlzWE1MRG9jKGUpIHx8IChpID0gdy5hdHRySG9va3NbdC50b0xvd2VyQ2FzZSgpXSB8fCAody5leHByLm1hdGNoLmJvb2wudGVzdCh0KSA/IHR0IDogdm9pZCAwKSksIHZvaWQgMCAhPT0gbiA/IG51bGwgPT09IG4gPyB2b2lkIHcucmVtb3ZlQXR0cihlLCB0KSA6IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IGkgJiYgImdldCIgaW4gaSAmJiBudWxsICE9PSAociA9IGkuZ2V0KGUsIHQpKSA/IHIgOiBudWxsID09IChyID0gdy5maW5kLmF0dHIoZSwgdCkpID8gdm9pZCAwIDogcikgfSwgYXR0ckhvb2tzOiB7IHR5cGU6IHsgc2V0OiBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoIWgucmFkaW9WYWx1ZSAmJiAicmFkaW8iID09PSB0ICYmIEQoZSwgImlucHV0IikpIHsgdmFyIG4gPSBlLnZhbHVlOyByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0IH0gfSB9IH0sIHJlbW92ZUF0dHI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHQgJiYgdC5tYXRjaChJKTsgaWYgKGkgJiYgMSA9PT0gZS5ub2RlVHlwZSkgd2hpbGUgKG4gPSBpW3IrK10pIGUucmVtb3ZlQXR0cmlidXRlKG4pIH0gfSksIHR0ID0geyBzZXQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiAhMSA9PT0gdCA/IHcucmVtb3ZlQXR0cihlLCBuKSA6IGUuc2V0QXR0cmlidXRlKG4sIG4pLCBuIH0gfSwgdy5lYWNoKHcuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IG50W3RdIHx8IHcuZmluZC5hdHRyOyBudFt0XSA9IGZ1bmN0aW9uIChlLCB0LCByKSB7IHZhciBpLCBvLCBhID0gdC50b0xvd2VyQ2FzZSgpOyByZXR1cm4gciB8fCAobyA9IG50W2FdLCBudFthXSA9IGksIGkgPSBudWxsICE9IG4oZSwgdCwgcikgPyBhIDogbnVsbCwgbnRbYV0gPSBvKSwgaSB9IH0pOyB2YXIgcnQgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLCBpdCA9IC9eKD86YXxhcmVhKSQvaTsgdy5mbi5leHRlbmQoeyBwcm9wOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gXyh0aGlzLCB3LnByb3AsIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9LCByZW1vdmVQcm9wOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgZGVsZXRlIHRoaXNbdy5wcm9wRml4W2VdIHx8IGVdIH0pIH0gfSksIHcuZXh0ZW5kKHsgcHJvcDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAxID09PSBvICYmIHcuaXNYTUxEb2MoZSkgfHwgKHQgPSB3LnByb3BGaXhbdF0gfHwgdCwgaSA9IHcucHJvcEhvb2tzW3RdKSwgdm9pZCAwICE9PSBuID8gaSAmJiAic2V0IiBpbiBpICYmIHZvaWQgMCAhPT0gKHIgPSBpLnNldChlLCBuLCB0KSkgPyByIDogZVt0XSA9IG4gOiBpICYmICJnZXQiIGluIGkgJiYgbnVsbCAhPT0gKHIgPSBpLmdldChlLCB0KSkgPyByIDogZVt0XSB9LCBwcm9wSG9va3M6IHsgdGFiSW5kZXg6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHcuZmluZC5hdHRyKGUsICJ0YWJpbmRleCIpOyByZXR1cm4gdCA/IHBhcnNlSW50KHQsIDEwKSA6IHJ0LnRlc3QoZS5ub2RlTmFtZSkgfHwgaXQudGVzdChlLm5vZGVOYW1lKSAmJiBlLmhyZWYgPyAwIDogLTEgfSB9IH0sIHByb3BGaXg6IHsgImZvciI6ICJodG1sRm9yIiwgImNsYXNzIjogImNsYXNzTmFtZSIgfSB9KSwgaC5vcHRTZWxlY3RlZCB8fCAody5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7IGdldDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbCB9LCBzZXQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5wYXJlbnROb2RlOyB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkgfSB9KSwgdy5lYWNoKFsidGFiSW5kZXgiLCAicmVhZE9ubHkiLCAibWF4TGVuZ3RoIiwgImNlbGxTcGFjaW5nIiwgImNlbGxQYWRkaW5nIiwgInJvd1NwYW4iLCAiY29sU3BhbiIsICJ1c2VNYXAiLCAiZnJhbWVCb3JkZXIiLCAiY29udGVudEVkaXRhYmxlIl0sIGZ1bmN0aW9uICgpIHsgdy5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV0gPSB0aGlzIH0pOyBmdW5jdGlvbiBvdChlKSB7IHJldHVybiAoZS5tYXRjaChJKSB8fCBbXSkuam9pbigiICIpIH0gZnVuY3Rpb24gYXQoZSkgeyByZXR1cm4gZS5nZXRBdHRyaWJ1dGUgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIgfSBmdW5jdGlvbiB1dChlKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGUpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZiBlID8gZS5tYXRjaChJKSB8fCBbXSA6IFtdIH0gdy5mbi5leHRlbmQoeyBhZGRDbGFzczogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIsIGksIG8sIGEsIHUsIHMgPSAwOyBpZiAoZyhlKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAodCkgeyB3KHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0aGlzLCB0LCBhdCh0aGlzKSkpIH0pOyBpZiAoKHQgPSB1dChlKSkubGVuZ3RoKSB3aGlsZSAobiA9IHRoaXNbcysrXSkgaWYgKGkgPSBhdChuKSwgciA9IDEgPT09IG4ubm9kZVR5cGUgJiYgIiAiICsgb3QoaSkgKyAiICIpIHsgYSA9IDA7IHdoaWxlIChvID0gdFthKytdKSByLmluZGV4T2YoIiAiICsgbyArICIgIikgPCAwICYmIChyICs9IG8gKyAiICIpOyBpICE9PSAodSA9IG90KHIpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB1KSB9IHJldHVybiB0aGlzIH0sIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgdSwgcyA9IDA7IGlmIChnKGUpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7IHcodGhpcykucmVtb3ZlQ2xhc3MoZS5jYWxsKHRoaXMsIHQsIGF0KHRoaXMpKSkgfSk7IGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCAiIik7IGlmICgodCA9IHV0KGUpKS5sZW5ndGgpIHdoaWxlIChuID0gdGhpc1tzKytdKSBpZiAoaSA9IGF0KG4pLCByID0gMSA9PT0gbi5ub2RlVHlwZSAmJiAiICIgKyBvdChpKSArICIgIikgeyBhID0gMDsgd2hpbGUgKG8gPSB0W2ErK10pIHdoaWxlIChyLmluZGV4T2YoIiAiICsgbyArICIgIikgPiAtMSkgciA9IHIucmVwbGFjZSgiICIgKyBvICsgIiAiLCAiICIpOyBpICE9PSAodSA9IG90KHIpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB1KSB9IHJldHVybiB0aGlzIH0sIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHR5cGVvZiBlLCByID0gInN0cmluZyIgPT09IG4gfHwgQXJyYXkuaXNBcnJheShlKTsgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiByID8gdCA/IHRoaXMuYWRkQ2xhc3MoZSkgOiB0aGlzLnJlbW92ZUNsYXNzKGUpIDogZyhlKSA/IHRoaXMuZWFjaChmdW5jdGlvbiAobikgeyB3KHRoaXMpLnRvZ2dsZUNsYXNzKGUuY2FsbCh0aGlzLCBuLCBhdCh0aGlzKSwgdCksIHQpIH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdmFyIHQsIGksIG8sIGE7IGlmIChyKSB7IGkgPSAwLCBvID0gdyh0aGlzKSwgYSA9IHV0KGUpOyB3aGlsZSAodCA9IGFbaSsrXSkgby5oYXNDbGFzcyh0KSA/IG8ucmVtb3ZlQ2xhc3ModCkgOiBvLmFkZENsYXNzKHQpIH0gZWxzZSB2b2lkIDAgIT09IGUgJiYgImJvb2xlYW4iICE9PSBuIHx8ICgodCA9IGF0KHRoaXMpKSAmJiBLLnNldCh0aGlzLCAiX19jbGFzc05hbWVfXyIsIHQpLCB0aGlzLnNldEF0dHJpYnV0ZSAmJiB0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB0IHx8ICExID09PSBlID8gIiIgOiBLLmdldCh0aGlzLCAiX19jbGFzc05hbWVfXyIpIHx8ICIiKSkgfSkgfSwgaGFzQ2xhc3M6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuLCByID0gMDsgdCA9ICIgIiArIGUgKyAiICI7IHdoaWxlIChuID0gdGhpc1tyKytdKSBpZiAoMSA9PT0gbi5ub2RlVHlwZSAmJiAoIiAiICsgb3QoYXQobikpICsgIiAiKS5pbmRleE9mKHQpID4gLTEpIHJldHVybiAhMDsgcmV0dXJuICExIH0gfSk7IHZhciBzdCA9IC9cci9nOyB3LmZuLmV4dGVuZCh7IHZhbDogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIsIGkgPSB0aGlzWzBdOyB7IGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gciA9IGcoZSksIHRoaXMuZWFjaChmdW5jdGlvbiAobikgeyB2YXIgaTsgMSA9PT0gdGhpcy5ub2RlVHlwZSAmJiAobnVsbCA9PSAoaSA9IHIgPyBlLmNhbGwodGhpcywgbiwgdyh0aGlzKS52YWwoKSkgOiBlKSA/IGkgPSAiIiA6ICJudW1iZXIiID09IHR5cGVvZiBpID8gaSArPSAiIiA6IEFycmF5LmlzQXJyYXkoaSkgJiYgKGkgPSB3Lm1hcChpLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiBlICsgIiIgfSkpLCAodCA9IHcudmFsSG9va3NbdGhpcy50eXBlXSB8fCB3LnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJzZXQiIGluIHQgJiYgdm9pZCAwICE9PSB0LnNldCh0aGlzLCBpLCAidmFsdWUiKSB8fCAodGhpcy52YWx1ZSA9IGkpKSB9KTsgaWYgKGkpIHJldHVybiAodCA9IHcudmFsSG9va3NbaS50eXBlXSB8fCB3LnZhbEhvb2tzW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJnZXQiIGluIHQgJiYgdm9pZCAwICE9PSAobiA9IHQuZ2V0KGksICJ2YWx1ZSIpKSA/IG4gOiAic3RyaW5nIiA9PSB0eXBlb2YgKG4gPSBpLnZhbHVlKSA/IG4ucmVwbGFjZShzdCwgIiIpIDogbnVsbCA9PSBuID8gIiIgOiBuIH0gfSB9KSwgdy5leHRlbmQoeyB2YWxIb29rczogeyBvcHRpb246IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHcuZmluZC5hdHRyKGUsICJ2YWx1ZSIpOyByZXR1cm4gbnVsbCAhPSB0ID8gdCA6IG90KHcudGV4dChlKSkgfSB9LCBzZWxlY3Q6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSA9IGUub3B0aW9ucywgbyA9IGUuc2VsZWN0ZWRJbmRleCwgYSA9ICJzZWxlY3Qtb25lIiA9PT0gZS50eXBlLCB1ID0gYSA/IG51bGwgOiBbXSwgcyA9IGEgPyBvICsgMSA6IGkubGVuZ3RoOyBmb3IgKHIgPSBvIDwgMCA/IHMgOiBhID8gbyA6IDA7IHIgPCBzOyByKyspaWYgKCgobiA9IGlbcl0pLnNlbGVjdGVkIHx8IHIgPT09IG8pICYmICFuLmRpc2FibGVkICYmICghbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFEKG4ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIikpKSB7IGlmICh0ID0gdyhuKS52YWwoKSwgYSkgcmV0dXJuIHQ7IHUucHVzaCh0KSB9IHJldHVybiB1IH0sIHNldDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGkgPSBlLm9wdGlvbnMsIG8gPSB3Lm1ha2VBcnJheSh0KSwgYSA9IGkubGVuZ3RoOyB3aGlsZSAoYS0tKSAoKHIgPSBpW2FdKS5zZWxlY3RlZCA9IHcuaW5BcnJheSh3LnZhbEhvb2tzLm9wdGlvbi5nZXQociksIG8pID4gLTEpICYmIChuID0gITApOyByZXR1cm4gbiB8fCAoZS5zZWxlY3RlZEluZGV4ID0gLTEpLCBvIH0gfSB9IH0pLCB3LmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbiAoKSB7IHcudmFsSG9va3NbdGhpc10gPSB7IHNldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSB3LmluQXJyYXkodyhlKS52YWwoKSwgdCkgPiAtMSB9IH0sIGguY2hlY2tPbiB8fCAody52YWxIb29rc1t0aGlzXS5nZXQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PT0gZS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPyAib24iIDogZS52YWx1ZSB9KSB9KSwgaC5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gZTsgdmFyIGx0ID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLCBjdCA9IGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfTsgdy5leHRlbmQody5ldmVudCwgeyB0cmlnZ2VyOiBmdW5jdGlvbiAodCwgbiwgaSwgbykgeyB2YXIgYSwgdSwgcywgbCwgYywgZCwgcCwgaCwgeSA9IFtpIHx8IHJdLCBtID0gZi5jYWxsKHQsICJ0eXBlIikgPyB0LnR5cGUgOiB0LCBiID0gZi5jYWxsKHQsICJuYW1lc3BhY2UiKSA/IHQubmFtZXNwYWNlLnNwbGl0KCIuIikgOiBbXTsgaWYgKHUgPSBoID0gcyA9IGkgPSBpIHx8IHIsIDMgIT09IGkubm9kZVR5cGUgJiYgOCAhPT0gaS5ub2RlVHlwZSAmJiAhbHQudGVzdChtICsgdy5ldmVudC50cmlnZ2VyZWQpICYmIChtLmluZGV4T2YoIi4iKSA+IC0xICYmIChtID0gKGIgPSBtLnNwbGl0KCIuIikpLnNoaWZ0KCksIGIuc29ydCgpKSwgYyA9IG0uaW5kZXhPZigiOiIpIDwgMCAmJiAib24iICsgbSwgdCA9IHRbdy5leHBhbmRvXSA/IHQgOiBuZXcgdy5FdmVudChtLCAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0KSwgdC5pc1RyaWdnZXIgPSBvID8gMiA6IDMsIHQubmFtZXNwYWNlID0gYi5qb2luKCIuIiksIHQucm5hbWVzcGFjZSA9IHQubmFtZXNwYWNlID8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBiLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCB0LnJlc3VsdCA9IHZvaWQgMCwgdC50YXJnZXQgfHwgKHQudGFyZ2V0ID0gaSksIG4gPSBudWxsID09IG4gPyBbdF0gOiB3Lm1ha2VBcnJheShuLCBbdF0pLCBwID0gdy5ldmVudC5zcGVjaWFsW21dIHx8IHt9LCBvIHx8ICFwLnRyaWdnZXIgfHwgITEgIT09IHAudHJpZ2dlci5hcHBseShpLCBuKSkpIHsgaWYgKCFvICYmICFwLm5vQnViYmxlICYmICF2KGkpKSB7IGZvciAobCA9IHAuZGVsZWdhdGVUeXBlIHx8IG0sIGx0LnRlc3QobCArIG0pIHx8ICh1ID0gdS5wYXJlbnROb2RlKTsgdTsgdSA9IHUucGFyZW50Tm9kZSl5LnB1c2godSksIHMgPSB1OyBzID09PSAoaS5vd25lckRvY3VtZW50IHx8IHIpICYmIHkucHVzaChzLmRlZmF1bHRWaWV3IHx8IHMucGFyZW50V2luZG93IHx8IGUpIH0gYSA9IDA7IHdoaWxlICgodSA9IHlbYSsrXSkgJiYgIXQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgaCA9IHUsIHQudHlwZSA9IGEgPiAxID8gbCA6IHAuYmluZFR5cGUgfHwgbSwgKGQgPSAoSy5nZXQodSwgImV2ZW50cyIpIHx8IHt9KVt0LnR5cGVdICYmIEsuZ2V0KHUsICJoYW5kbGUiKSkgJiYgZC5hcHBseSh1LCBuKSwgKGQgPSBjICYmIHVbY10pICYmIGQuYXBwbHkgJiYgWSh1KSAmJiAodC5yZXN1bHQgPSBkLmFwcGx5KHUsIG4pLCAhMSA9PT0gdC5yZXN1bHQgJiYgdC5wcmV2ZW50RGVmYXVsdCgpKTsgcmV0dXJuIHQudHlwZSA9IG0sIG8gfHwgdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBwLl9kZWZhdWx0ICYmICExICE9PSBwLl9kZWZhdWx0LmFwcGx5KHkucG9wKCksIG4pIHx8ICFZKGkpIHx8IGMgJiYgZyhpW21dKSAmJiAhdihpKSAmJiAoKHMgPSBpW2NdKSAmJiAoaVtjXSA9IG51bGwpLCB3LmV2ZW50LnRyaWdnZXJlZCA9IG0sIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBoLmFkZEV2ZW50TGlzdGVuZXIobSwgY3QpLCBpW21dKCksIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBoLnJlbW92ZUV2ZW50TGlzdGVuZXIobSwgY3QpLCB3LmV2ZW50LnRyaWdnZXJlZCA9IHZvaWQgMCwgcyAmJiAoaVtjXSA9IHMpKSwgdC5yZXN1bHQgfSB9LCBzaW11bGF0ZTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIgPSB3LmV4dGVuZChuZXcgdy5FdmVudCwgbiwgeyB0eXBlOiBlLCBpc1NpbXVsYXRlZDogITAgfSk7IHcuZXZlbnQudHJpZ2dlcihyLCBudWxsLCB0KSB9IH0pLCB3LmZuLmV4dGVuZCh7IHRyaWdnZXI6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB3LmV2ZW50LnRyaWdnZXIoZSwgdCwgdGhpcykgfSkgfSwgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gdGhpc1swXTsgaWYgKG4pIHJldHVybiB3LmV2ZW50LnRyaWdnZXIoZSwgdCwgbiwgITApIH0gfSksIGguZm9jdXNpbiB8fCB3LmVhY2goeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gZnVuY3Rpb24gKGUpIHsgdy5ldmVudC5zaW11bGF0ZSh0LCBlLnRhcmdldCwgdy5ldmVudC5maXgoZSkpIH07IHcuZXZlbnQuc3BlY2lhbFt0XSA9IHsgc2V0dXA6IGZ1bmN0aW9uICgpIHsgdmFyIHIgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywgaSA9IEsuYWNjZXNzKHIsIHQpOyBpIHx8IHIuYWRkRXZlbnRMaXN0ZW5lcihlLCBuLCAhMCksIEsuYWNjZXNzKHIsIHQsIChpIHx8IDApICsgMSkgfSwgdGVhcmRvd246IGZ1bmN0aW9uICgpIHsgdmFyIHIgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywgaSA9IEsuYWNjZXNzKHIsIHQpIC0gMTsgaSA/IEsuYWNjZXNzKHIsIHQsIGkpIDogKHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBuLCAhMCksIEsucmVtb3ZlKHIsIHQpKSB9IH0gfSk7IHZhciBmdCA9IC9cW1xdJC8sIGR0ID0gL1xyP1xuL2csIHB0ID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLCBodCA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsgZnVuY3Rpb24gZ3QoZSwgdCwgbiwgcikgeyB2YXIgaTsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHcuZWFjaCh0LCBmdW5jdGlvbiAodCwgaSkgeyBuIHx8IGZ0LnRlc3QoZSkgPyByKGUsIGkpIDogZ3QoZSArICJbIiArICgib2JqZWN0IiA9PSB0eXBlb2YgaSAmJiBudWxsICE9IGkgPyB0IDogIiIpICsgIl0iLCBpLCBuLCByKSB9KTsgZWxzZSBpZiAobiB8fCAib2JqZWN0IiAhPT0gYih0KSkgcihlLCB0KTsgZWxzZSBmb3IgKGkgaW4gdCkgZ3QoZSArICJbIiArIGkgKyAiXSIsIHRbaV0sIG4sIHIpIH0gdy5wYXJhbSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gW10sIGkgPSBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGcodCkgPyB0KCkgOiB0OyByW3IubGVuZ3RoXSA9IGVuY29kZVVSSUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudChudWxsID09IG4gPyAiIiA6IG4pIH07IGlmIChBcnJheS5pc0FycmF5KGUpIHx8IGUuanF1ZXJ5ICYmICF3LmlzUGxhaW5PYmplY3QoZSkpIHcuZWFjaChlLCBmdW5jdGlvbiAoKSB7IGkodGhpcy5uYW1lLCB0aGlzLnZhbHVlKSB9KTsgZWxzZSBmb3IgKG4gaW4gZSkgZ3QobiwgZVtuXSwgdCwgaSk7IHJldHVybiByLmpvaW4oIiYiKSB9LCB3LmZuLmV4dGVuZCh7IHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpIH0sIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoKSB7IHZhciBlID0gdy5wcm9wKHRoaXMsICJlbGVtZW50cyIpOyByZXR1cm4gZSA/IHcubWFrZUFycmF5KGUpIDogdGhpcyB9KS5maWx0ZXIoZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMudHlwZTsgcmV0dXJuIHRoaXMubmFtZSAmJiAhdyh0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgaHQudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAhcHQudGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICFkZS50ZXN0KGUpKSB9KS5tYXAoZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB3KHRoaXMpLnZhbCgpOyByZXR1cm4gbnVsbCA9PSBuID8gbnVsbCA6IEFycmF5LmlzQXJyYXkobikgPyB3Lm1hcChuLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4geyBuYW1lOiB0Lm5hbWUsIHZhbHVlOiBlLnJlcGxhY2UoZHQsICJcclxuIikgfSB9KSA6IHsgbmFtZTogdC5uYW1lLCB2YWx1ZTogbi5yZXBsYWNlKGR0LCAiXHJcbiIpIH0gfSkuZ2V0KCkgfSB9KSwgdy5mbi5leHRlbmQoeyB3cmFwQWxsOiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuIHRoaXNbMF0gJiYgKGcoZSkgJiYgKGUgPSBlLmNhbGwodGhpc1swXSkpLCB0ID0gdyhlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSwgdGhpc1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLCB0Lm1hcChmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpczsgd2hpbGUgKGUuZmlyc3RFbGVtZW50Q2hpbGQpIGUgPSBlLmZpcnN0RWxlbWVudENoaWxkOyByZXR1cm4gZSB9KS5hcHBlbmQodGhpcykpLCB0aGlzIH0sIHdyYXBJbm5lcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGcoZSkgPyB0aGlzLmVhY2goZnVuY3Rpb24gKHQpIHsgdyh0aGlzKS53cmFwSW5uZXIoZS5jYWxsKHRoaXMsIHQpKSB9KSA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHZhciB0ID0gdyh0aGlzKSwgbiA9IHQuY29udGVudHMoKTsgbi5sZW5ndGggPyBuLndyYXBBbGwoZSkgOiB0LmFwcGVuZChlKSB9KSB9LCB3cmFwOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGcoZSk7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKG4pIHsgdyh0aGlzKS53cmFwQWxsKHQgPyBlLmNhbGwodGhpcywgbikgOiBlKSB9KSB9LCB1bndyYXA6IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLnBhcmVudChlKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uICgpIHsgdyh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpIH0pLCB0aGlzIH0gfSksIHcuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiAhdy5leHByLnBzZXVkb3MudmlzaWJsZShlKSB9LCB3LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhKGUub2Zmc2V0V2lkdGggfHwgZS5vZmZzZXRIZWlnaHQgfHwgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkgfSwgaC5jcmVhdGVIVE1MRG9jdW1lbnQgPSBmdW5jdGlvbiAoKSB7IHZhciBlID0gci5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHk7IHJldHVybiBlLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IGUuY2hpbGROb2Rlcy5sZW5ndGggfSgpLCB3LnBhcnNlSFRNTCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIFtdOyAiYm9vbGVhbiIgPT0gdHlwZW9mIHQgJiYgKG4gPSB0LCB0ID0gITEpOyB2YXIgaSwgbywgYTsgcmV0dXJuIHQgfHwgKGguY3JlYXRlSFRNTERvY3VtZW50ID8gKChpID0gKHQgPSByLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZiA9IHIubG9jYXRpb24uaHJlZiwgdC5oZWFkLmFwcGVuZENoaWxkKGkpKSA6IHQgPSByKSwgbyA9IFMuZXhlYyhlKSwgYSA9ICFuICYmIFtdLCBvID8gW3QuY3JlYXRlRWxlbWVudChvWzFdKV0gOiAobyA9IGJlKFtlXSwgdCwgYSksIGEgJiYgYS5sZW5ndGggJiYgdyhhKS5yZW1vdmUoKSwgdy5tZXJnZShbXSwgby5jaGlsZE5vZGVzKSkgfSwgdy5vZmZzZXQgPSB7IHNldE9mZnNldDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8sIGEsIHUsIHMsIGwsIGMgPSB3LmNzcyhlLCAicG9zaXRpb24iKSwgZiA9IHcoZSksIGQgPSB7fTsgInN0YXRpYyIgPT09IGMgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKSwgdSA9IGYub2Zmc2V0KCksIG8gPSB3LmNzcyhlLCAidG9wIiksIHMgPSB3LmNzcyhlLCAibGVmdCIpLCAobCA9ICgiYWJzb2x1dGUiID09PSBjIHx8ICJmaXhlZCIgPT09IGMpICYmIChvICsgcykuaW5kZXhPZigiYXV0byIpID4gLTEpID8gKGEgPSAociA9IGYucG9zaXRpb24oKSkudG9wLCBpID0gci5sZWZ0KSA6IChhID0gcGFyc2VGbG9hdChvKSB8fCAwLCBpID0gcGFyc2VGbG9hdChzKSB8fCAwKSwgZyh0KSAmJiAodCA9IHQuY2FsbChlLCBuLCB3LmV4dGVuZCh7fSwgdSkpKSwgbnVsbCAhPSB0LnRvcCAmJiAoZC50b3AgPSB0LnRvcCAtIHUudG9wICsgYSksIG51bGwgIT0gdC5sZWZ0ICYmIChkLmxlZnQgPSB0LmxlZnQgLSB1LmxlZnQgKyBpKSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGQpIDogZi5jc3MoZCkgfSB9LCB3LmZuLmV4dGVuZCh7IG9mZnNldDogZnVuY3Rpb24gKGUpIHsgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB2b2lkIDAgPT09IGUgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7IHcub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0KSB9KTsgdmFyIHQsIG4sIHIgPSB0aGlzWzBdOyBpZiAocikgcmV0dXJuIHIuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPyAodCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIG4gPSByLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsIHsgdG9wOiB0LnRvcCArIG4ucGFnZVlPZmZzZXQsIGxlZnQ6IHQubGVmdCArIG4ucGFnZVhPZmZzZXQgfSkgOiB7IHRvcDogMCwgbGVmdDogMCB9IH0sIHBvc2l0aW9uOiBmdW5jdGlvbiAoKSB7IGlmICh0aGlzWzBdKSB7IHZhciBlLCB0LCBuLCByID0gdGhpc1swXSwgaSA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07IGlmICgiZml4ZWQiID09PSB3LmNzcyhyLCAicG9zaXRpb24iKSkgdCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGVsc2UgeyB0ID0gdGhpcy5vZmZzZXQoKSwgbiA9IHIub3duZXJEb2N1bWVudCwgZSA9IHIub2Zmc2V0UGFyZW50IHx8IG4uZG9jdW1lbnRFbGVtZW50OyB3aGlsZSAoZSAmJiAoZSA9PT0gbi5ib2R5IHx8IGUgPT09IG4uZG9jdW1lbnRFbGVtZW50KSAmJiAic3RhdGljIiA9PT0gdy5jc3MoZSwgInBvc2l0aW9uIikpIGUgPSBlLnBhcmVudE5vZGU7IGUgJiYgZSAhPT0gciAmJiAxID09PSBlLm5vZGVUeXBlICYmICgoaSA9IHcoZSkub2Zmc2V0KCkpLnRvcCArPSB3LmNzcyhlLCAiYm9yZGVyVG9wV2lkdGgiLCAhMCksIGkubGVmdCArPSB3LmNzcyhlLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKSB9IHJldHVybiB7IHRvcDogdC50b3AgLSBpLnRvcCAtIHcuY3NzKHIsICJtYXJnaW5Ub3AiLCAhMCksIGxlZnQ6IHQubGVmdCAtIGkubGVmdCAtIHcuY3NzKHIsICJtYXJnaW5MZWZ0IiwgITApIH0gfSB9LCBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsgd2hpbGUgKGUgJiYgInN0YXRpYyIgPT09IHcuY3NzKGUsICJwb3NpdGlvbiIpKSBlID0gZS5vZmZzZXRQYXJlbnQ7IHJldHVybiBlIHx8IHhlIH0pIH0gfSksIHcuZWFjaCh7IHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9ICJwYWdlWU9mZnNldCIgPT09IHQ7IHcuZm5bZV0gPSBmdW5jdGlvbiAocikgeyByZXR1cm4gXyh0aGlzLCBmdW5jdGlvbiAoZSwgciwgaSkgeyB2YXIgbzsgaWYgKHYoZSkgPyBvID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKG8gPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSBpKSByZXR1cm4gbyA/IG9bdF0gOiBlW3JdOyBvID8gby5zY3JvbGxUbyhuID8gby5wYWdlWE9mZnNldCA6IGksIG4gPyBpIDogby5wYWdlWU9mZnNldCkgOiBlW3JdID0gaSB9LCBlLCByLCBhcmd1bWVudHMubGVuZ3RoKSB9IH0pLCB3LmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbiAoZSwgdCkgeyB3LmNzc0hvb2tzW3RdID0gemUoaC5waXhlbFBvc2l0aW9uLCBmdW5jdGlvbiAoZSwgbikgeyBpZiAobikgcmV0dXJuIG4gPSBGZShlLCB0KSwgTWUudGVzdChuKSA/IHcoZSkucG9zaXRpb24oKVt0XSArICJweCIgOiBuIH0pIH0pLCB3LmVhY2goeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRoIiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmVhY2goeyBwYWRkaW5nOiAiaW5uZXIiICsgZSwgY29udGVudDogdCwgIiI6ICJvdXRlciIgKyBlIH0sIGZ1bmN0aW9uIChuLCByKSB7IHcuZm5bcl0gPSBmdW5jdGlvbiAoaSwgbykgeyB2YXIgYSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKG4gfHwgImJvb2xlYW4iICE9IHR5cGVvZiBpKSwgdSA9IG4gfHwgKCEwID09PSBpIHx8ICEwID09PSBvID8gIm1hcmdpbiIgOiAiYm9yZGVyIik7IHJldHVybiBfKHRoaXMsIGZ1bmN0aW9uICh0LCBuLCBpKSB7IHZhciBvOyByZXR1cm4gdih0KSA/IDAgPT09IHIuaW5kZXhPZigib3V0ZXIiKSA/IHRbImlubmVyIiArIGVdIDogdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBlXSA6IDkgPT09IHQubm9kZVR5cGUgPyAobyA9IHQuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heCh0LmJvZHlbInNjcm9sbCIgKyBlXSwgb1sic2Nyb2xsIiArIGVdLCB0LmJvZHlbIm9mZnNldCIgKyBlXSwgb1sib2Zmc2V0IiArIGVdLCBvWyJjbGllbnQiICsgZV0pKSA6IHZvaWQgMCA9PT0gaSA/IHcuY3NzKHQsIG4sIHUpIDogdy5zdHlsZSh0LCBuLCBpLCB1KSB9LCB0LCBhID8gaSA6IHZvaWQgMCwgYSkgfSB9KSB9KSwgdy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLCBmdW5jdGlvbiAoZSwgdCkgeyB3LmZuW3RdID0gZnVuY3Rpb24gKGUsIG4pIHsgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gdGhpcy5vbih0LCBudWxsLCBlLCBuKSA6IHRoaXMudHJpZ2dlcih0KSB9IH0pLCB3LmZuLmV4dGVuZCh7IGhvdmVyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodCB8fCBlKSB9IH0pLCB3LmZuLmV4dGVuZCh7IGJpbmQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiB0aGlzLm9uKGUsIG51bGwsIHQsIG4pIH0sIHVuYmluZDogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIHRoaXMub2ZmKGUsIG51bGwsIHQpIH0sIGRlbGVnYXRlOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gdGhpcy5vbih0LCBlLCBuLCByKSB9LCB1bmRlbGVnYXRlOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGUsICIqKiIpIDogdGhpcy5vZmYodCwgZSB8fCAiKioiLCBuKSB9IH0pLCB3LnByb3h5ID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGk7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGVbdF0sIHQgPSBlLCBlID0gbiksIGcoZSkpIHJldHVybiByID0gby5jYWxsKGFyZ3VtZW50cywgMiksIGkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlLmFwcGx5KHQgfHwgdGhpcywgci5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykpKSB9LCBpLmd1aWQgPSBlLmd1aWQgPSBlLmd1aWQgfHwgdy5ndWlkKysgLCBpIH0sIHcuaG9sZFJlYWR5ID0gZnVuY3Rpb24gKGUpIHsgZSA/IHcucmVhZHlXYWl0KysgOiB3LnJlYWR5KCEwKSB9LCB3LmlzQXJyYXkgPSBBcnJheS5pc0FycmF5LCB3LnBhcnNlSlNPTiA9IEpTT04ucGFyc2UsIHcubm9kZU5hbWUgPSBELCB3LmlzRnVuY3Rpb24gPSBnLCB3LmlzV2luZG93ID0gdiwgdy5jYW1lbENhc2UgPSBRLCB3LnR5cGUgPSBiLCB3Lm5vdyA9IERhdGUubm93LCB3LmlzTnVtZXJpYyA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdy50eXBlKGUpOyByZXR1cm4gKCJudW1iZXIiID09PSB0IHx8ICJzdHJpbmciID09PSB0KSAmJiAhaXNOYU4oZSAtIHBhcnNlRmxvYXQoZSkpIH0sICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHcgfSk7IHZhciB2dCA9IGUualF1ZXJ5LCB5dCA9IGUuJDsgcmV0dXJuIHcubm9Db25mbGljdCA9IGZ1bmN0aW9uICh0KSB7IHJldHVybiBlLiQgPT09IHcgJiYgKGUuJCA9IHl0KSwgdCAmJiBlLmpRdWVyeSA9PT0gdyAmJiAoZS5qUXVlcnkgPSB2dCksIHcgfSwgdCB8fCAoZS5qUXVlcnkgPSBlLiQgPSB3KSwgdyB9KTs=\"") - packr.PackJSONBytes("./assets/default", "wails.js", "\"Ly8gV2FpbHMgcnVudGltZSBKUwoKKGZ1bmN0aW9uICgpIHsKCXdpbmRvdy53YWlscyA9IHdpbmRvdy53YWlscyB8fCB7CgkJJDoge30KCX07CgoJLyoqKioqKioqKioqKioqKioqKiBVdGlsaXR5IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gLS0tLS0tLS0tLS0tLS0gUmFuZG9tIC0tLS0tLS0tLS0tLS0tCgkvLyBBd2Vzb21lUmFuZG9tCglmdW5jdGlvbiBjcnlwdG9SYW5kb20oKSB7CgkJdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOwoJCXJldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSlbMF07Cgl9CgoJLy8gTE9MUmFuZG9tCglmdW5jdGlvbiBiYXNpY1JhbmRvbSgpIHsKCQlyZXR1cm4gTWF0aC5yYW5kb20oKSAqIDkwMDcxOTkyNTQ3NDA5OTE7Cgl9CgoJLy8gUGljayBvbmUgYmFzZWQgb24gYnJvd3NlciBjYXBhYmlsaXR5Cgl2YXIgcmFuZG9tRnVuYzsKCWlmICh3aW5kb3cuY3J5cHRvKSB7CgkJcmFuZG9tRnVuYyA9IGNyeXB0b1JhbmRvbTsKCX0gZWxzZSB7CgkJcmFuZG9tRnVuYyA9IGJhc2ljUmFuZG9tOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIElkZW50aWZpZXJzIC0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyKG5hbWUpIHsKCQkvLyBEb24ndCB4c3MgeW91cnNlbGYgOi0pCgkJdHJ5IHsKCQkJbmV3IEZ1bmN0aW9uKCJ2YXIgIiArIG5hbWUpOwoJCQlyZXR1cm4gdHJ1ZQoJCX0gY2F0Y2ggKGUpIHsKCQkJcmV0dXJuIGZhbHNlCgkJfQoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEpTIC0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFkZFNjcmlwdChqcywgY2FsbGJhY2tJRCkgewoJCWNvbnNvbGUubG9nKCJBZGRpbmcgc2NyaXB0OiAiICsganMpCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoJCXNjcmlwdC50ZXh0ID0ganM7CgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoJCWNvbnNvbGUubG9nKCJDYWxsaW5nIGJhY2sgd2l0aDoiICsgY2FsbGJhY2tJRCk7CgkJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KGNhbGxiYWNrSUQpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEhUTUwgLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIHNldERvY3VtZW50KGh0bWwpIHsKCQlkb2N1bWVudC5vcGVuKCk7CgkJZG9jdW1lbnQud3JpdGUoaHRtbCk7CgkJZG9jdW1lbnQuY2xvc2UoKTsKCX0KCgkvLyAtLS0tLS0tLS0tLS0tLSBDU1MgLS0tLS0tLS0tLS0tLS0tCgkvLyBBZGFwdGVkIGZyb20gd2VidmlldyAtIHRoYW5rcyB6c2VyZ2UhCglmdW5jdGlvbiBpbmplY3RDU1MoY3NzKSB7CgkJdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwoJCWVsZW0uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7CgkJaWYgKGVsZW0uc3R5bGVTaGVldCkgewoJCQllbGVtLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzczsKCQl9IGVsc2UgewoJCQllbGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpOwoJCX0KCQl2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsKCQloZWFkLmFwcGVuZENoaWxkKGVsZW0pCgl9CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKiogQmluZGluZ3MgKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl2YXIgYmluZGluZ3NCYXNlUGF0aCA9IHdpbmRvdy53YWlscy4kOwoKCS8vIENyZWF0ZXMgdGhlIHBhdGggZ2l2ZW4gaW4gdGhlIGJpbmRpbmdzIHBhdGgKCWZ1bmN0aW9uIGFkZEJpbmRpbmdQYXRoKHBhdGhTZWN0aW9ucykgewoJCS8vIFN0YXJ0IGF0IHRoZSBiYXNlIHBhdGgKCQl2YXIgY3VycmVudFBhdGggPSBiaW5kaW5nc0Jhc2VQYXRoCgkJLy8gZm9yIGVhY2ggc2VjdGlvbiBvZiB0aGUgZ2l2ZW4gcGF0aAoJCWZvciAodmFyIHNlY3Rpb24gb2YgcGF0aFNlY3Rpb25zKSB7CgoJCQkvLyBJcyBzZWN0aW9uIGEgdmFsaWQgamF2YXNjcmlwdCBpZGVudGlmaWVyPwoJCQlpZiAoIWlzVmFsaWRJZGVudGlmaWVyKHNlY3Rpb24pKSB7CgkJCQl2YXIgZXJyTWVzc2FnZSA9IHNlY3Rpb24gKyAiIGlzIG5vdCBhIHZhbGlkIGphdmFzY3JpcHQgaWRlbnRpZmllci4iCgkJCQl2YXIgZXJyID0gbmV3IEVycm9yKGVyck1lc3NhZ2UpCgkJCQlyZXR1cm4gW251bGwsIGVycl0KCQkJfQoKCQkJLy8gQWRkIGlmIGRvZXNuJ3QgZXhpc3QKCQkJaWYgKCFjdXJyZW50UGF0aFtzZWN0aW9uXSkgewoJCQkJY3VycmVudFBhdGhbc2VjdGlvbl0gPSB7fQoJCQl9CgkJCS8vIHVwZGF0ZSBjdXJyZW50IHBhdGggdG8gbmV3IHBhdGgKCQkJY3VycmVudFBhdGggPSBjdXJyZW50UGF0aFtzZWN0aW9uXQoJCX0KCQlyZXR1cm4gW2N1cnJlbnRQYXRoLCBudWxsXQoJfQoKCWZ1bmN0aW9uIG5ld0JpbmRpbmcoYmluZGluZ05hbWUpIHsKCgkJLy8gR2V0IGFsbCB0aGUgc2VjdGlvbnMgb2YgdGhlIGJpbmRpbmcKCQl2YXIgYmluZGluZ1NlY3Rpb25zID0gYmluZGluZ05hbWUuc3BsaXQoJy4nKTsKCgkJLy8gR2V0IHRoZSBhY3R1YWwgZnVuY3Rpb24vbWV0aG9kIGNhbGwgbmFtZQoJCXZhciBjYWxsTmFtZSA9IGJpbmRpbmdTZWN0aW9ucy5wb3AoKTsKCgkJLy8gQWRkIHBhdGggdG8gYmluZGluZwoJCVtwYXRoVG9CaW5kaW5nLCBlcnJdID0gYWRkQmluZGluZ1BhdGgoYmluZGluZ1NlY3Rpb25zKQoKCQlpZiAoZXJyICE9IG51bGwpIHsKCQkJLy8gV2UgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IKCQkJLy8gd2luZG93LndhaWxzLmxvZy5FcnJvcigiIikKCQkJcmV0dXJuCgkJfQoKCQkvLyBBZGQgYmluZGluZyBjYWxsCgkJcGF0aFRvQmluZGluZ1tjYWxsTmFtZV0gPSBmdW5jdGlvbiAoKSB7CgoJCQkvLyBObyB0aW1lb3V0IGJ5IGRlZmF1bHQKCQkJdmFyIHRpbWVvdXQgPSAwOwoKCQkJLy8gQWN0dWFsIGZ1bmN0aW9uCgkJCWZ1bmN0aW9uIGR5bmFtaWMoKSB7CgkJCQl2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKQoJCQkJcmV0dXJuIGNhbGwoYmluZGluZ05hbWUsIGFyZ3MsIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBBbGxvdyBzZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG5ld1RpbWVvdXQpIHsKCQkJCXRpbWVvdXQgPSBuZXdUaW1lb3V0OwoJCQl9CgoJCQkvLyBBbGxvdyBnZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5nZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkgewoJCQkJcmV0dXJuIHRpbWVvdXQ7CgkJCX0KCgkJCXJldHVybiBkeW5hbWljOwoJCX0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2FsbHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGNhbGxiYWNrcyA9IHt9OwoKCS8vIENhbGwgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHRvIGNhbGwgdGhlIGJpbmRpbmcgd2l0aCB0aGUKCS8vIGdpdmVuIGRhdGEuIEEgcHJvbWlzZSBpcyByZXR1cm5lZCBhbmQgd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKCS8vIGJhY2tlbmQgcmVzcG9uZHMuIFRoaXMgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsCgkvLyBvciByZWplY3RlZCBpZiBhbiBlcnJvciBpcyBwYXNzZWQgYmFjay4KCS8vIFRoZXJlIGlzIGEgdGltZW91dCBtZWNoYW5pc20uIElmIHRoZSBjYWxsIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aGUgZ2l2ZW4KCS8vIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KCglmdW5jdGlvbiBjYWxsKGJpbmRpbmdOYW1lLCBkYXRhLCB0aW1lb3V0KSB7CgoJCS8vIFRpbWVvdXQgaW5maW5pdGUgYnkgZGVmYXVsdAoJCWlmICh0aW1lb3V0ID09IG51bGwgfHwgdGltZW91dCA9PSB1bmRlZmluZWQpIHsKCQkJdGltZW91dCA9IDA7CgkJfQoKCQkvLyBDcmVhdGUgYSBwcm9taXNlCgkJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCgkJCS8vIENyZWF0ZSBhIHVuaXF1ZSBjYWxsYmFja0lECgkJCXZhciBjYWxsYmFja0lEOwoJCQlkbyB7CgkJCQljYWxsYmFja0lEID0gYmluZGluZ05hbWUgKyAiLSIgKyByYW5kb21GdW5jKCk7CgkJCX0gd2hpbGUgKGNhbGxiYWNrc1tjYWxsYmFja0lEXSkKCgkJCS8vIFNldCB0aW1lb3V0CgkJCWlmICh0aW1lb3V0ID4gMCkgewoJCQkJdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlyZWplY3QoRXJyb3IoIkNhbGwgdG8gIiArIGJpbmRpbmdOYW1lICsgIiB0aW1lZCBvdXQuIFJlcXVlc3QgSUQ6ICIgKyBjYWxsYmFja0lEKSkKCQkJCX0sIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBTdG9yZSBjYWxsYmFjawoJCQljYWxsYmFja3NbY2FsbGJhY2tJRF0gPSB7CgkJCQl0aW1lb3V0SGFuZGxlOiB0aW1lb3V0SGFuZGxlLAoJCQkJcmVqZWN0OiByZWplY3QsCgkJCQlyZXNvbHZlOiByZXNvbHZlCgkJCX0KCQkJdHJ5IHsKCQkJCXZhciBwYXlsb2FkZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpCgkJCQkvLyBDcmVhdGUgdGhlIG1lc3NhZ2UKCQkJCW1lc3NhZ2UgPSB7CgkJCQkJdHlwZTogImNhbGwiLAoJCQkJCWNhbGxiYWNraWQ6IGNhbGxiYWNrSUQsCgkJCQkJcGF5bG9hZDogewoJCQkJCQliaW5kaW5nTmFtZTogYmluZGluZ05hbWUsCgkJCQkJCWRhdGE6IHBheWxvYWRkYXRhLAoJCQkJCX0KCQkJCX0KCgkJCQkvLyBNYWtlIHRoZSBjYWxsCgkJCQl2YXIgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpCgkJCQlleHRlcm5hbC5pbnZva2UocGF5bG9hZCk7CgkJCX0gY2F0Y2ggKGUpIHsKCQkJCWNvbnNvbGUuZXJyb3IoZSkKCQkJfQoJCX0pCgl9CgoKCS8vIENhbGxlZCBieSB0aGUgYmFja2VuZCB0byByZXR1cm4gZGF0YSB0byBhIHByZXZpb3VzbHkgY2FsbGVkCgkvLyBiaW5kaW5nIGludm9jYXRpb24KCWZ1bmN0aW9uIGNhbGxiYWNrKGluY29taW5nTWVzc2FnZSkgewoJCS8vIHdhaWxzLmxvZy5kZWJ1ZygiY2FsbGJhY2sgY2FsbGVkIHdpdGg6ICIgKyBpbmNvbWluZ01lc3NhZ2UpCgkJLy8gUGFyc2UgdGhlIG1lc3NhZ2UKCQl2YXIgbWVzc2FnZQoJCS8vIHdhaWxzLmxvZy5kZWJ1ZyhpbmNvbWluZ01lc3NhZ2UpCgkJdHJ5IHsKCQkJbWVzc2FnZSA9IEpTT04ucGFyc2UoaW5jb21pbmdNZXNzYWdlKQoJCX0gY2F0Y2ggKGUpIHsKCQkJd2FpbHMubG9nLmRlYnVnKCJJbnZhbGlkIEpTT04gcGFzc2VkIHRvIGNhbGxiYWNrOiAiICsgZS5tZXNzYWdlKQoJCQl3YWlscy5sb2cuZGVidWcoIk1lc3NhZ2U6ICIgKyBpbmNvbWluZ01lc3NhZ2UpCgkJCXJldHVybgoJCX0KCQljYWxsYmFja0lEID0gbWVzc2FnZS5jYWxsYmFja2lkCgkJY2FsbGJhY2tEYXRhID0gY2FsbGJhY2tzW2NhbGxiYWNrSURdCgkJaWYgKCFjYWxsYmFja0RhdGEpIHsKCQkJY29uc29sZS5lcnJvcigiQ2FsbGJhY2sgJyIgKyBjYWxsYmFja0lEICsgIicgbm90IHJlZ2lzdGVkISEhIikKCQkJcmV0dXJuCgkJfQoJCWNsZWFyVGltZW91dChjYWxsYmFja0RhdGEudGltZW91dEhhbmRsZSkKCQlkZWxldGUgY2FsbGJhY2tzW2NhbGxiYWNrSURdCgkJaWYgKG1lc3NhZ2UuZXJyb3IpIHsKCQkJcmV0dXJuIGNhbGxiYWNrRGF0YS5yZWplY3QobWVzc2FnZS5lcnJvcikKCQl9CgkJcmV0dXJuIGNhbGxiYWNrRGF0YS5yZXNvbHZlKG1lc3NhZ2UuZGF0YSkKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiogRXZlbnRzICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXZhciBldmVudExpc3RlbmVycyA9IHt9OwoKCS8vIFJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMKCWZ1bmN0aW9uIG9uKGV2ZW50TmFtZSwgY2FsbGJhY2spIHsKCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdID0gZXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXTsKCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdLnB1c2goY2FsbGJhY2spOwoJfQoKCS8vIG5vdGlmeSBpbmZvcm1zIGZyb250ZW5kIGxpc3RlbmVycyB0aGF0IGFuIGV2ZW50IHdhcyBlbWl0dGVkIHdpdGggdGhlIGdpdmVuIGRhdGEKCWZ1bmN0aW9uIG5vdGlmeShldmVudE5hbWUsIGRhdGEpIHsKCQlpZiAoZXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSkgewoJCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdLmZvckVhY2goZWxlbWVudCA9PiB7CgkJCQl2YXIgcGFyc2VkRGF0YSA9IFtdCgkJCQkvLyBQYXJzZSBkYXRhIGlmIHdlIGhhdmUgaXQKCQkJCWlmIChkYXRhKSB7CgkJCQkJdHJ5IHsKCQkJCQkJcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CgkJCQkJfSBjYXRjaCAoZSkgewoJCQkJCQl3YWlscy5sb2cuZXJyb3IoIkludmFsaWQgSlNPTiBkYXRhIHNlbnQgdG8gbm90aWZ5LiBFdmVudCBuYW1lID0gIiArIGV2ZW50TmFtZSkKCQkJCQl9CgkJCQl9CgkJCQllbGVtZW50LmFwcGx5KG51bGwsIHBhcnNlZERhdGEpOwoJCQl9KTsKCQl9Cgl9CgoJLy8gZW1pdCBhbiBldmVudCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBkYXRhCglmdW5jdGlvbiBlbWl0KGV2ZW50TmFtZSkgewoKCQkvLyBDYWxjdWxhdGUgdGhlIGRhdGEKCQl2YXIgZGF0YSA9IEpTT04uc3RyaW5naWZ5KFtdLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykuc2xpY2UoMSkpOwoKCQkvLyBOb3RpZnkgYmFja2VuZAoJCW1lc3NhZ2UgPSB7CgkJCXR5cGU6ICJldmVudCIsCgkJCXBheWxvYWQ6IHsKCQkJCW5hbWU6IGV2ZW50TmFtZSwKCQkJCWRhdGE6IGRhdGEsCgkJCX0KCQl9CgkJZXh0ZXJuYWwuaW52b2tlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTsKCX0KCgkvLyBFdmVudHMgY2FsbHMKCXdpbmRvdy53YWlscy5ldmVudHMgPSB7IGVtaXQ6IGVtaXQsIG9uOiBvbiB9OwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLyoqKioqKioqKioqKioqKioqKioqKioqKiogTG9nZ2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvLyBTZW5kcyBhIGxvZyBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHdpdGggdGhlIGdpdmVuCgkvLyBsZXZlbCArIG1lc3NhZ2UKCWZ1bmN0aW9uIHNlbmRMb2dNZXNzYWdlKGxldmVsLCBtZXNzYWdlKSB7CgoJCS8vIExvZyBNZXNzYWdlCgkJbWVzc2FnZSA9IHsKCQkJdHlwZTogImxvZyIsCgkJCXBheWxvYWQ6IHsKCQkJCWxldmVsOiBsZXZlbCwKCQkJCW1lc3NhZ2U6IG1lc3NhZ2UsCgkJCX0KCQl9CgkJZXh0ZXJuYWwuaW52b2tlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTsKCX0KCglmdW5jdGlvbiBsb2dEZWJ1ZyhtZXNzYWdlKSB7CgkJc2VuZExvZ01lc3NhZ2UoImRlYnVnIiwgbWVzc2FnZSk7Cgl9CglmdW5jdGlvbiBsb2dJbmZvKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiaW5mbyIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nV2FybmluZyhtZXNzYWdlKSB7CgkJc2VuZExvZ01lc3NhZ2UoIndhcm5pbmciLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0Vycm9yKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZXJyb3IiLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0ZhdGFsKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZmF0YWwiLCBtZXNzYWdlKTsKCX0KCgl3aW5kb3cud2FpbHMubG9nID0gewoJCWRlYnVnOiBsb2dEZWJ1ZywKCQlpbmZvOiBsb2dJbmZvLAoJCXdhcm5pbmc6IGxvZ1dhcm5pbmcsCgkJZXJyb3I6IGxvZ0Vycm9yLAoJCWZhdGFsOiBsb2dGYXRhbCwKCX07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqIEV4cG9ydHMgKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl3aW5kb3cud2FpbHMuXyA9IHsKCQluZXdCaW5kaW5nOiBuZXdCaW5kaW5nLAoJCWNhbGxiYWNrOiBjYWxsYmFjaywKCQlub3RpZnk6IG5vdGlmeSwKCQlzZW5kTG9nTWVzc2FnZTogc2VuZExvZ01lc3NhZ2UsCgkJY2FsbGJhY2tzOiBjYWxsYmFja3MsCgkJaW5qZWN0Q1NTOiBpbmplY3RDU1MsCgkJYWRkU2NyaXB0OiBhZGRTY3JpcHQsCgkJc2V0RG9jdW1lbnQ6IHNldERvY3VtZW50LAoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gTm90aWZ5IGJhY2tlbmQgdGhhdCB0aGUgcnVudGltZSBoYXMgZmluaXNoZWQgbG9hZGluZwoJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KCJ3YWlsczpsb2FkZWQiKTsKCn0pKCk=\"") + packr.PackJSONBytes("./assets/default", "wails.js", "\"Ly8gV2FpbHMgcnVudGltZSBKUwoKKGZ1bmN0aW9uICgpIHsKCXdpbmRvdy53YWlscyA9IHdpbmRvdy53YWlscyB8fCB7CgkJJDoge30KCX07CgoJLyoqKioqKioqKioqKioqKioqKiBVdGlsaXR5IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gLS0tLS0tLS0tLS0tLS0gUmFuZG9tIC0tLS0tLS0tLS0tLS0tCgkvLyBBd2Vzb21lUmFuZG9tCglmdW5jdGlvbiBjcnlwdG9SYW5kb20oKSB7CgkJdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOwoJCXJldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSlbMF07Cgl9CgoJLy8gTE9MUmFuZG9tCglmdW5jdGlvbiBiYXNpY1JhbmRvbSgpIHsKCQlyZXR1cm4gTWF0aC5yYW5kb20oKSAqIDkwMDcxOTkyNTQ3NDA5OTE7Cgl9CgoJLy8gUGljayBvbmUgYmFzZWQgb24gYnJvd3NlciBjYXBhYmlsaXR5Cgl2YXIgcmFuZG9tRnVuYzsKCWlmICh3aW5kb3cuY3J5cHRvKSB7CgkJcmFuZG9tRnVuYyA9IGNyeXB0b1JhbmRvbTsKCX0gZWxzZSB7CgkJcmFuZG9tRnVuYyA9IGJhc2ljUmFuZG9tOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIElkZW50aWZpZXJzIC0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyKG5hbWUpIHsKCQkvLyBEb24ndCB4c3MgeW91cnNlbGYgOi0pCgkJdHJ5IHsKCQkJbmV3IEZ1bmN0aW9uKCJ2YXIgIiArIG5hbWUpOwoJCQlyZXR1cm4gdHJ1ZQoJCX0gY2F0Y2ggKGUpIHsKCQkJcmV0dXJuIGZhbHNlCgkJfQoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEpTIC0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFkZFNjcmlwdChqcywgY2FsbGJhY2tJRCkgewoJCWNvbnNvbGUubG9nKCJBZGRpbmcgc2NyaXB0OiAiICsganMpCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoJCXNjcmlwdC50ZXh0ID0ganM7CgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoJCWNvbnNvbGUubG9nKCJDYWxsaW5nIGJhY2sgd2l0aDoiICsgY2FsbGJhY2tJRCk7CgkJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KGNhbGxiYWNrSUQpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIENTUyAtLS0tLS0tLS0tLS0tLS0KCS8vIEFkYXB0ZWQgZnJvbSB3ZWJ2aWV3IC0gdGhhbmtzIHpzZXJnZSEKCWZ1bmN0aW9uIGluamVjdENTUyhjc3MpIHsKCQl2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CgkJZWxlbS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTsKCQlpZiAoZWxlbS5zdHlsZVNoZWV0KSB7CgkJCWVsZW0uc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzOwoJCX0gZWxzZSB7CgkJCWVsZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7CgkJfQoJCXZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwoJCWhlYWQuYXBwZW5kQ2hpbGQoZWxlbSkKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiBCaW5kaW5ncyAqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXZhciBiaW5kaW5nc0Jhc2VQYXRoID0gd2luZG93LndhaWxzLiQ7CgoJLy8gQ3JlYXRlcyB0aGUgcGF0aCBnaXZlbiBpbiB0aGUgYmluZGluZ3MgcGF0aAoJZnVuY3Rpb24gYWRkQmluZGluZ1BhdGgocGF0aFNlY3Rpb25zKSB7CgkJLy8gU3RhcnQgYXQgdGhlIGJhc2UgcGF0aAoJCXZhciBjdXJyZW50UGF0aCA9IGJpbmRpbmdzQmFzZVBhdGgKCQkvLyBmb3IgZWFjaCBzZWN0aW9uIG9mIHRoZSBnaXZlbiBwYXRoCgkJZm9yICh2YXIgc2VjdGlvbiBvZiBwYXRoU2VjdGlvbnMpIHsKCgkJCS8vIElzIHNlY3Rpb24gYSB2YWxpZCBqYXZhc2NyaXB0IGlkZW50aWZpZXI/CgkJCWlmICghaXNWYWxpZElkZW50aWZpZXIoc2VjdGlvbikpIHsKCQkJCXZhciBlcnJNZXNzYWdlID0gc2VjdGlvbiArICIgaXMgbm90IGEgdmFsaWQgamF2YXNjcmlwdCBpZGVudGlmaWVyLiIKCQkJCXZhciBlcnIgPSBuZXcgRXJyb3IoZXJyTWVzc2FnZSkKCQkJCXJldHVybiBbbnVsbCwgZXJyXQoJCQl9CgoJCQkvLyBBZGQgaWYgZG9lc24ndCBleGlzdAoJCQlpZiAoIWN1cnJlbnRQYXRoW3NlY3Rpb25dKSB7CgkJCQljdXJyZW50UGF0aFtzZWN0aW9uXSA9IHt9CgkJCX0KCQkJLy8gdXBkYXRlIGN1cnJlbnQgcGF0aCB0byBuZXcgcGF0aAoJCQljdXJyZW50UGF0aCA9IGN1cnJlbnRQYXRoW3NlY3Rpb25dCgkJfQoJCXJldHVybiBbY3VycmVudFBhdGgsIG51bGxdCgl9CgoJZnVuY3Rpb24gbmV3QmluZGluZyhiaW5kaW5nTmFtZSkgewoKCQkvLyBHZXQgYWxsIHRoZSBzZWN0aW9ucyBvZiB0aGUgYmluZGluZwoJCXZhciBiaW5kaW5nU2VjdGlvbnMgPSBiaW5kaW5nTmFtZS5zcGxpdCgnLicpOwoKCQkvLyBHZXQgdGhlIGFjdHVhbCBmdW5jdGlvbi9tZXRob2QgY2FsbCBuYW1lCgkJdmFyIGNhbGxOYW1lID0gYmluZGluZ1NlY3Rpb25zLnBvcCgpOwoKCQkvLyBBZGQgcGF0aCB0byBiaW5kaW5nCgkJW3BhdGhUb0JpbmRpbmcsIGVycl0gPSBhZGRCaW5kaW5nUGF0aChiaW5kaW5nU2VjdGlvbnMpCgoJCWlmIChlcnIgIT0gbnVsbCkgewoJCQkvLyBXZSBuZWVkIHRvIHJldHVybiBhbiBlcnJvcgoJCQlyZXR1cm4gZXJyCgkJfQoKCQkvLyBBZGQgYmluZGluZyBjYWxsCgkJcGF0aFRvQmluZGluZ1tjYWxsTmFtZV0gPSBmdW5jdGlvbiAoKSB7CgoJCQkvLyBObyB0aW1lb3V0IGJ5IGRlZmF1bHQKCQkJdmFyIHRpbWVvdXQgPSAwOwoKCQkJLy8gQWN0dWFsIGZ1bmN0aW9uCgkJCWZ1bmN0aW9uIGR5bmFtaWMoKSB7CgkJCQl2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKQoJCQkJcmV0dXJuIGNhbGwoYmluZGluZ05hbWUsIGFyZ3MsIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBBbGxvdyBzZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG5ld1RpbWVvdXQpIHsKCQkJCXRpbWVvdXQgPSBuZXdUaW1lb3V0OwoJCQl9CgoJCQkvLyBBbGxvdyBnZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5nZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkgewoJCQkJcmV0dXJuIHRpbWVvdXQ7CgkJCX0KCgkJCXJldHVybiBkeW5hbWljOwoJCX0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2FsbHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGNhbGxiYWNrcyA9IHt9OwoKCS8vIENhbGwgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHRvIGNhbGwgdGhlIGJpbmRpbmcgd2l0aCB0aGUKCS8vIGdpdmVuIGRhdGEuIEEgcHJvbWlzZSBpcyByZXR1cm5lZCBhbmQgd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKCS8vIGJhY2tlbmQgcmVzcG9uZHMuIFRoaXMgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsCgkvLyBvciByZWplY3RlZCBpZiBhbiBlcnJvciBpcyBwYXNzZWQgYmFjay4KCS8vIFRoZXJlIGlzIGEgdGltZW91dCBtZWNoYW5pc20uIElmIHRoZSBjYWxsIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aGUgZ2l2ZW4KCS8vIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KCglmdW5jdGlvbiBjYWxsKGJpbmRpbmdOYW1lLCBkYXRhLCB0aW1lb3V0KSB7CgoJCS8vIFRpbWVvdXQgaW5maW5pdGUgYnkgZGVmYXVsdAoJCWlmICh0aW1lb3V0ID09IG51bGwgfHwgdGltZW91dCA9PSB1bmRlZmluZWQpIHsKCQkJdGltZW91dCA9IDA7CgkJfQoKCQkvLyBDcmVhdGUgYSBwcm9taXNlCgkJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCgkJCS8vIENyZWF0ZSBhIHVuaXF1ZSBjYWxsYmFja0lECgkJCXZhciBjYWxsYmFja0lEOwoJCQlkbyB7CgkJCQljYWxsYmFja0lEID0gYmluZGluZ05hbWUgKyAiLSIgKyByYW5kb21GdW5jKCk7CgkJCX0gd2hpbGUgKGNhbGxiYWNrc1tjYWxsYmFja0lEXSkKCgkJCS8vIFNldCB0aW1lb3V0CgkJCWlmICh0aW1lb3V0ID4gMCkgewoJCQkJdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlyZWplY3QoRXJyb3IoIkNhbGwgdG8gIiArIGJpbmRpbmdOYW1lICsgIiB0aW1lZCBvdXQuIFJlcXVlc3QgSUQ6ICIgKyBjYWxsYmFja0lEKSkKCQkJCX0sIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBTdG9yZSBjYWxsYmFjawoJCQljYWxsYmFja3NbY2FsbGJhY2tJRF0gPSB7CgkJCQl0aW1lb3V0SGFuZGxlOiB0aW1lb3V0SGFuZGxlLAoJCQkJcmVqZWN0OiByZWplY3QsCgkJCQlyZXNvbHZlOiByZXNvbHZlCgkJCX0KCQkJdHJ5IHsKCQkJCXZhciBwYXlsb2FkZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpCgkJCQkvLyBDcmVhdGUgdGhlIG1lc3NhZ2UKCQkJCW1lc3NhZ2UgPSB7CgkJCQkJdHlwZTogImNhbGwiLAoJCQkJCWNhbGxiYWNraWQ6IGNhbGxiYWNrSUQsCgkJCQkJcGF5bG9hZDogewoJCQkJCQliaW5kaW5nTmFtZTogYmluZGluZ05hbWUsCgkJCQkJCWRhdGE6IHBheWxvYWRkYXRhLAoJCQkJCX0KCQkJCX0KCgkJCQkvLyBNYWtlIHRoZSBjYWxsCgkJCQl2YXIgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpCgkJCQlleHRlcm5hbC5pbnZva2UocGF5bG9hZCk7CgkJCX0gY2F0Y2ggKGUpIHsKCQkJCWNvbnNvbGUuZXJyb3IoZSkKCQkJfQoJCX0pCgl9CgoKCS8vIENhbGxlZCBieSB0aGUgYmFja2VuZCB0byByZXR1cm4gZGF0YSB0byBhIHByZXZpb3VzbHkgY2FsbGVkCgkvLyBiaW5kaW5nIGludm9jYXRpb24KCWZ1bmN0aW9uIGNhbGxiYWNrKGluY29taW5nTWVzc2FnZSkgewoJCS8vIFBhcnNlIHRoZSBtZXNzYWdlCgkJdmFyIG1lc3NhZ2UKCQl0cnkgewoJCQltZXNzYWdlID0gSlNPTi5wYXJzZShpbmNvbWluZ01lc3NhZ2UpCgkJfSBjYXRjaCAoZSkgewoJCQl3YWlscy5sb2cuZGVidWcoIkludmFsaWQgSlNPTiBwYXNzZWQgdG8gY2FsbGJhY2s6ICIgKyBlLm1lc3NhZ2UpCgkJCXdhaWxzLmxvZy5kZWJ1ZygiTWVzc2FnZTogIiArIGluY29taW5nTWVzc2FnZSkKCQkJcmV0dXJuCgkJfQoJCWNhbGxiYWNrSUQgPSBtZXNzYWdlLmNhbGxiYWNraWQKCQljYWxsYmFja0RhdGEgPSBjYWxsYmFja3NbY2FsbGJhY2tJRF0KCQlpZiAoIWNhbGxiYWNrRGF0YSkgewoJCQljb25zb2xlLmVycm9yKCJDYWxsYmFjayAnIiArIGNhbGxiYWNrSUQgKyAiJyBub3QgcmVnaXN0ZWQhISEiKQoJCQlyZXR1cm4KCQl9CgkJY2xlYXJUaW1lb3V0KGNhbGxiYWNrRGF0YS50aW1lb3V0SGFuZGxlKQoJCWRlbGV0ZSBjYWxsYmFja3NbY2FsbGJhY2tJRF0KCQlpZiAobWVzc2FnZS5lcnJvcikgewoJCQlyZXR1cm4gY2FsbGJhY2tEYXRhLnJlamVjdChtZXNzYWdlLmVycm9yKQoJCX0KCQlyZXR1cm4gY2FsbGJhY2tEYXRhLnJlc29sdmUobWVzc2FnZS5kYXRhKQoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiBFdmVudHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGV2ZW50TGlzdGVuZXJzID0ge307CgoJLy8gUmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycwoJZnVuY3Rpb24gb24oZXZlbnROYW1lLCBjYWxsYmFjaykgewoJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gPSBldmVudExpc3RlbmVyc1tldmVudE5hbWVdIHx8IFtdOwoJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0ucHVzaChjYWxsYmFjayk7Cgl9CgoJLy8gbm90aWZ5IGluZm9ybXMgZnJvbnRlbmQgbGlzdGVuZXJzIHRoYXQgYW4gZXZlbnQgd2FzIGVtaXR0ZWQgd2l0aCB0aGUgZ2l2ZW4gZGF0YQoJZnVuY3Rpb24gbm90aWZ5KGV2ZW50TmFtZSwgZGF0YSkgewoJCWlmIChldmVudExpc3RlbmVyc1tldmVudE5hbWVdKSB7CgkJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0uZm9yRWFjaChlbGVtZW50ID0+IHsKCQkJCXZhciBwYXJzZWREYXRhID0gW10KCQkJCS8vIFBhcnNlIGRhdGEgaWYgd2UgaGF2ZSBpdAoJCQkJaWYgKGRhdGEpIHsKCQkJCQl0cnkgewoJCQkJCQlwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTsKCQkJCQl9IGNhdGNoIChlKSB7CgkJCQkJCXdhaWxzLmxvZy5lcnJvcigiSW52YWxpZCBKU09OIGRhdGEgc2VudCB0byBub3RpZnkuIEV2ZW50IG5hbWUgPSAiICsgZXZlbnROYW1lKQoJCQkJCX0KCQkJCX0KCQkJCWVsZW1lbnQuYXBwbHkobnVsbCwgcGFyc2VkRGF0YSk7CgkJCX0pOwoJCX0KCX0KCgkvLyBlbWl0IGFuIGV2ZW50IHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIGRhdGEKCWZ1bmN0aW9uIGVtaXQoZXZlbnROYW1lKSB7CgoJCS8vIENhbGN1bGF0ZSB0aGUgZGF0YQoJCXZhciBkYXRhID0gSlNPTi5zdHJpbmdpZnkoW10uc2xpY2UuYXBwbHkoYXJndW1lbnRzKS5zbGljZSgxKSk7CgoJCS8vIE5vdGlmeSBiYWNrZW5kCgkJbWVzc2FnZSA9IHsKCQkJdHlwZTogImV2ZW50IiwKCQkJcGF5bG9hZDogewoJCQkJbmFtZTogZXZlbnROYW1lLAoJCQkJZGF0YTogZGF0YSwKCQkJfQoJCX0KCQlleHRlcm5hbC5pbnZva2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwoJfQoKCS8vIEV2ZW50cyBjYWxscwoJd2luZG93LndhaWxzLmV2ZW50cyA9IHsgZW1pdDogZW1pdCwgb246IG9uIH07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiBMb2dnaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8vIFNlbmRzIGEgbG9nIG1lc3NhZ2UgdG8gdGhlIGJhY2tlbmQgd2l0aCB0aGUgZ2l2ZW4KCS8vIGxldmVsICsgbWVzc2FnZQoJZnVuY3Rpb24gc2VuZExvZ01lc3NhZ2UobGV2ZWwsIG1lc3NhZ2UpIHsKCgkJLy8gTG9nIE1lc3NhZ2UKCQltZXNzYWdlID0gewoJCQl0eXBlOiAibG9nIiwKCQkJcGF5bG9hZDogewoJCQkJbGV2ZWw6IGxldmVsLAoJCQkJbWVzc2FnZTogbWVzc2FnZSwKCQkJfQoJCX0KCQlleHRlcm5hbC5pbnZva2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwoJfQoKCWZ1bmN0aW9uIGxvZ0RlYnVnKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZGVidWciLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0luZm8obWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJpbmZvIiwgbWVzc2FnZSk7Cgl9CglmdW5jdGlvbiBsb2dXYXJuaW5nKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgid2FybmluZyIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nRXJyb3IobWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJlcnJvciIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nRmF0YWwobWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJmYXRhbCIsIG1lc3NhZ2UpOwoJfQoKCXdpbmRvdy53YWlscy5sb2cgPSB7CgkJZGVidWc6IGxvZ0RlYnVnLAoJCWluZm86IGxvZ0luZm8sCgkJd2FybmluZzogbG9nV2FybmluZywKCQllcnJvcjogbG9nRXJyb3IsCgkJZmF0YWw6IGxvZ0ZhdGFsLAoJfTsKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiogRXhwb3J0cyAqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXdpbmRvdy53YWlscy5fID0gewoJCW5ld0JpbmRpbmc6IG5ld0JpbmRpbmcsCgkJY2FsbGJhY2s6IGNhbGxiYWNrLAoJCW5vdGlmeTogbm90aWZ5LAoJCXNlbmRMb2dNZXNzYWdlOiBzZW5kTG9nTWVzc2FnZSwKCQljYWxsYmFja3M6IGNhbGxiYWNrcywKCQlpbmplY3RDU1M6IGluamVjdENTUywKCQlhZGRTY3JpcHQ6IGFkZFNjcmlwdCwKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8vIE5vdGlmeSBiYWNrZW5kIHRoYXQgdGhlIHJ1bnRpbWUgaGFzIGZpbmlzaGVkIGxvYWRpbmcKCXdpbmRvdy53YWlscy5ldmVudHMuZW1pdCgid2FpbHM6bG9hZGVkIik7Cgp9KSgp\"") packr.PackJSONBytes("./assets/default", "default.html", "\"PGRpdiBpZD0iYXBwIj48L2Rpdj4=\"") packr.PackJSONBytes("./assets/default", "jquery.3.3.1.min.js", "\"LyohIGpRdWVyeSB2My4zLjEgLWFqYXgsLWFqYXgvanNvbnAsLWFqYXgvbG9hZCwtYWpheC9wYXJzZVhNTCwtYWpheC9zY3JpcHQsLWFqYXgvdmFyL2xvY2F0aW9uLC1hamF4L3Zhci9ub25jZSwtYWpheC92YXIvcnF1ZXJ5LC1hamF4L3hociwtbWFuaXB1bGF0aW9uL19ldmFsVXJsLC1ldmVudC9hamF4LC1lZmZlY3RzLC1lZmZlY3RzL1R3ZWVuLC1lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbiAoZSwgdCkgeyAidXNlIHN0cmljdCI7ICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBlLmRvY3VtZW50ID8gdChlLCAhMCkgOiBmdW5jdGlvbiAoZSkgeyBpZiAoIWUuZG9jdW1lbnQpIHRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpOyByZXR1cm4gdChlKSB9IDogdChlKSB9KCJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiAoZSwgdCkgeyAidXNlIHN0cmljdCI7IHZhciBuID0gW10sIHIgPSBlLmRvY3VtZW50LCBpID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBvID0gbi5zbGljZSwgYSA9IG4uY29uY2F0LCB1ID0gbi5wdXNoLCBzID0gbi5pbmRleE9mLCBsID0ge30sIGMgPSBsLnRvU3RyaW5nLCBmID0gbC5oYXNPd25Qcm9wZXJ0eSwgZCA9IGYudG9TdHJpbmcsIHAgPSBkLmNhbGwoT2JqZWN0KSwgaCA9IHt9LCBnID0gZnVuY3Rpb24gZSh0KSB7IHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmICJudW1iZXIiICE9IHR5cGVvZiB0Lm5vZGVUeXBlIH0sIHYgPSBmdW5jdGlvbiBlKHQpIHsgcmV0dXJuIG51bGwgIT0gdCAmJiB0ID09PSB0LndpbmRvdyB9LCB5ID0geyB0eXBlOiAhMCwgc3JjOiAhMCwgbm9Nb2R1bGU6ICEwIH07IGZ1bmN0aW9uIG0oZSwgdCwgbikgeyB2YXIgaSwgbyA9ICh0ID0gdCB8fCByKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsgaWYgKG8udGV4dCA9IGUsIG4pIGZvciAoaSBpbiB5KSBuW2ldICYmIChvW2ldID0gbltpXSk7IHQuaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pIH0gZnVuY3Rpb24gYihlKSB7IHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbFtjLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUgfSB2YXIgeCA9ICIzLjMuMSAtYWpheCwtYWpheC9qc29ucCwtYWpheC9sb2FkLC1hamF4L3BhcnNlWE1MLC1hamF4L3NjcmlwdCwtYWpheC92YXIvbG9jYXRpb24sLWFqYXgvdmFyL25vbmNlLC1hamF4L3Zhci9ycXVlcnksLWFqYXgveGhyLC1tYW5pcHVsYXRpb24vX2V2YWxVcmwsLWV2ZW50L2FqYXgsLWVmZmVjdHMsLWVmZmVjdHMvVHdlZW4sLWVmZmVjdHMvYW5pbWF0ZWRTZWxlY3RvciIsIHcgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gbmV3IHcuZm4uaW5pdChlLCB0KSB9LCBDID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nOyB3LmZuID0gdy5wcm90b3R5cGUgPSB7IGpxdWVyeTogeCwgY29uc3RydWN0b3I6IHcsIGxlbmd0aDogMCwgdG9BcnJheTogZnVuY3Rpb24gKCkgeyByZXR1cm4gby5jYWxsKHRoaXMpIH0sIGdldDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZSA/IG8uY2FsbCh0aGlzKSA6IGUgPCAwID8gdGhpc1tlICsgdGhpcy5sZW5ndGhdIDogdGhpc1tlXSB9LCBwdXNoU3RhY2s6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksIGUpOyByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdCB9LCBlYWNoOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdy5lYWNoKHRoaXMsIGUpIH0sIG1hcDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHcubWFwKHRoaXMsIGZ1bmN0aW9uICh0LCBuKSB7IHJldHVybiBlLmNhbGwodCwgbiwgdCkgfSkpIH0sIHNsaWNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnB1c2hTdGFjayhvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIH0sIGZpcnN0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVxKDApIH0sIGxhc3Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZXEoLTEpIH0sIGVxOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXMubGVuZ3RoLCBuID0gK2UgKyAoZSA8IDAgPyB0IDogMCk7IHJldHVybiB0aGlzLnB1c2hTdGFjayhuID49IDAgJiYgbiA8IHQgPyBbdGhpc1tuXV0gOiBbXSkgfSwgZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpIH0sIHB1c2g6IHUsIHNvcnQ6IG4uc29ydCwgc3BsaWNlOiBuLnNwbGljZSB9LCB3LmV4dGVuZCA9IHcuZm4uZXh0ZW5kID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbiwgciwgaSwgbywgYSA9IGFyZ3VtZW50c1swXSB8fCB7fSwgdSA9IDEsIHMgPSBhcmd1bWVudHMubGVuZ3RoLCBsID0gITE7IGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChsID0gYSwgYSA9IGFyZ3VtZW50c1t1XSB8fCB7fSwgdSsrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgZyhhKSB8fCAoYSA9IHt9KSwgdSA9PT0gcyAmJiAoYSA9IHRoaXMsIHUtLSk7IHUgPCBzOyB1KyspaWYgKG51bGwgIT0gKGUgPSBhcmd1bWVudHNbdV0pKSBmb3IgKHQgaW4gZSkgbiA9IGFbdF0sIGEgIT09IChyID0gZVt0XSkgJiYgKGwgJiYgciAmJiAody5pc1BsYWluT2JqZWN0KHIpIHx8IChpID0gQXJyYXkuaXNBcnJheShyKSkpID8gKGkgPyAoaSA9ICExLCBvID0gbiAmJiBBcnJheS5pc0FycmF5KG4pID8gbiA6IFtdKSA6IG8gPSBuICYmIHcuaXNQbGFpbk9iamVjdChuKSA/IG4gOiB7fSwgYVt0XSA9IHcuZXh0ZW5kKGwsIG8sIHIpKSA6IHZvaWQgMCAhPT0gciAmJiAoYVt0XSA9IHIpKTsgcmV0dXJuIGEgfSwgdy5leHRlbmQoeyBleHBhbmRvOiAialF1ZXJ5IiArICh4ICsgTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywgIiIpLCBpc1JlYWR5OiAhMCwgZXJyb3I6IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcihlKSB9LCBub29wOiBmdW5jdGlvbiAoKSB7IH0sIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuOyByZXR1cm4gISghZSB8fCAiW29iamVjdCBPYmplY3RdIiAhPT0gYy5jYWxsKGUpKSAmJiAoISh0ID0gaShlKSkgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgKG4gPSBmLmNhbGwodCwgImNvbnN0cnVjdG9yIikgJiYgdC5jb25zdHJ1Y3RvcikgJiYgZC5jYWxsKG4pID09PSBwKSB9LCBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgZm9yICh0IGluIGUpIHJldHVybiAhMTsgcmV0dXJuICEwIH0sIGdsb2JhbEV2YWw6IGZ1bmN0aW9uIChlKSB7IG0oZSkgfSwgZWFjaDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSAwOyBpZiAoVChlKSkgeyBmb3IgKG4gPSBlLmxlbmd0aDsgciA8IG47IHIrKylpZiAoITEgPT09IHQuY2FsbChlW3JdLCByLCBlW3JdKSkgYnJlYWsgfSBlbHNlIGZvciAociBpbiBlKSBpZiAoITEgPT09IHQuY2FsbChlW3JdLCByLCBlW3JdKSkgYnJlYWs7IHJldHVybiBlIH0sIHRyaW06IGZ1bmN0aW9uIChlKSB7IHJldHVybiBudWxsID09IGUgPyAiIiA6IChlICsgIiIpLnJlcGxhY2UoQywgIiIpIH0sIG1ha2VBcnJheTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB0IHx8IFtdOyByZXR1cm4gbnVsbCAhPSBlICYmIChUKE9iamVjdChlKSkgPyB3Lm1lcmdlKG4sICJzdHJpbmciID09IHR5cGVvZiBlID8gW2VdIDogZSkgOiB1LmNhbGwobiwgZSkpLCBuIH0sIGluQXJyYXk6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBudWxsID09IHQgPyAtMSA6IHMuY2FsbCh0LCBlLCBuKSB9LCBtZXJnZTogZnVuY3Rpb24gKGUsIHQpIHsgZm9yICh2YXIgbiA9ICt0Lmxlbmd0aCwgciA9IDAsIGkgPSBlLmxlbmd0aDsgciA8IG47IHIrKyllW2krK10gPSB0W3JdOyByZXR1cm4gZS5sZW5ndGggPSBpLCBlIH0sIGdyZXA6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSBbXSwgbyA9IDAsIGEgPSBlLmxlbmd0aCwgdSA9ICFuOyBvIDwgYTsgbysrKShyID0gIXQoZVtvXSwgbykpICE9PSB1ICYmIGkucHVzaChlW29dKTsgcmV0dXJuIGkgfSwgbWFwOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbyA9IDAsIHUgPSBbXTsgaWYgKFQoZSkpIGZvciAociA9IGUubGVuZ3RoOyBvIDwgcjsgbysrKW51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiB1LnB1c2goaSk7IGVsc2UgZm9yIChvIGluIGUpIG51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiB1LnB1c2goaSk7IHJldHVybiBhLmFwcGx5KFtdLCB1KSB9LCBndWlkOiAxLCBzdXBwb3J0OiBoIH0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgKHcuZm5bU3ltYm9sLml0ZXJhdG9yXSA9IG5bU3ltYm9sLml0ZXJhdG9yXSksIHcuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksIGZ1bmN0aW9uIChlLCB0KSB7IGxbIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpIH0pOyBmdW5jdGlvbiBUKGUpIHsgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwgbiA9IGIoZSk7IHJldHVybiAhZyhlKSAmJiAhdihlKSAmJiAoImFycmF5IiA9PT0gbiB8fCAwID09PSB0IHx8ICJudW1iZXIiID09IHR5cGVvZiB0ICYmIHQgPiAwICYmIHQgLSAxIGluIGUpIH0gdmFyIEUgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgdSwgcywgbCwgYywgZiwgZCwgcCwgaCwgZywgdiwgeSwgbSwgYiwgeCA9ICJzaXp6bGUiICsgMSAqIG5ldyBEYXRlLCB3ID0gZS5kb2N1bWVudCwgQyA9IDAsIFQgPSAwLCBFID0gYWUoKSwgTiA9IGFlKCksIGsgPSBhZSgpLCBBID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIGUgPT09IHQgJiYgKGYgPSAhMCksIDAgfSwgRCA9IHt9Lmhhc093blByb3BlcnR5LCBTID0gW10sIEwgPSBTLnBvcCwgaiA9IFMucHVzaCwgcSA9IFMucHVzaCwgTyA9IFMuc2xpY2UsIFAgPSBmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKWlmIChlW25dID09PSB0KSByZXR1cm4gbjsgcmV0dXJuIC0xIH0sIEggPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLCBJID0gIltcXHgyMFxcdFxcclxcblxcZl0iLCBSID0gIig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIiwgQiA9ICJcXFsiICsgSSArICIqKCIgKyBSICsgIikoPzoiICsgSSArICIqKFsqXiR8IX5dPz0pIiArIEkgKyAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiICsgUiArICIpKXwpIiArIEkgKyAiKlxcXSIsIE0gPSAiOigiICsgUiArICIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiArIEIgKyAiKSopfC4qKVxcKXwpIiwgVyA9IG5ldyBSZWdFeHAoSSArICIrIiwgImciKSwgJCA9IG5ldyBSZWdFeHAoIl4iICsgSSArICIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiICsgSSArICIrJCIsICJnIiksIEYgPSBuZXcgUmVnRXhwKCJeIiArIEkgKyAiKiwiICsgSSArICIqIiksIHogPSBuZXcgUmVnRXhwKCJeIiArIEkgKyAiKihbPit+XXwiICsgSSArICIpIiArIEkgKyAiKiIpLCBfID0gbmV3IFJlZ0V4cCgiPSIgKyBJICsgIiooW15cXF0nXCJdKj8pIiArIEkgKyAiKlxcXSIsICJnIiksIFUgPSBuZXcgUmVnRXhwKE0pLCBWID0gbmV3IFJlZ0V4cCgiXiIgKyBSICsgIiQiKSwgWCA9IHsgSUQ6IG5ldyBSZWdFeHAoIl4jKCIgKyBSICsgIikiKSwgQ0xBU1M6IG5ldyBSZWdFeHAoIl5cXC4oIiArIFIgKyAiKSIpLCBUQUc6IG5ldyBSZWdFeHAoIl4oIiArIFIgKyAifFsqXSkiKSwgQVRUUjogbmV3IFJlZ0V4cCgiXiIgKyBCKSwgUFNFVURPOiBuZXcgUmVnRXhwKCJeIiArIE0pLCBDSElMRDogbmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIEkgKyAiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyBJICsgIiooPzooWystXXwpIiArIEkgKyAiKihcXGQrKXwpKSIgKyBJICsgIipcXCl8KSIsICJpIiksIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgSCArICIpJCIsICJpIiksIG5lZWRzQ29udGV4dDogbmV3IFJlZ0V4cCgiXiIgKyBJICsgIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKyBJICsgIiooKD86LVxcZCk/XFxkKikiICsgSSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiKSB9LCBRID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwgWSA9IC9eaFxkJC9pLCBHID0gL15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLCBLID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywgSiA9IC9bK35dLywgWiA9IG5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIgKyBJICsgIj98KCIgKyBJICsgIil8LikiLCAiaWciKSwgZWUgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9ICIweCIgKyB0IC0gNjU1MzY7IHJldHVybiByICE9PSByIHx8IG4gPyB0IDogciA8IDAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKHIgKyA2NTUzNikgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKHIgPj4gMTAgfCA1NTI5NiwgMTAyMyAmIHIgfCA1NjMyMCkgfSwgdGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywgbmUgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdCA/ICJcMCIgPT09IGUgPyAiXHVmZmZkIiA6IGUuc2xpY2UoMCwgLTEpICsgIlxcIiArIGUuY2hhckNvZGVBdChlLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBlIH0sIHJlID0gZnVuY3Rpb24gKCkgeyBkKCkgfSwgaWUgPSBtZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgKCJmb3JtIiBpbiBlIHx8ICJsYWJlbCIgaW4gZSkgfSwgeyBkaXI6ICJwYXJlbnROb2RlIiwgbmV4dDogImxlZ2VuZCIgfSk7IHRyeSB7IHEuYXBwbHkoUyA9IE8uY2FsbCh3LmNoaWxkTm9kZXMpLCB3LmNoaWxkTm9kZXMpLCBTW3cuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlIH0gY2F0Y2ggKGUpIHsgcSA9IHsgYXBwbHk6IFMubGVuZ3RoID8gZnVuY3Rpb24gKGUsIHQpIHsgai5hcHBseShlLCBPLmNhbGwodCkpIH0gOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGUubGVuZ3RoLCByID0gMDsgd2hpbGUgKGVbbisrXSA9IHRbcisrXSk7IGUubGVuZ3RoID0gbiAtIDEgfSB9IH0gZnVuY3Rpb24gb2UoZSwgdCwgciwgaSkgeyB2YXIgbywgdSwgbCwgYywgZiwgaCwgeSwgbSA9IHQgJiYgdC5vd25lckRvY3VtZW50LCBDID0gdCA/IHQubm9kZVR5cGUgOiA5OyBpZiAociA9IHIgfHwgW10sICJzdHJpbmciICE9IHR5cGVvZiBlIHx8ICFlIHx8IDEgIT09IEMgJiYgOSAhPT0gQyAmJiAxMSAhPT0gQykgcmV0dXJuIHI7IGlmICghaSAmJiAoKHQgPyB0Lm93bmVyRG9jdW1lbnQgfHwgdCA6IHcpICE9PSBwICYmIGQodCksIHQgPSB0IHx8IHAsIGcpKSB7IGlmICgxMSAhPT0gQyAmJiAoZiA9IEsuZXhlYyhlKSkpIGlmIChvID0gZlsxXSkgeyBpZiAoOSA9PT0gQykgeyBpZiAoIShsID0gdC5nZXRFbGVtZW50QnlJZChvKSkpIHJldHVybiByOyBpZiAobC5pZCA9PT0gbykgcmV0dXJuIHIucHVzaChsKSwgciB9IGVsc2UgaWYgKG0gJiYgKGwgPSBtLmdldEVsZW1lbnRCeUlkKG8pKSAmJiBiKHQsIGwpICYmIGwuaWQgPT09IG8pIHJldHVybiByLnB1c2gobCksIHIgfSBlbHNlIHsgaWYgKGZbMl0pIHJldHVybiBxLmFwcGx5KHIsIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSkpLCByOyBpZiAoKG8gPSBmWzNdKSAmJiBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSByZXR1cm4gcS5hcHBseShyLCB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobykpLCByIH0gaWYgKG4ucXNhICYmICFrW2UgKyAiICJdICYmICghdiB8fCAhdi50ZXN0KGUpKSkgeyBpZiAoMSAhPT0gQykgbSA9IHQsIHkgPSBlOyBlbHNlIGlmICgib2JqZWN0IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSB7IChjID0gdC5nZXRBdHRyaWJ1dGUoImlkIikpID8gYyA9IGMucmVwbGFjZSh0ZSwgbmUpIDogdC5zZXRBdHRyaWJ1dGUoImlkIiwgYyA9IHgpLCB1ID0gKGggPSBhKGUpKS5sZW5ndGg7IHdoaWxlICh1LS0pIGhbdV0gPSAiIyIgKyBjICsgIiAiICsgeWUoaFt1XSk7IHkgPSBoLmpvaW4oIiwiKSwgbSA9IEoudGVzdChlKSAmJiBnZSh0LnBhcmVudE5vZGUpIHx8IHQgfSBpZiAoeSkgdHJ5IHsgcmV0dXJuIHEuYXBwbHkociwgbS5xdWVyeVNlbGVjdG9yQWxsKHkpKSwgciB9IGNhdGNoIChlKSB7IH0gZmluYWxseSB7IGMgPT09IHggJiYgdC5yZW1vdmVBdHRyaWJ1dGUoImlkIikgfSB9IH0gcmV0dXJuIHMoZS5yZXBsYWNlKCQsICIkMSIpLCB0LCByLCBpKSB9IGZ1bmN0aW9uIGFlKCkgeyB2YXIgZSA9IFtdOyBmdW5jdGlvbiB0KG4sIGkpIHsgcmV0dXJuIGUucHVzaChuICsgIiAiKSA+IHIuY2FjaGVMZW5ndGggJiYgZGVsZXRlIHRbZS5zaGlmdCgpXSwgdFtuICsgIiAiXSA9IGkgfSByZXR1cm4gdCB9IGZ1bmN0aW9uIHVlKGUpIHsgcmV0dXJuIGVbeF0gPSAhMCwgZSB9IGZ1bmN0aW9uIHNlKGUpIHsgdmFyIHQgPSBwLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7IHRyeSB7IHJldHVybiAhIWUodCkgfSBjYXRjaCAoZSkgeyByZXR1cm4gITEgfSBmaW5hbGx5IHsgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwgfSB9IGZ1bmN0aW9uIGxlKGUsIHQpIHsgdmFyIG4gPSBlLnNwbGl0KCJ8IiksIGkgPSBuLmxlbmd0aDsgd2hpbGUgKGktLSkgci5hdHRySGFuZGxlW25baV1dID0gdCB9IGZ1bmN0aW9uIGNlKGUsIHQpIHsgdmFyIG4gPSB0ICYmIGUsIHIgPSBuICYmIDEgPT09IGUubm9kZVR5cGUgJiYgMSA9PT0gdC5ub2RlVHlwZSAmJiBlLnNvdXJjZUluZGV4IC0gdC5zb3VyY2VJbmRleDsgaWYgKHIpIHJldHVybiByOyBpZiAobikgd2hpbGUgKG4gPSBuLm5leHRTaWJsaW5nKSBpZiAobiA9PT0gdCkgcmV0dXJuIC0xOyByZXR1cm4gZSA/IDEgOiAtMSB9IGZ1bmN0aW9uIGZlKGUpIHsgcmV0dXJuIGZ1bmN0aW9uICh0KSB7IHJldHVybiAiaW5wdXQiID09PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgJiYgdC50eXBlID09PSBlIH0gfSBmdW5jdGlvbiBkZShlKSB7IHJldHVybiBmdW5jdGlvbiAodCkgeyB2YXIgbiA9IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICgiaW5wdXQiID09PSBuIHx8ICJidXR0b24iID09PSBuKSAmJiB0LnR5cGUgPT09IGUgfSB9IGZ1bmN0aW9uIHBlKGUpIHsgcmV0dXJuIGZ1bmN0aW9uICh0KSB7IHJldHVybiAiZm9ybSIgaW4gdCA/IHQucGFyZW50Tm9kZSAmJiAhMSA9PT0gdC5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gdCA/ICJsYWJlbCIgaW4gdC5wYXJlbnROb2RlID8gdC5wYXJlbnROb2RlLmRpc2FibGVkID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6IHQuaXNEaXNhYmxlZCA9PT0gZSB8fCB0LmlzRGlzYWJsZWQgIT09ICFlICYmIGllKHQpID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6ICJsYWJlbCIgaW4gdCAmJiB0LmRpc2FibGVkID09PSBlIH0gfSBmdW5jdGlvbiBoZShlKSB7IHJldHVybiB1ZShmdW5jdGlvbiAodCkgeyByZXR1cm4gdCA9ICt0LCB1ZShmdW5jdGlvbiAobiwgcikgeyB2YXIgaSwgbyA9IGUoW10sIG4ubGVuZ3RoLCB0KSwgYSA9IG8ubGVuZ3RoOyB3aGlsZSAoYS0tKSBuW2kgPSBvW2FdXSAmJiAobltpXSA9ICEocltpXSA9IG5baV0pKSB9KSB9KSB9IGZ1bmN0aW9uIGdlKGUpIHsgcmV0dXJuIGUgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgJiYgZSB9IG4gPSBvZS5zdXBwb3J0ID0ge30sIG8gPSBvZS5pc1hNTCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxlbWVudDsgcmV0dXJuICEhdCAmJiAiSFRNTCIgIT09IHQubm9kZU5hbWUgfSwgZCA9IG9lLnNldERvY3VtZW50ID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQsIGksIGEgPSBlID8gZS5vd25lckRvY3VtZW50IHx8IGUgOiB3OyByZXR1cm4gYSAhPT0gcCAmJiA5ID09PSBhLm5vZGVUeXBlICYmIGEuZG9jdW1lbnRFbGVtZW50ID8gKHAgPSBhLCBoID0gcC5kb2N1bWVudEVsZW1lbnQsIGcgPSAhbyhwKSwgdyAhPT0gcCAmJiAoaSA9IHAuZGVmYXVsdFZpZXcpICYmIGkudG9wICE9PSBpICYmIChpLmFkZEV2ZW50TGlzdGVuZXIgPyBpLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsIHJlLCAhMSkgOiBpLmF0dGFjaEV2ZW50ICYmIGkuYXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgcmUpKSwgbi5hdHRyaWJ1dGVzID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuY2xhc3NOYW1lID0gImkiLCAhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpIH0pLCBuLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuYXBwZW5kQ2hpbGQocC5jcmVhdGVDb21tZW50KCIiKSksICFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoIH0pLCBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBHLnRlc3QocC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSwgbi5nZXRCeUlkID0gc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGguYXBwZW5kQ2hpbGQoZSkuaWQgPSB4LCAhcC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhcC5nZXRFbGVtZW50c0J5TmFtZSh4KS5sZW5ndGggfSksIG4uZ2V0QnlJZCA/IChyLmZpbHRlci5JRCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5yZXBsYWNlKFosIGVlKTsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gdCB9IH0sIHIuZmluZC5JRCA9IGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAmJiBnKSB7IHZhciBuID0gdC5nZXRFbGVtZW50QnlJZChlKTsgcmV0dXJuIG4gPyBbbl0gOiBbXSB9IH0pIDogKHIuZmlsdGVyLklEID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnJlcGxhY2UoWiwgZWUpOyByZXR1cm4gZnVuY3Rpb24gKGUpIHsgdmFyIG4gPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlICYmIGUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsgcmV0dXJuIG4gJiYgbi52YWx1ZSA9PT0gdCB9IH0sIHIuZmluZC5JRCA9IGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAmJiBnKSB7IHZhciBuLCByLCBpLCBvID0gdC5nZXRFbGVtZW50QnlJZChlKTsgaWYgKG8pIHsgaWYgKChuID0gby5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSAmJiBuLnZhbHVlID09PSBlKSByZXR1cm4gW29dOyBpID0gdC5nZXRFbGVtZW50c0J5TmFtZShlKSwgciA9IDA7IHdoaWxlIChvID0gaVtyKytdKSBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb10gfSByZXR1cm4gW10gfSB9KSwgci5maW5kLlRBRyA9IG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpIDogbi5xc2EgPyB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSkgOiB2b2lkIDAgfSA6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gW10sIGkgPSAwLCBvID0gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTsgaWYgKCIqIiA9PT0gZSkgeyB3aGlsZSAobiA9IG9baSsrXSkgMSA9PT0gbi5ub2RlVHlwZSAmJiByLnB1c2gobik7IHJldHVybiByIH0gcmV0dXJuIG8gfSwgci5maW5kLkNMQVNTID0gbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uIChlLCB0KSB7IGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGcpIHJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSkgfSwgeSA9IFtdLCB2ID0gW10sIChuLnFzYSA9IEcudGVzdChwLnF1ZXJ5U2VsZWN0b3JBbGwpKSAmJiAoc2UoZnVuY3Rpb24gKGUpIHsgaC5hcHBlbmRDaGlsZChlKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIgKyB4ICsgIic+PC9hPjxzZWxlY3QgaWQ9JyIgKyB4ICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggJiYgdi5wdXNoKCJbKl4kXT0iICsgSSArICIqKD86Jyd8XCJcIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IHYucHVzaCgiXFxbIiArIEkgKyAiKig/OnZhbHVlfCIgKyBIICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyB4ICsgIi1dIikubGVuZ3RoIHx8IHYucHVzaCgifj0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCB2LnB1c2goIjpjaGVja2VkIiksIGUucXVlcnlTZWxlY3RvckFsbCgiYSMiICsgeCArICIrKiIpLmxlbmd0aCB8fCB2LnB1c2goIi4jLitbK35dIikgfSksIHNlKGZ1bmN0aW9uIChlKSB7IGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7IHZhciB0ID0gcC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJoaWRkZW4iKSwgZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAiRCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoICYmIHYucHVzaCgibmFtZSIgKyBJICsgIipbKl4kfCF+XT89IiksIDIgIT09IGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggJiYgdi5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgaC5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZCA9ICEwLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAmJiB2LnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSwgdi5wdXNoKCIsLio6IikgfSkpLCAobi5tYXRjaGVzU2VsZWN0b3IgPSBHLnRlc3QobSA9IGgubWF0Y2hlcyB8fCBoLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBoLm1vek1hdGNoZXNTZWxlY3RvciB8fCBoLm9NYXRjaGVzU2VsZWN0b3IgfHwgaC5tc01hdGNoZXNTZWxlY3RvcikpICYmIHNlKGZ1bmN0aW9uIChlKSB7IG4uZGlzY29ubmVjdGVkTWF0Y2ggPSBtLmNhbGwoZSwgIioiKSwgbS5jYWxsKGUsICJbcyE9JyddOngiKSwgeS5wdXNoKCIhPSIsIE0pIH0pLCB2ID0gdi5sZW5ndGggJiYgbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSksIHkgPSB5Lmxlbmd0aCAmJiBuZXcgUmVnRXhwKHkuam9pbigifCIpKSwgdCA9IEcudGVzdChoLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSwgYiA9IHQgfHwgRy50ZXN0KGguY29udGFpbnMpID8gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSA5ID09PSBlLm5vZGVUeXBlID8gZS5kb2N1bWVudEVsZW1lbnQgOiBlLCByID0gdCAmJiB0LnBhcmVudE5vZGU7IHJldHVybiBlID09PSByIHx8ICEoIXIgfHwgMSAhPT0gci5ub2RlVHlwZSB8fCAhKG4uY29udGFpbnMgPyBuLmNvbnRhaW5zKHIpIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKHQpIHdoaWxlICh0ID0gdC5wYXJlbnROb2RlKSBpZiAodCA9PT0gZSkgcmV0dXJuICEwOyByZXR1cm4gITEgfSwgQSA9IHQgPyBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoZSA9PT0gdCkgcmV0dXJuIGYgPSAhMCwgMDsgdmFyIHIgPSAhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOyByZXR1cm4gciB8fCAoMSAmIChyID0gKGUub3duZXJEb2N1bWVudCB8fCBlKSA9PT0gKHQub3duZXJEb2N1bWVudCB8fCB0KSA/IGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkgOiAxKSB8fCAhbi5zb3J0RGV0YWNoZWQgJiYgdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSA9PT0gciA/IGUgPT09IHAgfHwgZS5vd25lckRvY3VtZW50ID09PSB3ICYmIGIodywgZSkgPyAtMSA6IHQgPT09IHAgfHwgdC5vd25lckRvY3VtZW50ID09PSB3ICYmIGIodywgdCkgPyAxIDogYyA/IFAoYywgZSkgLSBQKGMsIHQpIDogMCA6IDQgJiByID8gLTEgOiAxKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKGUgPT09IHQpIHJldHVybiBmID0gITAsIDA7IHZhciBuLCByID0gMCwgaSA9IGUucGFyZW50Tm9kZSwgbyA9IHQucGFyZW50Tm9kZSwgYSA9IFtlXSwgdSA9IFt0XTsgaWYgKCFpIHx8ICFvKSByZXR1cm4gZSA9PT0gcCA/IC0xIDogdCA9PT0gcCA/IDEgOiBpID8gLTEgOiBvID8gMSA6IGMgPyBQKGMsIGUpIC0gUChjLCB0KSA6IDA7IGlmIChpID09PSBvKSByZXR1cm4gY2UoZSwgdCk7IG4gPSBlOyB3aGlsZSAobiA9IG4ucGFyZW50Tm9kZSkgYS51bnNoaWZ0KG4pOyBuID0gdDsgd2hpbGUgKG4gPSBuLnBhcmVudE5vZGUpIHUudW5zaGlmdChuKTsgd2hpbGUgKGFbcl0gPT09IHVbcl0pIHIrKzsgcmV0dXJuIHIgPyBjZShhW3JdLCB1W3JdKSA6IGFbcl0gPT09IHcgPyAtMSA6IHVbcl0gPT09IHcgPyAxIDogMCB9LCBwKSA6IHAgfSwgb2UubWF0Y2hlcyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBvZShlLCBudWxsLCBudWxsLCB0KSB9LCBvZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAmJiBkKGUpLCB0ID0gdC5yZXBsYWNlKF8sICI9JyQxJ10iKSwgbi5tYXRjaGVzU2VsZWN0b3IgJiYgZyAmJiAha1t0ICsgIiAiXSAmJiAoIXkgfHwgIXkudGVzdCh0KSkgJiYgKCF2IHx8ICF2LnRlc3QodCkpKSB0cnkgeyB2YXIgciA9IG0uY2FsbChlLCB0KTsgaWYgKHIgfHwgbi5kaXNjb25uZWN0ZWRNYXRjaCB8fCBlLmRvY3VtZW50ICYmIDExICE9PSBlLmRvY3VtZW50Lm5vZGVUeXBlKSByZXR1cm4gciB9IGNhdGNoIChlKSB7IH0gcmV0dXJuIG9lKHQsIHAsIG51bGwsIFtlXSkubGVuZ3RoID4gMCB9LCBvZS5jb250YWlucyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9PSBwICYmIGQoZSksIGIoZSwgdCkgfSwgb2UuYXR0ciA9IGZ1bmN0aW9uIChlLCB0KSB7IChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAgJiYgZChlKTsgdmFyIGkgPSByLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSwgbyA9IGkgJiYgRC5jYWxsKHIuYXR0ckhhbmRsZSwgdC50b0xvd2VyQ2FzZSgpKSA/IGkoZSwgdCwgIWcpIDogdm9pZCAwOyByZXR1cm4gdm9pZCAwICE9PSBvID8gbyA6IG4uYXR0cmlidXRlcyB8fCAhZyA/IGUuZ2V0QXR0cmlidXRlKHQpIDogKG8gPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpICYmIG8uc3BlY2lmaWVkID8gby52YWx1ZSA6IG51bGwgfSwgb2UuZXNjYXBlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIChlICsgIiIpLnJlcGxhY2UodGUsIG5lKSB9LCBvZS5lcnJvciA9IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGUpIH0sIG9lLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgciA9IFtdLCBpID0gMCwgbyA9IDA7IGlmIChmID0gIW4uZGV0ZWN0RHVwbGljYXRlcywgYyA9ICFuLnNvcnRTdGFibGUgJiYgZS5zbGljZSgwKSwgZS5zb3J0KEEpLCBmKSB7IHdoaWxlICh0ID0gZVtvKytdKSB0ID09PSBlW29dICYmIChpID0gci5wdXNoKG8pKTsgd2hpbGUgKGktLSkgZS5zcGxpY2UocltpXSwgMSkgfSByZXR1cm4gYyA9IG51bGwsIGUgfSwgaSA9IG9lLmdldFRleHQgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiA9ICIiLCByID0gMCwgbyA9IGUubm9kZVR5cGU7IGlmIChvKSB7IGlmICgxID09PSBvIHx8IDkgPT09IG8gfHwgMTEgPT09IG8pIHsgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlLnRleHRDb250ZW50KSByZXR1cm4gZS50ZXh0Q29udGVudDsgZm9yIChlID0gZS5maXJzdENoaWxkOyBlOyBlID0gZS5uZXh0U2libGluZyluICs9IGkoZSkgfSBlbHNlIGlmICgzID09PSBvIHx8IDQgPT09IG8pIHJldHVybiBlLm5vZGVWYWx1ZSB9IGVsc2Ugd2hpbGUgKHQgPSBlW3IrK10pIG4gKz0gaSh0KTsgcmV0dXJuIG4gfSwgKHIgPSBvZS5zZWxlY3RvcnMgPSB7IGNhY2hlTGVuZ3RoOiA1MCwgY3JlYXRlUHNldWRvOiB1ZSwgbWF0Y2g6IFgsIGF0dHJIYW5kbGU6IHt9LCBmaW5kOiB7fSwgcmVsYXRpdmU6IHsgIj4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogITAgfSwgIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sICIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogITAgfSwgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfSB9LCBwcmVGaWx0ZXI6IHsgQVRUUjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGVbMV0gPSBlWzFdLnJlcGxhY2UoWiwgZWUpLCBlWzNdID0gKGVbM10gfHwgZVs0XSB8fCBlWzVdIHx8ICIiKS5yZXBsYWNlKFosIGVlKSwgIn49IiA9PT0gZVsyXSAmJiAoZVszXSA9ICIgIiArIGVbM10gKyAiICIpLCBlLnNsaWNlKDAsIDQpIH0sIENISUxEOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsxXSA9IGVbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGVbMV0uc2xpY2UoMCwgMykgPyAoZVszXSB8fCBvZS5lcnJvcihlWzBdKSwgZVs0XSA9ICsoZVs0XSA/IGVbNV0gKyAoZVs2XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBlWzNdIHx8ICJvZGQiID09PSBlWzNdKSksIGVbNV0gPSArKGVbN10gKyBlWzhdIHx8ICJvZGQiID09PSBlWzNdKSkgOiBlWzNdICYmIG9lLmVycm9yKGVbMF0pLCBlIH0sIFBTRVVETzogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOyByZXR1cm4gWC5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgVS50ZXN0KG4pICYmICh0ID0gYShuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkgfSB9LCBmaWx0ZXI6IHsgVEFHOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUucmVwbGFjZShaLCBlZSkudG9Mb3dlckNhc2UoKTsgcmV0dXJuICIqIiA9PT0gZSA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuICEwIH0gOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQgfSB9LCBDTEFTUzogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBFW2UgKyAiICJdOyByZXR1cm4gdCB8fCAodCA9IG5ldyBSZWdFeHAoIihefCIgKyBJICsgIikiICsgZSArICIoIiArIEkgKyAifCQpIikpICYmIEUoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHQudGVzdCgic3RyaW5nIiA9PSB0eXBlb2YgZS5jbGFzc05hbWUgJiYgZS5jbGFzc05hbWUgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKSB9KSB9LCBBVFRSOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gZnVuY3Rpb24gKHIpIHsgdmFyIGkgPSBvZS5hdHRyKHIsIGUpOyByZXR1cm4gbnVsbCA9PSBpID8gIiE9IiA9PT0gdCA6ICF0IHx8IChpICs9ICIiLCAiPSIgPT09IHQgPyBpID09PSBuIDogIiE9IiA9PT0gdCA/IGkgIT09IG4gOiAiXj0iID09PSB0ID8gbiAmJiAwID09PSBpLmluZGV4T2YobikgOiAiKj0iID09PSB0ID8gbiAmJiBpLmluZGV4T2YobikgPiAtMSA6ICIkPSIgPT09IHQgPyBuICYmIGkuc2xpY2UoLW4ubGVuZ3RoKSA9PT0gbiA6ICJ+PSIgPT09IHQgPyAoIiAiICsgaS5yZXBsYWNlKFcsICIgIikgKyAiICIpLmluZGV4T2YobikgPiAtMSA6ICJ8PSIgPT09IHQgJiYgKGkgPT09IG4gfHwgaS5zbGljZSgwLCBuLmxlbmd0aCArIDEpID09PSBuICsgIi0iKSkgfSB9LCBDSElMRDogZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGkpIHsgdmFyIG8gPSAibnRoIiAhPT0gZS5zbGljZSgwLCAzKSwgYSA9ICJsYXN0IiAhPT0gZS5zbGljZSgtNCksIHUgPSAib2YtdHlwZSIgPT09IHQ7IHJldHVybiAxID09PSByICYmIDAgPT09IGkgPyBmdW5jdGlvbiAoZSkgeyByZXR1cm4gISFlLnBhcmVudE5vZGUgfSA6IGZ1bmN0aW9uICh0LCBuLCBzKSB7IHZhciBsLCBjLCBmLCBkLCBwLCBoLCBnID0gbyAhPT0gYSA/ICJuZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwgdiA9IHQucGFyZW50Tm9kZSwgeSA9IHUgJiYgdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBtID0gIXMgJiYgIXUsIGIgPSAhMTsgaWYgKHYpIHsgaWYgKG8pIHsgd2hpbGUgKGcpIHsgZCA9IHQ7IHdoaWxlIChkID0gZFtnXSkgaWYgKHUgPyBkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHkgOiAxID09PSBkLm5vZGVUeXBlKSByZXR1cm4gITE7IGggPSBnID0gIm9ubHkiID09PSBlICYmICFoICYmICJuZXh0U2libGluZyIgfSByZXR1cm4gITAgfSBpZiAoaCA9IFthID8gdi5maXJzdENoaWxkIDogdi5sYXN0Q2hpbGRdLCBhICYmIG0pIHsgYiA9IChwID0gKGwgPSAoYyA9IChmID0gKGQgPSB2KVt4XSB8fCAoZFt4XSA9IHt9KSlbZC51bmlxdWVJRF0gfHwgKGZbZC51bmlxdWVJRF0gPSB7fSkpW2VdIHx8IFtdKVswXSA9PT0gQyAmJiBsWzFdKSAmJiBsWzJdLCBkID0gcCAmJiB2LmNoaWxkTm9kZXNbcF07IHdoaWxlIChkID0gKytwICYmIGQgJiYgZFtnXSB8fCAoYiA9IHAgPSAwKSB8fCBoLnBvcCgpKSBpZiAoMSA9PT0gZC5ub2RlVHlwZSAmJiArK2IgJiYgZCA9PT0gdCkgeyBjW2VdID0gW0MsIHAsIGJdOyBicmVhayB9IH0gZWxzZSBpZiAobSAmJiAoYiA9IHAgPSAobCA9IChjID0gKGYgPSAoZCA9IHQpW3hdIHx8IChkW3hdID0ge30pKVtkLnVuaXF1ZUlEXSB8fCAoZltkLnVuaXF1ZUlEXSA9IHt9KSlbZV0gfHwgW10pWzBdID09PSBDICYmIGxbMV0pLCAhMSA9PT0gYikgd2hpbGUgKGQgPSArK3AgJiYgZCAmJiBkW2ddIHx8IChiID0gcCA9IDApIHx8IGgucG9wKCkpIGlmICgodSA/IGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0geSA6IDEgPT09IGQubm9kZVR5cGUpICYmICsrYiAmJiAobSAmJiAoKGMgPSAoZiA9IGRbeF0gfHwgKGRbeF0gPSB7fSkpW2QudW5pcXVlSURdIHx8IChmW2QudW5pcXVlSURdID0ge30pKVtlXSA9IFtDLCBiXSksIGQgPT09IHQpKSBicmVhazsgcmV0dXJuIChiIC09IGkpID09PSByIHx8IGIgJSByID09IDAgJiYgYiAvIHIgPj0gMCB9IH0gfSwgUFNFVURPOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgaSA9IHIucHNldWRvc1tlXSB8fCByLnNldEZpbHRlcnNbZS50b0xvd2VyQ2FzZSgpXSB8fCBvZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgZSk7IHJldHVybiBpW3hdID8gaSh0KSA6IGkubGVuZ3RoID4gMSA/IChuID0gW2UsIGUsICIiLCB0XSwgci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSkgPyB1ZShmdW5jdGlvbiAoZSwgbikgeyB2YXIgciwgbyA9IGkoZSwgdCksIGEgPSBvLmxlbmd0aDsgd2hpbGUgKGEtLSkgZVtyID0gUChlLCBvW2FdKV0gPSAhKG5bcl0gPSBvW2FdKSB9KSA6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBpKGUsIDAsIG4pIH0pIDogaSB9IH0sIHBzZXVkb3M6IHsgbm90OiB1ZShmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IFtdLCBuID0gW10sIHIgPSB1KGUucmVwbGFjZSgkLCAiJDEiKSk7IHJldHVybiByW3hdID8gdWUoZnVuY3Rpb24gKGUsIHQsIG4sIGkpIHsgdmFyIG8sIGEgPSByKGUsIG51bGwsIGksIFtdKSwgdSA9IGUubGVuZ3RoOyB3aGlsZSAodS0tKSAobyA9IGFbdV0pICYmIChlW3VdID0gISh0W3VdID0gbykpIH0pIDogZnVuY3Rpb24gKGUsIGksIG8pIHsgcmV0dXJuIHRbMF0gPSBlLCByKHQsIG51bGwsIG8sIG4pLCB0WzBdID0gbnVsbCwgIW4ucG9wKCkgfSB9KSwgaGFzOiB1ZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gZnVuY3Rpb24gKHQpIHsgcmV0dXJuIG9lKGUsIHQpLmxlbmd0aCA+IDAgfSB9KSwgY29udGFpbnM6IHVlKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID0gZS5yZXBsYWNlKFosIGVlKSwgZnVuY3Rpb24gKHQpIHsgcmV0dXJuICh0LnRleHRDb250ZW50IHx8IHQuaW5uZXJUZXh0IHx8IGkodCkpLmluZGV4T2YoZSkgPiAtMSB9IH0pLCBsYW5nOiB1ZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gVi50ZXN0KGUgfHwgIiIpIHx8IG9lLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgZSksIGUgPSBlLnJlcGxhY2UoWiwgZWUpLnRvTG93ZXJDYXNlKCksIGZ1bmN0aW9uICh0KSB7IHZhciBuOyBkbyB7IGlmIChuID0gZyA/IHQubGFuZyA6IHQuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IHQuZ2V0QXR0cmlidXRlKCJsYW5nIikpIHJldHVybiAobiA9IG4udG9Mb3dlckNhc2UoKSkgPT09IGUgfHwgMCA9PT0gbi5pbmRleE9mKGUgKyAiLSIpIH0gd2hpbGUgKCh0ID0gdC5wYXJlbnROb2RlKSAmJiAxID09PSB0Lm5vZGVUeXBlKTsgcmV0dXJuICExIH0gfSksIHRhcmdldDogZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSBlLmxvY2F0aW9uICYmIGUubG9jYXRpb24uaGFzaDsgcmV0dXJuIG4gJiYgbi5zbGljZSgxKSA9PT0gdC5pZCB9LCByb290OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA9PT0gaCB9LCBmb2N1czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IHAuYWN0aXZlRWxlbWVudCAmJiAoIXAuaGFzRm9jdXMgfHwgcC5oYXNGb2N1cygpKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KSB9LCBlbmFibGVkOiBwZSghMSksIGRpc2FibGVkOiBwZSghMCksIGNoZWNrZWQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyByZXR1cm4gImlucHV0IiA9PT0gdCAmJiAhIWUuY2hlY2tlZCB8fCAib3B0aW9uIiA9PT0gdCAmJiAhIWUuc2VsZWN0ZWQgfSwgc2VsZWN0ZWQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsICEwID09PSBlLnNlbGVjdGVkIH0sIGVtcHR5OiBmdW5jdGlvbiAoZSkgeyBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKWlmIChlLm5vZGVUeXBlIDwgNikgcmV0dXJuICExOyByZXR1cm4gITAgfSwgcGFyZW50OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXIucHNldWRvcy5lbXB0eShlKSB9LCBoZWFkZXI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBZLnRlc3QoZS5ub2RlTmFtZSkgfSwgaW5wdXQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBRLnRlc3QoZS5ub2RlTmFtZSkgfSwgYnV0dG9uOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICJpbnB1dCIgPT09IHQgJiYgImJ1dHRvbiIgPT09IGUudHlwZSB8fCAiYnV0dG9uIiA9PT0gdCB9LCB0ZXh0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuICJpbnB1dCIgPT09IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAidGV4dCIgPT09IGUudHlwZSAmJiAobnVsbCA9PSAodCA9IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpIHx8ICJ0ZXh0IiA9PT0gdC50b0xvd2VyQ2FzZSgpKSB9LCBmaXJzdDogaGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gWzBdIH0pLCBsYXN0OiBoZShmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gW3QgLSAxXSB9KSwgZXE6IGhlKGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBbbiA8IDAgPyBuICsgdCA6IG5dIH0pLCBldmVuOiBoZShmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMDsgbiA8IHQ7IG4gKz0gMillLnB1c2gobik7IHJldHVybiBlIH0pLCBvZGQ6IGhlKGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSAxOyBuIDwgdDsgbiArPSAyKWUucHVzaChuKTsgcmV0dXJuIGUgfSksIGx0OiBoZShmdW5jdGlvbiAoZSwgdCwgbikgeyBmb3IgKHZhciByID0gbiA8IDAgPyBuICsgdCA6IG47IC0tciA+PSAwOyllLnB1c2gocik7IHJldHVybiBlIH0pLCBndDogaGUoZnVuY3Rpb24gKGUsIHQsIG4pIHsgZm9yICh2YXIgciA9IG4gPCAwID8gbiArIHQgOiBuOyArK3IgPCB0OyllLnB1c2gocik7IHJldHVybiBlIH0pIH0gfSkucHNldWRvcy5udGggPSByLnBzZXVkb3MuZXE7IGZvciAodCBpbiB7IHJhZGlvOiAhMCwgY2hlY2tib3g6ICEwLCBmaWxlOiAhMCwgcGFzc3dvcmQ6ICEwLCBpbWFnZTogITAgfSkgci5wc2V1ZG9zW3RdID0gZmUodCk7IGZvciAodCBpbiB7IHN1Ym1pdDogITAsIHJlc2V0OiAhMCB9KSByLnBzZXVkb3NbdF0gPSBkZSh0KTsgZnVuY3Rpb24gdmUoKSB7IH0gdmUucHJvdG90eXBlID0gci5maWx0ZXJzID0gci5wc2V1ZG9zLCByLnNldEZpbHRlcnMgPSBuZXcgdmUsIGEgPSBvZS50b2tlbml6ZSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCBpLCBvLCBhLCB1LCBzLCBsLCBjID0gTltlICsgIiAiXTsgaWYgKGMpIHJldHVybiB0ID8gMCA6IGMuc2xpY2UoMCk7IHUgPSBlLCBzID0gW10sIGwgPSByLnByZUZpbHRlcjsgd2hpbGUgKHUpIHsgbiAmJiAhKGkgPSBGLmV4ZWModSkpIHx8IChpICYmICh1ID0gdS5zbGljZShpWzBdLmxlbmd0aCkgfHwgdSksIHMucHVzaChvID0gW10pKSwgbiA9ICExLCAoaSA9IHouZXhlYyh1KSkgJiYgKG4gPSBpLnNoaWZ0KCksIG8ucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBpWzBdLnJlcGxhY2UoJCwgIiAiKSB9KSwgdSA9IHUuc2xpY2Uobi5sZW5ndGgpKTsgZm9yIChhIGluIHIuZmlsdGVyKSAhKGkgPSBYW2FdLmV4ZWModSkpIHx8IGxbYV0gJiYgIShpID0gbFthXShpKSkgfHwgKG4gPSBpLnNoaWZ0KCksIG8ucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBhLCBtYXRjaGVzOiBpIH0pLCB1ID0gdS5zbGljZShuLmxlbmd0aCkpOyBpZiAoIW4pIGJyZWFrIH0gcmV0dXJuIHQgPyB1Lmxlbmd0aCA6IHUgPyBvZS5lcnJvcihlKSA6IE4oZSwgcykuc2xpY2UoMCkgfTsgZnVuY3Rpb24geWUoZSkgeyBmb3IgKHZhciB0ID0gMCwgbiA9IGUubGVuZ3RoLCByID0gIiI7IHQgPCBuOyB0KyspciArPSBlW3RdLnZhbHVlOyByZXR1cm4gciB9IGZ1bmN0aW9uIG1lKGUsIHQsIG4pIHsgdmFyIHIgPSB0LmRpciwgaSA9IHQubmV4dCwgbyA9IGkgfHwgciwgYSA9IG4gJiYgInBhcmVudE5vZGUiID09PSBvLCB1ID0gVCsrOyByZXR1cm4gdC5maXJzdCA/IGZ1bmN0aW9uICh0LCBuLCBpKSB7IHdoaWxlICh0ID0gdFtyXSkgaWYgKDEgPT09IHQubm9kZVR5cGUgfHwgYSkgcmV0dXJuIGUodCwgbiwgaSk7IHJldHVybiAhMSB9IDogZnVuY3Rpb24gKHQsIG4sIHMpIHsgdmFyIGwsIGMsIGYsIGQgPSBbQywgdV07IGlmIChzKSB7IHdoaWxlICh0ID0gdFtyXSkgaWYgKCgxID09PSB0Lm5vZGVUeXBlIHx8IGEpICYmIGUodCwgbiwgcykpIHJldHVybiAhMCB9IGVsc2Ugd2hpbGUgKHQgPSB0W3JdKSBpZiAoMSA9PT0gdC5ub2RlVHlwZSB8fCBhKSBpZiAoZiA9IHRbeF0gfHwgKHRbeF0gPSB7fSksIGMgPSBmW3QudW5pcXVlSURdIHx8IChmW3QudW5pcXVlSURdID0ge30pLCBpICYmIGkgPT09IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgdCA9IHRbcl0gfHwgdDsgZWxzZSB7IGlmICgobCA9IGNbb10pICYmIGxbMF0gPT09IEMgJiYgbFsxXSA9PT0gdSkgcmV0dXJuIGRbMl0gPSBsWzJdOyBpZiAoY1tvXSA9IGQsIGRbMl0gPSBlKHQsIG4sIHMpKSByZXR1cm4gITAgfSByZXR1cm4gITEgfSB9IGZ1bmN0aW9uIGJlKGUpIHsgcmV0dXJuIGUubGVuZ3RoID4gMSA/IGZ1bmN0aW9uICh0LCBuLCByKSB7IHZhciBpID0gZS5sZW5ndGg7IHdoaWxlIChpLS0pIGlmICghZVtpXSh0LCBuLCByKSkgcmV0dXJuICExOyByZXR1cm4gITAgfSA6IGVbMF0gfSBmdW5jdGlvbiB4ZShlLCB0LCBuKSB7IGZvciAodmFyIHIgPSAwLCBpID0gdC5sZW5ndGg7IHIgPCBpOyByKyspb2UoZSwgdFtyXSwgbik7IHJldHVybiBuIH0gZnVuY3Rpb24gd2UoZSwgdCwgbiwgciwgaSkgeyBmb3IgKHZhciBvLCBhID0gW10sIHUgPSAwLCBzID0gZS5sZW5ndGgsIGwgPSBudWxsICE9IHQ7IHUgPCBzOyB1KyspKG8gPSBlW3VdKSAmJiAobiAmJiAhbihvLCByLCBpKSB8fCAoYS5wdXNoKG8pLCBsICYmIHQucHVzaCh1KSkpOyByZXR1cm4gYSB9IGZ1bmN0aW9uIENlKGUsIHQsIG4sIHIsIGksIG8pIHsgcmV0dXJuIHIgJiYgIXJbeF0gJiYgKHIgPSBDZShyKSksIGkgJiYgIWlbeF0gJiYgKGkgPSBDZShpLCBvKSksIHVlKGZ1bmN0aW9uIChvLCBhLCB1LCBzKSB7IHZhciBsLCBjLCBmLCBkID0gW10sIHAgPSBbXSwgaCA9IGEubGVuZ3RoLCBnID0gbyB8fCB4ZSh0IHx8ICIqIiwgdS5ub2RlVHlwZSA/IFt1XSA6IHUsIFtdKSwgdiA9ICFlIHx8ICFvICYmIHQgPyBnIDogd2UoZywgZCwgZSwgdSwgcyksIHkgPSBuID8gaSB8fCAobyA/IGUgOiBoIHx8IHIpID8gW10gOiBhIDogdjsgaWYgKG4gJiYgbih2LCB5LCB1LCBzKSwgcikgeyBsID0gd2UoeSwgcCksIHIobCwgW10sIHUsIHMpLCBjID0gbC5sZW5ndGg7IHdoaWxlIChjLS0pIChmID0gbFtjXSkgJiYgKHlbcFtjXV0gPSAhKHZbcFtjXV0gPSBmKSkgfSBpZiAobykgeyBpZiAoaSB8fCBlKSB7IGlmIChpKSB7IGwgPSBbXSwgYyA9IHkubGVuZ3RoOyB3aGlsZSAoYy0tKSAoZiA9IHlbY10pICYmIGwucHVzaCh2W2NdID0gZik7IGkobnVsbCwgeSA9IFtdLCBsLCBzKSB9IGMgPSB5Lmxlbmd0aDsgd2hpbGUgKGMtLSkgKGYgPSB5W2NdKSAmJiAobCA9IGkgPyBQKG8sIGYpIDogZFtjXSkgPiAtMSAmJiAob1tsXSA9ICEoYVtsXSA9IGYpKSB9IH0gZWxzZSB5ID0gd2UoeSA9PT0gYSA/IHkuc3BsaWNlKGgsIHkubGVuZ3RoKSA6IHkpLCBpID8gaShudWxsLCBhLCB5LCBzKSA6IHEuYXBwbHkoYSwgeSkgfSkgfSBmdW5jdGlvbiBUZShlKSB7IGZvciAodmFyIHQsIG4sIGksIG8gPSBlLmxlbmd0aCwgYSA9IHIucmVsYXRpdmVbZVswXS50eXBlXSwgdSA9IGEgfHwgci5yZWxhdGl2ZVsiICJdLCBzID0gYSA/IDEgOiAwLCBjID0gbWUoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IHQgfSwgdSwgITApLCBmID0gbWUoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFAodCwgZSkgPiAtMSB9LCB1LCAhMCksIGQgPSBbZnVuY3Rpb24gKGUsIG4sIHIpIHsgdmFyIGkgPSAhYSAmJiAociB8fCBuICE9PSBsKSB8fCAoKHQgPSBuKS5ub2RlVHlwZSA/IGMoZSwgbiwgcikgOiBmKGUsIG4sIHIpKTsgcmV0dXJuIHQgPSBudWxsLCBpIH1dOyBzIDwgbzsgcysrKWlmIChuID0gci5yZWxhdGl2ZVtlW3NdLnR5cGVdKSBkID0gW21lKGJlKGQpLCBuKV07IGVsc2UgeyBpZiAoKG4gPSByLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsIGVbc10ubWF0Y2hlcykpW3hdKSB7IGZvciAoaSA9ICsrczsgaSA8IG87IGkrKylpZiAoci5yZWxhdGl2ZVtlW2ldLnR5cGVdKSBicmVhazsgcmV0dXJuIENlKHMgPiAxICYmIGJlKGQpLCBzID4gMSAmJiB5ZShlLnNsaWNlKDAsIHMgLSAxKS5jb25jYXQoeyB2YWx1ZTogIiAiID09PSBlW3MgLSAyXS50eXBlID8gIioiIDogIiIgfSkpLnJlcGxhY2UoJCwgIiQxIiksIG4sIHMgPCBpICYmIFRlKGUuc2xpY2UocywgaSkpLCBpIDwgbyAmJiBUZShlID0gZS5zbGljZShpKSksIGkgPCBvICYmIHllKGUpKSB9IGQucHVzaChuKSB9IHJldHVybiBiZShkKSB9IGZ1bmN0aW9uIEVlKGUsIHQpIHsgdmFyIG4gPSB0Lmxlbmd0aCA+IDAsIGkgPSBlLmxlbmd0aCA+IDAsIG8gPSBmdW5jdGlvbiAobywgYSwgdSwgcywgYykgeyB2YXIgZiwgaCwgdiwgeSA9IDAsIG0gPSAiMCIsIGIgPSBvICYmIFtdLCB4ID0gW10sIHcgPSBsLCBUID0gbyB8fCBpICYmIHIuZmluZC5UQUcoIioiLCBjKSwgRSA9IEMgKz0gbnVsbCA9PSB3ID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgLjEsIE4gPSBULmxlbmd0aDsgZm9yIChjICYmIChsID0gYSA9PT0gcCB8fCBhIHx8IGMpOyBtICE9PSBOICYmIG51bGwgIT0gKGYgPSBUW21dKTsgbSsrKSB7IGlmIChpICYmIGYpIHsgaCA9IDAsIGEgfHwgZi5vd25lckRvY3VtZW50ID09PSBwIHx8IChkKGYpLCB1ID0gIWcpOyB3aGlsZSAodiA9IGVbaCsrXSkgaWYgKHYoZiwgYSB8fCBwLCB1KSkgeyBzLnB1c2goZik7IGJyZWFrIH0gYyAmJiAoQyA9IEUpIH0gbiAmJiAoKGYgPSAhdiAmJiBmKSAmJiB5LS0gLCBvICYmIGIucHVzaChmKSkgfSBpZiAoeSArPSBtLCBuICYmIG0gIT09IHkpIHsgaCA9IDA7IHdoaWxlICh2ID0gdFtoKytdKSB2KGIsIHgsIGEsIHUpOyBpZiAobykgeyBpZiAoeSA+IDApIHdoaWxlIChtLS0pIGJbbV0gfHwgeFttXSB8fCAoeFttXSA9IEwuY2FsbChzKSk7IHggPSB3ZSh4KSB9IHEuYXBwbHkocywgeCksIGMgJiYgIW8gJiYgeC5sZW5ndGggPiAwICYmIHkgKyB0Lmxlbmd0aCA+IDEgJiYgb2UudW5pcXVlU29ydChzKSB9IHJldHVybiBjICYmIChDID0gRSwgbCA9IHcpLCBiIH07IHJldHVybiBuID8gdWUobykgOiBvIH0gcmV0dXJuIHUgPSBvZS5jb21waWxlID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBbXSwgaSA9IFtdLCBvID0ga1tlICsgIiAiXTsgaWYgKCFvKSB7IHQgfHwgKHQgPSBhKGUpKSwgbiA9IHQubGVuZ3RoOyB3aGlsZSAobi0tKSAobyA9IFRlKHRbbl0pKVt4XSA/IHIucHVzaChvKSA6IGkucHVzaChvKTsgKG8gPSBrKGUsIEVlKGksIHIpKSkuc2VsZWN0b3IgPSBlIH0gcmV0dXJuIG8gfSwgcyA9IG9lLnNlbGVjdCA9IGZ1bmN0aW9uIChlLCB0LCBuLCBpKSB7IHZhciBvLCBzLCBsLCBjLCBmLCBkID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlLCBwID0gIWkgJiYgYShlID0gZC5zZWxlY3RvciB8fCBlKTsgaWYgKG4gPSBuIHx8IFtdLCAxID09PSBwLmxlbmd0aCkgeyBpZiAoKHMgPSBwWzBdID0gcFswXS5zbGljZSgwKSkubGVuZ3RoID4gMiAmJiAiSUQiID09PSAobCA9IHNbMF0pLnR5cGUgJiYgOSA9PT0gdC5ub2RlVHlwZSAmJiBnICYmIHIucmVsYXRpdmVbc1sxXS50eXBlXSkgeyBpZiAoISh0ID0gKHIuZmluZC5JRChsLm1hdGNoZXNbMF0ucmVwbGFjZShaLCBlZSksIHQpIHx8IFtdKVswXSkpIHJldHVybiBuOyBkICYmICh0ID0gdC5wYXJlbnROb2RlKSwgZSA9IGUuc2xpY2Uocy5zaGlmdCgpLnZhbHVlLmxlbmd0aCkgfSBvID0gWC5uZWVkc0NvbnRleHQudGVzdChlKSA/IDAgOiBzLmxlbmd0aDsgd2hpbGUgKG8tLSkgeyBpZiAobCA9IHNbb10sIHIucmVsYXRpdmVbYyA9IGwudHlwZV0pIGJyZWFrOyBpZiAoKGYgPSByLmZpbmRbY10pICYmIChpID0gZihsLm1hdGNoZXNbMF0ucmVwbGFjZShaLCBlZSksIEoudGVzdChzWzBdLnR5cGUpICYmIGdlKHQucGFyZW50Tm9kZSkgfHwgdCkpKSB7IGlmIChzLnNwbGljZShvLCAxKSwgIShlID0gaS5sZW5ndGggJiYgeWUocykpKSByZXR1cm4gcS5hcHBseShuLCBpKSwgbjsgYnJlYWsgfSB9IH0gcmV0dXJuIChkIHx8IHUoZSwgcCkpKGksIHQsICFnLCBuLCAhdCB8fCBKLnRlc3QoZSkgJiYgZ2UodC5wYXJlbnROb2RlKSB8fCB0KSwgbiB9LCBuLnNvcnRTdGFibGUgPSB4LnNwbGl0KCIiKS5zb3J0KEEpLmpvaW4oIiIpID09PSB4LCBuLmRldGVjdER1cGxpY2F0ZXMgPSAhIWYsIGQoKSwgbi5zb3J0RGV0YWNoZWQgPSBzZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gMSAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKSB9KSwgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4iLCAiIyIgPT09IGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSB9KSB8fCBsZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICghbikgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsICJ0eXBlIiA9PT0gdC50b0xvd2VyQ2FzZSgpID8gMSA6IDIpIH0pLCBuLmF0dHJpYnV0ZXMgJiYgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxpbnB1dC8+IiwgZS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksICIiID09PSBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpIH0pIHx8IGxlKCJ2YWx1ZSIsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICghbiAmJiAiaW5wdXQiID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBlLmRlZmF1bHRWYWx1ZSB9KSwgc2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgfSkgfHwgbGUoSCwgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHI7IGlmICghbikgcmV0dXJuICEwID09PSBlW3RdID8gdC50b0xvd2VyQ2FzZSgpIDogKHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpICYmIHIuc3BlY2lmaWVkID8gci52YWx1ZSA6IG51bGwgfSksIG9lIH0oZSk7IHcuZmluZCA9IEUsIHcuZXhwciA9IEUuc2VsZWN0b3JzLCB3LmV4cHJbIjoiXSA9IHcuZXhwci5wc2V1ZG9zLCB3LnVuaXF1ZVNvcnQgPSB3LnVuaXF1ZSA9IEUudW5pcXVlU29ydCwgdy50ZXh0ID0gRS5nZXRUZXh0LCB3LmlzWE1MRG9jID0gRS5pc1hNTCwgdy5jb250YWlucyA9IEUuY29udGFpbnMsIHcuZXNjYXBlU2VsZWN0b3IgPSBFLmVzY2FwZTsgdmFyIE4gPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9IFtdLCBpID0gdm9pZCAwICE9PSBuOyB3aGlsZSAoKGUgPSBlW3RdKSAmJiA5ICE9PSBlLm5vZGVUeXBlKSBpZiAoMSA9PT0gZS5ub2RlVHlwZSkgeyBpZiAoaSAmJiB3KGUpLmlzKG4pKSBicmVhazsgci5wdXNoKGUpIH0gcmV0dXJuIHIgfSwgayA9IGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSBbXTsgZTsgZSA9IGUubmV4dFNpYmxpbmcpMSA9PT0gZS5ub2RlVHlwZSAmJiBlICE9PSB0ICYmIG4ucHVzaChlKTsgcmV0dXJuIG4gfSwgQSA9IHcuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7IGZ1bmN0aW9uIEQoZSwgdCkgeyByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQudG9Mb3dlckNhc2UoKSB9IHZhciBTID0gL148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7IGZ1bmN0aW9uIEwoZSwgdCwgbikgeyByZXR1cm4gZyh0KSA/IHcuZ3JlcChlLCBmdW5jdGlvbiAoZSwgcikgeyByZXR1cm4gISF0LmNhbGwoZSwgciwgZSkgIT09IG4gfSkgOiB0Lm5vZGVUeXBlID8gdy5ncmVwKGUsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID09PSB0ICE9PSBuIH0pIDogInN0cmluZyIgIT0gdHlwZW9mIHQgPyB3LmdyZXAoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHMuY2FsbCh0LCBlKSA+IC0xICE9PSBuIH0pIDogdy5maWx0ZXIodCwgZSwgbikgfSB3LmZpbHRlciA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gdFswXTsgcmV0dXJuIG4gJiYgKGUgPSAiOm5vdCgiICsgZSArICIpIiksIDEgPT09IHQubGVuZ3RoICYmIDEgPT09IHIubm9kZVR5cGUgPyB3LmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsIGUpID8gW3JdIDogW10gOiB3LmZpbmQubWF0Y2hlcyhlLCB3LmdyZXAodCwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUgfSkpIH0sIHcuZm4uZXh0ZW5kKHsgZmluZDogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIgPSB0aGlzLmxlbmd0aCwgaSA9IHRoaXM7IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHcoZSkuZmlsdGVyKGZ1bmN0aW9uICgpIHsgZm9yICh0ID0gMDsgdCA8IHI7IHQrKylpZiAody5jb250YWlucyhpW3RdLCB0aGlzKSkgcmV0dXJuICEwIH0pKTsgZm9yIChuID0gdGhpcy5wdXNoU3RhY2soW10pLCB0ID0gMDsgdCA8IHI7IHQrKyl3LmZpbmQoZSwgaVt0XSwgbik7IHJldHVybiByID4gMSA/IHcudW5pcXVlU29ydChuKSA6IG4gfSwgZmlsdGVyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2soTCh0aGlzLCBlIHx8IFtdLCAhMSkpIH0sIG5vdDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKEwodGhpcywgZSB8fCBbXSwgITApKSB9LCBpczogZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhTCh0aGlzLCAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBBLnRlc3QoZSkgPyB3KGUpIDogZSB8fCBbXSwgITEpLmxlbmd0aCB9IH0pOyB2YXIgaiwgcSA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87ICh3LmZuLmluaXQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgaSwgbzsgaWYgKCFlKSByZXR1cm4gdGhpczsgaWYgKG4gPSBuIHx8IGosICJzdHJpbmciID09IHR5cGVvZiBlKSB7IGlmICghKGkgPSAiPCIgPT09IGVbMF0gJiYgIj4iID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgZS5sZW5ndGggPj0gMyA/IFtudWxsLCBlLCBudWxsXSA6IHEuZXhlYyhlKSkgfHwgIWlbMV0gJiYgdCkgcmV0dXJuICF0IHx8IHQuanF1ZXJ5ID8gKHQgfHwgbikuZmluZChlKSA6IHRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTsgaWYgKGlbMV0pIHsgaWYgKHQgPSB0IGluc3RhbmNlb2YgdyA/IHRbMF0gOiB0LCB3Lm1lcmdlKHRoaXMsIHcucGFyc2VIVE1MKGlbMV0sIHQgJiYgdC5ub2RlVHlwZSA/IHQub3duZXJEb2N1bWVudCB8fCB0IDogciwgITApKSwgUy50ZXN0KGlbMV0pICYmIHcuaXNQbGFpbk9iamVjdCh0KSkgZm9yIChpIGluIHQpIGcodGhpc1tpXSkgPyB0aGlzW2ldKHRbaV0pIDogdGhpcy5hdHRyKGksIHRbaV0pOyByZXR1cm4gdGhpcyB9IHJldHVybiAobyA9IHIuZ2V0RWxlbWVudEJ5SWQoaVsyXSkpICYmICh0aGlzWzBdID0gbywgdGhpcy5sZW5ndGggPSAxKSwgdGhpcyB9IHJldHVybiBlLm5vZGVUeXBlID8gKHRoaXNbMF0gPSBlLCB0aGlzLmxlbmd0aCA9IDEsIHRoaXMpIDogZyhlKSA/IHZvaWQgMCAhPT0gbi5yZWFkeSA/IG4ucmVhZHkoZSkgOiBlKHcpIDogdy5tYWtlQXJyYXkoZSwgdGhpcykgfSkucHJvdG90eXBlID0gdy5mbiwgaiA9IHcocik7IHZhciBPID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sIFAgPSB7IGNoaWxkcmVuOiAhMCwgY29udGVudHM6ICEwLCBuZXh0OiAhMCwgcHJldjogITAgfTsgdy5mbi5leHRlbmQoeyBoYXM6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdyhlLCB0aGlzKSwgbiA9IHQubGVuZ3RoOyByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlID0gMDsgZSA8IG47IGUrKylpZiAody5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwIH0pIH0sIGNsb3Nlc3Q6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHRoaXMubGVuZ3RoLCBvID0gW10sIGEgPSAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiB3KGUpOyBpZiAoIUEudGVzdChlKSkgZm9yICg7IHIgPCBpOyByKyspZm9yIChuID0gdGhpc1tyXTsgbiAmJiBuICE9PSB0OyBuID0gbi5wYXJlbnROb2RlKWlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyBhLmluZGV4KG4pID4gLTEgOiAxID09PSBuLm5vZGVUeXBlICYmIHcuZmluZC5tYXRjaGVzU2VsZWN0b3IobiwgZSkpKSB7IG8ucHVzaChuKTsgYnJlYWsgfSByZXR1cm4gdGhpcy5wdXNoU3RhY2soby5sZW5ndGggPiAxID8gdy51bmlxdWVTb3J0KG8pIDogbykgfSwgaW5kZXg6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID8gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBzLmNhbGwodyhlKSwgdGhpc1swXSkgOiBzLmNhbGwodGhpcywgZS5qcXVlcnkgPyBlWzBdIDogZSkgOiB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTEgfSwgYWRkOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2sody51bmlxdWVTb3J0KHcubWVyZ2UodGhpcy5nZXQoKSwgdyhlLCB0KSkpKSB9LCBhZGRCYWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5hZGQobnVsbCA9PSBlID8gdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSkgfSB9KTsgZnVuY3Rpb24gSChlLCB0KSB7IHdoaWxlICgoZSA9IGVbdF0pICYmIDEgIT09IGUubm9kZVR5cGUpOyByZXR1cm4gZSB9IHcuZWFjaCh7IHBhcmVudDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIDExICE9PSB0Lm5vZGVUeXBlID8gdCA6IG51bGwgfSwgcGFyZW50czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIE4oZSwgInBhcmVudE5vZGUiKSB9LCBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBOKGUsICJwYXJlbnROb2RlIiwgbikgfSwgbmV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEgoZSwgIm5leHRTaWJsaW5nIikgfSwgcHJldjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEgoZSwgInByZXZpb3VzU2libGluZyIpIH0sIG5leHRBbGw6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBOKGUsICJuZXh0U2libGluZyIpIH0sIHByZXZBbGw6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBOKGUsICJwcmV2aW91c1NpYmxpbmciKSB9LCBuZXh0VW50aWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBOKGUsICJuZXh0U2libGluZyIsIG4pIH0sIHByZXZVbnRpbDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIE4oZSwgInByZXZpb3VzU2libGluZyIsIG4pIH0sIHNpYmxpbmdzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaygoZS5wYXJlbnROb2RlIHx8IHt9KS5maXJzdENoaWxkLCBlKSB9LCBjaGlsZHJlbjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGsoZS5maXJzdENoaWxkKSB9LCBjb250ZW50czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEQoZSwgImlmcmFtZSIpID8gZS5jb250ZW50RG9jdW1lbnQgOiAoRChlLCAidGVtcGxhdGUiKSAmJiAoZSA9IGUuY29udGVudCB8fCBlKSwgdy5tZXJnZShbXSwgZS5jaGlsZE5vZGVzKSkgfSB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmZuW2VdID0gZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSB3Lm1hcCh0aGlzLCB0LCBuKTsgcmV0dXJuICJVbnRpbCIgIT09IGUuc2xpY2UoLTUpICYmIChyID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgKGkgPSB3LmZpbHRlcihyLCBpKSksIHRoaXMubGVuZ3RoID4gMSAmJiAoUFtlXSB8fCB3LnVuaXF1ZVNvcnQoaSksIE8udGVzdChlKSAmJiBpLnJldmVyc2UoKSksIHRoaXMucHVzaFN0YWNrKGkpIH0gfSk7IHZhciBJID0gL1teXHgyMFx0XHJcblxmXSsvZzsgZnVuY3Rpb24gUihlKSB7IHZhciB0ID0ge307IHJldHVybiB3LmVhY2goZS5tYXRjaChJKSB8fCBbXSwgZnVuY3Rpb24gKGUsIG4pIHsgdFtuXSA9ICEwIH0pLCB0IH0gdy5DYWxsYmFja3MgPSBmdW5jdGlvbiAoZSkgeyBlID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBSKGUpIDogdy5leHRlbmQoe30sIGUpOyB2YXIgdCwgbiwgciwgaSwgbyA9IFtdLCBhID0gW10sIHUgPSAtMSwgcyA9IGZ1bmN0aW9uICgpIHsgZm9yIChpID0gaSB8fCBlLm9uY2UsIHIgPSB0ID0gITA7IGEubGVuZ3RoOyB1ID0gLTEpIHsgbiA9IGEuc2hpZnQoKTsgd2hpbGUgKCsrdSA8IG8ubGVuZ3RoKSAhMSA9PT0gb1t1XS5hcHBseShuWzBdLCBuWzFdKSAmJiBlLnN0b3BPbkZhbHNlICYmICh1ID0gby5sZW5ndGgsIG4gPSAhMSkgfSBlLm1lbW9yeSB8fCAobiA9ICExKSwgdCA9ICExLCBpICYmIChvID0gbiA/IFtdIDogIiIpIH0sIGwgPSB7IGFkZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbyAmJiAobiAmJiAhdCAmJiAodSA9IG8ubGVuZ3RoIC0gMSwgYS5wdXNoKG4pKSwgZnVuY3Rpb24gdChuKSB7IHcuZWFjaChuLCBmdW5jdGlvbiAobiwgcikgeyBnKHIpID8gZS51bmlxdWUgJiYgbC5oYXMocikgfHwgby5wdXNoKHIpIDogciAmJiByLmxlbmd0aCAmJiAic3RyaW5nIiAhPT0gYihyKSAmJiB0KHIpIH0pIH0oYXJndW1lbnRzKSwgbiAmJiAhdCAmJiBzKCkpLCB0aGlzIH0sIHJlbW92ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG47IHdoaWxlICgobiA9IHcuaW5BcnJheSh0LCBvLCBuKSkgPiAtMSkgby5zcGxpY2UobiwgMSksIG4gPD0gdSAmJiB1LS0gfSksIHRoaXMgfSwgaGFzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA/IHcuaW5BcnJheShlLCBvKSA+IC0xIDogby5sZW5ndGggPiAwIH0sIGVtcHR5OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvICYmIChvID0gW10pLCB0aGlzIH0sIGRpc2FibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkgPSBhID0gW10sIG8gPSBuID0gIiIsIHRoaXMgfSwgZGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFvIH0sIGxvY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkgPSBhID0gW10sIG4gfHwgdCB8fCAobyA9IG4gPSAiIiksIHRoaXMgfSwgbG9ja2VkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIWkgfSwgZmlyZVdpdGg6IGZ1bmN0aW9uIChlLCBuKSB7IHJldHVybiBpIHx8IChuID0gW2UsIChuID0gbiB8fCBbXSkuc2xpY2UgPyBuLnNsaWNlKCkgOiBuXSwgYS5wdXNoKG4pLCB0IHx8IHMoKSksIHRoaXMgfSwgZmlyZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbC5maXJlV2l0aCh0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIGZpcmVkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIXIgfSB9OyByZXR1cm4gbCB9OyBmdW5jdGlvbiBCKGUpIHsgcmV0dXJuIGUgfSBmdW5jdGlvbiBNKGUpIHsgdGhyb3cgZSB9IGZ1bmN0aW9uIFcoZSwgdCwgbiwgcikgeyB2YXIgaTsgdHJ5IHsgZSAmJiBnKGkgPSBlLnByb21pc2UpID8gaS5jYWxsKGUpLmRvbmUodCkuZmFpbChuKSA6IGUgJiYgZyhpID0gZS50aGVuKSA/IGkuY2FsbChlLCB0LCBuKSA6IHQuYXBwbHkodm9pZCAwLCBbZV0uc2xpY2UocikpIH0gY2F0Y2ggKGUpIHsgbi5hcHBseSh2b2lkIDAsIFtlXSkgfSB9IHcuZXh0ZW5kKHsgRGVmZXJyZWQ6IGZ1bmN0aW9uICh0KSB7IHZhciBuID0gW1sibm90aWZ5IiwgInByb2dyZXNzIiwgdy5DYWxsYmFja3MoIm1lbW9yeSIpLCB3LkNhbGxiYWNrcygibWVtb3J5IiksIDJdLCBbInJlc29sdmUiLCAiZG9uZSIsIHcuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMCwgInJlc29sdmVkIl0sIFsicmVqZWN0IiwgImZhaWwiLCB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgdy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIDEsICJyZWplY3RlZCJdXSwgciA9ICJwZW5kaW5nIiwgaSA9IHsgc3RhdGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIgfSwgYWx3YXlzOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksIHRoaXMgfSwgImNhdGNoIjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGkudGhlbihudWxsLCBlKSB9LCBwaXBlOiBmdW5jdGlvbiAoKSB7IHZhciBlID0gYXJndW1lbnRzOyByZXR1cm4gdy5EZWZlcnJlZChmdW5jdGlvbiAodCkgeyB3LmVhY2gobiwgZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSBnKGVbcls0XV0pICYmIGVbcls0XV07IG9bclsxXV0oZnVuY3Rpb24gKCkgeyB2YXIgZSA9IGkgJiYgaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyBlICYmIGcoZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLnByb2dyZXNzKHQubm90aWZ5KS5kb25lKHQucmVzb2x2ZSkuZmFpbCh0LnJlamVjdCkgOiB0W3JbMF0gKyAiV2l0aCJdKHRoaXMsIGkgPyBbZV0gOiBhcmd1bWVudHMpIH0pIH0pLCBlID0gbnVsbCB9KS5wcm9taXNlKCkgfSwgdGhlbjogZnVuY3Rpb24gKHQsIHIsIGkpIHsgdmFyIG8gPSAwOyBmdW5jdGlvbiBhKHQsIG4sIHIsIGkpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIHUgPSB0aGlzLCBzID0gYXJndW1lbnRzLCBsID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgbDsgaWYgKCEodCA8IG8pKSB7IGlmICgoZSA9IHIuYXBwbHkodSwgcykpID09PSBuLnByb21pc2UoKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uIik7IGwgPSBlICYmICgib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSAmJiBlLnRoZW4sIGcobCkgPyBpID8gbC5jYWxsKGUsIGEobywgbiwgQiwgaSksIGEobywgbiwgTSwgaSkpIDogKG8rKyAsIGwuY2FsbChlLCBhKG8sIG4sIEIsIGkpLCBhKG8sIG4sIE0sIGkpLCBhKG8sIG4sIEIsIG4ubm90aWZ5V2l0aCkpKSA6IChyICE9PSBCICYmICh1ID0gdm9pZCAwLCBzID0gW2VdKSwgKGkgfHwgbi5yZXNvbHZlV2l0aCkodSwgcykpIH0gfSwgYyA9IGkgPyBsIDogZnVuY3Rpb24gKCkgeyB0cnkgeyBsKCkgfSBjYXRjaCAoZSkgeyB3LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgdy5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGUsIGMuc3RhY2tUcmFjZSksIHQgKyAxID49IG8gJiYgKHIgIT09IE0gJiYgKHUgPSB2b2lkIDAsIHMgPSBbZV0pLCBuLnJlamVjdFdpdGgodSwgcykpIH0gfTsgdCA/IGMoKSA6ICh3LkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAoYy5zdGFja1RyYWNlID0gdy5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksIGUuc2V0VGltZW91dChjKSkgfSB9IHJldHVybiB3LkRlZmVycmVkKGZ1bmN0aW9uIChlKSB7IG5bMF1bM10uYWRkKGEoMCwgZSwgZyhpKSA/IGkgOiBCLCBlLm5vdGlmeVdpdGgpKSwgblsxXVszXS5hZGQoYSgwLCBlLCBnKHQpID8gdCA6IEIpKSwgblsyXVszXS5hZGQoYSgwLCBlLCBnKHIpID8gciA6IE0pKSB9KS5wcm9taXNlKCkgfSwgcHJvbWlzZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgIT0gZSA/IHcuZXh0ZW5kKGUsIGkpIDogaSB9IH0sIG8gPSB7fTsgcmV0dXJuIHcuZWFjaChuLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgYSA9IHRbMl0sIHUgPSB0WzVdOyBpW3RbMV1dID0gYS5hZGQsIHUgJiYgYS5hZGQoZnVuY3Rpb24gKCkgeyByID0gdSB9LCBuWzMgLSBlXVsyXS5kaXNhYmxlLCBuWzMgLSBlXVszXS5kaXNhYmxlLCBuWzBdWzJdLmxvY2ssIG5bMF1bM10ubG9jayksIGEuYWRkKHRbM10uZmlyZSksIG9bdFswXV0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvW3RbMF0gKyAiV2l0aCJdKHRoaXMgPT09IG8gPyB2b2lkIDAgOiB0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIG9bdFswXSArICJXaXRoIl0gPSBhLmZpcmVXaXRoIH0pLCBpLnByb21pc2UobyksIHQgJiYgdC5jYWxsKG8sIG8pLCBvIH0sIHdoZW46IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCwgbiA9IHQsIHIgPSBBcnJheShuKSwgaSA9IG8uY2FsbChhcmd1bWVudHMpLCBhID0gdy5EZWZlcnJlZCgpLCB1ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGZ1bmN0aW9uIChuKSB7IHJbZV0gPSB0aGlzLCBpW2VdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBvLmNhbGwoYXJndW1lbnRzKSA6IG4sIC0tdCB8fCBhLnJlc29sdmVXaXRoKHIsIGkpIH0gfTsgaWYgKHQgPD0gMSAmJiAoVyhlLCBhLmRvbmUodShuKSkucmVzb2x2ZSwgYS5yZWplY3QsICF0KSwgInBlbmRpbmciID09PSBhLnN0YXRlKCkgfHwgZyhpW25dICYmIGlbbl0udGhlbikpKSByZXR1cm4gYS50aGVuKCk7IHdoaWxlIChuLS0pIFcoaVtuXSwgdShuKSwgYS5yZWplY3QpOyByZXR1cm4gYS5wcm9taXNlKCkgfSB9KTsgdmFyICQgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsgdy5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24gKHQsIG4pIHsgZS5jb25zb2xlICYmIGUuY29uc29sZS53YXJuICYmIHQgJiYgJC50ZXN0KHQubmFtZSkgJiYgZS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyB0Lm1lc3NhZ2UsIHQuc3RhY2ssIG4pIH0sIHcucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiAodCkgeyBlLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0aHJvdyB0IH0pIH07IHZhciBGID0gdy5EZWZlcnJlZCgpOyB3LmZuLnJlYWR5ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEYudGhlbihlKVsiY2F0Y2giXShmdW5jdGlvbiAoZSkgeyB3LnJlYWR5RXhjZXB0aW9uKGUpIH0pLCB0aGlzIH0sIHcuZXh0ZW5kKHsgaXNSZWFkeTogITEsIHJlYWR5V2FpdDogMSwgcmVhZHk6IGZ1bmN0aW9uIChlKSB7ICghMCA9PT0gZSA/IC0tdy5yZWFkeVdhaXQgOiB3LmlzUmVhZHkpIHx8ICh3LmlzUmVhZHkgPSAhMCwgITAgIT09IGUgJiYgLS13LnJlYWR5V2FpdCA+IDAgfHwgRi5yZXNvbHZlV2l0aChyLCBbd10pKSB9IH0pLCB3LnJlYWR5LnRoZW4gPSBGLnRoZW47IGZ1bmN0aW9uIHooKSB7IHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHopLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCB6KSwgdy5yZWFkeSgpIH0gImNvbXBsZXRlIiA9PT0gci5yZWFkeVN0YXRlIHx8ICJsb2FkaW5nIiAhPT0gci5yZWFkeVN0YXRlICYmICFyLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCA/IGUuc2V0VGltZW91dCh3LnJlYWR5KSA6IChyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB6KSwgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgeikpOyB2YXIgXyA9IGZ1bmN0aW9uIChlLCB0LCBuLCByLCBpLCBvLCBhKSB7IHZhciB1ID0gMCwgcyA9IGUubGVuZ3RoLCBsID0gbnVsbCA9PSBuOyBpZiAoIm9iamVjdCIgPT09IGIobikpIHsgaSA9ICEwOyBmb3IgKHUgaW4gbikgXyhlLCB0LCB1LCBuW3VdLCAhMCwgbywgYSkgfSBlbHNlIGlmICh2b2lkIDAgIT09IHIgJiYgKGkgPSAhMCwgZyhyKSB8fCAoYSA9ICEwKSwgbCAmJiAoYSA/ICh0LmNhbGwoZSwgciksIHQgPSBudWxsKSA6IChsID0gdCwgdCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBsLmNhbGwodyhlKSwgbikgfSkpLCB0KSkgZm9yICg7IHUgPCBzOyB1KyspdChlW3VdLCBuLCBhID8gciA6IHIuY2FsbChlW3VdLCB1LCB0KGVbdV0sIG4pKSk7IHJldHVybiBpID8gZSA6IGwgPyB0LmNhbGwoZSkgOiBzID8gdChlWzBdLCBuKSA6IG8gfSwgVSA9IC9eLW1zLS8sIFYgPSAvLShbYS16XSkvZzsgZnVuY3Rpb24gWChlLCB0KSB7IHJldHVybiB0LnRvVXBwZXJDYXNlKCkgfSBmdW5jdGlvbiBRKGUpIHsgcmV0dXJuIGUucmVwbGFjZShVLCAibXMtIikucmVwbGFjZShWLCBYKSB9IHZhciBZID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUgfHwgOSA9PT0gZS5ub2RlVHlwZSB8fCAhK2Uubm9kZVR5cGUgfTsgZnVuY3Rpb24gRygpIHsgdGhpcy5leHBhbmRvID0gdy5leHBhbmRvICsgRy51aWQrKyB9IEcudWlkID0gMSwgRy5wcm90b3R5cGUgPSB7IGNhY2hlOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGVbdGhpcy5leHBhbmRvXTsgcmV0dXJuIHQgfHwgKHQgPSB7fSwgWShlKSAmJiAoZS5ub2RlVHlwZSA/IGVbdGhpcy5leHBhbmRvXSA9IHQgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdGhpcy5leHBhbmRvLCB7IHZhbHVlOiB0LCBjb25maWd1cmFibGU6ICEwIH0pKSksIHQgfSwgc2V0OiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSA9IHRoaXMuY2FjaGUoZSk7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgaVtRKHQpXSA9IG47IGVsc2UgZm9yIChyIGluIHQpIGlbUShyKV0gPSB0W3JdOyByZXR1cm4gaSB9LCBnZXQ6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB2b2lkIDAgPT09IHQgPyB0aGlzLmNhY2hlKGUpIDogZVt0aGlzLmV4cGFuZG9dICYmIGVbdGhpcy5leHBhbmRvXVtRKHQpXSB9LCBhY2Nlc3M6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiB2b2lkIDAgPT09IHQgfHwgdCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiB2b2lkIDAgPT09IG4gPyB0aGlzLmdldChlLCB0KSA6ICh0aGlzLnNldChlLCB0LCBuKSwgdm9pZCAwICE9PSBuID8gbiA6IHQpIH0sIHJlbW92ZTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBlW3RoaXMuZXhwYW5kb107IGlmICh2b2lkIDAgIT09IHIpIHsgaWYgKHZvaWQgMCAhPT0gdCkgeyBuID0gKHQgPSBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoUSkgOiAodCA9IFEodCkpIGluIHIgPyBbdF0gOiB0Lm1hdGNoKEkpIHx8IFtdKS5sZW5ndGg7IHdoaWxlIChuLS0pIGRlbGV0ZSByW3Rbbl1dIH0gKHZvaWQgMCA9PT0gdCB8fCB3LmlzRW1wdHlPYmplY3QocikpICYmIChlLm5vZGVUeXBlID8gZVt0aGlzLmV4cGFuZG9dID0gdm9pZCAwIDogZGVsZXRlIGVbdGhpcy5leHBhbmRvXSkgfSB9LCBoYXNEYXRhOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGVbdGhpcy5leHBhbmRvXTsgcmV0dXJuIHZvaWQgMCAhPT0gdCAmJiAhdy5pc0VtcHR5T2JqZWN0KHQpIH0gfTsgdmFyIEsgPSBuZXcgRywgSiA9IG5ldyBHLCBaID0gL14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLywgZWUgPSAvW0EtWl0vZzsgZnVuY3Rpb24gdGUoZSkgeyByZXR1cm4gInRydWUiID09PSBlIHx8ICJmYWxzZSIgIT09IGUgJiYgKCJudWxsIiA9PT0gZSA/IG51bGwgOiBlID09PSArZSArICIiID8gK2UgOiBaLnRlc3QoZSkgPyBKU09OLnBhcnNlKGUpIDogZSkgfSBmdW5jdGlvbiBuZShlLCB0LCBuKSB7IHZhciByOyBpZiAodm9pZCAwID09PSBuICYmIDEgPT09IGUubm9kZVR5cGUpIGlmIChyID0gImRhdGEtIiArIHQucmVwbGFjZShlZSwgIi0kJiIpLnRvTG93ZXJDYXNlKCksICJzdHJpbmciID09IHR5cGVvZiAobiA9IGUuZ2V0QXR0cmlidXRlKHIpKSkgeyB0cnkgeyBuID0gdGUobikgfSBjYXRjaCAoZSkgeyB9IEouc2V0KGUsIHQsIG4pIH0gZWxzZSBuID0gdm9pZCAwOyByZXR1cm4gbiB9IHcuZXh0ZW5kKHsgaGFzRGF0YTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEouaGFzRGF0YShlKSB8fCBLLmhhc0RhdGEoZSkgfSwgZGF0YTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIEouYWNjZXNzKGUsIHQsIG4pIH0sIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IEoucmVtb3ZlKGUsIHQpIH0sIF9kYXRhOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gSy5hY2Nlc3MoZSwgdCwgbikgfSwgX3JlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IEsucmVtb3ZlKGUsIHQpIH0gfSksIHcuZm4uZXh0ZW5kKHsgZGF0YTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGksIG8gPSB0aGlzWzBdLCBhID0gbyAmJiBvLmF0dHJpYnV0ZXM7IGlmICh2b2lkIDAgPT09IGUpIHsgaWYgKHRoaXMubGVuZ3RoICYmIChpID0gSi5nZXQobyksIDEgPT09IG8ubm9kZVR5cGUgJiYgIUsuZ2V0KG8sICJoYXNEYXRhQXR0cnMiKSkpIHsgbiA9IGEubGVuZ3RoOyB3aGlsZSAobi0tKSBhW25dICYmIDAgPT09IChyID0gYVtuXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChyID0gUShyLnNsaWNlKDUpKSwgbmUobywgciwgaVtyXSkpOyBLLnNldChvLCAiaGFzRGF0YUF0dHJzIiwgITApIH0gcmV0dXJuIGkgfSByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgPyB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyBKLnNldCh0aGlzLCBlKSB9KSA6IF8odGhpcywgZnVuY3Rpb24gKHQpIHsgdmFyIG47IGlmIChvICYmIHZvaWQgMCA9PT0gdCkgeyBpZiAodm9pZCAwICE9PSAobiA9IEouZ2V0KG8sIGUpKSkgcmV0dXJuIG47IGlmICh2b2lkIDAgIT09IChuID0gbmUobywgZSkpKSByZXR1cm4gbiB9IGVsc2UgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgSi5zZXQodGhpcywgZSwgdCkgfSkgfSwgbnVsbCwgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsICEwKSB9LCByZW1vdmVEYXRhOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgSi5yZW1vdmUodGhpcywgZSkgfSkgfSB9KSwgdy5leHRlbmQoeyBxdWV1ZTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHI7IGlmIChlKSByZXR1cm4gdCA9ICh0IHx8ICJmeCIpICsgInF1ZXVlIiwgciA9IEsuZ2V0KGUsIHQpLCBuICYmICghciB8fCBBcnJheS5pc0FycmF5KG4pID8gciA9IEsuYWNjZXNzKGUsIHQsIHcubWFrZUFycmF5KG4pKSA6IHIucHVzaChuKSksIHIgfHwgW10gfSwgZGVxdWV1ZTogZnVuY3Rpb24gKGUsIHQpIHsgdCA9IHQgfHwgImZ4IjsgdmFyIG4gPSB3LnF1ZXVlKGUsIHQpLCByID0gbi5sZW5ndGgsIGkgPSBuLnNoaWZ0KCksIG8gPSB3Ll9xdWV1ZUhvb2tzKGUsIHQpLCBhID0gZnVuY3Rpb24gKCkgeyB3LmRlcXVldWUoZSwgdCkgfTsgImlucHJvZ3Jlc3MiID09PSBpICYmIChpID0gbi5zaGlmdCgpLCByLS0pLCBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpIH0sIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHQgKyAicXVldWVIb29rcyI7IHJldHVybiBLLmdldChlLCBuKSB8fCBLLmFjY2VzcyhlLCBuLCB7IGVtcHR5OiB3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24gKCkgeyBLLnJlbW92ZShlLCBbdCArICJxdWV1ZSIsIG5dKSB9KSB9KSB9IH0pLCB3LmZuLmV4dGVuZCh7IHF1ZXVlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IDI7IHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAodCA9IGUsIGUgPSAiZngiLCBuLS0pLCBhcmd1bWVudHMubGVuZ3RoIDwgbiA/IHcucXVldWUodGhpc1swXSwgZSkgOiB2b2lkIDAgPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdmFyIG4gPSB3LnF1ZXVlKHRoaXMsIGUsIHQpOyB3Ll9xdWV1ZUhvb2tzKHRoaXMsIGUpLCAiZngiID09PSBlICYmICJpbnByb2dyZXNzIiAhPT0gblswXSAmJiB3LmRlcXVldWUodGhpcywgZSkgfSkgfSwgZGVxdWV1ZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHcuZGVxdWV1ZSh0aGlzLCBlKSB9KSB9LCBjbGVhclF1ZXVlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKSB9LCBwcm9taXNlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciA9IDEsIGkgPSB3LkRlZmVycmVkKCksIG8gPSB0aGlzLCBhID0gdGhpcy5sZW5ndGgsIHUgPSBmdW5jdGlvbiAoKSB7IC0tciB8fCBpLnJlc29sdmVXaXRoKG8sIFtvXSkgfTsgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKHQgPSBlLCBlID0gdm9pZCAwKSwgZSA9IGUgfHwgImZ4Ijsgd2hpbGUgKGEtLSkgKG4gPSBLLmdldChvW2FdLCBlICsgInF1ZXVlSG9va3MiKSkgJiYgbi5lbXB0eSAmJiAocisrICwgbi5lbXB0eS5hZGQodSkpOyByZXR1cm4gdSgpLCBpLnByb21pc2UodCkgfSB9KTsgdmFyIHJlID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsIGllID0gbmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgcmUgKyAiKShbYS16JV0qKSQiLCAiaSIpLCBvZSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sIGFlID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuICJub25lIiA9PT0gKGUgPSB0IHx8IGUpLnN0eWxlLmRpc3BsYXkgfHwgIiIgPT09IGUuc3R5bGUuZGlzcGxheSAmJiB3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgJiYgIm5vbmUiID09PSB3LmNzcyhlLCAiZGlzcGxheSIpIH0sIHVlID0gZnVuY3Rpb24gKGUsIHQsIG4sIHIpIHsgdmFyIGksIG8sIGEgPSB7fTsgZm9yIChvIGluIHQpIGFbb10gPSBlLnN0eWxlW29dLCBlLnN0eWxlW29dID0gdFtvXTsgaSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7IGZvciAobyBpbiB0KSBlLnN0eWxlW29dID0gYVtvXTsgcmV0dXJuIGkgfTsgZnVuY3Rpb24gc2UoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSA9IDIwLCB1ID0gciA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIuY3VyKCkgfSA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHcuY3NzKGUsIHQsICIiKSB9LCBzID0gdSgpLCBsID0gbiAmJiBuWzNdIHx8ICh3LmNzc051bWJlclt0XSA/ICIiIDogInB4IiksIGMgPSAody5jc3NOdW1iZXJbdF0gfHwgInB4IiAhPT0gbCAmJiArcykgJiYgaWUuZXhlYyh3LmNzcyhlLCB0KSk7IGlmIChjICYmIGNbM10gIT09IGwpIHsgcyAvPSAyLCBsID0gbCB8fCBjWzNdLCBjID0gK3MgfHwgMTsgd2hpbGUgKGEtLSkgdy5zdHlsZShlLCB0LCBjICsgbCksICgxIC0gbykgKiAoMSAtIChvID0gdSgpIC8gcyB8fCAuNSkpIDw9IDAgJiYgKGEgPSAwKSwgYyAvPSBvOyBjICo9IDIsIHcuc3R5bGUoZSwgdCwgYyArIGwpLCBuID0gbiB8fCBbXSB9IHJldHVybiBuICYmIChjID0gK2MgfHwgK3MgfHwgMCwgaSA9IG5bMV0gPyBjICsgKG5bMV0gKyAxKSAqIG5bMl0gOiArblsyXSwgciAmJiAoci51bml0ID0gbCwgci5zdGFydCA9IGMsIHIuZW5kID0gaSkpLCBpIH0gdmFyIGxlID0ge307IGZ1bmN0aW9uIGNlKGUpIHsgdmFyIHQsIG4gPSBlLm93bmVyRG9jdW1lbnQsIHIgPSBlLm5vZGVOYW1lLCBpID0gbGVbcl07IHJldHVybiBpIHx8ICh0ID0gbi5ib2R5LmFwcGVuZENoaWxkKG4uY3JlYXRlRWxlbWVudChyKSksIGkgPSB3LmNzcyh0LCAiZGlzcGxheSIpLCB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksICJub25lIiA9PT0gaSAmJiAoaSA9ICJibG9jayIpLCBsZVtyXSA9IGksIGkpIH0gZnVuY3Rpb24gZmUoZSwgdCkgeyBmb3IgKHZhciBuLCByLCBpID0gW10sIG8gPSAwLCBhID0gZS5sZW5ndGg7IG8gPCBhOyBvKyspKHIgPSBlW29dKS5zdHlsZSAmJiAobiA9IHIuc3R5bGUuZGlzcGxheSwgdCA/ICgibm9uZSIgPT09IG4gJiYgKGlbb10gPSBLLmdldChyLCAiZGlzcGxheSIpIHx8IG51bGwsIGlbb10gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIiKSksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgYWUocikgJiYgKGlbb10gPSBjZShyKSkpIDogIm5vbmUiICE9PSBuICYmIChpW29dID0gIm5vbmUiLCBLLnNldChyLCAiZGlzcGxheSIsIG4pKSk7IGZvciAobyA9IDA7IG8gPCBhOyBvKyspbnVsbCAhPSBpW29dICYmIChlW29dLnN0eWxlLmRpc3BsYXkgPSBpW29dKTsgcmV0dXJuIGUgfSB3LmZuLmV4dGVuZCh7IHNob3c6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZlKHRoaXMsICEwKSB9LCBoaWRlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBmZSh0aGlzKSB9LCB0b2dnbGU6IGZ1bmN0aW9uIChlKSB7IHJldHVybiAiYm9vbGVhbiIgPT0gdHlwZW9mIGUgPyBlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKSA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IGFlKHRoaXMpID8gdyh0aGlzKS5zaG93KCkgOiB3KHRoaXMpLmhpZGUoKSB9KSB9IH0pOyB2YXIgZGUgPSAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSwgcGUgPSAvPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKykvaSwgaGUgPSAvXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksIGdlID0geyBvcHRpb246IFsxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iXSwgdGhlYWQ6IFsxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiJdLCBjb2w6IFsyLCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiJdLCB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+Il0sIHRkOiBbMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSwgX2RlZmF1bHQ6IFswLCAiIiwgIiJdIH07IGdlLm9wdGdyb3VwID0gZ2Uub3B0aW9uLCBnZS50Ym9keSA9IGdlLnRmb290ID0gZ2UuY29sZ3JvdXAgPSBnZS5jYXB0aW9uID0gZ2UudGhlYWQsIGdlLnRoID0gZ2UudGQ7IGZ1bmN0aW9uIHZlKGUsIHQpIHsgdmFyIG47IHJldHVybiBuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQgfHwgIioiKSA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwgPyBlLnF1ZXJ5U2VsZWN0b3JBbGwodCB8fCAiKiIpIDogW10sIHZvaWQgMCA9PT0gdCB8fCB0ICYmIEQoZSwgdCkgPyB3Lm1lcmdlKFtlXSwgbikgOiBuIH0gZnVuY3Rpb24geWUoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKUsuc2V0KGVbbl0sICJnbG9iYWxFdmFsIiwgIXQgfHwgSy5nZXQodFtuXSwgImdsb2JhbEV2YWwiKSkgfSB2YXIgbWUgPSAvPHwmIz9cdys7LzsgZnVuY3Rpb24gYmUoZSwgdCwgbiwgciwgaSkgeyBmb3IgKHZhciBvLCBhLCB1LCBzLCBsLCBjLCBmID0gdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIGQgPSBbXSwgcCA9IDAsIGggPSBlLmxlbmd0aDsgcCA8IGg7IHArKylpZiAoKG8gPSBlW3BdKSB8fCAwID09PSBvKSBpZiAoIm9iamVjdCIgPT09IGIobykpIHcubWVyZ2UoZCwgby5ub2RlVHlwZSA/IFtvXSA6IG8pOyBlbHNlIGlmIChtZS50ZXN0KG8pKSB7IGEgPSBhIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHUgPSAocGUuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwgcyA9IGdlW3VdIHx8IGdlLl9kZWZhdWx0LCBhLmlubmVySFRNTCA9IHNbMV0gKyB3Lmh0bWxQcmVmaWx0ZXIobykgKyBzWzJdLCBjID0gc1swXTsgd2hpbGUgKGMtLSkgYSA9IGEubGFzdENoaWxkOyB3Lm1lcmdlKGQsIGEuY2hpbGROb2RlcyksIChhID0gZi5maXJzdENoaWxkKS50ZXh0Q29udGVudCA9ICIiIH0gZWxzZSBkLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7IGYudGV4dENvbnRlbnQgPSAiIiwgcCA9IDA7IHdoaWxlIChvID0gZFtwKytdKSBpZiAociAmJiB3LmluQXJyYXkobywgcikgPiAtMSkgaSAmJiBpLnB1c2gobyk7IGVsc2UgaWYgKGwgPSB3LmNvbnRhaW5zKG8ub3duZXJEb2N1bWVudCwgbyksIGEgPSB2ZShmLmFwcGVuZENoaWxkKG8pLCAic2NyaXB0IiksIGwgJiYgeWUoYSksIG4pIHsgYyA9IDA7IHdoaWxlIChvID0gYVtjKytdKSBoZS50ZXN0KG8udHlwZSB8fCAiIikgJiYgbi5wdXNoKG8pIH0gcmV0dXJuIGYgfSAhZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmFwcGVuZENoaWxkKHIuY3JlYXRlRWxlbWVudCgiZGl2IikpLCB0ID0gci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLCB0LnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJjaGVja2VkIiksIHQuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwgZS5hcHBlbmRDaGlsZCh0KSwgaC5jaGVja0Nsb25lID0gZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGUuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCBoLm5vQ2xvbmVDaGVja2VkID0gISFlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSB9KCk7IHZhciB4ZSA9IHIuZG9jdW1lbnRFbGVtZW50LCB3ZSA9IC9ea2V5LywgQ2UgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sIFRlID0gL14oW14uXSopKD86XC4oLispfCkvOyBmdW5jdGlvbiBFZSgpIHsgcmV0dXJuICEwIH0gZnVuY3Rpb24gTmUoKSB7IHJldHVybiAhMSB9IGZ1bmN0aW9uIGtlKCkgeyB0cnkgeyByZXR1cm4gci5hY3RpdmVFbGVtZW50IH0gY2F0Y2ggKGUpIHsgfSB9IGZ1bmN0aW9uIEFlKGUsIHQsIG4sIHIsIGksIG8pIHsgdmFyIGEsIHU7IGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCkgeyAic3RyaW5nIiAhPSB0eXBlb2YgbiAmJiAociA9IHIgfHwgbiwgbiA9IHZvaWQgMCk7IGZvciAodSBpbiB0KSBBZShlLCB1LCBuLCByLCB0W3VdLCBvKTsgcmV0dXJuIGUgfSBpZiAobnVsbCA9PSByICYmIG51bGwgPT0gaSA/IChpID0gbiwgciA9IG4gPSB2b2lkIDApIDogbnVsbCA9PSBpICYmICgic3RyaW5nIiA9PSB0eXBlb2YgbiA/IChpID0gciwgciA9IHZvaWQgMCkgOiAoaSA9IHIsIHIgPSBuLCBuID0gdm9pZCAwKSksICExID09PSBpKSBpID0gTmU7IGVsc2UgaWYgKCFpKSByZXR1cm4gZTsgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSBpLCAoaSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiB3KCkub2ZmKGUpLCBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfSkuZ3VpZCA9IGEuZ3VpZCB8fCAoYS5ndWlkID0gdy5ndWlkKyspKSwgZS5lYWNoKGZ1bmN0aW9uICgpIHsgdy5ldmVudC5hZGQodGhpcywgdCwgaSwgciwgbikgfSkgfSB3LmV2ZW50ID0geyBnbG9iYWw6IHt9LCBhZGQ6IGZ1bmN0aW9uIChlLCB0LCBuLCByLCBpKSB7IHZhciBvLCBhLCB1LCBzLCBsLCBjLCBmLCBkLCBwLCBoLCBnLCB2ID0gSy5nZXQoZSk7IGlmICh2KSB7IG4uaGFuZGxlciAmJiAobiA9IChvID0gbikuaGFuZGxlciwgaSA9IG8uc2VsZWN0b3IpLCBpICYmIHcuZmluZC5tYXRjaGVzU2VsZWN0b3IoeGUsIGkpLCBuLmd1aWQgfHwgKG4uZ3VpZCA9IHcuZ3VpZCsrKSwgKHMgPSB2LmV2ZW50cykgfHwgKHMgPSB2LmV2ZW50cyA9IHt9KSwgKGEgPSB2LmhhbmRsZSkgfHwgKGEgPSB2LmhhbmRsZSA9IGZ1bmN0aW9uICh0KSB7IHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgdyAmJiB3LmV2ZW50LnRyaWdnZXJlZCAhPT0gdC50eXBlID8gdy5ldmVudC5kaXNwYXRjaC5hcHBseShlLCBhcmd1bWVudHMpIDogdm9pZCAwIH0pLCBsID0gKHQgPSAodCB8fCAiIikubWF0Y2goSSkgfHwgWyIiXSkubGVuZ3RoOyB3aGlsZSAobC0tKSBwID0gZyA9ICh1ID0gVGUuZXhlYyh0W2xdKSB8fCBbXSlbMV0sIGggPSAodVsyXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIHAgJiYgKGYgPSB3LmV2ZW50LnNwZWNpYWxbcF0gfHwge30sIHAgPSAoaSA/IGYuZGVsZWdhdGVUeXBlIDogZi5iaW5kVHlwZSkgfHwgcCwgZiA9IHcuZXZlbnQuc3BlY2lhbFtwXSB8fCB7fSwgYyA9IHcuZXh0ZW5kKHsgdHlwZTogcCwgb3JpZ1R5cGU6IGcsIGRhdGE6IHIsIGhhbmRsZXI6IG4sIGd1aWQ6IG4uZ3VpZCwgc2VsZWN0b3I6IGksIG5lZWRzQ29udGV4dDogaSAmJiB3LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksIG5hbWVzcGFjZTogaC5qb2luKCIuIikgfSwgbyksIChkID0gc1twXSkgfHwgKChkID0gc1twXSA9IFtdKS5kZWxlZ2F0ZUNvdW50ID0gMCwgZi5zZXR1cCAmJiAhMSAhPT0gZi5zZXR1cC5jYWxsKGUsIHIsIGgsIGEpIHx8IGUuYWRkRXZlbnRMaXN0ZW5lciAmJiBlLmFkZEV2ZW50TGlzdGVuZXIocCwgYSkpLCBmLmFkZCAmJiAoZi5hZGQuY2FsbChlLCBjKSwgYy5oYW5kbGVyLmd1aWQgfHwgKGMuaGFuZGxlci5ndWlkID0gbi5ndWlkKSksIGkgPyBkLnNwbGljZShkLmRlbGVnYXRlQ291bnQrKywgMCwgYykgOiBkLnB1c2goYyksIHcuZXZlbnQuZ2xvYmFsW3BdID0gITApIH0gfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSwgdCwgbiwgciwgaSkgeyB2YXIgbywgYSwgdSwgcywgbCwgYywgZiwgZCwgcCwgaCwgZywgdiA9IEsuaGFzRGF0YShlKSAmJiBLLmdldChlKTsgaWYgKHYgJiYgKHMgPSB2LmV2ZW50cykpIHsgbCA9ICh0ID0gKHQgfHwgIiIpLm1hdGNoKEkpIHx8IFsiIl0pLmxlbmd0aDsgd2hpbGUgKGwtLSkgaWYgKHUgPSBUZS5leGVjKHRbbF0pIHx8IFtdLCBwID0gZyA9IHVbMV0sIGggPSAodVsyXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIHApIHsgZiA9IHcuZXZlbnQuc3BlY2lhbFtwXSB8fCB7fSwgZCA9IHNbcCA9IChyID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBwXSB8fCBbXSwgdSA9IHVbMl0gJiYgbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIGEgPSBvID0gZC5sZW5ndGg7IHdoaWxlIChvLS0pIGMgPSBkW29dLCAhaSAmJiBnICE9PSBjLm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBjLmd1aWQgfHwgdSAmJiAhdS50ZXN0KGMubmFtZXNwYWNlKSB8fCByICYmIHIgIT09IGMuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWMuc2VsZWN0b3IpIHx8IChkLnNwbGljZShvLCAxKSwgYy5zZWxlY3RvciAmJiBkLmRlbGVnYXRlQ291bnQtLSAsIGYucmVtb3ZlICYmIGYucmVtb3ZlLmNhbGwoZSwgYykpOyBhICYmICFkLmxlbmd0aCAmJiAoZi50ZWFyZG93biAmJiAhMSAhPT0gZi50ZWFyZG93bi5jYWxsKGUsIGgsIHYuaGFuZGxlKSB8fCB3LnJlbW92ZUV2ZW50KGUsIHAsIHYuaGFuZGxlKSwgZGVsZXRlIHNbcF0pIH0gZWxzZSBmb3IgKHAgaW4gcykgdy5ldmVudC5yZW1vdmUoZSwgcCArIHRbbF0sIG4sIHIsICEwKTsgdy5pc0VtcHR5T2JqZWN0KHMpICYmIEsucmVtb3ZlKGUsICJoYW5kbGUgZXZlbnRzIikgfSB9LCBkaXNwYXRjaDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSB3LmV2ZW50LmZpeChlKSwgbiwgciwgaSwgbywgYSwgdSwgcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSwgbCA9IChLLmdldCh0aGlzLCAiZXZlbnRzIikgfHwge30pW3QudHlwZV0gfHwgW10sIGMgPSB3LmV2ZW50LnNwZWNpYWxbdC50eXBlXSB8fCB7fTsgZm9yIChzWzBdID0gdCwgbiA9IDE7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspc1tuXSA9IGFyZ3VtZW50c1tuXTsgaWYgKHQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzLCAhYy5wcmVEaXNwYXRjaCB8fCAhMSAhPT0gYy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsIHQpKSB7IHUgPSB3LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgdCwgbCksIG4gPSAwOyB3aGlsZSAoKG8gPSB1W24rK10pICYmICF0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsgdC5jdXJyZW50VGFyZ2V0ID0gby5lbGVtLCByID0gMDsgd2hpbGUgKChhID0gby5oYW5kbGVyc1tyKytdKSAmJiAhdC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSB0LnJuYW1lc3BhY2UgJiYgIXQucm5hbWVzcGFjZS50ZXN0KGEubmFtZXNwYWNlKSB8fCAodC5oYW5kbGVPYmogPSBhLCB0LmRhdGEgPSBhLmRhdGEsIHZvaWQgMCAhPT0gKGkgPSAoKHcuZXZlbnQuc3BlY2lhbFthLm9yaWdUeXBlXSB8fCB7fSkuaGFuZGxlIHx8IGEuaGFuZGxlcikuYXBwbHkoby5lbGVtLCBzKSkgJiYgITEgPT09ICh0LnJlc3VsdCA9IGkpICYmICh0LnByZXZlbnREZWZhdWx0KCksIHQuc3RvcFByb3BhZ2F0aW9uKCkpKSB9IHJldHVybiBjLnBvc3REaXNwYXRjaCAmJiBjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsIHQpLCB0LnJlc3VsdCB9IH0sIGhhbmRsZXJzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciwgaSwgbywgYSwgdSA9IFtdLCBzID0gdC5kZWxlZ2F0ZUNvdW50LCBsID0gZS50YXJnZXQ7IGlmIChzICYmIGwubm9kZVR5cGUgJiYgISgiY2xpY2siID09PSBlLnR5cGUgJiYgZS5idXR0b24gPj0gMSkpIGZvciAoOyBsICE9PSB0aGlzOyBsID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpaWYgKDEgPT09IGwubm9kZVR5cGUgJiYgKCJjbGljayIgIT09IGUudHlwZSB8fCAhMCAhPT0gbC5kaXNhYmxlZCkpIHsgZm9yIChvID0gW10sIGEgPSB7fSwgbiA9IDA7IG4gPCBzOyBuKyspdm9pZCAwID09PSBhW2kgPSAociA9IHRbbl0pLnNlbGVjdG9yICsgIiAiXSAmJiAoYVtpXSA9IHIubmVlZHNDb250ZXh0ID8gdyhpLCB0aGlzKS5pbmRleChsKSA+IC0xIDogdy5maW5kKGksIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgYVtpXSAmJiBvLnB1c2gocik7IG8ubGVuZ3RoICYmIHUucHVzaCh7IGVsZW06IGwsIGhhbmRsZXJzOiBvIH0pIH0gcmV0dXJuIGwgPSB0aGlzLCBzIDwgdC5sZW5ndGggJiYgdS5wdXNoKHsgZWxlbTogbCwgaGFuZGxlcnM6IHQuc2xpY2UocykgfSksIHUgfSwgYWRkUHJvcDogZnVuY3Rpb24gKGUsIHQpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuRXZlbnQucHJvdG90eXBlLCBlLCB7IGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCBnZXQ6IGcodCkgPyBmdW5jdGlvbiAoKSB7IGlmICh0aGlzLm9yaWdpbmFsRXZlbnQpIHJldHVybiB0KHRoaXMub3JpZ2luYWxFdmVudCkgfSA6IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFtlXSB9LCBzZXQ6IGZ1bmN0aW9uICh0KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBlLCB7IGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITAsIHZhbHVlOiB0IH0pIH0gfSkgfSwgZml4OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVt3LmV4cGFuZG9dID8gZSA6IG5ldyB3LkV2ZW50KGUpIH0sIHNwZWNpYWw6IHsgbG9hZDogeyBub0J1YmJsZTogITAgfSwgZm9jdXM6IHsgdHJpZ2dlcjogZnVuY3Rpb24gKCkgeyBpZiAodGhpcyAhPT0ga2UoKSAmJiB0aGlzLmZvY3VzKSByZXR1cm4gdGhpcy5mb2N1cygpLCAhMSB9LCBkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIiB9LCBibHVyOiB7IHRyaWdnZXI6IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMgPT09IGtlKCkgJiYgdGhpcy5ibHVyKSByZXR1cm4gdGhpcy5ibHVyKCksICExIH0sIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IiB9LCBjbGljazogeyB0cmlnZ2VyOiBmdW5jdGlvbiAoKSB7IGlmICgiY2hlY2tib3giID09PSB0aGlzLnR5cGUgJiYgdGhpcy5jbGljayAmJiBEKHRoaXMsICJpbnB1dCIpKSByZXR1cm4gdGhpcy5jbGljaygpLCAhMSB9LCBfZGVmYXVsdDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIEQoZS50YXJnZXQsICJhIikgfSB9LCBiZWZvcmV1bmxvYWQ6IHsgcG9zdERpc3BhdGNoOiBmdW5jdGlvbiAoZSkgeyB2b2lkIDAgIT09IGUucmVzdWx0ICYmIGUub3JpZ2luYWxFdmVudCAmJiAoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZS5yZXN1bHQpIH0gfSB9IH0sIHcucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIG4pIH0sIHcuRXZlbnQgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoISh0aGlzIGluc3RhbmNlb2Ygdy5FdmVudCkpIHJldHVybiBuZXcgdy5FdmVudChlLCB0KTsgZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5hbEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZCB8fCB2b2lkIDAgPT09IGUuZGVmYXVsdFByZXZlbnRlZCAmJiAhMSA9PT0gZS5yZXR1cm5WYWx1ZSA/IEVlIDogTmUsIHRoaXMudGFyZ2V0ID0gZS50YXJnZXQgJiYgMyA9PT0gZS50YXJnZXQubm9kZVR5cGUgPyBlLnRhcmdldC5wYXJlbnROb2RlIDogZS50YXJnZXQsIHRoaXMuY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCwgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gZS5yZWxhdGVkVGFyZ2V0KSA6IHRoaXMudHlwZSA9IGUsIHQgJiYgdy5leHRlbmQodGhpcywgdCksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpLCB0aGlzW3cuZXhwYW5kb10gPSAhMCB9LCB3LkV2ZW50LnByb3RvdHlwZSA9IHsgY29uc3RydWN0b3I6IHcuRXZlbnQsIGlzRGVmYXVsdFByZXZlbnRlZDogTmUsIGlzUHJvcGFnYXRpb25TdG9wcGVkOiBOZSwgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IE5lLCBpc1NpbXVsYXRlZDogITEsIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OyB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IEVlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUucHJldmVudERlZmF1bHQoKSB9LCBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7IHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBFZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BQcm9wYWdhdGlvbigpIH0sIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IEVlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkgfSB9LCB3LmVhY2goeyBhbHRLZXk6ICEwLCBidWJibGVzOiAhMCwgY2FuY2VsYWJsZTogITAsIGNoYW5nZWRUb3VjaGVzOiAhMCwgY3RybEtleTogITAsIGRldGFpbDogITAsIGV2ZW50UGhhc2U6ICEwLCBtZXRhS2V5OiAhMCwgcGFnZVg6ICEwLCBwYWdlWTogITAsIHNoaWZ0S2V5OiAhMCwgdmlldzogITAsICJjaGFyIjogITAsIGNoYXJDb2RlOiAhMCwga2V5OiAhMCwga2V5Q29kZTogITAsIGJ1dHRvbjogITAsIGJ1dHRvbnM6ICEwLCBjbGllbnRYOiAhMCwgY2xpZW50WTogITAsIG9mZnNldFg6ICEwLCBvZmZzZXRZOiAhMCwgcG9pbnRlcklkOiAhMCwgcG9pbnRlclR5cGU6ICEwLCBzY3JlZW5YOiAhMCwgc2NyZWVuWTogITAsIHRhcmdldFRvdWNoZXM6ICEwLCB0b0VsZW1lbnQ6ICEwLCB0b3VjaGVzOiAhMCwgd2hpY2g6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5idXR0b247IHJldHVybiBudWxsID09IGUud2hpY2ggJiYgd2UudGVzdChlLnR5cGUpID8gbnVsbCAhPSBlLmNoYXJDb2RlID8gZS5jaGFyQ29kZSA6IGUua2V5Q29kZSA6ICFlLndoaWNoICYmIHZvaWQgMCAhPT0gdCAmJiBDZS50ZXN0KGUudHlwZSkgPyAxICYgdCA/IDEgOiAyICYgdCA/IDMgOiA0ICYgdCA/IDIgOiAwIDogZS53aGljaCB9IH0sIHcuZXZlbnQuYWRkUHJvcCksIHcuZWFjaCh7IG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLCBtb3VzZWxlYXZlOiAibW91c2VvdXQiLCBwb2ludGVyZW50ZXI6ICJwb2ludGVyb3ZlciIsIHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiIH0sIGZ1bmN0aW9uIChlLCB0KSB7IHcuZXZlbnQuc3BlY2lhbFtlXSA9IHsgZGVsZWdhdGVUeXBlOiB0LCBiaW5kVHlwZTogdCwgaGFuZGxlOiBmdW5jdGlvbiAoZSkgeyB2YXIgbiwgciA9IHRoaXMsIGkgPSBlLnJlbGF0ZWRUYXJnZXQsIG8gPSBlLmhhbmRsZU9iajsgcmV0dXJuIGkgJiYgKGkgPT09IHIgfHwgdy5jb250YWlucyhyLCBpKSkgfHwgKGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4gfSB9IH0pLCB3LmZuLmV4dGVuZCh7IG9uOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gQWUodGhpcywgZSwgdCwgbiwgcikgfSwgb25lOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gQWUodGhpcywgZSwgdCwgbiwgciwgMSkgfSwgb2ZmOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaTsgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCAmJiBlLmhhbmRsZU9iaikgcmV0dXJuIHIgPSBlLmhhbmRsZU9iaiwgdyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2UgPyByLm9yaWdUeXBlICsgIi4iICsgci5uYW1lc3BhY2UgOiByLm9yaWdUeXBlLCByLnNlbGVjdG9yLCByLmhhbmRsZXIpLCB0aGlzOyBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHsgZm9yIChpIGluIGUpIHRoaXMub2ZmKGksIHQsIGVbaV0pOyByZXR1cm4gdGhpcyB9IHJldHVybiAhMSAhPT0gdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0IHx8IChuID0gdCwgdCA9IHZvaWQgMCksICExID09PSBuICYmIChuID0gTmUpLCB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB3LmV2ZW50LnJlbW92ZSh0aGlzLCBlLCBuLCB0KSB9KSB9IH0pOyB2YXIgRGUgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksIFNlID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksIExlID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksIGplID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nOyBmdW5jdGlvbiBxZShlLCB0KSB7IHJldHVybiBEKGUsICJ0YWJsZSIpICYmIEQoMTEgIT09IHQubm9kZVR5cGUgPyB0IDogdC5maXJzdENoaWxkLCAidHIiKSA/IHcoZSkuY2hpbGRyZW4oInRib2R5IilbMF0gfHwgZSA6IGUgfSBmdW5jdGlvbiBPZShlKSB7IHJldHVybiBlLnR5cGUgPSAobnVsbCAhPT0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgKyAiLyIgKyBlLnR5cGUsIGUgfSBmdW5jdGlvbiBQZShlKSB7IHJldHVybiAidHJ1ZS8iID09PSAoZS50eXBlIHx8ICIiKS5zbGljZSgwLCA1KSA/IGUudHlwZSA9IGUudHlwZS5zbGljZSg1KSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksIGUgfSBmdW5jdGlvbiBIZShlLCB0KSB7IHZhciBuLCByLCBpLCBvLCBhLCB1LCBzLCBsOyBpZiAoMSA9PT0gdC5ub2RlVHlwZSkgeyBpZiAoSy5oYXNEYXRhKGUpICYmIChvID0gSy5hY2Nlc3MoZSksIGEgPSBLLnNldCh0LCBvKSwgbCA9IG8uZXZlbnRzKSkgeyBkZWxldGUgYS5oYW5kbGUsIGEuZXZlbnRzID0ge307IGZvciAoaSBpbiBsKSBmb3IgKG4gPSAwLCByID0gbFtpXS5sZW5ndGg7IG4gPCByOyBuKyspdy5ldmVudC5hZGQodCwgaSwgbFtpXVtuXSkgfSBKLmhhc0RhdGEoZSkgJiYgKHUgPSBKLmFjY2VzcyhlKSwgcyA9IHcuZXh0ZW5kKHt9LCB1KSwgSi5zZXQodCwgcykpIH0gfSBmdW5jdGlvbiBJZShlLCB0KSB7IHZhciBuID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyAiaW5wdXQiID09PSBuICYmIGRlLnRlc3QoZS50eXBlKSA/IHQuY2hlY2tlZCA9IGUuY2hlY2tlZCA6ICJpbnB1dCIgIT09IG4gJiYgInRleHRhcmVhIiAhPT0gbiB8fCAodC5kZWZhdWx0VmFsdWUgPSBlLmRlZmF1bHRWYWx1ZSkgfSBmdW5jdGlvbiBSZShlLCB0LCBuLCByKSB7IHQgPSBhLmFwcGx5KFtdLCB0KTsgdmFyIGksIG8sIHUsIHMsIGwsIGMsIGYgPSAwLCBkID0gZS5sZW5ndGgsIHAgPSBkIC0gMSwgdiA9IHRbMF0sIHkgPSBnKHYpOyBpZiAoeSB8fCBkID4gMSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdiAmJiAhaC5jaGVja0Nsb25lICYmIExlLnRlc3QodikpIHJldHVybiBlLmVhY2goZnVuY3Rpb24gKGkpIHsgdmFyIG8gPSBlLmVxKGkpOyB5ICYmICh0WzBdID0gdi5jYWxsKHRoaXMsIGksIG8uaHRtbCgpKSksIFJlKG8sIHQsIG4sIHIpIH0pOyBpZiAoZCAmJiAoaSA9IGJlKHQsIGVbMF0ub3duZXJEb2N1bWVudCwgITEsIGUsIHIpLCBvID0gaS5maXJzdENoaWxkLCAxID09PSBpLmNoaWxkTm9kZXMubGVuZ3RoICYmIChpID0gbyksIG8gfHwgcikpIHsgZm9yIChzID0gKHUgPSB3Lm1hcCh2ZShpLCAic2NyaXB0IiksIE9lKSkubGVuZ3RoOyBmIDwgZDsgZisrKWwgPSBpLCBmICE9PSBwICYmIChsID0gdy5jbG9uZShsLCAhMCwgITApLCBzICYmIHcubWVyZ2UodSwgdmUobCwgInNjcmlwdCIpKSksIG4uY2FsbChlW2ZdLCBsLCBmKTsgaWYgKHMpIGZvciAoYyA9IHVbdS5sZW5ndGggLSAxXS5vd25lckRvY3VtZW50LCB3Lm1hcCh1LCBQZSksIGYgPSAwOyBmIDwgczsgZisrKWwgPSB1W2ZdLCBoZS50ZXN0KGwudHlwZSB8fCAiIikgJiYgIUsuYWNjZXNzKGwsICJnbG9iYWxFdmFsIikgJiYgdy5jb250YWlucyhjLCBsKSAmJiAobC5zcmMgJiYgIm1vZHVsZSIgIT09IChsLnR5cGUgfHwgIiIpLnRvTG93ZXJDYXNlKCkgPyB3Ll9ldmFsVXJsICYmIHcuX2V2YWxVcmwobC5zcmMpIDogbShsLnRleHRDb250ZW50LnJlcGxhY2UoamUsICIiKSwgYywgbCkpIH0gcmV0dXJuIGUgfSBmdW5jdGlvbiBCZShlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSB0ID8gdy5maWx0ZXIodCwgZSkgOiBlLCBvID0gMDsgbnVsbCAhPSAociA9IGlbb10pOyBvKyspbiB8fCAxICE9PSByLm5vZGVUeXBlIHx8IHcuY2xlYW5EYXRhKHZlKHIpKSwgci5wYXJlbnROb2RlICYmIChuICYmIHcuY29udGFpbnMoci5vd25lckRvY3VtZW50LCByKSAmJiB5ZSh2ZShyLCAic2NyaXB0IikpLCByLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpOyByZXR1cm4gZSB9IHcuZXh0ZW5kKHsgaHRtbFByZWZpbHRlcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucmVwbGFjZShEZSwgIjwkMT48LyQyPiIpIH0sIGNsb25lOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSwgdSA9IGUuY2xvbmVOb2RlKCEwKSwgcyA9IHcuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKTsgaWYgKCEoaC5ub0Nsb25lQ2hlY2tlZCB8fCAxICE9PSBlLm5vZGVUeXBlICYmIDExICE9PSBlLm5vZGVUeXBlIHx8IHcuaXNYTUxEb2MoZSkpKSBmb3IgKGEgPSB2ZSh1KSwgciA9IDAsIGkgPSAobyA9IHZlKGUpKS5sZW5ndGg7IHIgPCBpOyByKyspSWUob1tyXSwgYVtyXSk7IGlmICh0KSBpZiAobikgZm9yIChvID0gbyB8fCB2ZShlKSwgYSA9IGEgfHwgdmUodSksIHIgPSAwLCBpID0gby5sZW5ndGg7IHIgPCBpOyByKyspSGUob1tyXSwgYVtyXSk7IGVsc2UgSGUoZSwgdSk7IHJldHVybiAoYSA9IHZlKHUsICJzY3JpcHQiKSkubGVuZ3RoID4gMCAmJiB5ZShhLCAhcyAmJiB2ZShlLCAic2NyaXB0IikpLCB1IH0sIGNsZWFuRGF0YTogZnVuY3Rpb24gKGUpIHsgZm9yICh2YXIgdCwgbiwgciwgaSA9IHcuZXZlbnQuc3BlY2lhbCwgbyA9IDA7IHZvaWQgMCAhPT0gKG4gPSBlW29dKTsgbysrKWlmIChZKG4pKSB7IGlmICh0ID0gbltLLmV4cGFuZG9dKSB7IGlmICh0LmV2ZW50cykgZm9yIChyIGluIHQuZXZlbnRzKSBpW3JdID8gdy5ldmVudC5yZW1vdmUobiwgcikgOiB3LnJlbW92ZUV2ZW50KG4sIHIsIHQuaGFuZGxlKTsgbltLLmV4cGFuZG9dID0gdm9pZCAwIH0gbltKLmV4cGFuZG9dICYmIChuW0ouZXhwYW5kb10gPSB2b2lkIDApIH0gfSB9KSwgdy5mbi5leHRlbmQoeyBkZXRhY2g6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBCZSh0aGlzLCBlLCAhMCkgfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gQmUodGhpcywgZSkgfSwgdGV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF8odGhpcywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IHcudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uICgpIHsgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8ICh0aGlzLnRleHRDb250ZW50ID0gZSkgfSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgYXBwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IDEgIT09IHRoaXMubm9kZVR5cGUgJiYgMTEgIT09IHRoaXMubm9kZVR5cGUgJiYgOSAhPT0gdGhpcy5ub2RlVHlwZSB8fCBxZSh0aGlzLCBlKS5hcHBlbmRDaGlsZChlKSB9KSB9LCBwcmVwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IGlmICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09PSB0aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpIHsgdmFyIHQgPSBxZSh0aGlzLCBlKTsgdC5pbnNlcnRCZWZvcmUoZSwgdC5maXJzdENoaWxkKSB9IH0pIH0sIGJlZm9yZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzKSB9KSB9LCBhZnRlcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzLm5leHRTaWJsaW5nKSB9KSB9LCBlbXB0eTogZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlLCB0ID0gMDsgbnVsbCAhPSAoZSA9IHRoaXNbdF0pOyB0KyspMSA9PT0gZS5ub2RlVHlwZSAmJiAody5jbGVhbkRhdGEodmUoZSwgITEpKSwgZS50ZXh0Q29udGVudCA9ICIiKTsgcmV0dXJuIHRoaXMgfSwgY2xvbmU6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBlID0gbnVsbCAhPSBlICYmIGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwgdGhpcy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5jbG9uZSh0aGlzLCBlLCB0KSB9KSB9LCBodG1sOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gXyh0aGlzLCBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXNbMF0gfHwge30sIG4gPSAwLCByID0gdGhpcy5sZW5ndGg7IGlmICh2b2lkIDAgPT09IGUgJiYgMSA9PT0gdC5ub2RlVHlwZSkgcmV0dXJuIHQuaW5uZXJIVE1MOyBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgIVNlLnRlc3QoZSkgJiYgIWdlWyhwZS5leGVjKGUpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkgeyBlID0gdy5odG1sUHJlZmlsdGVyKGUpOyB0cnkgeyBmb3IgKDsgbiA8IHI7IG4rKykxID09PSAodCA9IHRoaXNbbl0gfHwge30pLm5vZGVUeXBlICYmICh3LmNsZWFuRGF0YSh2ZSh0LCAhMSkpLCB0LmlubmVySFRNTCA9IGUpOyB0ID0gMCB9IGNhdGNoIChlKSB7IH0gfSB0ICYmIHRoaXMuZW1wdHkoKS5hcHBlbmQoZSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBbXTsgcmV0dXJuIFJlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSB0aGlzLnBhcmVudE5vZGU7IHcuaW5BcnJheSh0aGlzLCBlKSA8IDAgJiYgKHcuY2xlYW5EYXRhKHZlKHRoaXMpKSwgbiAmJiBuLnJlcGxhY2VDaGlsZCh0LCB0aGlzKSkgfSwgZSkgfSB9KSwgdy5lYWNoKHsgYXBwZW5kVG86ICJhcHBlbmQiLCBwcmVwZW5kVG86ICJwcmVwZW5kIiwgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIgfSwgZnVuY3Rpb24gKGUsIHQpIHsgdy5mbltlXSA9IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4sIHIgPSBbXSwgaSA9IHcoZSksIG8gPSBpLmxlbmd0aCAtIDEsIGEgPSAwOyBhIDw9IG87IGErKyluID0gYSA9PT0gbyA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwgdyhpW2FdKVt0XShuKSwgdS5hcHBseShyLCBuLmdldCgpKTsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHIpIH0gfSk7IHZhciBNZSA9IG5ldyBSZWdFeHAoIl4oIiArIHJlICsgIikoPyFweClbYS16JV0rJCIsICJpIiksIFdlID0gZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7IHJldHVybiBuICYmIG4ub3BlbmVyIHx8IChuID0gZSksIG4uZ2V0Q29tcHV0ZWRTdHlsZSh0KSB9LCAkZSA9IG5ldyBSZWdFeHAob2Uuam9pbigifCIpLCAiaSIpOyAhZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiB0KCkgeyBpZiAoYykgeyBsLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsIGMuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIiwgeGUuYXBwZW5kQ2hpbGQobCkuYXBwZW5kQ2hpbGQoYyk7IHZhciB0ID0gZS5nZXRDb21wdXRlZFN0eWxlKGMpOyBpID0gIjElIiAhPT0gdC50b3AsIHMgPSAxMiA9PT0gbih0Lm1hcmdpbkxlZnQpLCBjLnN0eWxlLnJpZ2h0ID0gIjYwJSIsIHUgPSAzNiA9PT0gbih0LnJpZ2h0KSwgbyA9IDM2ID09PSBuKHQud2lkdGgpLCBjLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiwgYSA9IDM2ID09PSBjLm9mZnNldFdpZHRoIHx8ICJhYnNvbHV0ZSIsIHhlLnJlbW92ZUNoaWxkKGwpLCBjID0gbnVsbCB9IH0gZnVuY3Rpb24gbihlKSB7IHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpIH0gdmFyIGksIG8sIGEsIHUsIHMsIGwgPSByLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCBjID0gci5jcmVhdGVFbGVtZW50KCJkaXYiKTsgYy5zdHlsZSAmJiAoYy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCIsIGMuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICIiLCBoLmNsZWFyQ2xvbmVTdHlsZSA9ICJjb250ZW50LWJveCIgPT09IGMuc3R5bGUuYmFja2dyb3VuZENsaXAsIHcuZXh0ZW5kKGgsIHsgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgbyB9LCBwaXhlbEJveFN0eWxlczogZnVuY3Rpb24gKCkgeyByZXR1cm4gdCgpLCB1IH0sIHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgaSB9LCByZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQoKSwgcyB9LCBzY3JvbGxib3hTaXplOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0KCksIGEgfSB9KSkgfSgpOyBmdW5jdGlvbiBGZShlLCB0LCBuKSB7IHZhciByLCBpLCBvLCBhLCB1ID0gZS5zdHlsZTsgcmV0dXJuIChuID0gbiB8fCBXZShlKSkgJiYgKCIiICE9PSAoYSA9IG4uZ2V0UHJvcGVydHlWYWx1ZSh0KSB8fCBuW3RdKSB8fCB3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgfHwgKGEgPSB3LnN0eWxlKGUsIHQpKSwgIWgucGl4ZWxCb3hTdHlsZXMoKSAmJiBNZS50ZXN0KGEpICYmICRlLnRlc3QodCkgJiYgKHIgPSB1LndpZHRoLCBpID0gdS5taW5XaWR0aCwgbyA9IHUubWF4V2lkdGgsIHUubWluV2lkdGggPSB1Lm1heFdpZHRoID0gdS53aWR0aCA9IGEsIGEgPSBuLndpZHRoLCB1LndpZHRoID0gciwgdS5taW5XaWR0aCA9IGksIHUubWF4V2lkdGggPSBvKSksIHZvaWQgMCAhPT0gYSA/IGEgKyAiIiA6IGEgfSBmdW5jdGlvbiB6ZShlLCB0KSB7IHJldHVybiB7IGdldDogZnVuY3Rpb24gKCkgeyBpZiAoIWUoKSkgcmV0dXJuICh0aGlzLmdldCA9IHQpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IGRlbGV0ZSB0aGlzLmdldCB9IH0gfSB2YXIgX2UgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sIFVlID0gL14tLS8sIFZlID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwgWGUgPSB7IGxldHRlclNwYWNpbmc6ICIwIiwgZm9udFdlaWdodDogIjQwMCIgfSwgUWUgPSBbIldlYmtpdCIsICJNb3oiLCAibXMiXSwgWWUgPSByLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlOyBmdW5jdGlvbiBHZShlKSB7IGlmIChlIGluIFllKSByZXR1cm4gZTsgdmFyIHQgPSBlWzBdLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpLCBuID0gUWUubGVuZ3RoOyB3aGlsZSAobi0tKSBpZiAoKGUgPSBRZVtuXSArIHQpIGluIFllKSByZXR1cm4gZSB9IGZ1bmN0aW9uIEtlKGUpIHsgdmFyIHQgPSB3LmNzc1Byb3BzW2VdOyByZXR1cm4gdCB8fCAodCA9IHcuY3NzUHJvcHNbZV0gPSBHZShlKSB8fCBlKSwgdCB9IGZ1bmN0aW9uIEplKGUsIHQsIG4pIHsgdmFyIHIgPSBpZS5leGVjKHQpOyByZXR1cm4gciA/IE1hdGgubWF4KDAsIHJbMl0gLSAobiB8fCAwKSkgKyAoclszXSB8fCAicHgiKSA6IHQgfSBmdW5jdGlvbiBaZShlLCB0LCBuLCByLCBpLCBvKSB7IHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLCB1ID0gMCwgcyA9IDA7IGlmIChuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQiKSkgcmV0dXJuIDA7IGZvciAoOyBhIDwgNDsgYSArPSAyKSJtYXJnaW4iID09PSBuICYmIChzICs9IHcuY3NzKGUsIG4gKyBvZVthXSwgITAsIGkpKSwgciA/ICgiY29udGVudCIgPT09IG4gJiYgKHMgLT0gdy5jc3MoZSwgInBhZGRpbmciICsgb2VbYV0sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmIChzIC09IHcuY3NzKGUsICJib3JkZXIiICsgb2VbYV0gKyAiV2lkdGgiLCAhMCwgaSkpKSA6IChzICs9IHcuY3NzKGUsICJwYWRkaW5nIiArIG9lW2FdLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiA/IHMgKz0gdy5jc3MoZSwgImJvcmRlciIgKyBvZVthXSArICJXaWR0aCIsICEwLCBpKSA6IHUgKz0gdy5jc3MoZSwgImJvcmRlciIgKyBvZVthXSArICJXaWR0aCIsICEwLCBpKSk7IHJldHVybiAhciAmJiBvID49IDAgJiYgKHMgKz0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSAtIG8gLSBzIC0gdSAtIC41KSkpLCBzIH0gZnVuY3Rpb24gZXQoZSwgdCwgbikgeyB2YXIgciA9IFdlKGUpLCBpID0gRmUoZSwgdCwgciksIG8gPSAiYm9yZGVyLWJveCIgPT09IHcuY3NzKGUsICJib3hTaXppbmciLCAhMSwgciksIGEgPSBvOyBpZiAoTWUudGVzdChpKSkgeyBpZiAoIW4pIHJldHVybiBpOyBpID0gImF1dG8iIH0gcmV0dXJuIGEgPSBhICYmIChoLmJveFNpemluZ1JlbGlhYmxlKCkgfHwgaSA9PT0gZS5zdHlsZVt0XSksICgiYXV0byIgPT09IGkgfHwgIXBhcnNlRmxvYXQoaSkgJiYgImlubGluZSIgPT09IHcuY3NzKGUsICJkaXNwbGF5IiwgITEsIHIpKSAmJiAoaSA9IGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSwgYSA9ICEwKSwgKGkgPSBwYXJzZUZsb2F0KGkpIHx8IDApICsgWmUoZSwgdCwgbiB8fCAobyA/ICJib3JkZXIiIDogImNvbnRlbnQiKSwgYSwgciwgaSkgKyAicHgiIH0gdy5leHRlbmQoeyBjc3NIb29rczogeyBvcGFjaXR5OiB7IGdldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKHQpIHsgdmFyIG4gPSBGZShlLCAib3BhY2l0eSIpOyByZXR1cm4gIiIgPT09IG4gPyAiMSIgOiBuIH0gfSB9IH0sIGNzc051bWJlcjogeyBhbmltYXRpb25JdGVyYXRpb25Db3VudDogITAsIGNvbHVtbkNvdW50OiAhMCwgZmlsbE9wYWNpdHk6ICEwLCBmbGV4R3JvdzogITAsIGZsZXhTaHJpbms6ICEwLCBmb250V2VpZ2h0OiAhMCwgbGluZUhlaWdodDogITAsIG9wYWNpdHk6ICEwLCBvcmRlcjogITAsIG9ycGhhbnM6ICEwLCB3aWRvd3M6ICEwLCB6SW5kZXg6ICEwLCB6b29tOiAhMCB9LCBjc3NQcm9wczoge30sIHN0eWxlOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyBpZiAoZSAmJiAzICE9PSBlLm5vZGVUeXBlICYmIDggIT09IGUubm9kZVR5cGUgJiYgZS5zdHlsZSkgeyB2YXIgaSwgbywgYSwgdSA9IFEodCksIHMgPSBVZS50ZXN0KHQpLCBsID0gZS5zdHlsZTsgaWYgKHMgfHwgKHQgPSBLZSh1KSksIGEgPSB3LmNzc0hvb2tzW3RdIHx8IHcuY3NzSG9va3NbdV0sIHZvaWQgMCA9PT0gbikgcmV0dXJuIGEgJiYgImdldCIgaW4gYSAmJiB2b2lkIDAgIT09IChpID0gYS5nZXQoZSwgITEsIHIpKSA/IGkgOiBsW3RdOyAic3RyaW5nIiA9PSAobyA9IHR5cGVvZiBuKSAmJiAoaSA9IGllLmV4ZWMobikpICYmIGlbMV0gJiYgKG4gPSBzZShlLCB0LCBpKSwgbyA9ICJudW1iZXIiKSwgbnVsbCAhPSBuICYmIG4gPT09IG4gJiYgKCJudW1iZXIiID09PSBvICYmIChuICs9IGkgJiYgaVszXSB8fCAody5jc3NOdW1iZXJbdV0gPyAiIiA6ICJweCIpKSwgaC5jbGVhckNsb25lU3R5bGUgfHwgIiIgIT09IG4gfHwgMCAhPT0gdC5pbmRleE9mKCJiYWNrZ3JvdW5kIikgfHwgKGxbdF0gPSAiaW5oZXJpdCIpLCBhICYmICJzZXQiIGluIGEgJiYgdm9pZCAwID09PSAobiA9IGEuc2V0KGUsIG4sIHIpKSB8fCAocyA/IGwuc2V0UHJvcGVydHkodCwgbikgOiBsW3RdID0gbikpIH0gfSwgY3NzOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSwgdSA9IFEodCk7IHJldHVybiBVZS50ZXN0KHQpIHx8ICh0ID0gS2UodSkpLCAoYSA9IHcuY3NzSG9va3NbdF0gfHwgdy5jc3NIb29rc1t1XSkgJiYgImdldCIgaW4gYSAmJiAoaSA9IGEuZ2V0KGUsICEwLCBuKSksIHZvaWQgMCA9PT0gaSAmJiAoaSA9IEZlKGUsIHQsIHIpKSwgIm5vcm1hbCIgPT09IGkgJiYgdCBpbiBYZSAmJiAoaSA9IFhlW3RdKSwgIiIgPT09IG4gfHwgbiA/IChvID0gcGFyc2VGbG9hdChpKSwgITAgPT09IG4gfHwgaXNGaW5pdGUobykgPyBvIHx8IDAgOiBpKSA6IGkgfSB9KSwgdy5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIl0sIGZ1bmN0aW9uIChlLCB0KSB7IHcuY3NzSG9va3NbdF0gPSB7IGdldDogZnVuY3Rpb24gKGUsIG4sIHIpIHsgaWYgKG4pIHJldHVybiAhX2UudGVzdCh3LmNzcyhlLCAiZGlzcGxheSIpKSB8fCBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPyBldChlLCB0LCByKSA6IHVlKGUsIFZlLCBmdW5jdGlvbiAoKSB7IHJldHVybiBldChlLCB0LCByKSB9KSB9LCBzZXQ6IGZ1bmN0aW9uIChlLCBuLCByKSB7IHZhciBpLCBvID0gV2UoZSksIGEgPSAiYm9yZGVyLWJveCIgPT09IHcuY3NzKGUsICJib3hTaXppbmciLCAhMSwgbyksIHUgPSByICYmIFplKGUsIHQsIHIsIGEsIG8pOyByZXR1cm4gYSAmJiBoLnNjcm9sbGJveFNpemUoKSA9PT0gby5wb3NpdGlvbiAmJiAodSAtPSBNYXRoLmNlaWwoZVsib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSldIC0gcGFyc2VGbG9hdChvW3RdKSAtIFplKGUsIHQsICJib3JkZXIiLCAhMSwgbykgLSAuNSkpLCB1ICYmIChpID0gaWUuZXhlYyhuKSkgJiYgInB4IiAhPT0gKGlbM10gfHwgInB4IikgJiYgKGUuc3R5bGVbdF0gPSBuLCBuID0gdy5jc3MoZSwgdCkpLCBKZShlLCBuLCB1KSB9IH0gfSksIHcuY3NzSG9va3MubWFyZ2luTGVmdCA9IHplKGgucmVsaWFibGVNYXJnaW5MZWZ0LCBmdW5jdGlvbiAoZSwgdCkgeyBpZiAodCkgcmV0dXJuIChwYXJzZUZsb2F0KEZlKGUsICJtYXJnaW5MZWZ0IikpIHx8IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIHVlKGUsIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgfSkpICsgInB4IiB9KSwgdy5lYWNoKHsgbWFyZ2luOiAiIiwgcGFkZGluZzogIiIsIGJvcmRlcjogIldpZHRoIiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmNzc0hvb2tzW2UgKyB0XSA9IHsgZXhwYW5kOiBmdW5jdGlvbiAobikgeyBmb3IgKHZhciByID0gMCwgaSA9IHt9LCBvID0gInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnNwbGl0KCIgIikgOiBbbl07IHIgPCA0OyByKyspaVtlICsgb2Vbcl0gKyB0XSA9IG9bcl0gfHwgb1tyIC0gMl0gfHwgb1swXTsgcmV0dXJuIGkgfSB9LCAibWFyZ2luIiAhPT0gZSAmJiAody5jc3NIb29rc1tlICsgdF0uc2V0ID0gSmUpIH0pLCB3LmZuLmV4dGVuZCh7IGNzczogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIF8odGhpcywgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSB7fSwgYSA9IDA7IGlmIChBcnJheS5pc0FycmF5KHQpKSB7IGZvciAociA9IFdlKGUpLCBpID0gdC5sZW5ndGg7IGEgPCBpOyBhKyspb1t0W2FdXSA9IHcuY3NzKGUsIHRbYV0sICExLCByKTsgcmV0dXJuIG8gfSByZXR1cm4gdm9pZCAwICE9PSBuID8gdy5zdHlsZShlLCB0LCBuKSA6IHcuY3NzKGUsIHQpIH0sIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9IH0pLCB3LmZuLmRlbGF5ID0gZnVuY3Rpb24gKHQsIG4pIHsgcmV0dXJuIHQgPSB3LmZ4ID8gdy5meC5zcGVlZHNbdF0gfHwgdCA6IHQsIG4gPSBuIHx8ICJmeCIsIHRoaXMucXVldWUobiwgZnVuY3Rpb24gKG4sIHIpIHsgdmFyIGkgPSBlLnNldFRpbWVvdXQobiwgdCk7IHIuc3RvcCA9IGZ1bmN0aW9uICgpIHsgZS5jbGVhclRpbWVvdXQoaSkgfSB9KSB9LCBmdW5jdGlvbiAoKSB7IHZhciBlID0gci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLCB0ID0gci5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChyLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTsgZS50eXBlID0gImNoZWNrYm94IiwgaC5jaGVja09uID0gIiIgIT09IGUudmFsdWUsIGgub3B0U2VsZWN0ZWQgPSB0LnNlbGVjdGVkLCAoZSA9IHIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudmFsdWUgPSAidCIsIGUudHlwZSA9ICJyYWRpbyIsIGgucmFkaW9WYWx1ZSA9ICJ0IiA9PT0gZS52YWx1ZSB9KCk7IHZhciB0dCwgbnQgPSB3LmV4cHIuYXR0ckhhbmRsZTsgdy5mbi5leHRlbmQoeyBhdHRyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gXyh0aGlzLCB3LmF0dHIsIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9LCByZW1vdmVBdHRyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdy5yZW1vdmVBdHRyKHRoaXMsIGUpIH0pIH0gfSksIHcuZXh0ZW5kKHsgYXR0cjogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGUgPyB3LnByb3AoZSwgdCwgbikgOiAoMSA9PT0gbyAmJiB3LmlzWE1MRG9jKGUpIHx8IChpID0gdy5hdHRySG9va3NbdC50b0xvd2VyQ2FzZSgpXSB8fCAody5leHByLm1hdGNoLmJvb2wudGVzdCh0KSA/IHR0IDogdm9pZCAwKSksIHZvaWQgMCAhPT0gbiA/IG51bGwgPT09IG4gPyB2b2lkIHcucmVtb3ZlQXR0cihlLCB0KSA6IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IGkgJiYgImdldCIgaW4gaSAmJiBudWxsICE9PSAociA9IGkuZ2V0KGUsIHQpKSA/IHIgOiBudWxsID09IChyID0gdy5maW5kLmF0dHIoZSwgdCkpID8gdm9pZCAwIDogcikgfSwgYXR0ckhvb2tzOiB7IHR5cGU6IHsgc2V0OiBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoIWgucmFkaW9WYWx1ZSAmJiAicmFkaW8iID09PSB0ICYmIEQoZSwgImlucHV0IikpIHsgdmFyIG4gPSBlLnZhbHVlOyByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0IH0gfSB9IH0sIHJlbW92ZUF0dHI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHQgJiYgdC5tYXRjaChJKTsgaWYgKGkgJiYgMSA9PT0gZS5ub2RlVHlwZSkgd2hpbGUgKG4gPSBpW3IrK10pIGUucmVtb3ZlQXR0cmlidXRlKG4pIH0gfSksIHR0ID0geyBzZXQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiAhMSA9PT0gdCA/IHcucmVtb3ZlQXR0cihlLCBuKSA6IGUuc2V0QXR0cmlidXRlKG4sIG4pLCBuIH0gfSwgdy5lYWNoKHcuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IG50W3RdIHx8IHcuZmluZC5hdHRyOyBudFt0XSA9IGZ1bmN0aW9uIChlLCB0LCByKSB7IHZhciBpLCBvLCBhID0gdC50b0xvd2VyQ2FzZSgpOyByZXR1cm4gciB8fCAobyA9IG50W2FdLCBudFthXSA9IGksIGkgPSBudWxsICE9IG4oZSwgdCwgcikgPyBhIDogbnVsbCwgbnRbYV0gPSBvKSwgaSB9IH0pOyB2YXIgcnQgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLCBpdCA9IC9eKD86YXxhcmVhKSQvaTsgdy5mbi5leHRlbmQoeyBwcm9wOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gXyh0aGlzLCB3LnByb3AsIGUsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKSB9LCByZW1vdmVQcm9wOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgZGVsZXRlIHRoaXNbdy5wcm9wRml4W2VdIHx8IGVdIH0pIH0gfSksIHcuZXh0ZW5kKHsgcHJvcDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAxID09PSBvICYmIHcuaXNYTUxEb2MoZSkgfHwgKHQgPSB3LnByb3BGaXhbdF0gfHwgdCwgaSA9IHcucHJvcEhvb2tzW3RdKSwgdm9pZCAwICE9PSBuID8gaSAmJiAic2V0IiBpbiBpICYmIHZvaWQgMCAhPT0gKHIgPSBpLnNldChlLCBuLCB0KSkgPyByIDogZVt0XSA9IG4gOiBpICYmICJnZXQiIGluIGkgJiYgbnVsbCAhPT0gKHIgPSBpLmdldChlLCB0KSkgPyByIDogZVt0XSB9LCBwcm9wSG9va3M6IHsgdGFiSW5kZXg6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHcuZmluZC5hdHRyKGUsICJ0YWJpbmRleCIpOyByZXR1cm4gdCA/IHBhcnNlSW50KHQsIDEwKSA6IHJ0LnRlc3QoZS5ub2RlTmFtZSkgfHwgaXQudGVzdChlLm5vZGVOYW1lKSAmJiBlLmhyZWYgPyAwIDogLTEgfSB9IH0sIHByb3BGaXg6IHsgImZvciI6ICJodG1sRm9yIiwgImNsYXNzIjogImNsYXNzTmFtZSIgfSB9KSwgaC5vcHRTZWxlY3RlZCB8fCAody5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7IGdldDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbCB9LCBzZXQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5wYXJlbnROb2RlOyB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkgfSB9KSwgdy5lYWNoKFsidGFiSW5kZXgiLCAicmVhZE9ubHkiLCAibWF4TGVuZ3RoIiwgImNlbGxTcGFjaW5nIiwgImNlbGxQYWRkaW5nIiwgInJvd1NwYW4iLCAiY29sU3BhbiIsICJ1c2VNYXAiLCAiZnJhbWVCb3JkZXIiLCAiY29udGVudEVkaXRhYmxlIl0sIGZ1bmN0aW9uICgpIHsgdy5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV0gPSB0aGlzIH0pOyBmdW5jdGlvbiBvdChlKSB7IHJldHVybiAoZS5tYXRjaChJKSB8fCBbXSkuam9pbigiICIpIH0gZnVuY3Rpb24gYXQoZSkgeyByZXR1cm4gZS5nZXRBdHRyaWJ1dGUgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIgfSBmdW5jdGlvbiB1dChlKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGUpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZiBlID8gZS5tYXRjaChJKSB8fCBbXSA6IFtdIH0gdy5mbi5leHRlbmQoeyBhZGRDbGFzczogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIsIGksIG8sIGEsIHUsIHMgPSAwOyBpZiAoZyhlKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAodCkgeyB3KHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0aGlzLCB0LCBhdCh0aGlzKSkpIH0pOyBpZiAoKHQgPSB1dChlKSkubGVuZ3RoKSB3aGlsZSAobiA9IHRoaXNbcysrXSkgaWYgKGkgPSBhdChuKSwgciA9IDEgPT09IG4ubm9kZVR5cGUgJiYgIiAiICsgb3QoaSkgKyAiICIpIHsgYSA9IDA7IHdoaWxlIChvID0gdFthKytdKSByLmluZGV4T2YoIiAiICsgbyArICIgIikgPCAwICYmIChyICs9IG8gKyAiICIpOyBpICE9PSAodSA9IG90KHIpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB1KSB9IHJldHVybiB0aGlzIH0sIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgdSwgcyA9IDA7IGlmIChnKGUpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7IHcodGhpcykucmVtb3ZlQ2xhc3MoZS5jYWxsKHRoaXMsIHQsIGF0KHRoaXMpKSkgfSk7IGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCAiIik7IGlmICgodCA9IHV0KGUpKS5sZW5ndGgpIHdoaWxlIChuID0gdGhpc1tzKytdKSBpZiAoaSA9IGF0KG4pLCByID0gMSA9PT0gbi5ub2RlVHlwZSAmJiAiICIgKyBvdChpKSArICIgIikgeyBhID0gMDsgd2hpbGUgKG8gPSB0W2ErK10pIHdoaWxlIChyLmluZGV4T2YoIiAiICsgbyArICIgIikgPiAtMSkgciA9IHIucmVwbGFjZSgiICIgKyBvICsgIiAiLCAiICIpOyBpICE9PSAodSA9IG90KHIpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB1KSB9IHJldHVybiB0aGlzIH0sIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHR5cGVvZiBlLCByID0gInN0cmluZyIgPT09IG4gfHwgQXJyYXkuaXNBcnJheShlKTsgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiByID8gdCA/IHRoaXMuYWRkQ2xhc3MoZSkgOiB0aGlzLnJlbW92ZUNsYXNzKGUpIDogZyhlKSA/IHRoaXMuZWFjaChmdW5jdGlvbiAobikgeyB3KHRoaXMpLnRvZ2dsZUNsYXNzKGUuY2FsbCh0aGlzLCBuLCBhdCh0aGlzKSwgdCksIHQpIH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgdmFyIHQsIGksIG8sIGE7IGlmIChyKSB7IGkgPSAwLCBvID0gdyh0aGlzKSwgYSA9IHV0KGUpOyB3aGlsZSAodCA9IGFbaSsrXSkgby5oYXNDbGFzcyh0KSA/IG8ucmVtb3ZlQ2xhc3ModCkgOiBvLmFkZENsYXNzKHQpIH0gZWxzZSB2b2lkIDAgIT09IGUgJiYgImJvb2xlYW4iICE9PSBuIHx8ICgodCA9IGF0KHRoaXMpKSAmJiBLLnNldCh0aGlzLCAiX19jbGFzc05hbWVfXyIsIHQpLCB0aGlzLnNldEF0dHJpYnV0ZSAmJiB0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB0IHx8ICExID09PSBlID8gIiIgOiBLLmdldCh0aGlzLCAiX19jbGFzc05hbWVfXyIpIHx8ICIiKSkgfSkgfSwgaGFzQ2xhc3M6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuLCByID0gMDsgdCA9ICIgIiArIGUgKyAiICI7IHdoaWxlIChuID0gdGhpc1tyKytdKSBpZiAoMSA9PT0gbi5ub2RlVHlwZSAmJiAoIiAiICsgb3QoYXQobikpICsgIiAiKS5pbmRleE9mKHQpID4gLTEpIHJldHVybiAhMDsgcmV0dXJuICExIH0gfSk7IHZhciBzdCA9IC9cci9nOyB3LmZuLmV4dGVuZCh7IHZhbDogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIsIGkgPSB0aGlzWzBdOyB7IGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gciA9IGcoZSksIHRoaXMuZWFjaChmdW5jdGlvbiAobikgeyB2YXIgaTsgMSA9PT0gdGhpcy5ub2RlVHlwZSAmJiAobnVsbCA9PSAoaSA9IHIgPyBlLmNhbGwodGhpcywgbiwgdyh0aGlzKS52YWwoKSkgOiBlKSA/IGkgPSAiIiA6ICJudW1iZXIiID09IHR5cGVvZiBpID8gaSArPSAiIiA6IEFycmF5LmlzQXJyYXkoaSkgJiYgKGkgPSB3Lm1hcChpLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiBlICsgIiIgfSkpLCAodCA9IHcudmFsSG9va3NbdGhpcy50eXBlXSB8fCB3LnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJzZXQiIGluIHQgJiYgdm9pZCAwICE9PSB0LnNldCh0aGlzLCBpLCAidmFsdWUiKSB8fCAodGhpcy52YWx1ZSA9IGkpKSB9KTsgaWYgKGkpIHJldHVybiAodCA9IHcudmFsSG9va3NbaS50eXBlXSB8fCB3LnZhbEhvb2tzW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJnZXQiIGluIHQgJiYgdm9pZCAwICE9PSAobiA9IHQuZ2V0KGksICJ2YWx1ZSIpKSA/IG4gOiAic3RyaW5nIiA9PSB0eXBlb2YgKG4gPSBpLnZhbHVlKSA/IG4ucmVwbGFjZShzdCwgIiIpIDogbnVsbCA9PSBuID8gIiIgOiBuIH0gfSB9KSwgdy5leHRlbmQoeyB2YWxIb29rczogeyBvcHRpb246IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHcuZmluZC5hdHRyKGUsICJ2YWx1ZSIpOyByZXR1cm4gbnVsbCAhPSB0ID8gdCA6IG90KHcudGV4dChlKSkgfSB9LCBzZWxlY3Q6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSA9IGUub3B0aW9ucywgbyA9IGUuc2VsZWN0ZWRJbmRleCwgYSA9ICJzZWxlY3Qtb25lIiA9PT0gZS50eXBlLCB1ID0gYSA/IG51bGwgOiBbXSwgcyA9IGEgPyBvICsgMSA6IGkubGVuZ3RoOyBmb3IgKHIgPSBvIDwgMCA/IHMgOiBhID8gbyA6IDA7IHIgPCBzOyByKyspaWYgKCgobiA9IGlbcl0pLnNlbGVjdGVkIHx8IHIgPT09IG8pICYmICFuLmRpc2FibGVkICYmICghbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFEKG4ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIikpKSB7IGlmICh0ID0gdyhuKS52YWwoKSwgYSkgcmV0dXJuIHQ7IHUucHVzaCh0KSB9IHJldHVybiB1IH0sIHNldDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGkgPSBlLm9wdGlvbnMsIG8gPSB3Lm1ha2VBcnJheSh0KSwgYSA9IGkubGVuZ3RoOyB3aGlsZSAoYS0tKSAoKHIgPSBpW2FdKS5zZWxlY3RlZCA9IHcuaW5BcnJheSh3LnZhbEhvb2tzLm9wdGlvbi5nZXQociksIG8pID4gLTEpICYmIChuID0gITApOyByZXR1cm4gbiB8fCAoZS5zZWxlY3RlZEluZGV4ID0gLTEpLCBvIH0gfSB9IH0pLCB3LmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbiAoKSB7IHcudmFsSG9va3NbdGhpc10gPSB7IHNldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSB3LmluQXJyYXkodyhlKS52YWwoKSwgdCkgPiAtMSB9IH0sIGguY2hlY2tPbiB8fCAody52YWxIb29rc1t0aGlzXS5nZXQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PT0gZS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPyAib24iIDogZS52YWx1ZSB9KSB9KSwgaC5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gZTsgdmFyIGx0ID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLCBjdCA9IGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfTsgdy5leHRlbmQody5ldmVudCwgeyB0cmlnZ2VyOiBmdW5jdGlvbiAodCwgbiwgaSwgbykgeyB2YXIgYSwgdSwgcywgbCwgYywgZCwgcCwgaCwgeSA9IFtpIHx8IHJdLCBtID0gZi5jYWxsKHQsICJ0eXBlIikgPyB0LnR5cGUgOiB0LCBiID0gZi5jYWxsKHQsICJuYW1lc3BhY2UiKSA/IHQubmFtZXNwYWNlLnNwbGl0KCIuIikgOiBbXTsgaWYgKHUgPSBoID0gcyA9IGkgPSBpIHx8IHIsIDMgIT09IGkubm9kZVR5cGUgJiYgOCAhPT0gaS5ub2RlVHlwZSAmJiAhbHQudGVzdChtICsgdy5ldmVudC50cmlnZ2VyZWQpICYmIChtLmluZGV4T2YoIi4iKSA+IC0xICYmIChtID0gKGIgPSBtLnNwbGl0KCIuIikpLnNoaWZ0KCksIGIuc29ydCgpKSwgYyA9IG0uaW5kZXhPZigiOiIpIDwgMCAmJiAib24iICsgbSwgdCA9IHRbdy5leHBhbmRvXSA/IHQgOiBuZXcgdy5FdmVudChtLCAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0KSwgdC5pc1RyaWdnZXIgPSBvID8gMiA6IDMsIHQubmFtZXNwYWNlID0gYi5qb2luKCIuIiksIHQucm5hbWVzcGFjZSA9IHQubmFtZXNwYWNlID8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBiLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCB0LnJlc3VsdCA9IHZvaWQgMCwgdC50YXJnZXQgfHwgKHQudGFyZ2V0ID0gaSksIG4gPSBudWxsID09IG4gPyBbdF0gOiB3Lm1ha2VBcnJheShuLCBbdF0pLCBwID0gdy5ldmVudC5zcGVjaWFsW21dIHx8IHt9LCBvIHx8ICFwLnRyaWdnZXIgfHwgITEgIT09IHAudHJpZ2dlci5hcHBseShpLCBuKSkpIHsgaWYgKCFvICYmICFwLm5vQnViYmxlICYmICF2KGkpKSB7IGZvciAobCA9IHAuZGVsZWdhdGVUeXBlIHx8IG0sIGx0LnRlc3QobCArIG0pIHx8ICh1ID0gdS5wYXJlbnROb2RlKTsgdTsgdSA9IHUucGFyZW50Tm9kZSl5LnB1c2godSksIHMgPSB1OyBzID09PSAoaS5vd25lckRvY3VtZW50IHx8IHIpICYmIHkucHVzaChzLmRlZmF1bHRWaWV3IHx8IHMucGFyZW50V2luZG93IHx8IGUpIH0gYSA9IDA7IHdoaWxlICgodSA9IHlbYSsrXSkgJiYgIXQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgaCA9IHUsIHQudHlwZSA9IGEgPiAxID8gbCA6IHAuYmluZFR5cGUgfHwgbSwgKGQgPSAoSy5nZXQodSwgImV2ZW50cyIpIHx8IHt9KVt0LnR5cGVdICYmIEsuZ2V0KHUsICJoYW5kbGUiKSkgJiYgZC5hcHBseSh1LCBuKSwgKGQgPSBjICYmIHVbY10pICYmIGQuYXBwbHkgJiYgWSh1KSAmJiAodC5yZXN1bHQgPSBkLmFwcGx5KHUsIG4pLCAhMSA9PT0gdC5yZXN1bHQgJiYgdC5wcmV2ZW50RGVmYXVsdCgpKTsgcmV0dXJuIHQudHlwZSA9IG0sIG8gfHwgdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBwLl9kZWZhdWx0ICYmICExICE9PSBwLl9kZWZhdWx0LmFwcGx5KHkucG9wKCksIG4pIHx8ICFZKGkpIHx8IGMgJiYgZyhpW21dKSAmJiAhdihpKSAmJiAoKHMgPSBpW2NdKSAmJiAoaVtjXSA9IG51bGwpLCB3LmV2ZW50LnRyaWdnZXJlZCA9IG0sIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBoLmFkZEV2ZW50TGlzdGVuZXIobSwgY3QpLCBpW21dKCksIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBoLnJlbW92ZUV2ZW50TGlzdGVuZXIobSwgY3QpLCB3LmV2ZW50LnRyaWdnZXJlZCA9IHZvaWQgMCwgcyAmJiAoaVtjXSA9IHMpKSwgdC5yZXN1bHQgfSB9LCBzaW11bGF0ZTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIgPSB3LmV4dGVuZChuZXcgdy5FdmVudCwgbiwgeyB0eXBlOiBlLCBpc1NpbXVsYXRlZDogITAgfSk7IHcuZXZlbnQudHJpZ2dlcihyLCBudWxsLCB0KSB9IH0pLCB3LmZuLmV4dGVuZCh7IHRyaWdnZXI6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB3LmV2ZW50LnRyaWdnZXIoZSwgdCwgdGhpcykgfSkgfSwgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gdGhpc1swXTsgaWYgKG4pIHJldHVybiB3LmV2ZW50LnRyaWdnZXIoZSwgdCwgbiwgITApIH0gfSksIGguZm9jdXNpbiB8fCB3LmVhY2goeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gZnVuY3Rpb24gKGUpIHsgdy5ldmVudC5zaW11bGF0ZSh0LCBlLnRhcmdldCwgdy5ldmVudC5maXgoZSkpIH07IHcuZXZlbnQuc3BlY2lhbFt0XSA9IHsgc2V0dXA6IGZ1bmN0aW9uICgpIHsgdmFyIHIgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywgaSA9IEsuYWNjZXNzKHIsIHQpOyBpIHx8IHIuYWRkRXZlbnRMaXN0ZW5lcihlLCBuLCAhMCksIEsuYWNjZXNzKHIsIHQsIChpIHx8IDApICsgMSkgfSwgdGVhcmRvd246IGZ1bmN0aW9uICgpIHsgdmFyIHIgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywgaSA9IEsuYWNjZXNzKHIsIHQpIC0gMTsgaSA/IEsuYWNjZXNzKHIsIHQsIGkpIDogKHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBuLCAhMCksIEsucmVtb3ZlKHIsIHQpKSB9IH0gfSk7IHZhciBmdCA9IC9cW1xdJC8sIGR0ID0gL1xyP1xuL2csIHB0ID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLCBodCA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsgZnVuY3Rpb24gZ3QoZSwgdCwgbiwgcikgeyB2YXIgaTsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHcuZWFjaCh0LCBmdW5jdGlvbiAodCwgaSkgeyBuIHx8IGZ0LnRlc3QoZSkgPyByKGUsIGkpIDogZ3QoZSArICJbIiArICgib2JqZWN0IiA9PSB0eXBlb2YgaSAmJiBudWxsICE9IGkgPyB0IDogIiIpICsgIl0iLCBpLCBuLCByKSB9KTsgZWxzZSBpZiAobiB8fCAib2JqZWN0IiAhPT0gYih0KSkgcihlLCB0KTsgZWxzZSBmb3IgKGkgaW4gdCkgZ3QoZSArICJbIiArIGkgKyAiXSIsIHRbaV0sIG4sIHIpIH0gdy5wYXJhbSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gW10sIGkgPSBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGcodCkgPyB0KCkgOiB0OyByW3IubGVuZ3RoXSA9IGVuY29kZVVSSUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudChudWxsID09IG4gPyAiIiA6IG4pIH07IGlmIChBcnJheS5pc0FycmF5KGUpIHx8IGUuanF1ZXJ5ICYmICF3LmlzUGxhaW5PYmplY3QoZSkpIHcuZWFjaChlLCBmdW5jdGlvbiAoKSB7IGkodGhpcy5uYW1lLCB0aGlzLnZhbHVlKSB9KTsgZWxzZSBmb3IgKG4gaW4gZSkgZ3QobiwgZVtuXSwgdCwgaSk7IHJldHVybiByLmpvaW4oIiYiKSB9LCB3LmZuLmV4dGVuZCh7IHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpIH0sIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoKSB7IHZhciBlID0gdy5wcm9wKHRoaXMsICJlbGVtZW50cyIpOyByZXR1cm4gZSA/IHcubWFrZUFycmF5KGUpIDogdGhpcyB9KS5maWx0ZXIoZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMudHlwZTsgcmV0dXJuIHRoaXMubmFtZSAmJiAhdyh0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgaHQudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAhcHQudGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICFkZS50ZXN0KGUpKSB9KS5tYXAoZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB3KHRoaXMpLnZhbCgpOyByZXR1cm4gbnVsbCA9PSBuID8gbnVsbCA6IEFycmF5LmlzQXJyYXkobikgPyB3Lm1hcChuLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4geyBuYW1lOiB0Lm5hbWUsIHZhbHVlOiBlLnJlcGxhY2UoZHQsICJcclxuIikgfSB9KSA6IHsgbmFtZTogdC5uYW1lLCB2YWx1ZTogbi5yZXBsYWNlKGR0LCAiXHJcbiIpIH0gfSkuZ2V0KCkgfSB9KSwgdy5mbi5leHRlbmQoeyB3cmFwQWxsOiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuIHRoaXNbMF0gJiYgKGcoZSkgJiYgKGUgPSBlLmNhbGwodGhpc1swXSkpLCB0ID0gdyhlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSwgdGhpc1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLCB0Lm1hcChmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpczsgd2hpbGUgKGUuZmlyc3RFbGVtZW50Q2hpbGQpIGUgPSBlLmZpcnN0RWxlbWVudENoaWxkOyByZXR1cm4gZSB9KS5hcHBlbmQodGhpcykpLCB0aGlzIH0sIHdyYXBJbm5lcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGcoZSkgPyB0aGlzLmVhY2goZnVuY3Rpb24gKHQpIHsgdyh0aGlzKS53cmFwSW5uZXIoZS5jYWxsKHRoaXMsIHQpKSB9KSA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHZhciB0ID0gdyh0aGlzKSwgbiA9IHQuY29udGVudHMoKTsgbi5sZW5ndGggPyBuLndyYXBBbGwoZSkgOiB0LmFwcGVuZChlKSB9KSB9LCB3cmFwOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGcoZSk7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKG4pIHsgdyh0aGlzKS53cmFwQWxsKHQgPyBlLmNhbGwodGhpcywgbikgOiBlKSB9KSB9LCB1bndyYXA6IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLnBhcmVudChlKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uICgpIHsgdyh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpIH0pLCB0aGlzIH0gfSksIHcuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiAhdy5leHByLnBzZXVkb3MudmlzaWJsZShlKSB9LCB3LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhKGUub2Zmc2V0V2lkdGggfHwgZS5vZmZzZXRIZWlnaHQgfHwgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkgfSwgaC5jcmVhdGVIVE1MRG9jdW1lbnQgPSBmdW5jdGlvbiAoKSB7IHZhciBlID0gci5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHk7IHJldHVybiBlLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IGUuY2hpbGROb2Rlcy5sZW5ndGggfSgpLCB3LnBhcnNlSFRNTCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIFtdOyAiYm9vbGVhbiIgPT0gdHlwZW9mIHQgJiYgKG4gPSB0LCB0ID0gITEpOyB2YXIgaSwgbywgYTsgcmV0dXJuIHQgfHwgKGguY3JlYXRlSFRNTERvY3VtZW50ID8gKChpID0gKHQgPSByLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZiA9IHIubG9jYXRpb24uaHJlZiwgdC5oZWFkLmFwcGVuZENoaWxkKGkpKSA6IHQgPSByKSwgbyA9IFMuZXhlYyhlKSwgYSA9ICFuICYmIFtdLCBvID8gW3QuY3JlYXRlRWxlbWVudChvWzFdKV0gOiAobyA9IGJlKFtlXSwgdCwgYSksIGEgJiYgYS5sZW5ndGggJiYgdyhhKS5yZW1vdmUoKSwgdy5tZXJnZShbXSwgby5jaGlsZE5vZGVzKSkgfSwgdy5vZmZzZXQgPSB7IHNldE9mZnNldDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8sIGEsIHUsIHMsIGwsIGMgPSB3LmNzcyhlLCAicG9zaXRpb24iKSwgZiA9IHcoZSksIGQgPSB7fTsgInN0YXRpYyIgPT09IGMgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKSwgdSA9IGYub2Zmc2V0KCksIG8gPSB3LmNzcyhlLCAidG9wIiksIHMgPSB3LmNzcyhlLCAibGVmdCIpLCAobCA9ICgiYWJzb2x1dGUiID09PSBjIHx8ICJmaXhlZCIgPT09IGMpICYmIChvICsgcykuaW5kZXhPZigiYXV0byIpID4gLTEpID8gKGEgPSAociA9IGYucG9zaXRpb24oKSkudG9wLCBpID0gci5sZWZ0KSA6IChhID0gcGFyc2VGbG9hdChvKSB8fCAwLCBpID0gcGFyc2VGbG9hdChzKSB8fCAwKSwgZyh0KSAmJiAodCA9IHQuY2FsbChlLCBuLCB3LmV4dGVuZCh7fSwgdSkpKSwgbnVsbCAhPSB0LnRvcCAmJiAoZC50b3AgPSB0LnRvcCAtIHUudG9wICsgYSksIG51bGwgIT0gdC5sZWZ0ICYmIChkLmxlZnQgPSB0LmxlZnQgLSB1LmxlZnQgKyBpKSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGQpIDogZi5jc3MoZCkgfSB9LCB3LmZuLmV4dGVuZCh7IG9mZnNldDogZnVuY3Rpb24gKGUpIHsgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB2b2lkIDAgPT09IGUgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7IHcub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0KSB9KTsgdmFyIHQsIG4sIHIgPSB0aGlzWzBdOyBpZiAocikgcmV0dXJuIHIuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPyAodCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIG4gPSByLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsIHsgdG9wOiB0LnRvcCArIG4ucGFnZVlPZmZzZXQsIGxlZnQ6IHQubGVmdCArIG4ucGFnZVhPZmZzZXQgfSkgOiB7IHRvcDogMCwgbGVmdDogMCB9IH0sIHBvc2l0aW9uOiBmdW5jdGlvbiAoKSB7IGlmICh0aGlzWzBdKSB7IHZhciBlLCB0LCBuLCByID0gdGhpc1swXSwgaSA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07IGlmICgiZml4ZWQiID09PSB3LmNzcyhyLCAicG9zaXRpb24iKSkgdCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGVsc2UgeyB0ID0gdGhpcy5vZmZzZXQoKSwgbiA9IHIub3duZXJEb2N1bWVudCwgZSA9IHIub2Zmc2V0UGFyZW50IHx8IG4uZG9jdW1lbnRFbGVtZW50OyB3aGlsZSAoZSAmJiAoZSA9PT0gbi5ib2R5IHx8IGUgPT09IG4uZG9jdW1lbnRFbGVtZW50KSAmJiAic3RhdGljIiA9PT0gdy5jc3MoZSwgInBvc2l0aW9uIikpIGUgPSBlLnBhcmVudE5vZGU7IGUgJiYgZSAhPT0gciAmJiAxID09PSBlLm5vZGVUeXBlICYmICgoaSA9IHcoZSkub2Zmc2V0KCkpLnRvcCArPSB3LmNzcyhlLCAiYm9yZGVyVG9wV2lkdGgiLCAhMCksIGkubGVmdCArPSB3LmNzcyhlLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKSB9IHJldHVybiB7IHRvcDogdC50b3AgLSBpLnRvcCAtIHcuY3NzKHIsICJtYXJnaW5Ub3AiLCAhMCksIGxlZnQ6IHQubGVmdCAtIGkubGVmdCAtIHcuY3NzKHIsICJtYXJnaW5MZWZ0IiwgITApIH0gfSB9LCBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsgd2hpbGUgKGUgJiYgInN0YXRpYyIgPT09IHcuY3NzKGUsICJwb3NpdGlvbiIpKSBlID0gZS5vZmZzZXRQYXJlbnQ7IHJldHVybiBlIHx8IHhlIH0pIH0gfSksIHcuZWFjaCh7IHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9ICJwYWdlWU9mZnNldCIgPT09IHQ7IHcuZm5bZV0gPSBmdW5jdGlvbiAocikgeyByZXR1cm4gXyh0aGlzLCBmdW5jdGlvbiAoZSwgciwgaSkgeyB2YXIgbzsgaWYgKHYoZSkgPyBvID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKG8gPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSBpKSByZXR1cm4gbyA/IG9bdF0gOiBlW3JdOyBvID8gby5zY3JvbGxUbyhuID8gby5wYWdlWE9mZnNldCA6IGksIG4gPyBpIDogby5wYWdlWU9mZnNldCkgOiBlW3JdID0gaSB9LCBlLCByLCBhcmd1bWVudHMubGVuZ3RoKSB9IH0pLCB3LmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbiAoZSwgdCkgeyB3LmNzc0hvb2tzW3RdID0gemUoaC5waXhlbFBvc2l0aW9uLCBmdW5jdGlvbiAoZSwgbikgeyBpZiAobikgcmV0dXJuIG4gPSBGZShlLCB0KSwgTWUudGVzdChuKSA/IHcoZSkucG9zaXRpb24oKVt0XSArICJweCIgOiBuIH0pIH0pLCB3LmVhY2goeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRoIiB9LCBmdW5jdGlvbiAoZSwgdCkgeyB3LmVhY2goeyBwYWRkaW5nOiAiaW5uZXIiICsgZSwgY29udGVudDogdCwgIiI6ICJvdXRlciIgKyBlIH0sIGZ1bmN0aW9uIChuLCByKSB7IHcuZm5bcl0gPSBmdW5jdGlvbiAoaSwgbykgeyB2YXIgYSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKG4gfHwgImJvb2xlYW4iICE9IHR5cGVvZiBpKSwgdSA9IG4gfHwgKCEwID09PSBpIHx8ICEwID09PSBvID8gIm1hcmdpbiIgOiAiYm9yZGVyIik7IHJldHVybiBfKHRoaXMsIGZ1bmN0aW9uICh0LCBuLCBpKSB7IHZhciBvOyByZXR1cm4gdih0KSA/IDAgPT09IHIuaW5kZXhPZigib3V0ZXIiKSA/IHRbImlubmVyIiArIGVdIDogdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBlXSA6IDkgPT09IHQubm9kZVR5cGUgPyAobyA9IHQuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heCh0LmJvZHlbInNjcm9sbCIgKyBlXSwgb1sic2Nyb2xsIiArIGVdLCB0LmJvZHlbIm9mZnNldCIgKyBlXSwgb1sib2Zmc2V0IiArIGVdLCBvWyJjbGllbnQiICsgZV0pKSA6IHZvaWQgMCA9PT0gaSA/IHcuY3NzKHQsIG4sIHUpIDogdy5zdHlsZSh0LCBuLCBpLCB1KSB9LCB0LCBhID8gaSA6IHZvaWQgMCwgYSkgfSB9KSB9KSwgdy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLCBmdW5jdGlvbiAoZSwgdCkgeyB3LmZuW3RdID0gZnVuY3Rpb24gKGUsIG4pIHsgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gdGhpcy5vbih0LCBudWxsLCBlLCBuKSA6IHRoaXMudHJpZ2dlcih0KSB9IH0pLCB3LmZuLmV4dGVuZCh7IGhvdmVyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodCB8fCBlKSB9IH0pLCB3LmZuLmV4dGVuZCh7IGJpbmQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiB0aGlzLm9uKGUsIG51bGwsIHQsIG4pIH0sIHVuYmluZDogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIHRoaXMub2ZmKGUsIG51bGwsIHQpIH0sIGRlbGVnYXRlOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gdGhpcy5vbih0LCBlLCBuLCByKSB9LCB1bmRlbGVnYXRlOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGUsICIqKiIpIDogdGhpcy5vZmYodCwgZSB8fCAiKioiLCBuKSB9IH0pLCB3LnByb3h5ID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGk7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGVbdF0sIHQgPSBlLCBlID0gbiksIGcoZSkpIHJldHVybiByID0gby5jYWxsKGFyZ3VtZW50cywgMiksIGkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlLmFwcGx5KHQgfHwgdGhpcywgci5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykpKSB9LCBpLmd1aWQgPSBlLmd1aWQgPSBlLmd1aWQgfHwgdy5ndWlkKysgLCBpIH0sIHcuaG9sZFJlYWR5ID0gZnVuY3Rpb24gKGUpIHsgZSA/IHcucmVhZHlXYWl0KysgOiB3LnJlYWR5KCEwKSB9LCB3LmlzQXJyYXkgPSBBcnJheS5pc0FycmF5LCB3LnBhcnNlSlNPTiA9IEpTT04ucGFyc2UsIHcubm9kZU5hbWUgPSBELCB3LmlzRnVuY3Rpb24gPSBnLCB3LmlzV2luZG93ID0gdiwgdy5jYW1lbENhc2UgPSBRLCB3LnR5cGUgPSBiLCB3Lm5vdyA9IERhdGUubm93LCB3LmlzTnVtZXJpYyA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gdy50eXBlKGUpOyByZXR1cm4gKCJudW1iZXIiID09PSB0IHx8ICJzdHJpbmciID09PSB0KSAmJiAhaXNOYU4oZSAtIHBhcnNlRmxvYXQoZSkpIH0sICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHcgfSk7IHZhciB2dCA9IGUualF1ZXJ5LCB5dCA9IGUuJDsgcmV0dXJuIHcubm9Db25mbGljdCA9IGZ1bmN0aW9uICh0KSB7IHJldHVybiBlLiQgPT09IHcgJiYgKGUuJCA9IHl0KSwgdCAmJiBlLmpRdWVyeSA9PT0gdyAmJiAoZS5qUXVlcnkgPSB2dCksIHcgfSwgdCB8fCAoZS5qUXVlcnkgPSBlLiQgPSB3KSwgdyB9KTs=\"") - packr.PackJSONBytes("./assets/default", "wails.js", "\"Ly8gV2FpbHMgcnVudGltZSBKUwoKKGZ1bmN0aW9uICgpIHsKCXdpbmRvdy53YWlscyA9IHdpbmRvdy53YWlscyB8fCB7CgkJJDoge30KCX07CgoJLyoqKioqKioqKioqKioqKioqKiBVdGlsaXR5IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gLS0tLS0tLS0tLS0tLS0gUmFuZG9tIC0tLS0tLS0tLS0tLS0tCgkvLyBBd2Vzb21lUmFuZG9tCglmdW5jdGlvbiBjcnlwdG9SYW5kb20oKSB7CgkJdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOwoJCXJldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSlbMF07Cgl9CgoJLy8gTE9MUmFuZG9tCglmdW5jdGlvbiBiYXNpY1JhbmRvbSgpIHsKCQlyZXR1cm4gTWF0aC5yYW5kb20oKSAqIDkwMDcxOTkyNTQ3NDA5OTE7Cgl9CgoJLy8gUGljayBvbmUgYmFzZWQgb24gYnJvd3NlciBjYXBhYmlsaXR5Cgl2YXIgcmFuZG9tRnVuYzsKCWlmICh3aW5kb3cuY3J5cHRvKSB7CgkJcmFuZG9tRnVuYyA9IGNyeXB0b1JhbmRvbTsKCX0gZWxzZSB7CgkJcmFuZG9tRnVuYyA9IGJhc2ljUmFuZG9tOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIElkZW50aWZpZXJzIC0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyKG5hbWUpIHsKCQkvLyBEb24ndCB4c3MgeW91cnNlbGYgOi0pCgkJdHJ5IHsKCQkJbmV3IEZ1bmN0aW9uKCJ2YXIgIiArIG5hbWUpOwoJCQlyZXR1cm4gdHJ1ZQoJCX0gY2F0Y2ggKGUpIHsKCQkJcmV0dXJuIGZhbHNlCgkJfQoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEpTIC0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFkZFNjcmlwdChqcywgY2FsbGJhY2tJRCkgewoJCWNvbnNvbGUubG9nKCJBZGRpbmcgc2NyaXB0OiAiICsganMpCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoJCXNjcmlwdC50ZXh0ID0ganM7CgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoJCWNvbnNvbGUubG9nKCJDYWxsaW5nIGJhY2sgd2l0aDoiICsgY2FsbGJhY2tJRCk7CgkJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KGNhbGxiYWNrSUQpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEhUTUwgLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIHNldERvY3VtZW50KGh0bWwpIHsKCQlkb2N1bWVudC5vcGVuKCk7CgkJZG9jdW1lbnQud3JpdGUoaHRtbCk7CgkJZG9jdW1lbnQuY2xvc2UoKTsKCX0KCgkvLyAtLS0tLS0tLS0tLS0tLSBDU1MgLS0tLS0tLS0tLS0tLS0tCgkvLyBBZGFwdGVkIGZyb20gd2VidmlldyAtIHRoYW5rcyB6c2VyZ2UhCglmdW5jdGlvbiBpbmplY3RDU1MoY3NzKSB7CgkJdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwoJCWVsZW0uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7CgkJaWYgKGVsZW0uc3R5bGVTaGVldCkgewoJCQllbGVtLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzczsKCQl9IGVsc2UgewoJCQllbGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpOwoJCX0KCQl2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsKCQloZWFkLmFwcGVuZENoaWxkKGVsZW0pCgl9CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKiogQmluZGluZ3MgKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl2YXIgYmluZGluZ3NCYXNlUGF0aCA9IHdpbmRvdy53YWlscy4kOwoKCS8vIENyZWF0ZXMgdGhlIHBhdGggZ2l2ZW4gaW4gdGhlIGJpbmRpbmdzIHBhdGgKCWZ1bmN0aW9uIGFkZEJpbmRpbmdQYXRoKHBhdGhTZWN0aW9ucykgewoJCS8vIFN0YXJ0IGF0IHRoZSBiYXNlIHBhdGgKCQl2YXIgY3VycmVudFBhdGggPSBiaW5kaW5nc0Jhc2VQYXRoCgkJLy8gZm9yIGVhY2ggc2VjdGlvbiBvZiB0aGUgZ2l2ZW4gcGF0aAoJCWZvciAodmFyIHNlY3Rpb24gb2YgcGF0aFNlY3Rpb25zKSB7CgoJCQkvLyBJcyBzZWN0aW9uIGEgdmFsaWQgamF2YXNjcmlwdCBpZGVudGlmaWVyPwoJCQlpZiAoIWlzVmFsaWRJZGVudGlmaWVyKHNlY3Rpb24pKSB7CgkJCQl2YXIgZXJyTWVzc2FnZSA9IHNlY3Rpb24gKyAiIGlzIG5vdCBhIHZhbGlkIGphdmFzY3JpcHQgaWRlbnRpZmllci4iCgkJCQl2YXIgZXJyID0gbmV3IEVycm9yKGVyck1lc3NhZ2UpCgkJCQlyZXR1cm4gW251bGwsIGVycl0KCQkJfQoKCQkJLy8gQWRkIGlmIGRvZXNuJ3QgZXhpc3QKCQkJaWYgKCFjdXJyZW50UGF0aFtzZWN0aW9uXSkgewoJCQkJY3VycmVudFBhdGhbc2VjdGlvbl0gPSB7fQoJCQl9CgkJCS8vIHVwZGF0ZSBjdXJyZW50IHBhdGggdG8gbmV3IHBhdGgKCQkJY3VycmVudFBhdGggPSBjdXJyZW50UGF0aFtzZWN0aW9uXQoJCX0KCQlyZXR1cm4gW2N1cnJlbnRQYXRoLCBudWxsXQoJfQoKCWZ1bmN0aW9uIG5ld0JpbmRpbmcoYmluZGluZ05hbWUpIHsKCgkJLy8gR2V0IGFsbCB0aGUgc2VjdGlvbnMgb2YgdGhlIGJpbmRpbmcKCQl2YXIgYmluZGluZ1NlY3Rpb25zID0gYmluZGluZ05hbWUuc3BsaXQoJy4nKTsKCgkJLy8gR2V0IHRoZSBhY3R1YWwgZnVuY3Rpb24vbWV0aG9kIGNhbGwgbmFtZQoJCXZhciBjYWxsTmFtZSA9IGJpbmRpbmdTZWN0aW9ucy5wb3AoKTsKCgkJLy8gQWRkIHBhdGggdG8gYmluZGluZwoJCVtwYXRoVG9CaW5kaW5nLCBlcnJdID0gYWRkQmluZGluZ1BhdGgoYmluZGluZ1NlY3Rpb25zKQoKCQlpZiAoZXJyICE9IG51bGwpIHsKCQkJLy8gV2UgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IKCQkJLy8gd2luZG93LndhaWxzLmxvZy5FcnJvcigiIikKCQkJcmV0dXJuCgkJfQoKCQkvLyBBZGQgYmluZGluZyBjYWxsCgkJcGF0aFRvQmluZGluZ1tjYWxsTmFtZV0gPSBmdW5jdGlvbiAoKSB7CgoJCQkvLyBObyB0aW1lb3V0IGJ5IGRlZmF1bHQKCQkJdmFyIHRpbWVvdXQgPSAwOwoKCQkJLy8gQWN0dWFsIGZ1bmN0aW9uCgkJCWZ1bmN0aW9uIGR5bmFtaWMoKSB7CgkJCQl2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKQoJCQkJcmV0dXJuIGNhbGwoYmluZGluZ05hbWUsIGFyZ3MsIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBBbGxvdyBzZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG5ld1RpbWVvdXQpIHsKCQkJCXRpbWVvdXQgPSBuZXdUaW1lb3V0OwoJCQl9CgoJCQkvLyBBbGxvdyBnZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5nZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkgewoJCQkJcmV0dXJuIHRpbWVvdXQ7CgkJCX0KCgkJCXJldHVybiBkeW5hbWljOwoJCX0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2FsbHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGNhbGxiYWNrcyA9IHt9OwoKCS8vIENhbGwgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHRvIGNhbGwgdGhlIGJpbmRpbmcgd2l0aCB0aGUKCS8vIGdpdmVuIGRhdGEuIEEgcHJvbWlzZSBpcyByZXR1cm5lZCBhbmQgd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKCS8vIGJhY2tlbmQgcmVzcG9uZHMuIFRoaXMgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsCgkvLyBvciByZWplY3RlZCBpZiBhbiBlcnJvciBpcyBwYXNzZWQgYmFjay4KCS8vIFRoZXJlIGlzIGEgdGltZW91dCBtZWNoYW5pc20uIElmIHRoZSBjYWxsIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aGUgZ2l2ZW4KCS8vIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KCglmdW5jdGlvbiBjYWxsKGJpbmRpbmdOYW1lLCBkYXRhLCB0aW1lb3V0KSB7CgoJCS8vIFRpbWVvdXQgaW5maW5pdGUgYnkgZGVmYXVsdAoJCWlmICh0aW1lb3V0ID09IG51bGwgfHwgdGltZW91dCA9PSB1bmRlZmluZWQpIHsKCQkJdGltZW91dCA9IDA7CgkJfQoKCQkvLyBDcmVhdGUgYSBwcm9taXNlCgkJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCgkJCS8vIENyZWF0ZSBhIHVuaXF1ZSBjYWxsYmFja0lECgkJCXZhciBjYWxsYmFja0lEOwoJCQlkbyB7CgkJCQljYWxsYmFja0lEID0gYmluZGluZ05hbWUgKyAiLSIgKyByYW5kb21GdW5jKCk7CgkJCX0gd2hpbGUgKGNhbGxiYWNrc1tjYWxsYmFja0lEXSkKCgkJCS8vIFNldCB0aW1lb3V0CgkJCWlmICh0aW1lb3V0ID4gMCkgewoJCQkJdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlyZWplY3QoRXJyb3IoIkNhbGwgdG8gIiArIGJpbmRpbmdOYW1lICsgIiB0aW1lZCBvdXQuIFJlcXVlc3QgSUQ6ICIgKyBjYWxsYmFja0lEKSkKCQkJCX0sIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBTdG9yZSBjYWxsYmFjawoJCQljYWxsYmFja3NbY2FsbGJhY2tJRF0gPSB7CgkJCQl0aW1lb3V0SGFuZGxlOiB0aW1lb3V0SGFuZGxlLAoJCQkJcmVqZWN0OiByZWplY3QsCgkJCQlyZXNvbHZlOiByZXNvbHZlCgkJCX0KCQkJdHJ5IHsKCQkJCXZhciBwYXlsb2FkZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpCgkJCQkvLyBDcmVhdGUgdGhlIG1lc3NhZ2UKCQkJCW1lc3NhZ2UgPSB7CgkJCQkJdHlwZTogImNhbGwiLAoJCQkJCWNhbGxiYWNraWQ6IGNhbGxiYWNrSUQsCgkJCQkJcGF5bG9hZDogewoJCQkJCQliaW5kaW5nTmFtZTogYmluZGluZ05hbWUsCgkJCQkJCWRhdGE6IHBheWxvYWRkYXRhLAoJCQkJCX0KCQkJCX0KCgkJCQkvLyBNYWtlIHRoZSBjYWxsCgkJCQl2YXIgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpCgkJCQlleHRlcm5hbC5pbnZva2UocGF5bG9hZCk7CgkJCX0gY2F0Y2ggKGUpIHsKCQkJCWNvbnNvbGUuZXJyb3IoZSkKCQkJfQoJCX0pCgl9CgoKCS8vIENhbGxlZCBieSB0aGUgYmFja2VuZCB0byByZXR1cm4gZGF0YSB0byBhIHByZXZpb3VzbHkgY2FsbGVkCgkvLyBiaW5kaW5nIGludm9jYXRpb24KCWZ1bmN0aW9uIGNhbGxiYWNrKGluY29taW5nTWVzc2FnZSkgewoJCS8vIHdhaWxzLmxvZy5kZWJ1ZygiY2FsbGJhY2sgY2FsbGVkIHdpdGg6ICIgKyBpbmNvbWluZ01lc3NhZ2UpCgkJLy8gUGFyc2UgdGhlIG1lc3NhZ2UKCQl2YXIgbWVzc2FnZQoJCS8vIHdhaWxzLmxvZy5kZWJ1ZyhpbmNvbWluZ01lc3NhZ2UpCgkJdHJ5IHsKCQkJbWVzc2FnZSA9IEpTT04ucGFyc2UoaW5jb21pbmdNZXNzYWdlKQoJCX0gY2F0Y2ggKGUpIHsKCQkJd2FpbHMubG9nLmRlYnVnKCJJbnZhbGlkIEpTT04gcGFzc2VkIHRvIGNhbGxiYWNrOiAiICsgZS5tZXNzYWdlKQoJCQl3YWlscy5sb2cuZGVidWcoIk1lc3NhZ2U6ICIgKyBpbmNvbWluZ01lc3NhZ2UpCgkJCXJldHVybgoJCX0KCQljYWxsYmFja0lEID0gbWVzc2FnZS5jYWxsYmFja2lkCgkJY2FsbGJhY2tEYXRhID0gY2FsbGJhY2tzW2NhbGxiYWNrSURdCgkJaWYgKCFjYWxsYmFja0RhdGEpIHsKCQkJY29uc29sZS5lcnJvcigiQ2FsbGJhY2sgJyIgKyBjYWxsYmFja0lEICsgIicgbm90IHJlZ2lzdGVkISEhIikKCQkJcmV0dXJuCgkJfQoJCWNsZWFyVGltZW91dChjYWxsYmFja0RhdGEudGltZW91dEhhbmRsZSkKCQlkZWxldGUgY2FsbGJhY2tzW2NhbGxiYWNrSURdCgkJaWYgKG1lc3NhZ2UuZXJyb3IpIHsKCQkJcmV0dXJuIGNhbGxiYWNrRGF0YS5yZWplY3QobWVzc2FnZS5lcnJvcikKCQl9CgkJcmV0dXJuIGNhbGxiYWNrRGF0YS5yZXNvbHZlKG1lc3NhZ2UuZGF0YSkKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiogRXZlbnRzICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXZhciBldmVudExpc3RlbmVycyA9IHt9OwoKCS8vIFJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMKCWZ1bmN0aW9uIG9uKGV2ZW50TmFtZSwgY2FsbGJhY2spIHsKCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdID0gZXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXTsKCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdLnB1c2goY2FsbGJhY2spOwoJfQoKCS8vIG5vdGlmeSBpbmZvcm1zIGZyb250ZW5kIGxpc3RlbmVycyB0aGF0IGFuIGV2ZW50IHdhcyBlbWl0dGVkIHdpdGggdGhlIGdpdmVuIGRhdGEKCWZ1bmN0aW9uIG5vdGlmeShldmVudE5hbWUsIGRhdGEpIHsKCQlpZiAoZXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSkgewoJCQlldmVudExpc3RlbmVyc1tldmVudE5hbWVdLmZvckVhY2goZWxlbWVudCA9PiB7CgkJCQl2YXIgcGFyc2VkRGF0YSA9IFtdCgkJCQkvLyBQYXJzZSBkYXRhIGlmIHdlIGhhdmUgaXQKCQkJCWlmIChkYXRhKSB7CgkJCQkJdHJ5IHsKCQkJCQkJcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CgkJCQkJfSBjYXRjaCAoZSkgewoJCQkJCQl3YWlscy5sb2cuZXJyb3IoIkludmFsaWQgSlNPTiBkYXRhIHNlbnQgdG8gbm90aWZ5LiBFdmVudCBuYW1lID0gIiArIGV2ZW50TmFtZSkKCQkJCQl9CgkJCQl9CgkJCQllbGVtZW50LmFwcGx5KG51bGwsIHBhcnNlZERhdGEpOwoJCQl9KTsKCQl9Cgl9CgoJLy8gZW1pdCBhbiBldmVudCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBkYXRhCglmdW5jdGlvbiBlbWl0KGV2ZW50TmFtZSkgewoKCQkvLyBDYWxjdWxhdGUgdGhlIGRhdGEKCQl2YXIgZGF0YSA9IEpTT04uc3RyaW5naWZ5KFtdLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykuc2xpY2UoMSkpOwoKCQkvLyBOb3RpZnkgYmFja2VuZAoJCW1lc3NhZ2UgPSB7CgkJCXR5cGU6ICJldmVudCIsCgkJCXBheWxvYWQ6IHsKCQkJCW5hbWU6IGV2ZW50TmFtZSwKCQkJCWRhdGE6IGRhdGEsCgkJCX0KCQl9CgkJZXh0ZXJuYWwuaW52b2tlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTsKCX0KCgkvLyBFdmVudHMgY2FsbHMKCXdpbmRvdy53YWlscy5ldmVudHMgPSB7IGVtaXQ6IGVtaXQsIG9uOiBvbiB9OwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLyoqKioqKioqKioqKioqKioqKioqKioqKiogTG9nZ2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvLyBTZW5kcyBhIGxvZyBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHdpdGggdGhlIGdpdmVuCgkvLyBsZXZlbCArIG1lc3NhZ2UKCWZ1bmN0aW9uIHNlbmRMb2dNZXNzYWdlKGxldmVsLCBtZXNzYWdlKSB7CgoJCS8vIExvZyBNZXNzYWdlCgkJbWVzc2FnZSA9IHsKCQkJdHlwZTogImxvZyIsCgkJCXBheWxvYWQ6IHsKCQkJCWxldmVsOiBsZXZlbCwKCQkJCW1lc3NhZ2U6IG1lc3NhZ2UsCgkJCX0KCQl9CgkJZXh0ZXJuYWwuaW52b2tlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTsKCX0KCglmdW5jdGlvbiBsb2dEZWJ1ZyhtZXNzYWdlKSB7CgkJc2VuZExvZ01lc3NhZ2UoImRlYnVnIiwgbWVzc2FnZSk7Cgl9CglmdW5jdGlvbiBsb2dJbmZvKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiaW5mbyIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nV2FybmluZyhtZXNzYWdlKSB7CgkJc2VuZExvZ01lc3NhZ2UoIndhcm5pbmciLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0Vycm9yKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZXJyb3IiLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0ZhdGFsKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZmF0YWwiLCBtZXNzYWdlKTsKCX0KCgl3aW5kb3cud2FpbHMubG9nID0gewoJCWRlYnVnOiBsb2dEZWJ1ZywKCQlpbmZvOiBsb2dJbmZvLAoJCXdhcm5pbmc6IGxvZ1dhcm5pbmcsCgkJZXJyb3I6IGxvZ0Vycm9yLAoJCWZhdGFsOiBsb2dGYXRhbCwKCX07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqIEV4cG9ydHMgKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl3aW5kb3cud2FpbHMuXyA9IHsKCQluZXdCaW5kaW5nOiBuZXdCaW5kaW5nLAoJCWNhbGxiYWNrOiBjYWxsYmFjaywKCQlub3RpZnk6IG5vdGlmeSwKCQlzZW5kTG9nTWVzc2FnZTogc2VuZExvZ01lc3NhZ2UsCgkJY2FsbGJhY2tzOiBjYWxsYmFja3MsCgkJaW5qZWN0Q1NTOiBpbmplY3RDU1MsCgkJYWRkU2NyaXB0OiBhZGRTY3JpcHQsCgkJc2V0RG9jdW1lbnQ6IHNldERvY3VtZW50LAoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gTm90aWZ5IGJhY2tlbmQgdGhhdCB0aGUgcnVudGltZSBoYXMgZmluaXNoZWQgbG9hZGluZwoJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KCJ3YWlsczpsb2FkZWQiKTsKCn0pKCk=\"") + packr.PackJSONBytes("./assets/default", "wails.js", "\"Ly8gV2FpbHMgcnVudGltZSBKUwoKKGZ1bmN0aW9uICgpIHsKCXdpbmRvdy53YWlscyA9IHdpbmRvdy53YWlscyB8fCB7CgkJJDoge30KCX07CgoJLyoqKioqKioqKioqKioqKioqKiBVdGlsaXR5IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLy8gLS0tLS0tLS0tLS0tLS0gUmFuZG9tIC0tLS0tLS0tLS0tLS0tCgkvLyBBd2Vzb21lUmFuZG9tCglmdW5jdGlvbiBjcnlwdG9SYW5kb20oKSB7CgkJdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KDEpOwoJCXJldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSlbMF07Cgl9CgoJLy8gTE9MUmFuZG9tCglmdW5jdGlvbiBiYXNpY1JhbmRvbSgpIHsKCQlyZXR1cm4gTWF0aC5yYW5kb20oKSAqIDkwMDcxOTkyNTQ3NDA5OTE7Cgl9CgoJLy8gUGljayBvbmUgYmFzZWQgb24gYnJvd3NlciBjYXBhYmlsaXR5Cgl2YXIgcmFuZG9tRnVuYzsKCWlmICh3aW5kb3cuY3J5cHRvKSB7CgkJcmFuZG9tRnVuYyA9IGNyeXB0b1JhbmRvbTsKCX0gZWxzZSB7CgkJcmFuZG9tRnVuYyA9IGJhc2ljUmFuZG9tOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIElkZW50aWZpZXJzIC0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyKG5hbWUpIHsKCQkvLyBEb24ndCB4c3MgeW91cnNlbGYgOi0pCgkJdHJ5IHsKCQkJbmV3IEZ1bmN0aW9uKCJ2YXIgIiArIG5hbWUpOwoJCQlyZXR1cm4gdHJ1ZQoJCX0gY2F0Y2ggKGUpIHsKCQkJcmV0dXJuIGZhbHNlCgkJfQoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIEpTIC0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFkZFNjcmlwdChqcywgY2FsbGJhY2tJRCkgewoJCWNvbnNvbGUubG9nKCJBZGRpbmcgc2NyaXB0OiAiICsganMpCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoJCXNjcmlwdC50ZXh0ID0ganM7CgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoJCWNvbnNvbGUubG9nKCJDYWxsaW5nIGJhY2sgd2l0aDoiICsgY2FsbGJhY2tJRCk7CgkJd2luZG93LndhaWxzLmV2ZW50cy5lbWl0KGNhbGxiYWNrSUQpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tIENTUyAtLS0tLS0tLS0tLS0tLS0KCS8vIEFkYXB0ZWQgZnJvbSB3ZWJ2aWV3IC0gdGhhbmtzIHpzZXJnZSEKCWZ1bmN0aW9uIGluamVjdENTUyhjc3MpIHsKCQl2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CgkJZWxlbS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTsKCQlpZiAoZWxlbS5zdHlsZVNoZWV0KSB7CgkJCWVsZW0uc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzOwoJCX0gZWxzZSB7CgkJCWVsZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7CgkJfQoJCXZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwoJCWhlYWQuYXBwZW5kQ2hpbGQoZWxlbSkKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiBCaW5kaW5ncyAqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXZhciBiaW5kaW5nc0Jhc2VQYXRoID0gd2luZG93LndhaWxzLiQ7CgoJLy8gQ3JlYXRlcyB0aGUgcGF0aCBnaXZlbiBpbiB0aGUgYmluZGluZ3MgcGF0aAoJZnVuY3Rpb24gYWRkQmluZGluZ1BhdGgocGF0aFNlY3Rpb25zKSB7CgkJLy8gU3RhcnQgYXQgdGhlIGJhc2UgcGF0aAoJCXZhciBjdXJyZW50UGF0aCA9IGJpbmRpbmdzQmFzZVBhdGgKCQkvLyBmb3IgZWFjaCBzZWN0aW9uIG9mIHRoZSBnaXZlbiBwYXRoCgkJZm9yICh2YXIgc2VjdGlvbiBvZiBwYXRoU2VjdGlvbnMpIHsKCgkJCS8vIElzIHNlY3Rpb24gYSB2YWxpZCBqYXZhc2NyaXB0IGlkZW50aWZpZXI/CgkJCWlmICghaXNWYWxpZElkZW50aWZpZXIoc2VjdGlvbikpIHsKCQkJCXZhciBlcnJNZXNzYWdlID0gc2VjdGlvbiArICIgaXMgbm90IGEgdmFsaWQgamF2YXNjcmlwdCBpZGVudGlmaWVyLiIKCQkJCXZhciBlcnIgPSBuZXcgRXJyb3IoZXJyTWVzc2FnZSkKCQkJCXJldHVybiBbbnVsbCwgZXJyXQoJCQl9CgoJCQkvLyBBZGQgaWYgZG9lc24ndCBleGlzdAoJCQlpZiAoIWN1cnJlbnRQYXRoW3NlY3Rpb25dKSB7CgkJCQljdXJyZW50UGF0aFtzZWN0aW9uXSA9IHt9CgkJCX0KCQkJLy8gdXBkYXRlIGN1cnJlbnQgcGF0aCB0byBuZXcgcGF0aAoJCQljdXJyZW50UGF0aCA9IGN1cnJlbnRQYXRoW3NlY3Rpb25dCgkJfQoJCXJldHVybiBbY3VycmVudFBhdGgsIG51bGxdCgl9CgoJZnVuY3Rpb24gbmV3QmluZGluZyhiaW5kaW5nTmFtZSkgewoKCQkvLyBHZXQgYWxsIHRoZSBzZWN0aW9ucyBvZiB0aGUgYmluZGluZwoJCXZhciBiaW5kaW5nU2VjdGlvbnMgPSBiaW5kaW5nTmFtZS5zcGxpdCgnLicpOwoKCQkvLyBHZXQgdGhlIGFjdHVhbCBmdW5jdGlvbi9tZXRob2QgY2FsbCBuYW1lCgkJdmFyIGNhbGxOYW1lID0gYmluZGluZ1NlY3Rpb25zLnBvcCgpOwoKCQkvLyBBZGQgcGF0aCB0byBiaW5kaW5nCgkJW3BhdGhUb0JpbmRpbmcsIGVycl0gPSBhZGRCaW5kaW5nUGF0aChiaW5kaW5nU2VjdGlvbnMpCgoJCWlmIChlcnIgIT0gbnVsbCkgewoJCQkvLyBXZSBuZWVkIHRvIHJldHVybiBhbiBlcnJvcgoJCQlyZXR1cm4gZXJyCgkJfQoKCQkvLyBBZGQgYmluZGluZyBjYWxsCgkJcGF0aFRvQmluZGluZ1tjYWxsTmFtZV0gPSBmdW5jdGlvbiAoKSB7CgoJCQkvLyBObyB0aW1lb3V0IGJ5IGRlZmF1bHQKCQkJdmFyIHRpbWVvdXQgPSAwOwoKCQkJLy8gQWN0dWFsIGZ1bmN0aW9uCgkJCWZ1bmN0aW9uIGR5bmFtaWMoKSB7CgkJCQl2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKQoJCQkJcmV0dXJuIGNhbGwoYmluZGluZ05hbWUsIGFyZ3MsIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBBbGxvdyBzZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG5ld1RpbWVvdXQpIHsKCQkJCXRpbWVvdXQgPSBuZXdUaW1lb3V0OwoJCQl9CgoJCQkvLyBBbGxvdyBnZXR0aW5nIHRpbWVvdXQgdG8gZnVuY3Rpb24KCQkJZHluYW1pYy5nZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkgewoJCQkJcmV0dXJuIHRpbWVvdXQ7CgkJCX0KCgkJCXJldHVybiBkeW5hbWljOwoJCX0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2FsbHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGNhbGxiYWNrcyA9IHt9OwoKCS8vIENhbGwgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBiYWNrZW5kIHRvIGNhbGwgdGhlIGJpbmRpbmcgd2l0aCB0aGUKCS8vIGdpdmVuIGRhdGEuIEEgcHJvbWlzZSBpcyByZXR1cm5lZCBhbmQgd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKCS8vIGJhY2tlbmQgcmVzcG9uZHMuIFRoaXMgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsCgkvLyBvciByZWplY3RlZCBpZiBhbiBlcnJvciBpcyBwYXNzZWQgYmFjay4KCS8vIFRoZXJlIGlzIGEgdGltZW91dCBtZWNoYW5pc20uIElmIHRoZSBjYWxsIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aGUgZ2l2ZW4KCS8vIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KCglmdW5jdGlvbiBjYWxsKGJpbmRpbmdOYW1lLCBkYXRhLCB0aW1lb3V0KSB7CgoJCS8vIFRpbWVvdXQgaW5maW5pdGUgYnkgZGVmYXVsdAoJCWlmICh0aW1lb3V0ID09IG51bGwgfHwgdGltZW91dCA9PSB1bmRlZmluZWQpIHsKCQkJdGltZW91dCA9IDA7CgkJfQoKCQkvLyBDcmVhdGUgYSBwcm9taXNlCgkJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCgkJCS8vIENyZWF0ZSBhIHVuaXF1ZSBjYWxsYmFja0lECgkJCXZhciBjYWxsYmFja0lEOwoJCQlkbyB7CgkJCQljYWxsYmFja0lEID0gYmluZGluZ05hbWUgKyAiLSIgKyByYW5kb21GdW5jKCk7CgkJCX0gd2hpbGUgKGNhbGxiYWNrc1tjYWxsYmFja0lEXSkKCgkJCS8vIFNldCB0aW1lb3V0CgkJCWlmICh0aW1lb3V0ID4gMCkgewoJCQkJdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlyZWplY3QoRXJyb3IoIkNhbGwgdG8gIiArIGJpbmRpbmdOYW1lICsgIiB0aW1lZCBvdXQuIFJlcXVlc3QgSUQ6ICIgKyBjYWxsYmFja0lEKSkKCQkJCX0sIHRpbWVvdXQpOwoJCQl9CgoJCQkvLyBTdG9yZSBjYWxsYmFjawoJCQljYWxsYmFja3NbY2FsbGJhY2tJRF0gPSB7CgkJCQl0aW1lb3V0SGFuZGxlOiB0aW1lb3V0SGFuZGxlLAoJCQkJcmVqZWN0OiByZWplY3QsCgkJCQlyZXNvbHZlOiByZXNvbHZlCgkJCX0KCQkJdHJ5IHsKCQkJCXZhciBwYXlsb2FkZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpCgkJCQkvLyBDcmVhdGUgdGhlIG1lc3NhZ2UKCQkJCW1lc3NhZ2UgPSB7CgkJCQkJdHlwZTogImNhbGwiLAoJCQkJCWNhbGxiYWNraWQ6IGNhbGxiYWNrSUQsCgkJCQkJcGF5bG9hZDogewoJCQkJCQliaW5kaW5nTmFtZTogYmluZGluZ05hbWUsCgkJCQkJCWRhdGE6IHBheWxvYWRkYXRhLAoJCQkJCX0KCQkJCX0KCgkJCQkvLyBNYWtlIHRoZSBjYWxsCgkJCQl2YXIgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpCgkJCQlleHRlcm5hbC5pbnZva2UocGF5bG9hZCk7CgkJCX0gY2F0Y2ggKGUpIHsKCQkJCWNvbnNvbGUuZXJyb3IoZSkKCQkJfQoJCX0pCgl9CgoKCS8vIENhbGxlZCBieSB0aGUgYmFja2VuZCB0byByZXR1cm4gZGF0YSB0byBhIHByZXZpb3VzbHkgY2FsbGVkCgkvLyBiaW5kaW5nIGludm9jYXRpb24KCWZ1bmN0aW9uIGNhbGxiYWNrKGluY29taW5nTWVzc2FnZSkgewoJCS8vIFBhcnNlIHRoZSBtZXNzYWdlCgkJdmFyIG1lc3NhZ2UKCQl0cnkgewoJCQltZXNzYWdlID0gSlNPTi5wYXJzZShpbmNvbWluZ01lc3NhZ2UpCgkJfSBjYXRjaCAoZSkgewoJCQl3YWlscy5sb2cuZGVidWcoIkludmFsaWQgSlNPTiBwYXNzZWQgdG8gY2FsbGJhY2s6ICIgKyBlLm1lc3NhZ2UpCgkJCXdhaWxzLmxvZy5kZWJ1ZygiTWVzc2FnZTogIiArIGluY29taW5nTWVzc2FnZSkKCQkJcmV0dXJuCgkJfQoJCWNhbGxiYWNrSUQgPSBtZXNzYWdlLmNhbGxiYWNraWQKCQljYWxsYmFja0RhdGEgPSBjYWxsYmFja3NbY2FsbGJhY2tJRF0KCQlpZiAoIWNhbGxiYWNrRGF0YSkgewoJCQljb25zb2xlLmVycm9yKCJDYWxsYmFjayAnIiArIGNhbGxiYWNrSUQgKyAiJyBub3QgcmVnaXN0ZWQhISEiKQoJCQlyZXR1cm4KCQl9CgkJY2xlYXJUaW1lb3V0KGNhbGxiYWNrRGF0YS50aW1lb3V0SGFuZGxlKQoJCWRlbGV0ZSBjYWxsYmFja3NbY2FsbGJhY2tJRF0KCQlpZiAobWVzc2FnZS5lcnJvcikgewoJCQlyZXR1cm4gY2FsbGJhY2tEYXRhLnJlamVjdChtZXNzYWdlLmVycm9yKQoJCX0KCQlyZXR1cm4gY2FsbGJhY2tEYXRhLnJlc29sdmUobWVzc2FnZS5kYXRhKQoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKiBFdmVudHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGV2ZW50TGlzdGVuZXJzID0ge307CgoJLy8gUmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycwoJZnVuY3Rpb24gb24oZXZlbnROYW1lLCBjYWxsYmFjaykgewoJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gPSBldmVudExpc3RlbmVyc1tldmVudE5hbWVdIHx8IFtdOwoJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0ucHVzaChjYWxsYmFjayk7Cgl9CgoJLy8gbm90aWZ5IGluZm9ybXMgZnJvbnRlbmQgbGlzdGVuZXJzIHRoYXQgYW4gZXZlbnQgd2FzIGVtaXR0ZWQgd2l0aCB0aGUgZ2l2ZW4gZGF0YQoJZnVuY3Rpb24gbm90aWZ5KGV2ZW50TmFtZSwgZGF0YSkgewoJCWlmIChldmVudExpc3RlbmVyc1tldmVudE5hbWVdKSB7CgkJCWV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0uZm9yRWFjaChlbGVtZW50ID0+IHsKCQkJCXZhciBwYXJzZWREYXRhID0gW10KCQkJCS8vIFBhcnNlIGRhdGEgaWYgd2UgaGF2ZSBpdAoJCQkJaWYgKGRhdGEpIHsKCQkJCQl0cnkgewoJCQkJCQlwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTsKCQkJCQl9IGNhdGNoIChlKSB7CgkJCQkJCXdhaWxzLmxvZy5lcnJvcigiSW52YWxpZCBKU09OIGRhdGEgc2VudCB0byBub3RpZnkuIEV2ZW50IG5hbWUgPSAiICsgZXZlbnROYW1lKQoJCQkJCX0KCQkJCX0KCQkJCWVsZW1lbnQuYXBwbHkobnVsbCwgcGFyc2VkRGF0YSk7CgkJCX0pOwoJCX0KCX0KCgkvLyBlbWl0IGFuIGV2ZW50IHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIGRhdGEKCWZ1bmN0aW9uIGVtaXQoZXZlbnROYW1lKSB7CgoJCS8vIENhbGN1bGF0ZSB0aGUgZGF0YQoJCXZhciBkYXRhID0gSlNPTi5zdHJpbmdpZnkoW10uc2xpY2UuYXBwbHkoYXJndW1lbnRzKS5zbGljZSgxKSk7CgoJCS8vIE5vdGlmeSBiYWNrZW5kCgkJbWVzc2FnZSA9IHsKCQkJdHlwZTogImV2ZW50IiwKCQkJcGF5bG9hZDogewoJCQkJbmFtZTogZXZlbnROYW1lLAoJCQkJZGF0YTogZGF0YSwKCQkJfQoJCX0KCQlleHRlcm5hbC5pbnZva2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwoJfQoKCS8vIEV2ZW50cyBjYWxscwoJd2luZG93LndhaWxzLmV2ZW50cyA9IHsgZW1pdDogZW1pdCwgb246IG9uIH07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiBMb2dnaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8vIFNlbmRzIGEgbG9nIG1lc3NhZ2UgdG8gdGhlIGJhY2tlbmQgd2l0aCB0aGUgZ2l2ZW4KCS8vIGxldmVsICsgbWVzc2FnZQoJZnVuY3Rpb24gc2VuZExvZ01lc3NhZ2UobGV2ZWwsIG1lc3NhZ2UpIHsKCgkJLy8gTG9nIE1lc3NhZ2UKCQltZXNzYWdlID0gewoJCQl0eXBlOiAibG9nIiwKCQkJcGF5bG9hZDogewoJCQkJbGV2ZWw6IGxldmVsLAoJCQkJbWVzc2FnZTogbWVzc2FnZSwKCQkJfQoJCX0KCQlleHRlcm5hbC5pbnZva2UoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwoJfQoKCWZ1bmN0aW9uIGxvZ0RlYnVnKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgiZGVidWciLCBtZXNzYWdlKTsKCX0KCWZ1bmN0aW9uIGxvZ0luZm8obWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJpbmZvIiwgbWVzc2FnZSk7Cgl9CglmdW5jdGlvbiBsb2dXYXJuaW5nKG1lc3NhZ2UpIHsKCQlzZW5kTG9nTWVzc2FnZSgid2FybmluZyIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nRXJyb3IobWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJlcnJvciIsIG1lc3NhZ2UpOwoJfQoJZnVuY3Rpb24gbG9nRmF0YWwobWVzc2FnZSkgewoJCXNlbmRMb2dNZXNzYWdlKCJmYXRhbCIsIG1lc3NhZ2UpOwoJfQoKCXdpbmRvdy53YWlscy5sb2cgPSB7CgkJZGVidWc6IGxvZ0RlYnVnLAoJCWluZm86IGxvZ0luZm8sCgkJd2FybmluZzogbG9nV2FybmluZywKCQllcnJvcjogbG9nRXJyb3IsCgkJZmF0YWw6IGxvZ0ZhdGFsLAoJfTsKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKiogRXhwb3J0cyAqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXdpbmRvdy53YWlscy5fID0gewoJCW5ld0JpbmRpbmc6IG5ld0JpbmRpbmcsCgkJY2FsbGJhY2s6IGNhbGxiYWNrLAoJCW5vdGlmeTogbm90aWZ5LAoJCXNlbmRMb2dNZXNzYWdlOiBzZW5kTG9nTWVzc2FnZSwKCQljYWxsYmFja3M6IGNhbGxiYWNrcywKCQlpbmplY3RDU1M6IGluamVjdENTUywKCQlhZGRTY3JpcHQ6IGFkZFNjcmlwdCwKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8vIE5vdGlmeSBiYWNrZW5kIHRoYXQgdGhlIHJ1bnRpbWUgaGFzIGZpbmlzaGVkIGxvYWRpbmcKCXdpbmRvdy53YWlscy5ldmVudHMuZW1pdCgid2FpbHM6bG9hZGVkIik7Cgp9KSgp\"") packr.PackJSONBytes("./assets/headless", "index.html", "\"PGh0bWw+Cgo8aGVhZD4KICA8dGl0bGU+V2FpbHMgSGVhZGxlc3M8L3RpdGxlPgogIDxzdHlsZT4KICAgIC53YWlscy1yZWNvbm5lY3Qtb3ZlcmxheSB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOwogICAgICBkaXNwbGF5OiBub25lOwogICAgICB6LWluZGV4OiA5OTk5OTk7CiAgICB9CgogICAgLndhaWxzLXJlY29ubmVjdC1vdmVybGF5LWNvbnRlbnQgewogICAgICBwYWRkaW5nOiAyMHB4IDMwcHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgd2lkdGg6IDIwZW07CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgaGVpZ2h0OiAxN2VtOwogICAgICBib3JkZXItcmFkaXVzOiAxZW07CiAgICAgIG1hcmdpbjogNSUgYXV0byAwOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgYm94LXNoYWRvdzogMXB4IDFweCAyMHB4IDNweDsKICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUM4QUFBQXVDQU1BQUFDUHBiQTdBQUFBcUZCTVZFVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFBQUFBQUFBQUVCQVFBQUFBQUFBQUFBQUFFQkFRRUJBUURBd01CQVFFQUFBQUJBUUVBQUFBQUFBQUFBQUFCQVFFQUFBQUFBQUFDQWdJQ0FnSUJBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVFFQUFBQUNBZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQlFXS0NqNm9BQUFBTjNSU1RsTUFMaUlxRGhrR0JBc3dKalAwR3hQNk5SNFc5L3p0alJETWhXVTUwRzlnNWVIWHZiWjlYRUk5eFpUY3FabDJhbGRLbzU1UXdvQ3ZaVWd6aEFBQUFzOUpSRUZVU01lTmxlZVdxakFVaFUwQkNhSDNJdGl3OXpLVDkzK3pHMDJRSzFobS81SEYranpaSjZmUWU2Y3lYRStqZzlYN285d3h1eWxJSWY0VHYyVjMrYk9yRVhuZjhkd1EvS1FJR0ROMi9TKzRPbVZDVlhML1NjQm5maWJ4VVJxSUJ5UC9oT05FOHI4VCtiRE1sUTk4S1NsN1k4aHpqcFM4djFxdERoOHU1ZjhLUXBHcGZuUFBocUc4SmVvZ04zN0hxOWVhTjJ4UmhJd0FhR252d3M4RjFTaHhxSzVvYjJ0d1lpMUZBTUQ0clhzWXRuQy9KRWlSYmw0Y1VyQ1dobk1DTFJGZW1YZXpYYmI1OVFLNFdBU09zbTZuMlcxKzRDQlQySm10elE2ZnNyYkd1YlIvTkZiZDJnNVkxNzkrNXcvR0VIYUtzSGpZQ2V0N0NnclhVM3R4YXJOQzdZeE9WSnRJajQvRVJ6TWRaZnpjMzFocCs4Y0Q2ZUdJTGdhclpZOXVaMTJoQXMwM3ZmQkQ5QzE3MWdTNU9tejdPY3Z4QUxRSW40dThSUkJCQmNzaTlXVzJ3b085aXBMZ2Z6cFlsZ2dnM1pSZFJPVUM4S1Q3UUxxcTNXOUtCNUJiZEZWZzQ5MjlrZHdwNitxYVpuTUNDTkJkaitOeU4xVzg4NVJ5L0FMM0Q0QVFic1ZWNG5vQ2lNL0M4M2t5WXE4MFhsREFZUXRyYWxPaUR6b1JBSGxvdFdsOHEydGp2WWxPZ2NnMUE4akVBcFphK0MwNlRCZEF6MlF2MHd1MTFJL3paT3lKUTZFd0dlejJQMmI4UElRcjFod3duQVpzQXh3QTRVQVlPeVhVeE0veHA2dEhBbjRHVW1QR005UjI4b1Z4Z0MwZS96UUpKSTZEeWh5WjFyN3V6UlFocGNXN3g3dlRhV1N6S1NHNmFlcDc3a3JvVEVsM1U4MXVTVmFVVHRnRUlOZkM4ZXB4K1E0RjlTcHBsSEc4NEVrNm00UkFxOS9UTGtPQnJ4eWV1ZGRaaEh2R0lwMVhYZkZ5M1ozdnR3TmJsS0dpRG4rSis5MnZ3d0FCSGdoajdIbnpsUzFINWtCNDlBWnZkR0NGZ2lCUHE2OXFmWFByM3krK3lpbEYwT040UjhlUjdzcEFzTHBaOTVOcUFXNXRhYjFjNHZrWm02YWxlYWpjaE13WVRkSUxRUVR3RTJPVjQxMVpNOVd6dERqUHFsMTJjYUJpNmdEcFVLbURkNFUxWE5kUXhaNExJWFE1L1RyNFA3STl0WWNGckRLM0FBQUFBRWxGVGtTdVFtQ0MiKTsKICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogICAgfQoKICAgIC53YWlscy1yZWNvbm5lY3Qtb3ZlcmxheS10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMmVtOwogICAgfQoKICAgIC53YWlscy1yZWNvbm5lY3Qtb3ZlcmxheS1tZXNzYWdlIHsKICAgICAgZm9udC1zaXplOiAxLjNlbTsKICAgIH0KCiAgICAvKiBodHRwczovL2NvZGVwZW4uaW8vRWFzdGluZ0FuZE5vcnRoaW5nL3Blbi9hTldyWnogLSBDaGVlcnMgTWFyayEgKi8KCiAgICAud2FpbHMtcmVjb25uZWN0LW92ZXJsYXktbG9hZGluZ3NwaW5uZXIgewogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgd2lkdGg6IDIuNWVtOwogICAgICBoZWlnaHQ6IDIuNWVtOwogICAgICBib3JkZXI6IDAuNGVtIHNvbGlkIHRyYW5zcGFyZW50OwogICAgICBib3JkZXItY29sb3I6ICNlZWU7CiAgICAgIGJvcmRlci10b3AtY29sb3I6ICMzRTY3RUM7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgIG1hcmdpbjogYXV0bzsKICAgICAgcGFkZGluZzogMi41ZW07CiAgICB9CgogICAgQGtleWZyYW1lcyBsb2FkaW5nc3BpbiB7CiAgICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykKICAgICAgfQogICAgfQogIDwvc3R5bGU+CjwvaGVhZD4KCjxib2R5PgogIDxkaXYgY2xhc3M9IndhaWxzLXJlY29ubmVjdC1vdmVybGF5Ij4KICAgIDxkaXYgY2xhc3M9IndhaWxzLXJlY29ubmVjdC1vdmVybGF5LWNvbnRlbnQiPgogICAgICA8ZGl2IGNsYXNzPSJ3YWlscy1yZWNvbm5lY3Qtb3ZlcmxheS10aXRsZSI+RGlzY29ubmVjdGVkPC9kaXY+PGJyPgogICAgICA8ZGl2IGNsYXNzPSJ3YWlscy1yZWNvbm5lY3Qtb3ZlcmxheS1sb2FkaW5nc3Bpbm5lciI+PC9kaXY+PGJyPgogICAgICA8ZGl2IGNsYXNzPSJ3YWlscy1yZWNvbm5lY3Qtb3ZlcmxheS1tZXNzYWdlIj5XYWl0aW5nIGZvciBiYWNrZW5kPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBpZD0iYXBwIj48L2Rpdj4KCiAgPHNjcmlwdCBpZD0id2FpbHMtaGVhZGxlc3MtcnVudGltZSI+CiAgICAoZnVuY3Rpb24gKCkgewoKICAgICAgdmFyIHdlYnNvY2tldCA9IG51bGw7CiAgICAgIHZhciBjb25uZWN0VGltZXIgPSBudWxsOwogICAgICB2YXIgcmVjb25uZWN0T3ZlcmxheSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi53YWlscy1yZWNvbm5lY3Qtb3ZlcmxheSIpOwogICAgICB2YXIgY29ubmVjdGlvblN0YXRlID0gImRpc2Nvbm5lY3RlZCI7CgogICAgICBmdW5jdGlvbiBzaG93UmVjb25uZWN0T3ZlcmxheSgpIHsKICAgICAgICByZWNvbm5lY3RPdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICB9CgogICAgICBmdW5jdGlvbiBoaWRlUmVjb25uZWN0T3ZlcmxheSgpIHsKICAgICAgICByZWNvbm5lY3RPdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIH0KCiAgICAgIHdpbmRvdy5leHRlcm5hbCA9IHsKICAgICAgICBpbnZva2U6IGZ1bmN0aW9uIChtc2cpIHsKICAgICAgICAgIHdlYnNvY2tldC5zZW5kKG1zZyk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgZnVuY3Rpb24gYWRkU2NyaXB0KHNjcmlwdCwgaWQpIHsKICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpCiAgICAgICAgaWYgKGlkKSB7CiAgICAgICAgICBzLmlkID0gaWQ7CiAgICAgICAgfQogICAgICAgIHMudGV4dENvbnRlbnQgPSBzY3JpcHQ7CiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKQogICAgICB9CgogICAgICBmdW5jdGlvbiBoYW5kbGVDb25uZWN0KCkgewogICAgICAgIGNvbnNvbGUubG9nKCJbV2FpbHNdIENvbm5lY3RlZCB0byBiYWNrZW5kIik7CiAgICAgICAgYWRkS2V5TGlzdGVuZXIoKTsKICAgICAgICBoaWRlUmVjb25uZWN0T3ZlcmxheSgpOwogICAgICAgIGNsZWFySW50ZXJ2YWwoY29ubmVjdFRpbWVyKTsKICAgICAgICB3ZWJzb2NrZXQub25jbG9zZSA9IGhhbmRsZURpc2Nvbm5lY3Q7CiAgICAgICAgd2Vic29ja2V0Lm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7CiAgICAgICAgY29ubmVjdGlvblN0YXRlID0gImNvbm5lY3RlZCI7CiAgICAgICAgLy8gd2Vic29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gaGFuZGxlRGlzY29ubmVjdCgpIHsKICAgICAgICBjb25zb2xlLmxvZygiW1dhaWxzXSBEaXNjb25uZWN0ZWQgZnJvbSBiYWNrZW5kIik7CiAgICAgICAgd2Vic29ja2V0ID0gbnVsbDsKICAgICAgICByZW1vdmVLZXlMaXN0ZW5lcigpOwogICAgICAgIGNvbm5lY3Rpb25TdGF0ZSA9ICJkaXNjb25uZWN0ZWQiOwogICAgICAgIHNob3dSZWNvbm5lY3RPdmVybGF5KCk7CiAgICAgICAgY29ubmVjdCgpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBjb25uZWN0KCkgewogICAgICAgIGNvbm5lY3RUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICh3ZWJzb2NrZXQgPT0gbnVsbCkgewogICAgICAgICAgICB3ZWJzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDozNDExNS93cyIpCiAgICAgICAgICAgIHdlYnNvY2tldC5vbm9wZW4gPSBoYW5kbGVDb25uZWN0OwogICAgICAgICAgICB3ZWJzb2NrZXQub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB3ZWJzb2NrZXQgPSBudWxsOwogICAgICAgICAgICAgIHJldHVybiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgMzAwKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShlKSB7CiAgICAgICAgYWRkU2NyaXB0KGUuZGF0YSk7CiAgICAgIH0KCiAgICAgIC8vIEtleSBsaXN0ZW5lcgogICAgICB2YXIgZGVsdGEgPSAzMDA7CiAgICAgIHZhciBsYXN0S2V5cHJlc3NUaW1lID0gMDsKICAgICAgZnVuY3Rpb24gS2V5SGFuZGxlcihldmVudCkgewogICAgICAgIGlmIChldmVudC5rZXkgPT09ICJgIikgewogICAgICAgICAgdmFyIHRoaXNLZXlwcmVzc1RpbWUgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgaWYgKHRoaXNLZXlwcmVzc1RpbWUgLSBsYXN0S2V5cHJlc3NUaW1lIDw9IGRlbHRhKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJEb3VibGUgdGFwISIpCiAgICAgICAgICAgIC8vIG9wdGlvbmFsIC0gaWYgd2UnZCByYXRoZXIgbm90IGRldGVjdCBhIHRyaXBsZS1wcmVzcwogICAgICAgICAgICAvLyBhcyBhIHNlY29uZCBkb3VibGUtcHJlc3MsIHJlc2V0IHRoZSB0aW1lc3RhbXAKICAgICAgICAgICAgdGhpc0tleXByZXNzVGltZSA9IDA7CiAgICAgICAgICB9CiAgICAgICAgICBsYXN0S2V5cHJlc3NUaW1lID0gdGhpc0tleXByZXNzVGltZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGFkZEtleUxpc3RlbmVyKCkgewogICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIEtleUhhbmRsZXIpOwogICAgICB9CgogICAgICBmdW5jdGlvbiByZW1vdmVLZXlMaXN0ZW5lcigpIHsKICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBLZXlIYW5kbGVyKTsKICAgICAgfQoKICAgICAgY29ubmVjdCgpOwoKCiAgICB9KCkpOwoKICA8L3NjcmlwdD4KCjwvYm9keT4KCjwvaHRtbD4=\"") } diff --git a/assets/default/default.html b/assets/default/default.html new file mode 100644 index 000000000..865e670f4 --- /dev/null +++ b/assets/default/default.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/assets/default/jquery.3.3.1.min.js b/assets/default/jquery.3.3.1.min.js new file mode 100644 index 000000000..25e5e180c --- /dev/null +++ b/assets/default/jquery.3.3.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */ +!function (e, t) { "use strict"; "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function (e) { if (!e.document) throw new Error("jQuery requires a window with a document"); return t(e) } : t(e) }("undefined" != typeof window ? window : this, function (e, t) { "use strict"; var n = [], r = e.document, i = Object.getPrototypeOf, o = n.slice, a = n.concat, u = n.push, s = n.indexOf, l = {}, c = l.toString, f = l.hasOwnProperty, d = f.toString, p = d.call(Object), h = {}, g = function e(t) { return "function" == typeof t && "number" != typeof t.nodeType }, v = function e(t) { return null != t && t === t.window }, y = { type: !0, src: !0, noModule: !0 }; function m(e, t, n) { var i, o = (t = t || r).createElement("script"); if (o.text = e, n) for (i in y) n[i] && (o[i] = n[i]); t.head.appendChild(o).parentNode.removeChild(o) } function b(e) { return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? l[c.call(e)] || "object" : typeof e } var x = "3.3.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector", w = function (e, t) { return new w.fn.init(e, t) }, C = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; w.fn = w.prototype = { jquery: x, constructor: w, length: 0, toArray: function () { return o.call(this) }, get: function (e) { return null == e ? o.call(this) : e < 0 ? this[e + this.length] : this[e] }, pushStack: function (e) { var t = w.merge(this.constructor(), e); return t.prevObject = this, t }, each: function (e) { return w.each(this, e) }, map: function (e) { return this.pushStack(w.map(this, function (t, n) { return e.call(t, n, t) })) }, slice: function () { return this.pushStack(o.apply(this, arguments)) }, first: function () { return this.eq(0) }, last: function () { return this.eq(-1) }, eq: function (e) { var t = this.length, n = +e + (e < 0 ? t : 0); return this.pushStack(n >= 0 && n < t ? [this[n]] : []) }, end: function () { return this.prevObject || this.constructor() }, push: u, sort: n.sort, splice: n.splice }, w.extend = w.fn.extend = function () { var e, t, n, r, i, o, a = arguments[0] || {}, u = 1, s = arguments.length, l = !1; for ("boolean" == typeof a && (l = a, a = arguments[u] || {}, u++), "object" == typeof a || g(a) || (a = {}), u === s && (a = this, u--); u < s; u++)if (null != (e = arguments[u])) for (t in e) n = a[t], a !== (r = e[t]) && (l && r && (w.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1, o = n && Array.isArray(n) ? n : []) : o = n && w.isPlainObject(n) ? n : {}, a[t] = w.extend(l, o, r)) : void 0 !== r && (a[t] = r)); return a }, w.extend({ expando: "jQuery" + (x + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (e) { throw new Error(e) }, noop: function () { }, isPlainObject: function (e) { var t, n; return !(!e || "[object Object]" !== c.call(e)) && (!(t = i(e)) || "function" == typeof (n = f.call(t, "constructor") && t.constructor) && d.call(n) === p) }, isEmptyObject: function (e) { var t; for (t in e) return !1; return !0 }, globalEval: function (e) { m(e) }, each: function (e, t) { var n, r = 0; if (T(e)) { for (n = e.length; r < n; r++)if (!1 === t.call(e[r], r, e[r])) break } else for (r in e) if (!1 === t.call(e[r], r, e[r])) break; return e }, trim: function (e) { return null == e ? "" : (e + "").replace(C, "") }, makeArray: function (e, t) { var n = t || []; return null != e && (T(Object(e)) ? w.merge(n, "string" == typeof e ? [e] : e) : u.call(n, e)), n }, inArray: function (e, t, n) { return null == t ? -1 : s.call(t, e, n) }, merge: function (e, t) { for (var n = +t.length, r = 0, i = e.length; r < n; r++)e[i++] = t[r]; return e.length = i, e }, grep: function (e, t, n) { for (var r, i = [], o = 0, a = e.length, u = !n; o < a; o++)(r = !t(e[o], o)) !== u && i.push(e[o]); return i }, map: function (e, t, n) { var r, i, o = 0, u = []; if (T(e)) for (r = e.length; o < r; o++)null != (i = t(e[o], o, n)) && u.push(i); else for (o in e) null != (i = t(e[o], o, n)) && u.push(i); return a.apply([], u) }, guid: 1, support: h }), "function" == typeof Symbol && (w.fn[Symbol.iterator] = n[Symbol.iterator]), w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) { l["[object " + t + "]"] = t.toLowerCase() }); function T(e) { var t = !!e && "length" in e && e.length, n = b(e); return !g(e) && !v(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e) } var E = function (e) { var t, n, r, i, o, a, u, s, l, c, f, d, p, h, g, v, y, m, b, x = "sizzle" + 1 * new Date, w = e.document, C = 0, T = 0, E = ae(), N = ae(), k = ae(), A = function (e, t) { return e === t && (f = !0), 0 }, D = {}.hasOwnProperty, S = [], L = S.pop, j = S.push, q = S.push, O = S.slice, P = function (e, t) { for (var n = 0, r = e.length; n < r; n++)if (e[n] === t) return n; return -1 }, H = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", I = "[\\x20\\t\\r\\n\\f]", R = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", B = "\\[" + I + "*(" + R + ")(?:" + I + "*([*^$|!~]?=)" + I + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + R + "))|)" + I + "*\\]", M = ":(" + R + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + B + ")*)|.*)\\)|)", W = new RegExp(I + "+", "g"), $ = new RegExp("^" + I + "+|((?:^|[^\\\\])(?:\\\\.)*)" + I + "+$", "g"), F = new RegExp("^" + I + "*," + I + "*"), z = new RegExp("^" + I + "*([>+~]|" + I + ")" + I + "*"), _ = new RegExp("=" + I + "*([^\\]'\"]*?)" + I + "*\\]", "g"), U = new RegExp(M), V = new RegExp("^" + R + "$"), X = { ID: new RegExp("^#(" + R + ")"), CLASS: new RegExp("^\\.(" + R + ")"), TAG: new RegExp("^(" + R + "|[*])"), ATTR: new RegExp("^" + B), PSEUDO: new RegExp("^" + M), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + I + "*(even|odd|(([+-]|)(\\d*)n|)" + I + "*(?:([+-]|)" + I + "*(\\d+)|))" + I + "*\\)|)", "i"), bool: new RegExp("^(?:" + H + ")$", "i"), needsContext: new RegExp("^" + I + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + I + "*((?:-\\d)?\\d*)" + I + "*\\)|)(?=[^-]|$)", "i") }, Q = /^(?:input|select|textarea|button)$/i, Y = /^h\d$/i, G = /^[^{]+\{\s*\[native \w/, K = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, J = /[+~]/, Z = new RegExp("\\\\([\\da-f]{1,6}" + I + "?|(" + I + ")|.)", "ig"), ee = function (e, t, n) { var r = "0x" + t - 65536; return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320) }, te = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, ne = function (e, t) { return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e }, re = function () { d() }, ie = me(function (e) { return !0 === e.disabled && ("form" in e || "label" in e) }, { dir: "parentNode", next: "legend" }); try { q.apply(S = O.call(w.childNodes), w.childNodes), S[w.childNodes.length].nodeType } catch (e) { q = { apply: S.length ? function (e, t) { j.apply(e, O.call(t)) } : function (e, t) { var n = e.length, r = 0; while (e[n++] = t[r++]); e.length = n - 1 } } } function oe(e, t, r, i) { var o, u, l, c, f, h, y, m = t && t.ownerDocument, C = t ? t.nodeType : 9; if (r = r || [], "string" != typeof e || !e || 1 !== C && 9 !== C && 11 !== C) return r; if (!i && ((t ? t.ownerDocument || t : w) !== p && d(t), t = t || p, g)) { if (11 !== C && (f = K.exec(e))) if (o = f[1]) { if (9 === C) { if (!(l = t.getElementById(o))) return r; if (l.id === o) return r.push(l), r } else if (m && (l = m.getElementById(o)) && b(t, l) && l.id === o) return r.push(l), r } else { if (f[2]) return q.apply(r, t.getElementsByTagName(e)), r; if ((o = f[3]) && n.getElementsByClassName && t.getElementsByClassName) return q.apply(r, t.getElementsByClassName(o)), r } if (n.qsa && !k[e + " "] && (!v || !v.test(e))) { if (1 !== C) m = t, y = e; else if ("object" !== t.nodeName.toLowerCase()) { (c = t.getAttribute("id")) ? c = c.replace(te, ne) : t.setAttribute("id", c = x), u = (h = a(e)).length; while (u--) h[u] = "#" + c + " " + ye(h[u]); y = h.join(","), m = J.test(e) && ge(t.parentNode) || t } if (y) try { return q.apply(r, m.querySelectorAll(y)), r } catch (e) { } finally { c === x && t.removeAttribute("id") } } } return s(e.replace($, "$1"), t, r, i) } function ae() { var e = []; function t(n, i) { return e.push(n + " ") > r.cacheLength && delete t[e.shift()], t[n + " "] = i } return t } function ue(e) { return e[x] = !0, e } function se(e) { var t = p.createElement("fieldset"); try { return !!e(t) } catch (e) { return !1 } finally { t.parentNode && t.parentNode.removeChild(t), t = null } } function le(e, t) { var n = e.split("|"), i = n.length; while (i--) r.attrHandle[n[i]] = t } function ce(e, t) { var n = t && e, r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex; if (r) return r; if (n) while (n = n.nextSibling) if (n === t) return -1; return e ? 1 : -1 } function fe(e) { return function (t) { return "input" === t.nodeName.toLowerCase() && t.type === e } } function de(e) { return function (t) { var n = t.nodeName.toLowerCase(); return ("input" === n || "button" === n) && t.type === e } } function pe(e) { return function (t) { return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && ie(t) === e : t.disabled === e : "label" in t && t.disabled === e } } function he(e) { return ue(function (t) { return t = +t, ue(function (n, r) { var i, o = e([], n.length, t), a = o.length; while (a--) n[i = o[a]] && (n[i] = !(r[i] = n[i])) }) }) } function ge(e) { return e && "undefined" != typeof e.getElementsByTagName && e } n = oe.support = {}, o = oe.isXML = function (e) { var t = e && (e.ownerDocument || e).documentElement; return !!t && "HTML" !== t.nodeName }, d = oe.setDocument = function (e) { var t, i, a = e ? e.ownerDocument || e : w; return a !== p && 9 === a.nodeType && a.documentElement ? (p = a, h = p.documentElement, g = !o(p), w !== p && (i = p.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener("unload", re, !1) : i.attachEvent && i.attachEvent("onunload", re)), n.attributes = se(function (e) { return e.className = "i", !e.getAttribute("className") }), n.getElementsByTagName = se(function (e) { return e.appendChild(p.createComment("")), !e.getElementsByTagName("*").length }), n.getElementsByClassName = G.test(p.getElementsByClassName), n.getById = se(function (e) { return h.appendChild(e).id = x, !p.getElementsByName || !p.getElementsByName(x).length }), n.getById ? (r.filter.ID = function (e) { var t = e.replace(Z, ee); return function (e) { return e.getAttribute("id") === t } }, r.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && g) { var n = t.getElementById(e); return n ? [n] : [] } }) : (r.filter.ID = function (e) { var t = e.replace(Z, ee); return function (e) { var n = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id"); return n && n.value === t } }, r.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && g) { var n, r, i, o = t.getElementById(e); if (o) { if ((n = o.getAttributeNode("id")) && n.value === e) return [o]; i = t.getElementsByName(e), r = 0; while (o = i[r++]) if ((n = o.getAttributeNode("id")) && n.value === e) return [o] } return [] } }), r.find.TAG = n.getElementsByTagName ? function (e, t) { return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0 } : function (e, t) { var n, r = [], i = 0, o = t.getElementsByTagName(e); if ("*" === e) { while (n = o[i++]) 1 === n.nodeType && r.push(n); return r } return o }, r.find.CLASS = n.getElementsByClassName && function (e, t) { if ("undefined" != typeof t.getElementsByClassName && g) return t.getElementsByClassName(e) }, y = [], v = [], (n.qsa = G.test(p.querySelectorAll)) && (se(function (e) { h.appendChild(e).innerHTML = "", e.querySelectorAll("[msallowcapture^='']").length && v.push("[*^$]=" + I + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || v.push("\\[" + I + "*(?:value|" + H + ")"), e.querySelectorAll("[id~=" + x + "-]").length || v.push("~="), e.querySelectorAll(":checked").length || v.push(":checked"), e.querySelectorAll("a#" + x + "+*").length || v.push(".#.+[+~]") }), se(function (e) { e.innerHTML = ""; var t = p.createElement("input"); t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && v.push("name" + I + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && v.push(":enabled", ":disabled"), h.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && v.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), v.push(",.*:") })), (n.matchesSelector = G.test(m = h.matches || h.webkitMatchesSelector || h.mozMatchesSelector || h.oMatchesSelector || h.msMatchesSelector)) && se(function (e) { n.disconnectedMatch = m.call(e, "*"), m.call(e, "[s!='']:x"), y.push("!=", M) }), v = v.length && new RegExp(v.join("|")), y = y.length && new RegExp(y.join("|")), t = G.test(h.compareDocumentPosition), b = t || G.test(h.contains) ? function (e, t) { var n = 9 === e.nodeType ? e.documentElement : e, r = t && t.parentNode; return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r))) } : function (e, t) { if (t) while (t = t.parentNode) if (t === e) return !0; return !1 }, A = t ? function (e, t) { if (e === t) return f = !0, 0; var r = !e.compareDocumentPosition - !t.compareDocumentPosition; return r || (1 & (r = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !n.sortDetached && t.compareDocumentPosition(e) === r ? e === p || e.ownerDocument === w && b(w, e) ? -1 : t === p || t.ownerDocument === w && b(w, t) ? 1 : c ? P(c, e) - P(c, t) : 0 : 4 & r ? -1 : 1) } : function (e, t) { if (e === t) return f = !0, 0; var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], u = [t]; if (!i || !o) return e === p ? -1 : t === p ? 1 : i ? -1 : o ? 1 : c ? P(c, e) - P(c, t) : 0; if (i === o) return ce(e, t); n = e; while (n = n.parentNode) a.unshift(n); n = t; while (n = n.parentNode) u.unshift(n); while (a[r] === u[r]) r++; return r ? ce(a[r], u[r]) : a[r] === w ? -1 : u[r] === w ? 1 : 0 }, p) : p }, oe.matches = function (e, t) { return oe(e, null, null, t) }, oe.matchesSelector = function (e, t) { if ((e.ownerDocument || e) !== p && d(e), t = t.replace(_, "='$1']"), n.matchesSelector && g && !k[t + " "] && (!y || !y.test(t)) && (!v || !v.test(t))) try { var r = m.call(e, t); if (r || n.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r } catch (e) { } return oe(t, p, null, [e]).length > 0 }, oe.contains = function (e, t) { return (e.ownerDocument || e) !== p && d(e), b(e, t) }, oe.attr = function (e, t) { (e.ownerDocument || e) !== p && d(e); var i = r.attrHandle[t.toLowerCase()], o = i && D.call(r.attrHandle, t.toLowerCase()) ? i(e, t, !g) : void 0; return void 0 !== o ? o : n.attributes || !g ? e.getAttribute(t) : (o = e.getAttributeNode(t)) && o.specified ? o.value : null }, oe.escape = function (e) { return (e + "").replace(te, ne) }, oe.error = function (e) { throw new Error("Syntax error, unrecognized expression: " + e) }, oe.uniqueSort = function (e) { var t, r = [], i = 0, o = 0; if (f = !n.detectDuplicates, c = !n.sortStable && e.slice(0), e.sort(A), f) { while (t = e[o++]) t === e[o] && (i = r.push(o)); while (i--) e.splice(r[i], 1) } return c = null, e }, i = oe.getText = function (e) { var t, n = "", r = 0, o = e.nodeType; if (o) { if (1 === o || 9 === o || 11 === o) { if ("string" == typeof e.textContent) return e.textContent; for (e = e.firstChild; e; e = e.nextSibling)n += i(e) } else if (3 === o || 4 === o) return e.nodeValue } else while (t = e[r++]) n += i(t); return n }, (r = oe.selectors = { cacheLength: 50, createPseudo: ue, match: X, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function (e) { return e[1] = e[1].replace(Z, ee), e[3] = (e[3] || e[4] || e[5] || "").replace(Z, ee), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4) }, CHILD: function (e) { return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || oe.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && oe.error(e[0]), e }, PSEUDO: function (e) { var t, n = !e[6] && e[2]; return X.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && U.test(n) && (t = a(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3)) } }, filter: { TAG: function (e) { var t = e.replace(Z, ee).toLowerCase(); return "*" === e ? function () { return !0 } : function (e) { return e.nodeName && e.nodeName.toLowerCase() === t } }, CLASS: function (e) { var t = E[e + " "]; return t || (t = new RegExp("(^|" + I + ")" + e + "(" + I + "|$)")) && E(e, function (e) { return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "") }) }, ATTR: function (e, t, n) { return function (r) { var i = oe.attr(r, e); return null == i ? "!=" === t : !t || (i += "", "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i.replace(W, " ") + " ").indexOf(n) > -1 : "|=" === t && (i === n || i.slice(0, n.length + 1) === n + "-")) } }, CHILD: function (e, t, n, r, i) { var o = "nth" !== e.slice(0, 3), a = "last" !== e.slice(-4), u = "of-type" === t; return 1 === r && 0 === i ? function (e) { return !!e.parentNode } : function (t, n, s) { var l, c, f, d, p, h, g = o !== a ? "nextSibling" : "previousSibling", v = t.parentNode, y = u && t.nodeName.toLowerCase(), m = !s && !u, b = !1; if (v) { if (o) { while (g) { d = t; while (d = d[g]) if (u ? d.nodeName.toLowerCase() === y : 1 === d.nodeType) return !1; h = g = "only" === e && !h && "nextSibling" } return !0 } if (h = [a ? v.firstChild : v.lastChild], a && m) { b = (p = (l = (c = (f = (d = v)[x] || (d[x] = {}))[d.uniqueID] || (f[d.uniqueID] = {}))[e] || [])[0] === C && l[1]) && l[2], d = p && v.childNodes[p]; while (d = ++p && d && d[g] || (b = p = 0) || h.pop()) if (1 === d.nodeType && ++b && d === t) { c[e] = [C, p, b]; break } } else if (m && (b = p = (l = (c = (f = (d = t)[x] || (d[x] = {}))[d.uniqueID] || (f[d.uniqueID] = {}))[e] || [])[0] === C && l[1]), !1 === b) while (d = ++p && d && d[g] || (b = p = 0) || h.pop()) if ((u ? d.nodeName.toLowerCase() === y : 1 === d.nodeType) && ++b && (m && ((c = (f = d[x] || (d[x] = {}))[d.uniqueID] || (f[d.uniqueID] = {}))[e] = [C, b]), d === t)) break; return (b -= i) === r || b % r == 0 && b / r >= 0 } } }, PSEUDO: function (e, t) { var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || oe.error("unsupported pseudo: " + e); return i[x] ? i(t) : i.length > 1 ? (n = [e, e, "", t], r.setFilters.hasOwnProperty(e.toLowerCase()) ? ue(function (e, n) { var r, o = i(e, t), a = o.length; while (a--) e[r = P(e, o[a])] = !(n[r] = o[a]) }) : function (e) { return i(e, 0, n) }) : i } }, pseudos: { not: ue(function (e) { var t = [], n = [], r = u(e.replace($, "$1")); return r[x] ? ue(function (e, t, n, i) { var o, a = r(e, null, i, []), u = e.length; while (u--) (o = a[u]) && (e[u] = !(t[u] = o)) }) : function (e, i, o) { return t[0] = e, r(t, null, o, n), t[0] = null, !n.pop() } }), has: ue(function (e) { return function (t) { return oe(e, t).length > 0 } }), contains: ue(function (e) { return e = e.replace(Z, ee), function (t) { return (t.textContent || t.innerText || i(t)).indexOf(e) > -1 } }), lang: ue(function (e) { return V.test(e || "") || oe.error("unsupported lang: " + e), e = e.replace(Z, ee).toLowerCase(), function (t) { var n; do { if (n = g ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-") } while ((t = t.parentNode) && 1 === t.nodeType); return !1 } }), target: function (t) { var n = e.location && e.location.hash; return n && n.slice(1) === t.id }, root: function (e) { return e === h }, focus: function (e) { return e === p.activeElement && (!p.hasFocus || p.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) }, enabled: pe(!1), disabled: pe(!0), checked: function (e) { var t = e.nodeName.toLowerCase(); return "input" === t && !!e.checked || "option" === t && !!e.selected }, selected: function (e) { return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected }, empty: function (e) { for (e = e.firstChild; e; e = e.nextSibling)if (e.nodeType < 6) return !1; return !0 }, parent: function (e) { return !r.pseudos.empty(e) }, header: function (e) { return Y.test(e.nodeName) }, input: function (e) { return Q.test(e.nodeName) }, button: function (e) { var t = e.nodeName.toLowerCase(); return "input" === t && "button" === e.type || "button" === t }, text: function (e) { var t; return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) }, first: he(function () { return [0] }), last: he(function (e, t) { return [t - 1] }), eq: he(function (e, t, n) { return [n < 0 ? n + t : n] }), even: he(function (e, t) { for (var n = 0; n < t; n += 2)e.push(n); return e }), odd: he(function (e, t) { for (var n = 1; n < t; n += 2)e.push(n); return e }), lt: he(function (e, t, n) { for (var r = n < 0 ? n + t : n; --r >= 0;)e.push(r); return e }), gt: he(function (e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;)e.push(r); return e }) } }).pseudos.nth = r.pseudos.eq; for (t in { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) r.pseudos[t] = fe(t); for (t in { submit: !0, reset: !0 }) r.pseudos[t] = de(t); function ve() { } ve.prototype = r.filters = r.pseudos, r.setFilters = new ve, a = oe.tokenize = function (e, t) { var n, i, o, a, u, s, l, c = N[e + " "]; if (c) return t ? 0 : c.slice(0); u = e, s = [], l = r.preFilter; while (u) { n && !(i = F.exec(u)) || (i && (u = u.slice(i[0].length) || u), s.push(o = [])), n = !1, (i = z.exec(u)) && (n = i.shift(), o.push({ value: n, type: i[0].replace($, " ") }), u = u.slice(n.length)); for (a in r.filter) !(i = X[a].exec(u)) || l[a] && !(i = l[a](i)) || (n = i.shift(), o.push({ value: n, type: a, matches: i }), u = u.slice(n.length)); if (!n) break } return t ? u.length : u ? oe.error(e) : N(e, s).slice(0) }; function ye(e) { for (var t = 0, n = e.length, r = ""; t < n; t++)r += e[t].value; return r } function me(e, t, n) { var r = t.dir, i = t.next, o = i || r, a = n && "parentNode" === o, u = T++; return t.first ? function (t, n, i) { while (t = t[r]) if (1 === t.nodeType || a) return e(t, n, i); return !1 } : function (t, n, s) { var l, c, f, d = [C, u]; if (s) { while (t = t[r]) if ((1 === t.nodeType || a) && e(t, n, s)) return !0 } else while (t = t[r]) if (1 === t.nodeType || a) if (f = t[x] || (t[x] = {}), c = f[t.uniqueID] || (f[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase()) t = t[r] || t; else { if ((l = c[o]) && l[0] === C && l[1] === u) return d[2] = l[2]; if (c[o] = d, d[2] = e(t, n, s)) return !0 } return !1 } } function be(e) { return e.length > 1 ? function (t, n, r) { var i = e.length; while (i--) if (!e[i](t, n, r)) return !1; return !0 } : e[0] } function xe(e, t, n) { for (var r = 0, i = t.length; r < i; r++)oe(e, t[r], n); return n } function we(e, t, n, r, i) { for (var o, a = [], u = 0, s = e.length, l = null != t; u < s; u++)(o = e[u]) && (n && !n(o, r, i) || (a.push(o), l && t.push(u))); return a } function Ce(e, t, n, r, i, o) { return r && !r[x] && (r = Ce(r)), i && !i[x] && (i = Ce(i, o)), ue(function (o, a, u, s) { var l, c, f, d = [], p = [], h = a.length, g = o || xe(t || "*", u.nodeType ? [u] : u, []), v = !e || !o && t ? g : we(g, d, e, u, s), y = n ? i || (o ? e : h || r) ? [] : a : v; if (n && n(v, y, u, s), r) { l = we(y, p), r(l, [], u, s), c = l.length; while (c--) (f = l[c]) && (y[p[c]] = !(v[p[c]] = f)) } if (o) { if (i || e) { if (i) { l = [], c = y.length; while (c--) (f = y[c]) && l.push(v[c] = f); i(null, y = [], l, s) } c = y.length; while (c--) (f = y[c]) && (l = i ? P(o, f) : d[c]) > -1 && (o[l] = !(a[l] = f)) } } else y = we(y === a ? y.splice(h, y.length) : y), i ? i(null, a, y, s) : q.apply(a, y) }) } function Te(e) { for (var t, n, i, o = e.length, a = r.relative[e[0].type], u = a || r.relative[" "], s = a ? 1 : 0, c = me(function (e) { return e === t }, u, !0), f = me(function (e) { return P(t, e) > -1 }, u, !0), d = [function (e, n, r) { var i = !a && (r || n !== l) || ((t = n).nodeType ? c(e, n, r) : f(e, n, r)); return t = null, i }]; s < o; s++)if (n = r.relative[e[s].type]) d = [me(be(d), n)]; else { if ((n = r.filter[e[s].type].apply(null, e[s].matches))[x]) { for (i = ++s; i < o; i++)if (r.relative[e[i].type]) break; return Ce(s > 1 && be(d), s > 1 && ye(e.slice(0, s - 1).concat({ value: " " === e[s - 2].type ? "*" : "" })).replace($, "$1"), n, s < i && Te(e.slice(s, i)), i < o && Te(e = e.slice(i)), i < o && ye(e)) } d.push(n) } return be(d) } function Ee(e, t) { var n = t.length > 0, i = e.length > 0, o = function (o, a, u, s, c) { var f, h, v, y = 0, m = "0", b = o && [], x = [], w = l, T = o || i && r.find.TAG("*", c), E = C += null == w ? 1 : Math.random() || .1, N = T.length; for (c && (l = a === p || a || c); m !== N && null != (f = T[m]); m++) { if (i && f) { h = 0, a || f.ownerDocument === p || (d(f), u = !g); while (v = e[h++]) if (v(f, a || p, u)) { s.push(f); break } c && (C = E) } n && ((f = !v && f) && y-- , o && b.push(f)) } if (y += m, n && m !== y) { h = 0; while (v = t[h++]) v(b, x, a, u); if (o) { if (y > 0) while (m--) b[m] || x[m] || (x[m] = L.call(s)); x = we(x) } q.apply(s, x), c && !o && x.length > 0 && y + t.length > 1 && oe.uniqueSort(s) } return c && (C = E, l = w), b }; return n ? ue(o) : o } return u = oe.compile = function (e, t) { var n, r = [], i = [], o = k[e + " "]; if (!o) { t || (t = a(e)), n = t.length; while (n--) (o = Te(t[n]))[x] ? r.push(o) : i.push(o); (o = k(e, Ee(i, r))).selector = e } return o }, s = oe.select = function (e, t, n, i) { var o, s, l, c, f, d = "function" == typeof e && e, p = !i && a(e = d.selector || e); if (n = n || [], 1 === p.length) { if ((s = p[0] = p[0].slice(0)).length > 2 && "ID" === (l = s[0]).type && 9 === t.nodeType && g && r.relative[s[1].type]) { if (!(t = (r.find.ID(l.matches[0].replace(Z, ee), t) || [])[0])) return n; d && (t = t.parentNode), e = e.slice(s.shift().value.length) } o = X.needsContext.test(e) ? 0 : s.length; while (o--) { if (l = s[o], r.relative[c = l.type]) break; if ((f = r.find[c]) && (i = f(l.matches[0].replace(Z, ee), J.test(s[0].type) && ge(t.parentNode) || t))) { if (s.splice(o, 1), !(e = i.length && ye(s))) return q.apply(n, i), n; break } } } return (d || u(e, p))(i, t, !g, n, !t || J.test(e) && ge(t.parentNode) || t), n }, n.sortStable = x.split("").sort(A).join("") === x, n.detectDuplicates = !!f, d(), n.sortDetached = se(function (e) { return 1 & e.compareDocumentPosition(p.createElement("fieldset")) }), se(function (e) { return e.innerHTML = "", "#" === e.firstChild.getAttribute("href") }) || le("type|href|height|width", function (e, t, n) { if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2) }), n.attributes && se(function (e) { return e.innerHTML = "", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value") }) || le("value", function (e, t, n) { if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue }), se(function (e) { return null == e.getAttribute("disabled") }) || le(H, function (e, t, n) { var r; if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }), oe }(e); w.find = E, w.expr = E.selectors, w.expr[":"] = w.expr.pseudos, w.uniqueSort = w.unique = E.uniqueSort, w.text = E.getText, w.isXMLDoc = E.isXML, w.contains = E.contains, w.escapeSelector = E.escape; var N = function (e, t, n) { var r = [], i = void 0 !== n; while ((e = e[t]) && 9 !== e.nodeType) if (1 === e.nodeType) { if (i && w(e).is(n)) break; r.push(e) } return r }, k = function (e, t) { for (var n = []; e; e = e.nextSibling)1 === e.nodeType && e !== t && n.push(e); return n }, A = w.expr.match.needsContext; function D(e, t) { return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() } var S = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; function L(e, t, n) { return g(t) ? w.grep(e, function (e, r) { return !!t.call(e, r, e) !== n }) : t.nodeType ? w.grep(e, function (e) { return e === t !== n }) : "string" != typeof t ? w.grep(e, function (e) { return s.call(t, e) > -1 !== n }) : w.filter(t, e, n) } w.filter = function (e, t, n) { var r = t[0]; return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? w.find.matchesSelector(r, e) ? [r] : [] : w.find.matches(e, w.grep(t, function (e) { return 1 === e.nodeType })) }, w.fn.extend({ find: function (e) { var t, n, r = this.length, i = this; if ("string" != typeof e) return this.pushStack(w(e).filter(function () { for (t = 0; t < r; t++)if (w.contains(i[t], this)) return !0 })); for (n = this.pushStack([]), t = 0; t < r; t++)w.find(e, i[t], n); return r > 1 ? w.uniqueSort(n) : n }, filter: function (e) { return this.pushStack(L(this, e || [], !1)) }, not: function (e) { return this.pushStack(L(this, e || [], !0)) }, is: function (e) { return !!L(this, "string" == typeof e && A.test(e) ? w(e) : e || [], !1).length } }); var j, q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; (w.fn.init = function (e, t, n) { var i, o; if (!e) return this; if (n = n || j, "string" == typeof e) { if (!(i = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : q.exec(e)) || !i[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); if (i[1]) { if (t = t instanceof w ? t[0] : t, w.merge(this, w.parseHTML(i[1], t && t.nodeType ? t.ownerDocument || t : r, !0)), S.test(i[1]) && w.isPlainObject(t)) for (i in t) g(this[i]) ? this[i](t[i]) : this.attr(i, t[i]); return this } return (o = r.getElementById(i[2])) && (this[0] = o, this.length = 1), this } return e.nodeType ? (this[0] = e, this.length = 1, this) : g(e) ? void 0 !== n.ready ? n.ready(e) : e(w) : w.makeArray(e, this) }).prototype = w.fn, j = w(r); var O = /^(?:parents|prev(?:Until|All))/, P = { children: !0, contents: !0, next: !0, prev: !0 }; w.fn.extend({ has: function (e) { var t = w(e, this), n = t.length; return this.filter(function () { for (var e = 0; e < n; e++)if (w.contains(this, t[e])) return !0 }) }, closest: function (e, t) { var n, r = 0, i = this.length, o = [], a = "string" != typeof e && w(e); if (!A.test(e)) for (; r < i; r++)for (n = this[r]; n && n !== t; n = n.parentNode)if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && w.find.matchesSelector(n, e))) { o.push(n); break } return this.pushStack(o.length > 1 ? w.uniqueSort(o) : o) }, index: function (e) { return e ? "string" == typeof e ? s.call(w(e), this[0]) : s.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 }, add: function (e, t) { return this.pushStack(w.uniqueSort(w.merge(this.get(), w(e, t)))) }, addBack: function (e) { return this.add(null == e ? this.prevObject : this.prevObject.filter(e)) } }); function H(e, t) { while ((e = e[t]) && 1 !== e.nodeType); return e } w.each({ parent: function (e) { var t = e.parentNode; return t && 11 !== t.nodeType ? t : null }, parents: function (e) { return N(e, "parentNode") }, parentsUntil: function (e, t, n) { return N(e, "parentNode", n) }, next: function (e) { return H(e, "nextSibling") }, prev: function (e) { return H(e, "previousSibling") }, nextAll: function (e) { return N(e, "nextSibling") }, prevAll: function (e) { return N(e, "previousSibling") }, nextUntil: function (e, t, n) { return N(e, "nextSibling", n) }, prevUntil: function (e, t, n) { return N(e, "previousSibling", n) }, siblings: function (e) { return k((e.parentNode || {}).firstChild, e) }, children: function (e) { return k(e.firstChild) }, contents: function (e) { return D(e, "iframe") ? e.contentDocument : (D(e, "template") && (e = e.content || e), w.merge([], e.childNodes)) } }, function (e, t) { w.fn[e] = function (n, r) { var i = w.map(this, t, n); return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = w.filter(r, i)), this.length > 1 && (P[e] || w.uniqueSort(i), O.test(e) && i.reverse()), this.pushStack(i) } }); var I = /[^\x20\t\r\n\f]+/g; function R(e) { var t = {}; return w.each(e.match(I) || [], function (e, n) { t[n] = !0 }), t } w.Callbacks = function (e) { e = "string" == typeof e ? R(e) : w.extend({}, e); var t, n, r, i, o = [], a = [], u = -1, s = function () { for (i = i || e.once, r = t = !0; a.length; u = -1) { n = a.shift(); while (++u < o.length) !1 === o[u].apply(n[0], n[1]) && e.stopOnFalse && (u = o.length, n = !1) } e.memory || (n = !1), t = !1, i && (o = n ? [] : "") }, l = { add: function () { return o && (n && !t && (u = o.length - 1, a.push(n)), function t(n) { w.each(n, function (n, r) { g(r) ? e.unique && l.has(r) || o.push(r) : r && r.length && "string" !== b(r) && t(r) }) }(arguments), n && !t && s()), this }, remove: function () { return w.each(arguments, function (e, t) { var n; while ((n = w.inArray(t, o, n)) > -1) o.splice(n, 1), n <= u && u-- }), this }, has: function (e) { return e ? w.inArray(e, o) > -1 : o.length > 0 }, empty: function () { return o && (o = []), this }, disable: function () { return i = a = [], o = n = "", this }, disabled: function () { return !o }, lock: function () { return i = a = [], n || t || (o = n = ""), this }, locked: function () { return !!i }, fireWith: function (e, n) { return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || s()), this }, fire: function () { return l.fireWith(this, arguments), this }, fired: function () { return !!r } }; return l }; function B(e) { return e } function M(e) { throw e } function W(e, t, n, r) { var i; try { e && g(i = e.promise) ? i.call(e).done(t).fail(n) : e && g(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r)) } catch (e) { n.apply(void 0, [e]) } } w.extend({ Deferred: function (t) { var n = [["notify", "progress", w.Callbacks("memory"), w.Callbacks("memory"), 2], ["resolve", "done", w.Callbacks("once memory"), w.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", w.Callbacks("once memory"), w.Callbacks("once memory"), 1, "rejected"]], r = "pending", i = { state: function () { return r }, always: function () { return o.done(arguments).fail(arguments), this }, "catch": function (e) { return i.then(null, e) }, pipe: function () { var e = arguments; return w.Deferred(function (t) { w.each(n, function (n, r) { var i = g(e[r[4]]) && e[r[4]]; o[r[1]](function () { var e = i && i.apply(this, arguments); e && g(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments) }) }), e = null }).promise() }, then: function (t, r, i) { var o = 0; function a(t, n, r, i) { return function () { var u = this, s = arguments, l = function () { var e, l; if (!(t < o)) { if ((e = r.apply(u, s)) === n.promise()) throw new TypeError("Thenable self-resolution"); l = e && ("object" == typeof e || "function" == typeof e) && e.then, g(l) ? i ? l.call(e, a(o, n, B, i), a(o, n, M, i)) : (o++ , l.call(e, a(o, n, B, i), a(o, n, M, i), a(o, n, B, n.notifyWith))) : (r !== B && (u = void 0, s = [e]), (i || n.resolveWith)(u, s)) } }, c = i ? l : function () { try { l() } catch (e) { w.Deferred.exceptionHook && w.Deferred.exceptionHook(e, c.stackTrace), t + 1 >= o && (r !== M && (u = void 0, s = [e]), n.rejectWith(u, s)) } }; t ? c() : (w.Deferred.getStackHook && (c.stackTrace = w.Deferred.getStackHook()), e.setTimeout(c)) } } return w.Deferred(function (e) { n[0][3].add(a(0, e, g(i) ? i : B, e.notifyWith)), n[1][3].add(a(0, e, g(t) ? t : B)), n[2][3].add(a(0, e, g(r) ? r : M)) }).promise() }, promise: function (e) { return null != e ? w.extend(e, i) : i } }, o = {}; return w.each(n, function (e, t) { var a = t[2], u = t[5]; i[t[1]] = a.add, u && a.add(function () { r = u }, n[3 - e][2].disable, n[3 - e][3].disable, n[0][2].lock, n[0][3].lock), a.add(t[3].fire), o[t[0]] = function () { return o[t[0] + "With"](this === o ? void 0 : this, arguments), this }, o[t[0] + "With"] = a.fireWith }), i.promise(o), t && t.call(o, o), o }, when: function (e) { var t = arguments.length, n = t, r = Array(n), i = o.call(arguments), a = w.Deferred(), u = function (e) { return function (n) { r[e] = this, i[e] = arguments.length > 1 ? o.call(arguments) : n, --t || a.resolveWith(r, i) } }; if (t <= 1 && (W(e, a.done(u(n)).resolve, a.reject, !t), "pending" === a.state() || g(i[n] && i[n].then))) return a.then(); while (n--) W(i[n], u(n), a.reject); return a.promise() } }); var $ = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; w.Deferred.exceptionHook = function (t, n) { e.console && e.console.warn && t && $.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n) }, w.readyException = function (t) { e.setTimeout(function () { throw t }) }; var F = w.Deferred(); w.fn.ready = function (e) { return F.then(e)["catch"](function (e) { w.readyException(e) }), this }, w.extend({ isReady: !1, readyWait: 1, ready: function (e) { (!0 === e ? --w.readyWait : w.isReady) || (w.isReady = !0, !0 !== e && --w.readyWait > 0 || F.resolveWith(r, [w])) } }), w.ready.then = F.then; function z() { r.removeEventListener("DOMContentLoaded", z), e.removeEventListener("load", z), w.ready() } "complete" === r.readyState || "loading" !== r.readyState && !r.documentElement.doScroll ? e.setTimeout(w.ready) : (r.addEventListener("DOMContentLoaded", z), e.addEventListener("load", z)); var _ = function (e, t, n, r, i, o, a) { var u = 0, s = e.length, l = null == n; if ("object" === b(n)) { i = !0; for (u in n) _(e, t, u, n[u], !0, o, a) } else if (void 0 !== r && (i = !0, g(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function (e, t, n) { return l.call(w(e), n) })), t)) for (; u < s; u++)t(e[u], n, a ? r : r.call(e[u], u, t(e[u], n))); return i ? e : l ? t.call(e) : s ? t(e[0], n) : o }, U = /^-ms-/, V = /-([a-z])/g; function X(e, t) { return t.toUpperCase() } function Q(e) { return e.replace(U, "ms-").replace(V, X) } var Y = function (e) { return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType }; function G() { this.expando = w.expando + G.uid++ } G.uid = 1, G.prototype = { cache: function (e) { var t = e[this.expando]; return t || (t = {}, Y(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, { value: t, configurable: !0 }))), t }, set: function (e, t, n) { var r, i = this.cache(e); if ("string" == typeof t) i[Q(t)] = n; else for (r in t) i[Q(r)] = t[r]; return i }, get: function (e, t) { return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][Q(t)] }, access: function (e, t, n) { return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t) }, remove: function (e, t) { var n, r = e[this.expando]; if (void 0 !== r) { if (void 0 !== t) { n = (t = Array.isArray(t) ? t.map(Q) : (t = Q(t)) in r ? [t] : t.match(I) || []).length; while (n--) delete r[t[n]] } (void 0 === t || w.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando]) } }, hasData: function (e) { var t = e[this.expando]; return void 0 !== t && !w.isEmptyObject(t) } }; var K = new G, J = new G, Z = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, ee = /[A-Z]/g; function te(e) { return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Z.test(e) ? JSON.parse(e) : e) } function ne(e, t, n) { var r; if (void 0 === n && 1 === e.nodeType) if (r = "data-" + t.replace(ee, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(r))) { try { n = te(n) } catch (e) { } J.set(e, t, n) } else n = void 0; return n } w.extend({ hasData: function (e) { return J.hasData(e) || K.hasData(e) }, data: function (e, t, n) { return J.access(e, t, n) }, removeData: function (e, t) { J.remove(e, t) }, _data: function (e, t, n) { return K.access(e, t, n) }, _removeData: function (e, t) { K.remove(e, t) } }), w.fn.extend({ data: function (e, t) { var n, r, i, o = this[0], a = o && o.attributes; if (void 0 === e) { if (this.length && (i = J.get(o), 1 === o.nodeType && !K.get(o, "hasDataAttrs"))) { n = a.length; while (n--) a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = Q(r.slice(5)), ne(o, r, i[r])); K.set(o, "hasDataAttrs", !0) } return i } return "object" == typeof e ? this.each(function () { J.set(this, e) }) : _(this, function (t) { var n; if (o && void 0 === t) { if (void 0 !== (n = J.get(o, e))) return n; if (void 0 !== (n = ne(o, e))) return n } else this.each(function () { J.set(this, e, t) }) }, null, t, arguments.length > 1, null, !0) }, removeData: function (e) { return this.each(function () { J.remove(this, e) }) } }), w.extend({ queue: function (e, t, n) { var r; if (e) return t = (t || "fx") + "queue", r = K.get(e, t), n && (!r || Array.isArray(n) ? r = K.access(e, t, w.makeArray(n)) : r.push(n)), r || [] }, dequeue: function (e, t) { t = t || "fx"; var n = w.queue(e, t), r = n.length, i = n.shift(), o = w._queueHooks(e, t), a = function () { w.dequeue(e, t) }; "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire() }, _queueHooks: function (e, t) { var n = t + "queueHooks"; return K.get(e, n) || K.access(e, n, { empty: w.Callbacks("once memory").add(function () { K.remove(e, [t + "queue", n]) }) }) } }), w.fn.extend({ queue: function (e, t) { var n = 2; return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? w.queue(this[0], e) : void 0 === t ? this : this.each(function () { var n = w.queue(this, e, t); w._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && w.dequeue(this, e) }) }, dequeue: function (e) { return this.each(function () { w.dequeue(this, e) }) }, clearQueue: function (e) { return this.queue(e || "fx", []) }, promise: function (e, t) { var n, r = 1, i = w.Deferred(), o = this, a = this.length, u = function () { --r || i.resolveWith(o, [o]) }; "string" != typeof e && (t = e, e = void 0), e = e || "fx"; while (a--) (n = K.get(o[a], e + "queueHooks")) && n.empty && (r++ , n.empty.add(u)); return u(), i.promise(t) } }); var re = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, ie = new RegExp("^(?:([+-])=|)(" + re + ")([a-z%]*)$", "i"), oe = ["Top", "Right", "Bottom", "Left"], ae = function (e, t) { return "none" === (e = t || e).style.display || "" === e.style.display && w.contains(e.ownerDocument, e) && "none" === w.css(e, "display") }, ue = function (e, t, n, r) { var i, o, a = {}; for (o in t) a[o] = e.style[o], e.style[o] = t[o]; i = n.apply(e, r || []); for (o in t) e.style[o] = a[o]; return i }; function se(e, t, n, r) { var i, o, a = 20, u = r ? function () { return r.cur() } : function () { return w.css(e, t, "") }, s = u(), l = n && n[3] || (w.cssNumber[t] ? "" : "px"), c = (w.cssNumber[t] || "px" !== l && +s) && ie.exec(w.css(e, t)); if (c && c[3] !== l) { s /= 2, l = l || c[3], c = +s || 1; while (a--) w.style(e, t, c + l), (1 - o) * (1 - (o = u() / s || .5)) <= 0 && (a = 0), c /= o; c *= 2, w.style(e, t, c + l), n = n || [] } return n && (c = +c || +s || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i } var le = {}; function ce(e) { var t, n = e.ownerDocument, r = e.nodeName, i = le[r]; return i || (t = n.body.appendChild(n.createElement(r)), i = w.css(t, "display"), t.parentNode.removeChild(t), "none" === i && (i = "block"), le[r] = i, i) } function fe(e, t) { for (var n, r, i = [], o = 0, a = e.length; o < a; o++)(r = e[o]).style && (n = r.style.display, t ? ("none" === n && (i[o] = K.get(r, "display") || null, i[o] || (r.style.display = "")), "" === r.style.display && ae(r) && (i[o] = ce(r))) : "none" !== n && (i[o] = "none", K.set(r, "display", n))); for (o = 0; o < a; o++)null != i[o] && (e[o].style.display = i[o]); return e } w.fn.extend({ show: function () { return fe(this, !0) }, hide: function () { return fe(this) }, toggle: function (e) { return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function () { ae(this) ? w(this).show() : w(this).hide() }) } }); var de = /^(?:checkbox|radio)$/i, pe = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i, he = /^$|^module$|\/(?:java|ecma)script/i, ge = { option: [1, ""], thead: [1, "", "
"], col: [2, "", "
"], tr: [2, "", "
"], td: [3, "", "
"], _default: [0, "", ""] }; ge.optgroup = ge.option, ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td; function ve(e, t) { var n; return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && D(e, t) ? w.merge([e], n) : n } function ye(e, t) { for (var n = 0, r = e.length; n < r; n++)K.set(e[n], "globalEval", !t || K.get(t[n], "globalEval")) } var me = /<|&#?\w+;/; function be(e, t, n, r, i) { for (var o, a, u, s, l, c, f = t.createDocumentFragment(), d = [], p = 0, h = e.length; p < h; p++)if ((o = e[p]) || 0 === o) if ("object" === b(o)) w.merge(d, o.nodeType ? [o] : o); else if (me.test(o)) { a = a || f.appendChild(t.createElement("div")), u = (pe.exec(o) || ["", ""])[1].toLowerCase(), s = ge[u] || ge._default, a.innerHTML = s[1] + w.htmlPrefilter(o) + s[2], c = s[0]; while (c--) a = a.lastChild; w.merge(d, a.childNodes), (a = f.firstChild).textContent = "" } else d.push(t.createTextNode(o)); f.textContent = "", p = 0; while (o = d[p++]) if (r && w.inArray(o, r) > -1) i && i.push(o); else if (l = w.contains(o.ownerDocument, o), a = ve(f.appendChild(o), "script"), l && ye(a), n) { c = 0; while (o = a[c++]) he.test(o.type || "") && n.push(o) } return f } !function () { var e = r.createDocumentFragment().appendChild(r.createElement("div")), t = r.createElement("input"); t.setAttribute("type", "radio"), t.setAttribute("checked", "checked"), t.setAttribute("name", "t"), e.appendChild(t), h.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked, e.innerHTML = "", h.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue }(); var xe = r.documentElement, we = /^key/, Ce = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, Te = /^([^.]*)(?:\.(.+)|)/; function Ee() { return !0 } function Ne() { return !1 } function ke() { try { return r.activeElement } catch (e) { } } function Ae(e, t, n, r, i, o) { var a, u; if ("object" == typeof t) { "string" != typeof n && (r = r || n, n = void 0); for (u in t) Ae(e, u, n, r, t[u], o); return e } if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = Ne; else if (!i) return e; return 1 === o && (a = i, (i = function (e) { return w().off(e), a.apply(this, arguments) }).guid = a.guid || (a.guid = w.guid++)), e.each(function () { w.event.add(this, t, i, r, n) }) } w.event = { global: {}, add: function (e, t, n, r, i) { var o, a, u, s, l, c, f, d, p, h, g, v = K.get(e); if (v) { n.handler && (n = (o = n).handler, i = o.selector), i && w.find.matchesSelector(xe, i), n.guid || (n.guid = w.guid++), (s = v.events) || (s = v.events = {}), (a = v.handle) || (a = v.handle = function (t) { return "undefined" != typeof w && w.event.triggered !== t.type ? w.event.dispatch.apply(e, arguments) : void 0 }), l = (t = (t || "").match(I) || [""]).length; while (l--) p = g = (u = Te.exec(t[l]) || [])[1], h = (u[2] || "").split(".").sort(), p && (f = w.event.special[p] || {}, p = (i ? f.delegateType : f.bindType) || p, f = w.event.special[p] || {}, c = w.extend({ type: p, origType: g, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && w.expr.match.needsContext.test(i), namespace: h.join(".") }, o), (d = s[p]) || ((d = s[p] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(e, r, h, a) || e.addEventListener && e.addEventListener(p, a)), f.add && (f.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), i ? d.splice(d.delegateCount++, 0, c) : d.push(c), w.event.global[p] = !0) } }, remove: function (e, t, n, r, i) { var o, a, u, s, l, c, f, d, p, h, g, v = K.hasData(e) && K.get(e); if (v && (s = v.events)) { l = (t = (t || "").match(I) || [""]).length; while (l--) if (u = Te.exec(t[l]) || [], p = g = u[1], h = (u[2] || "").split(".").sort(), p) { f = w.event.special[p] || {}, d = s[p = (r ? f.delegateType : f.bindType) || p] || [], u = u[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = d.length; while (o--) c = d[o], !i && g !== c.origType || n && n.guid !== c.guid || u && !u.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (d.splice(o, 1), c.selector && d.delegateCount-- , f.remove && f.remove.call(e, c)); a && !d.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || w.removeEvent(e, p, v.handle), delete s[p]) } else for (p in s) w.event.remove(e, p + t[l], n, r, !0); w.isEmptyObject(s) && K.remove(e, "handle events") } }, dispatch: function (e) { var t = w.event.fix(e), n, r, i, o, a, u, s = new Array(arguments.length), l = (K.get(this, "events") || {})[t.type] || [], c = w.event.special[t.type] || {}; for (s[0] = t, n = 1; n < arguments.length; n++)s[n] = arguments[n]; if (t.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, t)) { u = w.event.handlers.call(this, t, l), n = 0; while ((o = u[n++]) && !t.isPropagationStopped()) { t.currentTarget = o.elem, r = 0; while ((a = o.handlers[r++]) && !t.isImmediatePropagationStopped()) t.rnamespace && !t.rnamespace.test(a.namespace) || (t.handleObj = a, t.data = a.data, void 0 !== (i = ((w.event.special[a.origType] || {}).handle || a.handler).apply(o.elem, s)) && !1 === (t.result = i) && (t.preventDefault(), t.stopPropagation())) } return c.postDispatch && c.postDispatch.call(this, t), t.result } }, handlers: function (e, t) { var n, r, i, o, a, u = [], s = t.delegateCount, l = e.target; if (s && l.nodeType && !("click" === e.type && e.button >= 1)) for (; l !== this; l = l.parentNode || this)if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { for (o = [], a = {}, n = 0; n < s; n++)void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? w(i, this).index(l) > -1 : w.find(i, this, null, [l]).length), a[i] && o.push(r); o.length && u.push({ elem: l, handlers: o }) } return l = this, s < t.length && u.push({ elem: l, handlers: t.slice(s) }), u }, addProp: function (e, t) { Object.defineProperty(w.Event.prototype, e, { enumerable: !0, configurable: !0, get: g(t) ? function () { if (this.originalEvent) return t(this.originalEvent) } : function () { if (this.originalEvent) return this.originalEvent[e] }, set: function (t) { Object.defineProperty(this, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) } }) }, fix: function (e) { return e[w.expando] ? e : new w.Event(e) }, special: { load: { noBubble: !0 }, focus: { trigger: function () { if (this !== ke() && this.focus) return this.focus(), !1 }, delegateType: "focusin" }, blur: { trigger: function () { if (this === ke() && this.blur) return this.blur(), !1 }, delegateType: "focusout" }, click: { trigger: function () { if ("checkbox" === this.type && this.click && D(this, "input")) return this.click(), !1 }, _default: function (e) { return D(e.target, "a") } }, beforeunload: { postDispatch: function (e) { void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result) } } } }, w.removeEvent = function (e, t, n) { e.removeEventListener && e.removeEventListener(t, n) }, w.Event = function (e, t) { if (!(this instanceof w.Event)) return new w.Event(e, t); e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ee : Ne, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && w.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[w.expando] = !0 }, w.Event.prototype = { constructor: w.Event, isDefaultPrevented: Ne, isPropagationStopped: Ne, isImmediatePropagationStopped: Ne, isSimulated: !1, preventDefault: function () { var e = this.originalEvent; this.isDefaultPrevented = Ee, e && !this.isSimulated && e.preventDefault() }, stopPropagation: function () { var e = this.originalEvent; this.isPropagationStopped = Ee, e && !this.isSimulated && e.stopPropagation() }, stopImmediatePropagation: function () { var e = this.originalEvent; this.isImmediatePropagationStopped = Ee, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation() } }, w.each({ altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, "char": !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: function (e) { var t = e.button; return null == e.which && we.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Ce.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which } }, w.event.addProp), w.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function (e, t) { w.event.special[e] = { delegateType: t, bindType: t, handle: function (e) { var n, r = this, i = e.relatedTarget, o = e.handleObj; return i && (i === r || w.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n } } }), w.fn.extend({ on: function (e, t, n, r) { return Ae(this, e, t, n, r) }, one: function (e, t, n, r) { return Ae(this, e, t, n, r, 1) }, off: function (e, t, n) { var r, i; if (e && e.preventDefault && e.handleObj) return r = e.handleObj, w(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this; if ("object" == typeof e) { for (i in e) this.off(i, t, e[i]); return this } return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = Ne), this.each(function () { w.event.remove(this, e, n, t) }) } }); var De = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, Se = /\s*$/g; function qe(e, t) { return D(e, "table") && D(11 !== t.nodeType ? t : t.firstChild, "tr") ? w(e).children("tbody")[0] || e : e } function Oe(e) { return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e } function Pe(e) { return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e } function He(e, t) { var n, r, i, o, a, u, s, l; if (1 === t.nodeType) { if (K.hasData(e) && (o = K.access(e), a = K.set(t, o), l = o.events)) { delete a.handle, a.events = {}; for (i in l) for (n = 0, r = l[i].length; n < r; n++)w.event.add(t, i, l[i][n]) } J.hasData(e) && (u = J.access(e), s = w.extend({}, u), J.set(t, s)) } } function Ie(e, t) { var n = t.nodeName.toLowerCase(); "input" === n && de.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue) } function Re(e, t, n, r) { t = a.apply([], t); var i, o, u, s, l, c, f = 0, d = e.length, p = d - 1, v = t[0], y = g(v); if (y || d > 1 && "string" == typeof v && !h.checkClone && Le.test(v)) return e.each(function (i) { var o = e.eq(i); y && (t[0] = v.call(this, i, o.html())), Re(o, t, n, r) }); if (d && (i = be(t, e[0].ownerDocument, !1, e, r), o = i.firstChild, 1 === i.childNodes.length && (i = o), o || r)) { for (s = (u = w.map(ve(i, "script"), Oe)).length; f < d; f++)l = i, f !== p && (l = w.clone(l, !0, !0), s && w.merge(u, ve(l, "script"))), n.call(e[f], l, f); if (s) for (c = u[u.length - 1].ownerDocument, w.map(u, Pe), f = 0; f < s; f++)l = u[f], he.test(l.type || "") && !K.access(l, "globalEval") && w.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? w._evalUrl && w._evalUrl(l.src) : m(l.textContent.replace(je, ""), c, l)) } return e } function Be(e, t, n) { for (var r, i = t ? w.filter(t, e) : e, o = 0; null != (r = i[o]); o++)n || 1 !== r.nodeType || w.cleanData(ve(r)), r.parentNode && (n && w.contains(r.ownerDocument, r) && ye(ve(r, "script")), r.parentNode.removeChild(r)); return e } w.extend({ htmlPrefilter: function (e) { return e.replace(De, "<$1>") }, clone: function (e, t, n) { var r, i, o, a, u = e.cloneNode(!0), s = w.contains(e.ownerDocument, e); if (!(h.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || w.isXMLDoc(e))) for (a = ve(u), r = 0, i = (o = ve(e)).length; r < i; r++)Ie(o[r], a[r]); if (t) if (n) for (o = o || ve(e), a = a || ve(u), r = 0, i = o.length; r < i; r++)He(o[r], a[r]); else He(e, u); return (a = ve(u, "script")).length > 0 && ye(a, !s && ve(e, "script")), u }, cleanData: function (e) { for (var t, n, r, i = w.event.special, o = 0; void 0 !== (n = e[o]); o++)if (Y(n)) { if (t = n[K.expando]) { if (t.events) for (r in t.events) i[r] ? w.event.remove(n, r) : w.removeEvent(n, r, t.handle); n[K.expando] = void 0 } n[J.expando] && (n[J.expando] = void 0) } } }), w.fn.extend({ detach: function (e) { return Be(this, e, !0) }, remove: function (e) { return Be(this, e) }, text: function (e) { return _(this, function (e) { return void 0 === e ? w.text(this) : this.empty().each(function () { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e) }) }, null, e, arguments.length) }, append: function () { return Re(this, arguments, function (e) { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || qe(this, e).appendChild(e) }) }, prepend: function () { return Re(this, arguments, function (e) { if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { var t = qe(this, e); t.insertBefore(e, t.firstChild) } }) }, before: function () { return Re(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this) }) }, after: function () { return Re(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this.nextSibling) }) }, empty: function () { for (var e, t = 0; null != (e = this[t]); t++)1 === e.nodeType && (w.cleanData(ve(e, !1)), e.textContent = ""); return this }, clone: function (e, t) { return e = null != e && e, t = null == t ? e : t, this.map(function () { return w.clone(this, e, t) }) }, html: function (e) { return _(this, function (e) { var t = this[0] || {}, n = 0, r = this.length; if (void 0 === e && 1 === t.nodeType) return t.innerHTML; if ("string" == typeof e && !Se.test(e) && !ge[(pe.exec(e) || ["", ""])[1].toLowerCase()]) { e = w.htmlPrefilter(e); try { for (; n < r; n++)1 === (t = this[n] || {}).nodeType && (w.cleanData(ve(t, !1)), t.innerHTML = e); t = 0 } catch (e) { } } t && this.empty().append(e) }, null, e, arguments.length) }, replaceWith: function () { var e = []; return Re(this, arguments, function (t) { var n = this.parentNode; w.inArray(this, e) < 0 && (w.cleanData(ve(this)), n && n.replaceChild(t, this)) }, e) } }), w.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (e, t) { w.fn[e] = function (e) { for (var n, r = [], i = w(e), o = i.length - 1, a = 0; a <= o; a++)n = a === o ? this : this.clone(!0), w(i[a])[t](n), u.apply(r, n.get()); return this.pushStack(r) } }); var Me = new RegExp("^(" + re + ")(?!px)[a-z%]+$", "i"), We = function (t) { var n = t.ownerDocument.defaultView; return n && n.opener || (n = e), n.getComputedStyle(t) }, $e = new RegExp(oe.join("|"), "i"); !function () { function t() { if (c) { l.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", c.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", xe.appendChild(l).appendChild(c); var t = e.getComputedStyle(c); i = "1%" !== t.top, s = 12 === n(t.marginLeft), c.style.right = "60%", u = 36 === n(t.right), o = 36 === n(t.width), c.style.position = "absolute", a = 36 === c.offsetWidth || "absolute", xe.removeChild(l), c = null } } function n(e) { return Math.round(parseFloat(e)) } var i, o, a, u, s, l = r.createElement("div"), c = r.createElement("div"); c.style && (c.style.backgroundClip = "content-box", c.cloneNode(!0).style.backgroundClip = "", h.clearCloneStyle = "content-box" === c.style.backgroundClip, w.extend(h, { boxSizingReliable: function () { return t(), o }, pixelBoxStyles: function () { return t(), u }, pixelPosition: function () { return t(), i }, reliableMarginLeft: function () { return t(), s }, scrollboxSize: function () { return t(), a } })) }(); function Fe(e, t, n) { var r, i, o, a, u = e.style; return (n = n || We(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || w.contains(e.ownerDocument, e) || (a = w.style(e, t)), !h.pixelBoxStyles() && Me.test(a) && $e.test(t) && (r = u.width, i = u.minWidth, o = u.maxWidth, u.minWidth = u.maxWidth = u.width = a, a = n.width, u.width = r, u.minWidth = i, u.maxWidth = o)), void 0 !== a ? a + "" : a } function ze(e, t) { return { get: function () { if (!e()) return (this.get = t).apply(this, arguments); delete this.get } } } var _e = /^(none|table(?!-c[ea]).+)/, Ue = /^--/, Ve = { position: "absolute", visibility: "hidden", display: "block" }, Xe = { letterSpacing: "0", fontWeight: "400" }, Qe = ["Webkit", "Moz", "ms"], Ye = r.createElement("div").style; function Ge(e) { if (e in Ye) return e; var t = e[0].toUpperCase() + e.slice(1), n = Qe.length; while (n--) if ((e = Qe[n] + t) in Ye) return e } function Ke(e) { var t = w.cssProps[e]; return t || (t = w.cssProps[e] = Ge(e) || e), t } function Je(e, t, n) { var r = ie.exec(t); return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t } function Ze(e, t, n, r, i, o) { var a = "width" === t ? 1 : 0, u = 0, s = 0; if (n === (r ? "border" : "content")) return 0; for (; a < 4; a += 2)"margin" === n && (s += w.css(e, n + oe[a], !0, i)), r ? ("content" === n && (s -= w.css(e, "padding" + oe[a], !0, i)), "margin" !== n && (s -= w.css(e, "border" + oe[a] + "Width", !0, i))) : (s += w.css(e, "padding" + oe[a], !0, i), "padding" !== n ? s += w.css(e, "border" + oe[a] + "Width", !0, i) : u += w.css(e, "border" + oe[a] + "Width", !0, i)); return !r && o >= 0 && (s += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - s - u - .5))), s } function et(e, t, n) { var r = We(e), i = Fe(e, t, r), o = "border-box" === w.css(e, "boxSizing", !1, r), a = o; if (Me.test(i)) { if (!n) return i; i = "auto" } return a = a && (h.boxSizingReliable() || i === e.style[t]), ("auto" === i || !parseFloat(i) && "inline" === w.css(e, "display", !1, r)) && (i = e["offset" + t[0].toUpperCase() + t.slice(1)], a = !0), (i = parseFloat(i) || 0) + Ze(e, t, n || (o ? "border" : "content"), a, r, i) + "px" } w.extend({ cssHooks: { opacity: { get: function (e, t) { if (t) { var n = Fe(e, "opacity"); return "" === n ? "1" : n } } } }, cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 }, cssProps: {}, style: function (e, t, n, r) { if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { var i, o, a, u = Q(t), s = Ue.test(t), l = e.style; if (s || (t = Ke(u)), a = w.cssHooks[t] || w.cssHooks[u], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; "string" == (o = typeof n) && (i = ie.exec(n)) && i[1] && (n = se(e, t, i), o = "number"), null != n && n === n && ("number" === o && (n += i && i[3] || (w.cssNumber[u] ? "" : "px")), h.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (s ? l.setProperty(t, n) : l[t] = n)) } }, css: function (e, t, n, r) { var i, o, a, u = Q(t); return Ue.test(t) || (t = Ke(u)), (a = w.cssHooks[t] || w.cssHooks[u]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Fe(e, t, r)), "normal" === i && t in Xe && (i = Xe[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i } }), w.each(["height", "width"], function (e, t) { w.cssHooks[t] = { get: function (e, n, r) { if (n) return !_e.test(w.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? et(e, t, r) : ue(e, Ve, function () { return et(e, t, r) }) }, set: function (e, n, r) { var i, o = We(e), a = "border-box" === w.css(e, "boxSizing", !1, o), u = r && Ze(e, t, r, a, o); return a && h.scrollboxSize() === o.position && (u -= Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - parseFloat(o[t]) - Ze(e, t, "border", !1, o) - .5)), u && (i = ie.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = w.css(e, t)), Je(e, n, u) } } }), w.cssHooks.marginLeft = ze(h.reliableMarginLeft, function (e, t) { if (t) return (parseFloat(Fe(e, "marginLeft")) || e.getBoundingClientRect().left - ue(e, { marginLeft: 0 }, function () { return e.getBoundingClientRect().left })) + "px" }), w.each({ margin: "", padding: "", border: "Width" }, function (e, t) { w.cssHooks[e + t] = { expand: function (n) { for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++)i[e + oe[r] + t] = o[r] || o[r - 2] || o[0]; return i } }, "margin" !== e && (w.cssHooks[e + t].set = Je) }), w.fn.extend({ css: function (e, t) { return _(this, function (e, t, n) { var r, i, o = {}, a = 0; if (Array.isArray(t)) { for (r = We(e), i = t.length; a < i; a++)o[t[a]] = w.css(e, t[a], !1, r); return o } return void 0 !== n ? w.style(e, t, n) : w.css(e, t) }, e, t, arguments.length > 1) } }), w.fn.delay = function (t, n) { return t = w.fx ? w.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function (n, r) { var i = e.setTimeout(n, t); r.stop = function () { e.clearTimeout(i) } }) }, function () { var e = r.createElement("input"), t = r.createElement("select").appendChild(r.createElement("option")); e.type = "checkbox", h.checkOn = "" !== e.value, h.optSelected = t.selected, (e = r.createElement("input")).value = "t", e.type = "radio", h.radioValue = "t" === e.value }(); var tt, nt = w.expr.attrHandle; w.fn.extend({ attr: function (e, t) { return _(this, w.attr, e, t, arguments.length > 1) }, removeAttr: function (e) { return this.each(function () { w.removeAttr(this, e) }) } }), w.extend({ attr: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? w.prop(e, t, n) : (1 === o && w.isXMLDoc(e) || (i = w.attrHooks[t.toLowerCase()] || (w.expr.match.bool.test(t) ? tt : void 0)), void 0 !== n ? null === n ? void w.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = w.find.attr(e, t)) ? void 0 : r) }, attrHooks: { type: { set: function (e, t) { if (!h.radioValue && "radio" === t && D(e, "input")) { var n = e.value; return e.setAttribute("type", t), n && (e.value = n), t } } } }, removeAttr: function (e, t) { var n, r = 0, i = t && t.match(I); if (i && 1 === e.nodeType) while (n = i[r++]) e.removeAttribute(n) } }), tt = { set: function (e, t, n) { return !1 === t ? w.removeAttr(e, n) : e.setAttribute(n, n), n } }, w.each(w.expr.match.bool.source.match(/\w+/g), function (e, t) { var n = nt[t] || w.find.attr; nt[t] = function (e, t, r) { var i, o, a = t.toLowerCase(); return r || (o = nt[a], nt[a] = i, i = null != n(e, t, r) ? a : null, nt[a] = o), i } }); var rt = /^(?:input|select|textarea|button)$/i, it = /^(?:a|area)$/i; w.fn.extend({ prop: function (e, t) { return _(this, w.prop, e, t, arguments.length > 1) }, removeProp: function (e) { return this.each(function () { delete this[w.propFix[e] || e] }) } }), w.extend({ prop: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return 1 === o && w.isXMLDoc(e) || (t = w.propFix[t] || t, i = w.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t] }, propHooks: { tabIndex: { get: function (e) { var t = w.find.attr(e, "tabindex"); return t ? parseInt(t, 10) : rt.test(e.nodeName) || it.test(e.nodeName) && e.href ? 0 : -1 } } }, propFix: { "for": "htmlFor", "class": "className" } }), h.optSelected || (w.propHooks.selected = { get: function (e) { var t = e.parentNode; return t && t.parentNode && t.parentNode.selectedIndex, null }, set: function (e) { var t = e.parentNode; t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex) } }), w.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () { w.propFix[this.toLowerCase()] = this }); function ot(e) { return (e.match(I) || []).join(" ") } function at(e) { return e.getAttribute && e.getAttribute("class") || "" } function ut(e) { return Array.isArray(e) ? e : "string" == typeof e ? e.match(I) || [] : [] } w.fn.extend({ addClass: function (e) { var t, n, r, i, o, a, u, s = 0; if (g(e)) return this.each(function (t) { w(this).addClass(e.call(this, t, at(this))) }); if ((t = ut(e)).length) while (n = this[s++]) if (i = at(n), r = 1 === n.nodeType && " " + ot(i) + " ") { a = 0; while (o = t[a++]) r.indexOf(" " + o + " ") < 0 && (r += o + " "); i !== (u = ot(r)) && n.setAttribute("class", u) } return this }, removeClass: function (e) { var t, n, r, i, o, a, u, s = 0; if (g(e)) return this.each(function (t) { w(this).removeClass(e.call(this, t, at(this))) }); if (!arguments.length) return this.attr("class", ""); if ((t = ut(e)).length) while (n = this[s++]) if (i = at(n), r = 1 === n.nodeType && " " + ot(i) + " ") { a = 0; while (o = t[a++]) while (r.indexOf(" " + o + " ") > -1) r = r.replace(" " + o + " ", " "); i !== (u = ot(r)) && n.setAttribute("class", u) } return this }, toggleClass: function (e, t) { var n = typeof e, r = "string" === n || Array.isArray(e); return "boolean" == typeof t && r ? t ? this.addClass(e) : this.removeClass(e) : g(e) ? this.each(function (n) { w(this).toggleClass(e.call(this, n, at(this), t), t) }) : this.each(function () { var t, i, o, a; if (r) { i = 0, o = w(this), a = ut(e); while (t = a[i++]) o.hasClass(t) ? o.removeClass(t) : o.addClass(t) } else void 0 !== e && "boolean" !== n || ((t = at(this)) && K.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : K.get(this, "__className__") || "")) }) }, hasClass: function (e) { var t, n, r = 0; t = " " + e + " "; while (n = this[r++]) if (1 === n.nodeType && (" " + ot(at(n)) + " ").indexOf(t) > -1) return !0; return !1 } }); var st = /\r/g; w.fn.extend({ val: function (e) { var t, n, r, i = this[0]; { if (arguments.length) return r = g(e), this.each(function (n) { var i; 1 === this.nodeType && (null == (i = r ? e.call(this, n, w(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = w.map(i, function (e) { return null == e ? "" : e + "" })), (t = w.valHooks[this.type] || w.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i)) }); if (i) return (t = w.valHooks[i.type] || w.valHooks[i.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof (n = i.value) ? n.replace(st, "") : null == n ? "" : n } } }), w.extend({ valHooks: { option: { get: function (e) { var t = w.find.attr(e, "value"); return null != t ? t : ot(w.text(e)) } }, select: { get: function (e) { var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, u = a ? null : [], s = a ? o + 1 : i.length; for (r = o < 0 ? s : a ? o : 0; r < s; r++)if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !D(n.parentNode, "optgroup"))) { if (t = w(n).val(), a) return t; u.push(t) } return u }, set: function (e, t) { var n, r, i = e.options, o = w.makeArray(t), a = i.length; while (a--) ((r = i[a]).selected = w.inArray(w.valHooks.option.get(r), o) > -1) && (n = !0); return n || (e.selectedIndex = -1), o } } } }), w.each(["radio", "checkbox"], function () { w.valHooks[this] = { set: function (e, t) { if (Array.isArray(t)) return e.checked = w.inArray(w(e).val(), t) > -1 } }, h.checkOn || (w.valHooks[this].get = function (e) { return null === e.getAttribute("value") ? "on" : e.value }) }), h.focusin = "onfocusin" in e; var lt = /^(?:focusinfocus|focusoutblur)$/, ct = function (e) { e.stopPropagation() }; w.extend(w.event, { trigger: function (t, n, i, o) { var a, u, s, l, c, d, p, h, y = [i || r], m = f.call(t, "type") ? t.type : t, b = f.call(t, "namespace") ? t.namespace.split(".") : []; if (u = h = s = i = i || r, 3 !== i.nodeType && 8 !== i.nodeType && !lt.test(m + w.event.triggered) && (m.indexOf(".") > -1 && (m = (b = m.split(".")).shift(), b.sort()), c = m.indexOf(":") < 0 && "on" + m, t = t[w.expando] ? t : new w.Event(m, "object" == typeof t && t), t.isTrigger = o ? 2 : 3, t.namespace = b.join("."), t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = i), n = null == n ? [t] : w.makeArray(n, [t]), p = w.event.special[m] || {}, o || !p.trigger || !1 !== p.trigger.apply(i, n))) { if (!o && !p.noBubble && !v(i)) { for (l = p.delegateType || m, lt.test(l + m) || (u = u.parentNode); u; u = u.parentNode)y.push(u), s = u; s === (i.ownerDocument || r) && y.push(s.defaultView || s.parentWindow || e) } a = 0; while ((u = y[a++]) && !t.isPropagationStopped()) h = u, t.type = a > 1 ? l : p.bindType || m, (d = (K.get(u, "events") || {})[t.type] && K.get(u, "handle")) && d.apply(u, n), (d = c && u[c]) && d.apply && Y(u) && (t.result = d.apply(u, n), !1 === t.result && t.preventDefault()); return t.type = m, o || t.isDefaultPrevented() || p._default && !1 !== p._default.apply(y.pop(), n) || !Y(i) || c && g(i[m]) && !v(i) && ((s = i[c]) && (i[c] = null), w.event.triggered = m, t.isPropagationStopped() && h.addEventListener(m, ct), i[m](), t.isPropagationStopped() && h.removeEventListener(m, ct), w.event.triggered = void 0, s && (i[c] = s)), t.result } }, simulate: function (e, t, n) { var r = w.extend(new w.Event, n, { type: e, isSimulated: !0 }); w.event.trigger(r, null, t) } }), w.fn.extend({ trigger: function (e, t) { return this.each(function () { w.event.trigger(e, t, this) }) }, triggerHandler: function (e, t) { var n = this[0]; if (n) return w.event.trigger(e, t, n, !0) } }), h.focusin || w.each({ focus: "focusin", blur: "focusout" }, function (e, t) { var n = function (e) { w.event.simulate(t, e.target, w.event.fix(e)) }; w.event.special[t] = { setup: function () { var r = this.ownerDocument || this, i = K.access(r, t); i || r.addEventListener(e, n, !0), K.access(r, t, (i || 0) + 1) }, teardown: function () { var r = this.ownerDocument || this, i = K.access(r, t) - 1; i ? K.access(r, t, i) : (r.removeEventListener(e, n, !0), K.remove(r, t)) } } }); var ft = /\[\]$/, dt = /\r?\n/g, pt = /^(?:submit|button|image|reset|file)$/i, ht = /^(?:input|select|textarea|keygen)/i; function gt(e, t, n, r) { var i; if (Array.isArray(t)) w.each(t, function (t, i) { n || ft.test(e) ? r(e, i) : gt(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r) }); else if (n || "object" !== b(t)) r(e, t); else for (i in t) gt(e + "[" + i + "]", t[i], n, r) } w.param = function (e, t) { var n, r = [], i = function (e, t) { var n = g(t) ? t() : t; r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n) }; if (Array.isArray(e) || e.jquery && !w.isPlainObject(e)) w.each(e, function () { i(this.name, this.value) }); else for (n in e) gt(n, e[n], t, i); return r.join("&") }, w.fn.extend({ serialize: function () { return w.param(this.serializeArray()) }, serializeArray: function () { return this.map(function () { var e = w.prop(this, "elements"); return e ? w.makeArray(e) : this }).filter(function () { var e = this.type; return this.name && !w(this).is(":disabled") && ht.test(this.nodeName) && !pt.test(e) && (this.checked || !de.test(e)) }).map(function (e, t) { var n = w(this).val(); return null == n ? null : Array.isArray(n) ? w.map(n, function (e) { return { name: t.name, value: e.replace(dt, "\r\n") } }) : { name: t.name, value: n.replace(dt, "\r\n") } }).get() } }), w.fn.extend({ wrapAll: function (e) { var t; return this[0] && (g(e) && (e = e.call(this[0])), t = w(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function () { var e = this; while (e.firstElementChild) e = e.firstElementChild; return e }).append(this)), this }, wrapInner: function (e) { return g(e) ? this.each(function (t) { w(this).wrapInner(e.call(this, t)) }) : this.each(function () { var t = w(this), n = t.contents(); n.length ? n.wrapAll(e) : t.append(e) }) }, wrap: function (e) { var t = g(e); return this.each(function (n) { w(this).wrapAll(t ? e.call(this, n) : e) }) }, unwrap: function (e) { return this.parent(e).not("body").each(function () { w(this).replaceWith(this.childNodes) }), this } }), w.expr.pseudos.hidden = function (e) { return !w.expr.pseudos.visible(e) }, w.expr.pseudos.visible = function (e) { return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, h.createHTMLDocument = function () { var e = r.implementation.createHTMLDocument("").body; return e.innerHTML = "
", 2 === e.childNodes.length }(), w.parseHTML = function (e, t, n) { if ("string" != typeof e) return []; "boolean" == typeof t && (n = t, t = !1); var i, o, a; return t || (h.createHTMLDocument ? ((i = (t = r.implementation.createHTMLDocument("")).createElement("base")).href = r.location.href, t.head.appendChild(i)) : t = r), o = S.exec(e), a = !n && [], o ? [t.createElement(o[1])] : (o = be([e], t, a), a && a.length && w(a).remove(), w.merge([], o.childNodes)) }, w.offset = { setOffset: function (e, t, n) { var r, i, o, a, u, s, l, c = w.css(e, "position"), f = w(e), d = {}; "static" === c && (e.style.position = "relative"), u = f.offset(), o = w.css(e, "top"), s = w.css(e, "left"), (l = ("absolute" === c || "fixed" === c) && (o + s).indexOf("auto") > -1) ? (a = (r = f.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(s) || 0), g(t) && (t = t.call(e, n, w.extend({}, u))), null != t.top && (d.top = t.top - u.top + a), null != t.left && (d.left = t.left - u.left + i), "using" in t ? t.using.call(e, d) : f.css(d) } }, w.fn.extend({ offset: function (e) { if (arguments.length) return void 0 === e ? this : this.each(function (t) { w.offset.setOffset(this, e, t) }); var t, n, r = this[0]; if (r) return r.getClientRects().length ? (t = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, { top: t.top + n.pageYOffset, left: t.left + n.pageXOffset }) : { top: 0, left: 0 } }, position: function () { if (this[0]) { var e, t, n, r = this[0], i = { top: 0, left: 0 }; if ("fixed" === w.css(r, "position")) t = r.getBoundingClientRect(); else { t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement; while (e && (e === n.body || e === n.documentElement) && "static" === w.css(e, "position")) e = e.parentNode; e && e !== r && 1 === e.nodeType && ((i = w(e).offset()).top += w.css(e, "borderTopWidth", !0), i.left += w.css(e, "borderLeftWidth", !0)) } return { top: t.top - i.top - w.css(r, "marginTop", !0), left: t.left - i.left - w.css(r, "marginLeft", !0) } } }, offsetParent: function () { return this.map(function () { var e = this.offsetParent; while (e && "static" === w.css(e, "position")) e = e.offsetParent; return e || xe }) } }), w.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (e, t) { var n = "pageYOffset" === t; w.fn[e] = function (r) { return _(this, function (e, r, i) { var o; if (v(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i) return o ? o[t] : e[r]; o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i }, e, r, arguments.length) } }), w.each(["top", "left"], function (e, t) { w.cssHooks[t] = ze(h.pixelPosition, function (e, n) { if (n) return n = Fe(e, t), Me.test(n) ? w(e).position()[t] + "px" : n }) }), w.each({ Height: "height", Width: "width" }, function (e, t) { w.each({ padding: "inner" + e, content: t, "": "outer" + e }, function (n, r) { w.fn[r] = function (i, o) { var a = arguments.length && (n || "boolean" != typeof i), u = n || (!0 === i || !0 === o ? "margin" : "border"); return _(this, function (t, n, i) { var o; return v(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement, Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? w.css(t, n, u) : w.style(t, n, i, u) }, t, a ? i : void 0, a) } }) }), w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function (e, t) { w.fn[t] = function (e, n) { return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t) } }), w.fn.extend({ hover: function (e, t) { return this.mouseenter(e).mouseleave(t || e) } }), w.fn.extend({ bind: function (e, t, n) { return this.on(e, null, t, n) }, unbind: function (e, t) { return this.off(e, null, t) }, delegate: function (e, t, n, r) { return this.on(t, e, n, r) }, undelegate: function (e, t, n) { return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n) } }), w.proxy = function (e, t) { var n, r, i; if ("string" == typeof t && (n = e[t], t = e, e = n), g(e)) return r = o.call(arguments, 2), i = function () { return e.apply(t || this, r.concat(o.call(arguments))) }, i.guid = e.guid = e.guid || w.guid++ , i }, w.holdReady = function (e) { e ? w.readyWait++ : w.ready(!0) }, w.isArray = Array.isArray, w.parseJSON = JSON.parse, w.nodeName = D, w.isFunction = g, w.isWindow = v, w.camelCase = Q, w.type = b, w.now = Date.now, w.isNumeric = function (e) { var t = w.type(e); return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e)) }, "function" == typeof define && define.amd && define("jquery", [], function () { return w }); var vt = e.jQuery, yt = e.$; return w.noConflict = function (t) { return e.$ === w && (e.$ = yt), t && e.jQuery === w && (e.jQuery = vt), w }, t || (e.jQuery = e.$ = w), w }); \ No newline at end of file diff --git a/assets/default/wails.js b/assets/default/wails.js new file mode 100644 index 000000000..e7bc365f7 --- /dev/null +++ b/assets/default/wails.js @@ -0,0 +1,337 @@ +// Wails runtime JS + +(function () { + window.wails = window.wails || { + $: {} + }; + + /****************** Utility Functions ************************/ + + // -------------- Random -------------- + // AwesomeRandom + function cryptoRandom() { + var array = new Uint32Array(1); + return window.crypto.getRandomValues(array)[0]; + } + + // LOLRandom + function basicRandom() { + return Math.random() * 9007199254740991; + } + + // Pick one based on browser capability + var randomFunc; + if (window.crypto) { + randomFunc = cryptoRandom; + } else { + randomFunc = basicRandom; + } + + // -------------- Identifiers --------------- + + function isValidIdentifier(name) { + // Don't xss yourself :-) + try { + new Function("var " + name); + return true + } catch (e) { + return false + } + } + + // -------------- JS ---------------- + function addScript(js, callbackID) { + console.log("Adding script: " + js) + var script = document.createElement("script"); + script.text = js; + document.body.appendChild(script); + console.log("Calling back with:" + callbackID); + window.wails.events.emit(callbackID); + } + + // -------------- CSS --------------- + // Adapted from webview - thanks zserge! + function injectCSS(css) { + var elem = document.createElement('style'); + elem.setAttribute('type', 'text/css'); + if (elem.styleSheet) { + elem.styleSheet.cssText = css; + } else { + elem.appendChild(document.createTextNode(css)); + } + var head = document.head || document.getElementsByTagName('head')[0]; + head.appendChild(elem) + } + + /************************* Bindings *************************/ + + var bindingsBasePath = window.wails.$; + + // Creates the path given in the bindings path + function addBindingPath(pathSections) { + // Start at the base path + var currentPath = bindingsBasePath + // for each section of the given path + for (var section of pathSections) { + + // Is section a valid javascript identifier? + if (!isValidIdentifier(section)) { + var errMessage = section + " is not a valid javascript identifier." + var err = new Error(errMessage) + return [null, err] + } + + // Add if doesn't exist + if (!currentPath[section]) { + currentPath[section] = {} + } + // update current path to new path + currentPath = currentPath[section] + } + return [currentPath, null] + } + + function newBinding(bindingName) { + + // Get all the sections of the binding + var bindingSections = bindingName.split('.'); + + // Get the actual function/method call name + var callName = bindingSections.pop(); + + // Add path to binding + [pathToBinding, err] = addBindingPath(bindingSections) + + if (err != null) { + // We need to return an error + return err + } + + // Add binding call + pathToBinding[callName] = function () { + + // No timeout by default + var timeout = 0; + + // Actual function + function dynamic() { + var args = [].slice.call(arguments) + return call(bindingName, args, timeout); + } + + // Allow setting timeout to function + dynamic.setTimeout = function (newTimeout) { + timeout = newTimeout; + } + + // Allow getting timeout to function + dynamic.getTimeout = function () { + return timeout; + } + + return dynamic; + }(); + } + + /************************************************************/ + + /*************************** Calls **************************/ + + var callbacks = {}; + + // Call sends a message to the backend to call the binding with the + // given data. A promise is returned and will be completed when the + // backend responds. This will be resolved when the call was successful + // or rejected if an error is passed back. + // There is a timeout mechanism. If the call doesn't respond in the given + // time (in milliseconds) then the promise is rejected. + + function call(bindingName, data, timeout) { + + // Timeout infinite by default + if (timeout == null || timeout == undefined) { + timeout = 0; + } + + // Create a promise + return new Promise(function (resolve, reject) { + + // Create a unique callbackID + var callbackID; + do { + callbackID = bindingName + "-" + randomFunc(); + } while (callbacks[callbackID]) + + // Set timeout + if (timeout > 0) { + var timeoutHandle = setTimeout(function () { + reject(Error("Call to " + bindingName + " timed out. Request ID: " + callbackID)) + }, timeout); + } + + // Store callback + callbacks[callbackID] = { + timeoutHandle: timeoutHandle, + reject: reject, + resolve: resolve + } + try { + var payloaddata = JSON.stringify(data) + // Create the message + message = { + type: "call", + callbackid: callbackID, + payload: { + bindingName: bindingName, + data: payloaddata, + } + } + + // Make the call + var payload = JSON.stringify(message) + external.invoke(payload); + } catch (e) { + console.error(e) + } + }) + } + + + // Called by the backend to return data to a previously called + // binding invocation + function callback(incomingMessage) { + // Parse the message + var message + try { + message = JSON.parse(incomingMessage) + } catch (e) { + wails.log.debug("Invalid JSON passed to callback: " + e.message) + wails.log.debug("Message: " + incomingMessage) + return + } + callbackID = message.callbackid + callbackData = callbacks[callbackID] + if (!callbackData) { + console.error("Callback '" + callbackID + "' not registed!!!") + return + } + clearTimeout(callbackData.timeoutHandle) + delete callbacks[callbackID] + if (message.error) { + return callbackData.reject(message.error) + } + return callbackData.resolve(message.data) + } + + /************************************************************/ + + + /************************** Events **************************/ + + var eventListeners = {}; + + // Registers event listeners + function on(eventName, callback) { + eventListeners[eventName] = eventListeners[eventName] || []; + eventListeners[eventName].push(callback); + } + + // notify informs frontend listeners that an event was emitted with the given data + function notify(eventName, data) { + if (eventListeners[eventName]) { + eventListeners[eventName].forEach(element => { + var parsedData = [] + // Parse data if we have it + if (data) { + try { + parsedData = JSON.parse(data); + } catch (e) { + wails.log.error("Invalid JSON data sent to notify. Event name = " + eventName) + } + } + element.apply(null, parsedData); + }); + } + } + + // emit an event with the given name and data + function emit(eventName) { + + // Calculate the data + var data = JSON.stringify([].slice.apply(arguments).slice(1)); + + // Notify backend + message = { + type: "event", + payload: { + name: eventName, + data: data, + } + } + external.invoke(JSON.stringify(message)); + } + + // Events calls + window.wails.events = { emit: emit, on: on }; + + /************************************************************/ + + /************************* Logging **************************/ + + // Sends a log message to the backend with the given + // level + message + function sendLogMessage(level, message) { + + // Log Message + message = { + type: "log", + payload: { + level: level, + message: message, + } + } + external.invoke(JSON.stringify(message)); + } + + function logDebug(message) { + sendLogMessage("debug", message); + } + function logInfo(message) { + sendLogMessage("info", message); + } + function logWarning(message) { + sendLogMessage("warning", message); + } + function logError(message) { + sendLogMessage("error", message); + } + function logFatal(message) { + sendLogMessage("fatal", message); + } + + window.wails.log = { + debug: logDebug, + info: logInfo, + warning: logWarning, + error: logError, + fatal: logFatal, + }; + + /************************** Exports *************************/ + + window.wails._ = { + newBinding: newBinding, + callback: callback, + notify: notify, + sendLogMessage: sendLogMessage, + callbacks: callbacks, + injectCSS: injectCSS, + addScript: addScript, + } + + /************************************************************/ + + // Notify backend that the runtime has finished loading + window.wails.events.emit("wails:loaded"); + +})() \ No newline at end of file diff --git a/assets/headless/index.html b/assets/headless/index.html new file mode 100644 index 000000000..194f1279c --- /dev/null +++ b/assets/headless/index.html @@ -0,0 +1,179 @@ + + + + Wails Headless + + + + +
+
+
Disconnected

+

+
Waiting for backend
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/cmd/frameworks/bootstrap4lux/a_bootstrap4-packr.go b/cmd/frameworks/bootstrap4lux/a_bootstrap4-packr.go deleted file mode 100644 index a0d5f95f8..000000000 --- a/cmd/frameworks/bootstrap4lux/a_bootstrap4-packr.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by github.com/gobuffalo/packr. DO NOT EDIT. - -package bootstrap4 - -import "github.com/gobuffalo/packr" - -// You can use the "packr clean" command to clean up this, -// and any other packr generated files. -func init() { - packr.PackJSONBytes("./assets", "LICENSE", "\"VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTEtMjAxOCBUd2l0dGVyLCBJbmMuCkNvcHlyaWdodCAoYykgMjAxMS0yMDE4IFRoZSBCb290c3RyYXAgQXV0aG9ycwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4=\"") - packr.PackJSONBytes("./assets", "bootstrap.bundle.min.js", "\"LyohCiAgKiBCb290c3RyYXAgdjQuMC4wIChodHRwczovL2dldGJvb3RzdHJhcC5jb20pCiAgKiBDb3B5cmlnaHQgMjAxMS0yMDE4IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpCiAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogICovCiFmdW5jdGlvbih0LGUpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/ZShleHBvcnRzLHJlcXVpcmUoImpxdWVyeSIpKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiLCJqcXVlcnkiXSxlKTplKHQuYm9vdHN0cmFwPXt9LHQualF1ZXJ5KX0odGhpcyxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLmtleSxpKX19ZnVuY3Rpb24gaSh0LGUsaSl7cmV0dXJuIGUmJm4odC5wcm90b3R5cGUsZSksaSYmbih0LGkpLHR9ZnVuY3Rpb24gcigpe3JldHVybihyPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIGkgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSYmKHRbaV09bltpXSl9cmV0dXJuIHR9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Zm9yKHZhciBvLHMsYSxsLGMsaCxmLHUsZCxwLGcsbSxfLHYsRSx5LGIsVCxDLHcsSSxBLEQsUyxPLE4saz1mdW5jdGlvbih0KXt2YXIgZT0hMTtmdW5jdGlvbiBuKGUpe3ZhciBuPXRoaXMscj0hMTtyZXR1cm4gdCh0aGlzKS5vbmUoaS5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbigpe3I9ITB9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cnx8aS50cmlnZ2VyVHJhbnNpdGlvbkVuZChuKX0sZSksdGhpc312YXIgaT17VFJBTlNJVElPTl9FTkQ6ImJzVHJhbnNpdGlvbkVuZCIsZ2V0VUlEOmZ1bmN0aW9uKHQpe2Rve3QrPX5+KDFlNipNYXRoLnJhbmRvbSgpKX13aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSk7cmV0dXJuIHR9LGdldFNlbGVjdG9yRnJvbUVsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFyIG4saT1lLmdldEF0dHJpYnV0ZSgiZGF0YS10YXJnZXQiKTtpJiYiIyIhPT1pfHwoaT1lLmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiIiksIiMiPT09aS5jaGFyQXQoMCkmJihuPWksaT1uPSJmdW5jdGlvbiI9PXR5cGVvZiB0LmVzY2FwZVNlbGVjdG9yP3QuZXNjYXBlU2VsZWN0b3Iobikuc3Vic3RyKDEpOm4ucmVwbGFjZSgvKDp8XC58XFt8XF18LHw9fEApL2csIlxcJDEiKSk7dHJ5e3JldHVybiB0KGRvY3VtZW50KS5maW5kKGkpLmxlbmd0aD4wP2k6bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19LHJlZmxvdzpmdW5jdGlvbih0KXtyZXR1cm4gdC5vZmZzZXRIZWlnaHR9LHRyaWdnZXJUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKG4pe3QobikudHJpZ2dlcihlLmVuZCl9LHN1cHBvcnRzVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKGUpfSxpc0VsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuKHRbMF18fHQpLm5vZGVUeXBlfSx0eXBlQ2hlY2tDb25maWc6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgciBpbiBuKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpKXt2YXIgbz1uW3JdLHM9ZVtyXSxhPXMmJmkuaXNFbGVtZW50KHMpPyJlbGVtZW50IjoobD1zLHt9LnRvU3RyaW5nLmNhbGwobCkubWF0Y2goL1xzKFthLXpBLVpdKykvKVsxXS50b0xvd2VyQ2FzZSgpKTtpZighbmV3IFJlZ0V4cChvKS50ZXN0KGEpKXRocm93IG5ldyBFcnJvcih0LnRvVXBwZXJDYXNlKCkrJzogT3B0aW9uICInK3IrJyIgcHJvdmlkZWQgdHlwZSAiJythKyciIGJ1dCBleHBlY3RlZCB0eXBlICInK28rJyIuJyl9dmFyIGx9fTtyZXR1cm4gZT0oInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuUVVuaXQpJiZ7ZW5kOiJ0cmFuc2l0aW9uZW5kIn0sdC5mbi5lbXVsYXRlVHJhbnNpdGlvbkVuZD1uLGkuc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJih0LmV2ZW50LnNwZWNpYWxbaS5UUkFOU0lUSU9OX0VORF09e2JpbmRUeXBlOmUuZW5kLGRlbGVnYXRlVHlwZTplLmVuZCxoYW5kbGU6ZnVuY3Rpb24oZSl7aWYodChlLnRhcmdldCkuaXModGhpcykpcmV0dXJuIGUuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pLGl9KGU9ZSYmZS5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdCIpP2UuZGVmYXVsdDplKSxMPShzPSJhbGVydCIsbD0iLiIrKGE9ImJzLmFsZXJ0IiksYz0obz1lKS5mbltzXSxoPXtDTE9TRToiY2xvc2UiK2wsQ0xPU0VEOiJjbG9zZWQiK2wsQ0xJQ0tfREFUQV9BUEk6ImNsaWNrIitsKyIuZGF0YS1hcGkifSxmPSJhbGVydCIsdT0iZmFkZSIsZD0ic2hvdyIscD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZWxlbWVudD10fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmNsb3NlPWZ1bmN0aW9uKHQpe3Q9dHx8dGhpcy5fZWxlbWVudDt2YXIgZT10aGlzLl9nZXRSb290RWxlbWVudCh0KTt0aGlzLl90cmlnZ2VyQ2xvc2VFdmVudChlKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8dGhpcy5fcmVtb3ZlRWxlbWVudChlKX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7by5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsYSksdGhpcy5fZWxlbWVudD1udWxsfSxlLl9nZXRSb290RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodCksbj0hMTtyZXR1cm4gZSYmKG49byhlKVswXSksbnx8KG49byh0KS5jbG9zZXN0KCIuIitmKVswXSksbn0sZS5fdHJpZ2dlckNsb3NlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9by5FdmVudChoLkNMT1NFKTtyZXR1cm4gbyh0KS50cmlnZ2VyKGUpLGV9LGUuX3JlbW92ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztvKHQpLnJlbW92ZUNsYXNzKGQpLGsuc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJm8odCkuaGFzQ2xhc3ModSk/byh0KS5vbmUoay5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbihuKXtyZXR1cm4gZS5fZGVzdHJveUVsZW1lbnQodCxuKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDE1MCk6dGhpcy5fZGVzdHJveUVsZW1lbnQodCl9LGUuX2Rlc3Ryb3lFbGVtZW50PWZ1bmN0aW9uKHQpe28odCkuZGV0YWNoKCkudHJpZ2dlcihoLkNMT1NFRCkucmVtb3ZlKCl9LHQuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49byh0aGlzKSxpPW4uZGF0YShhKTtpfHwoaT1uZXcgdCh0aGlzKSxuLmRhdGEoYSxpKSksImNsb3NlIj09PWUmJmlbZV0odGhpcyl9KX0sdC5faGFuZGxlRGlzbWlzcz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLHQuY2xvc2UodGhpcyl9fSxpKHQsbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuMC4wIn19XSksdH0oKSxvKGRvY3VtZW50KS5vbihoLkNMSUNLX0RBVEFfQVBJLCdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJyxwLl9oYW5kbGVEaXNtaXNzKG5ldyBwKSksby5mbltzXT1wLl9qUXVlcnlJbnRlcmZhY2Usby5mbltzXS5Db25zdHJ1Y3Rvcj1wLG8uZm5bc10ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBvLmZuW3NdPWMscC5falF1ZXJ5SW50ZXJmYWNlfSxwKSxQPShtPSJidXR0b24iLHY9Ii4iKyhfPSJicy5idXR0b24iKSxFPSIuZGF0YS1hcGkiLHk9KGc9ZSkuZm5bbV0sYj0iYWN0aXZlIixUPSJidG4iLEM9ImZvY3VzIix3PSdbZGF0YS10b2dnbGVePSJidXR0b24iXScsST0nW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0nLEE9ImlucHV0IixEPSIuYWN0aXZlIixTPSIuYnRuIixPPXtDTElDS19EQVRBX0FQSToiY2xpY2siK3YrRSxGT0NVU19CTFVSX0RBVEFfQVBJOiJmb2N1cyIrditFKyIgYmx1ciIrditFfSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9lbGVtZW50PXR9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIHQ9ITAsZT0hMCxuPWcodGhpcy5fZWxlbWVudCkuY2xvc2VzdChJKVswXTtpZihuKXt2YXIgaT1nKHRoaXMuX2VsZW1lbnQpLmZpbmQoQSlbMF07aWYoaSl7aWYoInJhZGlvIj09PWkudHlwZSlpZihpLmNoZWNrZWQmJmcodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoYikpdD0hMTtlbHNle3ZhciByPWcobikuZmluZChEKVswXTtyJiZnKHIpLnJlbW92ZUNsYXNzKGIpfWlmKHQpe2lmKGkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHxuLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8aS5jbGFzc0xpc3QuY29udGFpbnMoImRpc2FibGVkIil8fG4uY2xhc3NMaXN0LmNvbnRhaW5zKCJkaXNhYmxlZCIpKXJldHVybjtpLmNoZWNrZWQ9IWcodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoYiksZyhpKS50cmlnZ2VyKCJjaGFuZ2UiKX1pLmZvY3VzKCksZT0hMX19ZSYmdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsIWcodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoYikpLHQmJmcodGhpcy5fZWxlbWVudCkudG9nZ2xlQ2xhc3MoYil9LGUuZGlzcG9zZT1mdW5jdGlvbigpe2cucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LF8pLHRoaXMuX2VsZW1lbnQ9bnVsbH0sdC5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj1nKHRoaXMpLmRhdGEoXyk7bnx8KG49bmV3IHQodGhpcyksZyh0aGlzKS5kYXRhKF8sbikpLCJ0b2dnbGUiPT09ZSYmbltlXSgpfSl9LGkodCxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX1dKSx0fSgpLGcoZG9jdW1lbnQpLm9uKE8uQ0xJQ0tfREFUQV9BUEksdyxmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIGU9dC50YXJnZXQ7ZyhlKS5oYXNDbGFzcyhUKXx8KGU9ZyhlKS5jbG9zZXN0KFMpKSxOLl9qUXVlcnlJbnRlcmZhY2UuY2FsbChnKGUpLCJ0b2dnbGUiKX0pLm9uKE8uRk9DVVNfQkxVUl9EQVRBX0FQSSx3LGZ1bmN0aW9uKHQpe3ZhciBlPWcodC50YXJnZXQpLmNsb3Nlc3QoUylbMF07ZyhlKS50b2dnbGVDbGFzcyhDLC9eZm9jdXMoaW4pPyQvLnRlc3QodC50eXBlKSl9KSxnLmZuW21dPU4uX2pRdWVyeUludGVyZmFjZSxnLmZuW21dLkNvbnN0cnVjdG9yPU4sZy5mblttXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGcuZm5bbV09eSxOLl9qUXVlcnlJbnRlcmZhY2V9LE4pLHg9ZnVuY3Rpb24odCl7dmFyIGU9ImNhcm91c2VsIixuPSJicy5jYXJvdXNlbCIsbz0iLiIrbixzPXQuZm5bZV0sYT17aW50ZXJ2YWw6NWUzLGtleWJvYXJkOiEwLHNsaWRlOiExLHBhdXNlOiJob3ZlciIsd3JhcDohMH0sbD17aW50ZXJ2YWw6IihudW1iZXJ8Ym9vbGVhbikiLGtleWJvYXJkOiJib29sZWFuIixzbGlkZToiKGJvb2xlYW58c3RyaW5nKSIscGF1c2U6IihzdHJpbmd8Ym9vbGVhbikiLHdyYXA6ImJvb2xlYW4ifSxjPSJuZXh0IixoPSJwcmV2IixmPSJsZWZ0Iix1PSJyaWdodCIsZD17U0xJREU6InNsaWRlIitvLFNMSUQ6InNsaWQiK28sS0VZRE9XTjoia2V5ZG93biIrbyxNT1VTRUVOVEVSOiJtb3VzZWVudGVyIitvLE1PVVNFTEVBVkU6Im1vdXNlbGVhdmUiK28sVE9VQ0hFTkQ6InRvdWNoZW5kIitvLExPQURfREFUQV9BUEk6ImxvYWQiK28rIi5kYXRhLWFwaSIsQ0xJQ0tfREFUQV9BUEk6ImNsaWNrIitvKyIuZGF0YS1hcGkifSxwPSJjYXJvdXNlbCIsZz0iYWN0aXZlIixtPSJzbGlkZSIsXz0iY2Fyb3VzZWwtaXRlbS1yaWdodCIsdj0iY2Fyb3VzZWwtaXRlbS1sZWZ0IixFPSJjYXJvdXNlbC1pdGVtLW5leHQiLHk9ImNhcm91c2VsLWl0ZW0tcHJldiIsYj17QUNUSVZFOiIuYWN0aXZlIixBQ1RJVkVfSVRFTToiLmFjdGl2ZS5jYXJvdXNlbC1pdGVtIixJVEVNOiIuY2Fyb3VzZWwtaXRlbSIsTkVYVF9QUkVWOiIuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IixJTkRJQ0FUT1JTOiIuY2Fyb3VzZWwtaW5kaWNhdG9ycyIsREFUQV9TTElERToiW2RhdGEtc2xpZGVdLCBbZGF0YS1zbGlkZS10b10iLERBVEFfUklERTonW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXSd9LFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGUsbil7dGhpcy5faXRlbXM9bnVsbCx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl9pc1NsaWRpbmc9ITEsdGhpcy50b3VjaFRpbWVvdXQ9bnVsbCx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKG4pLHRoaXMuX2VsZW1lbnQ9dChlKVswXSx0aGlzLl9pbmRpY2F0b3JzRWxlbWVudD10KHRoaXMuX2VsZW1lbnQpLmZpbmQoYi5JTkRJQ0FUT1JTKVswXSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpfXZhciBUPXMucHJvdG90eXBlO3JldHVybiBULm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9pc1NsaWRpbmd8fHRoaXMuX3NsaWRlKGMpfSxULm5leHRXaGVuVmlzaWJsZT1mdW5jdGlvbigpeyFkb2N1bWVudC5oaWRkZW4mJnQodGhpcy5fZWxlbWVudCkuaXMoIjp2aXNpYmxlIikmJiJoaWRkZW4iIT09dCh0aGlzLl9lbGVtZW50KS5jc3MoInZpc2liaWxpdHkiKSYmdGhpcy5uZXh0KCl9LFQucHJldj1mdW5jdGlvbigpe3RoaXMuX2lzU2xpZGluZ3x8dGhpcy5fc2xpZGUoaCl9LFQucGF1c2U9ZnVuY3Rpb24oZSl7ZXx8KHRoaXMuX2lzUGF1c2VkPSEwKSx0KHRoaXMuX2VsZW1lbnQpLmZpbmQoYi5ORVhUX1BSRVYpWzBdJiZrLnN1cHBvcnRzVHJhbnNpdGlvbkVuZCgpJiYoay50cmlnZ2VyVHJhbnNpdGlvbkVuZCh0aGlzLl9lbGVtZW50KSx0aGlzLmN5Y2xlKCEwKSksY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbH0sVC5jeWNsZT1mdW5jdGlvbih0KXt0fHwodGhpcy5faXNQYXVzZWQ9ITEpLHRoaXMuX2ludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbCksdGhpcy5fY29uZmlnLmludGVydmFsJiYhdGhpcy5faXNQYXVzZWQmJih0aGlzLl9pbnRlcnZhbD1zZXRJbnRlcnZhbCgoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP3RoaXMubmV4dFdoZW5WaXNpYmxlOnRoaXMubmV4dCkuYmluZCh0aGlzKSx0aGlzLl9jb25maWcuaW50ZXJ2YWwpKX0sVC50bz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3RoaXMuX2FjdGl2ZUVsZW1lbnQ9dCh0aGlzLl9lbGVtZW50KS5maW5kKGIuQUNUSVZFX0lURU0pWzBdO3ZhciBpPXRoaXMuX2dldEl0ZW1JbmRleCh0aGlzLl9hY3RpdmVFbGVtZW50KTtpZighKGU+dGhpcy5faXRlbXMubGVuZ3RoLTF8fGU8MCkpaWYodGhpcy5faXNTbGlkaW5nKXQodGhpcy5fZWxlbWVudCkub25lKGQuU0xJRCxmdW5jdGlvbigpe3JldHVybiBuLnRvKGUpfSk7ZWxzZXtpZihpPT09ZSlyZXR1cm4gdGhpcy5wYXVzZSgpLHZvaWQgdGhpcy5jeWNsZSgpO3ZhciByPWU+aT9jOmg7dGhpcy5fc2xpZGUocix0aGlzLl9pdGVtc1tlXSl9fSxULmRpc3Bvc2U9ZnVuY3Rpb24oKXt0KHRoaXMuX2VsZW1lbnQpLm9mZihvKSx0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxuKSx0aGlzLl9pdGVtcz1udWxsLHRoaXMuX2NvbmZpZz1udWxsLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2lzUGF1c2VkPW51bGwsdGhpcy5faXNTbGlkaW5nPW51bGwsdGhpcy5fYWN0aXZlRWxlbWVudD1udWxsLHRoaXMuX2luZGljYXRvcnNFbGVtZW50PW51bGx9LFQuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1yKHt9LGEsdCksay50eXBlQ2hlY2tDb25maWcoZSx0LGwpLHR9LFQuX2FkZEV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9jb25maWcua2V5Ym9hcmQmJnQodGhpcy5fZWxlbWVudCkub24oZC5LRVlET1dOLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9rZXlkb3duKHQpfSksImhvdmVyIj09PXRoaXMuX2NvbmZpZy5wYXVzZSYmKHQodGhpcy5fZWxlbWVudCkub24oZC5NT1VTRUVOVEVSLGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhdXNlKHQpfSkub24oZC5NT1VTRUxFQVZFLGZ1bmN0aW9uKHQpe3JldHVybiBlLmN5Y2xlKHQpfSksIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnQodGhpcy5fZWxlbWVudCkub24oZC5UT1VDSEVORCxmdW5jdGlvbigpe2UucGF1c2UoKSxlLnRvdWNoVGltZW91dCYmY2xlYXJUaW1lb3V0KGUudG91Y2hUaW1lb3V0KSxlLnRvdWNoVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKHQpe3JldHVybiBlLmN5Y2xlKHQpfSw1MDArZS5fY29uZmlnLmludGVydmFsKX0pKX0sVC5fa2V5ZG93bj1mdW5jdGlvbih0KXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdCh0LnRhcmdldC50YWdOYW1lKSlzd2l0Y2godC53aGljaCl7Y2FzZSAzNzp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5uZXh0KCl9fSxULl9nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2l0ZW1zPXQubWFrZUFycmF5KHQoZSkucGFyZW50KCkuZmluZChiLklURU0pKSx0aGlzLl9pdGVtcy5pbmRleE9mKGUpfSxULl9nZXRJdGVtQnlEaXJlY3Rpb249ZnVuY3Rpb24odCxlKXt2YXIgbj10PT09YyxpPXQ9PT1oLHI9dGhpcy5fZ2V0SXRlbUluZGV4KGUpLG89dGhpcy5faXRlbXMubGVuZ3RoLTE7aWYoKGkmJjA9PT1yfHxuJiZyPT09bykmJiF0aGlzLl9jb25maWcud3JhcClyZXR1cm4gZTt2YXIgcz0ocisodD09PWg/LTE6MSkpJXRoaXMuX2l0ZW1zLmxlbmd0aDtyZXR1cm4tMT09PXM/dGhpcy5faXRlbXNbdGhpcy5faXRlbXMubGVuZ3RoLTFdOnRoaXMuX2l0ZW1zW3NdfSxULl90cmlnZ2VyU2xpZGVFdmVudD1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMuX2dldEl0ZW1JbmRleChlKSxyPXRoaXMuX2dldEl0ZW1JbmRleCh0KHRoaXMuX2VsZW1lbnQpLmZpbmQoYi5BQ1RJVkVfSVRFTSlbMF0pLG89dC5FdmVudChkLlNMSURFLHtyZWxhdGVkVGFyZ2V0OmUsZGlyZWN0aW9uOm4sZnJvbTpyLHRvOml9KTtyZXR1cm4gdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKG8pLG99LFQuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpe3QodGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpLmZpbmQoYi5BQ1RJVkUpLnJlbW92ZUNsYXNzKGcpO3ZhciBuPXRoaXMuX2luZGljYXRvcnNFbGVtZW50LmNoaWxkcmVuW3RoaXMuX2dldEl0ZW1JbmRleChlKV07biYmdChuKS5hZGRDbGFzcyhnKX19LFQuX3NsaWRlPWZ1bmN0aW9uKGUsbil7dmFyIGkscixvLHM9dGhpcyxhPXQodGhpcy5fZWxlbWVudCkuZmluZChiLkFDVElWRV9JVEVNKVswXSxsPXRoaXMuX2dldEl0ZW1JbmRleChhKSxoPW58fGEmJnRoaXMuX2dldEl0ZW1CeURpcmVjdGlvbihlLGEpLHA9dGhpcy5fZ2V0SXRlbUluZGV4KGgpLFQ9Qm9vbGVhbih0aGlzLl9pbnRlcnZhbCk7aWYoZT09PWM/KGk9dixyPUUsbz1mKTooaT1fLHI9eSxvPXUpLGgmJnQoaCkuaGFzQ2xhc3MoZykpdGhpcy5faXNTbGlkaW5nPSExO2Vsc2UgaWYoIXRoaXMuX3RyaWdnZXJTbGlkZUV2ZW50KGgsbykuaXNEZWZhdWx0UHJldmVudGVkKCkmJmEmJmgpe3RoaXMuX2lzU2xpZGluZz0hMCxUJiZ0aGlzLnBhdXNlKCksdGhpcy5fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudChoKTt2YXIgQz10LkV2ZW50KGQuU0xJRCx7cmVsYXRlZFRhcmdldDpoLGRpcmVjdGlvbjpvLGZyb206bCx0bzpwfSk7ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhtKT8odChoKS5hZGRDbGFzcyhyKSxrLnJlZmxvdyhoKSx0KGEpLmFkZENsYXNzKGkpLHQoaCkuYWRkQ2xhc3MoaSksdChhKS5vbmUoay5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbigpe3QoaCkucmVtb3ZlQ2xhc3MoaSsiICIrcikuYWRkQ2xhc3MoZyksdChhKS5yZW1vdmVDbGFzcyhnKyIgIityKyIgIitpKSxzLl9pc1NsaWRpbmc9ITEsc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0KHMuX2VsZW1lbnQpLnRyaWdnZXIoQyl9LDApfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoNjAwKSk6KHQoYSkucmVtb3ZlQ2xhc3MoZyksdChoKS5hZGRDbGFzcyhnKSx0aGlzLl9pc1NsaWRpbmc9ITEsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKEMpKSxUJiZ0aGlzLmN5Y2xlKCl9fSxzLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKSxvPXIoe30sYSx0KHRoaXMpLmRhdGEoKSk7Im9iamVjdCI9PXR5cGVvZiBlJiYobz1yKHt9LG8sZSkpO3ZhciBsPSJzdHJpbmciPT10eXBlb2YgZT9lOm8uc2xpZGU7aWYoaXx8KGk9bmV3IHModGhpcyxvKSx0KHRoaXMpLmRhdGEobixpKSksIm51bWJlciI9PXR5cGVvZiBlKWkudG8oZSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGwpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgaVtsXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrbCsnIicpO2lbbF0oKX1lbHNlIG8uaW50ZXJ2YWwmJihpLnBhdXNlKCksaS5jeWNsZSgpKX0pfSxzLl9kYXRhQXBpQ2xpY2tIYW5kbGVyPWZ1bmN0aW9uKGUpe3ZhciBpPWsuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKTtpZihpKXt2YXIgbz10KGkpWzBdO2lmKG8mJnQobykuaGFzQ2xhc3MocCkpe3ZhciBhPXIoe30sdChvKS5kYXRhKCksdCh0aGlzKS5kYXRhKCkpLGw9dGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtc2xpZGUtdG8iKTtsJiYoYS5pbnRlcnZhbD0hMSkscy5falF1ZXJ5SW50ZXJmYWNlLmNhbGwodChvKSxhKSxsJiZ0KG8pLmRhdGEobikudG8obCksZS5wcmV2ZW50RGVmYXVsdCgpfX19LGkocyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fV0pLHN9KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKGQuQ0xJQ0tfREFUQV9BUEksYi5EQVRBX1NMSURFLFQuX2RhdGFBcGlDbGlja0hhbmRsZXIpLHQod2luZG93KS5vbihkLkxPQURfREFUQV9BUEksZnVuY3Rpb24oKXt0KGIuREFUQV9SSURFKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtULl9qUXVlcnlJbnRlcmZhY2UuY2FsbChlLGUuZGF0YSgpKX0pfSksdC5mbltlXT1ULl9qUXVlcnlJbnRlcmZhY2UsdC5mbltlXS5Db25zdHJ1Y3Rvcj1ULHQuZm5bZV0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuW2VdPXMsVC5falF1ZXJ5SW50ZXJmYWNlfSxUfShlKSxSPWZ1bmN0aW9uKHQpe3ZhciBlPSJjb2xsYXBzZSIsbj0iYnMuY29sbGFwc2UiLG89Ii4iK24scz10LmZuW2VdLGE9e3RvZ2dsZTohMCxwYXJlbnQ6IiJ9LGw9e3RvZ2dsZToiYm9vbGVhbiIscGFyZW50OiIoc3RyaW5nfGVsZW1lbnQpIn0sYz17U0hPVzoic2hvdyIrbyxTSE9XTjoic2hvd24iK28sSElERToiaGlkZSIrbyxISURERU46ImhpZGRlbiIrbyxDTElDS19EQVRBX0FQSToiY2xpY2siK28rIi5kYXRhLWFwaSJ9LGg9InNob3ciLGY9ImNvbGxhcHNlIix1PSJjb2xsYXBzaW5nIixkPSJjb2xsYXBzZWQiLHA9IndpZHRoIixnPSJoZWlnaHQiLG09e0FDVElWRVM6Ii5zaG93LCAuY29sbGFwc2luZyIsREFUQV9UT0dHTEU6J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXSd9LF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBvKGUsbil7dGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKG4pLHRoaXMuX3RyaWdnZXJBcnJheT10Lm1ha2VBcnJheSh0KCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1baHJlZj0iIycrZS5pZCsnIl0sW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtdGFyZ2V0PSIjJytlLmlkKyciXScpKTtmb3IodmFyIGk9dChtLkRBVEFfVE9HR0xFKSxyPTA7cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl0scz1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQobyk7bnVsbCE9PXMmJnQocykuZmlsdGVyKGUpLmxlbmd0aD4wJiYodGhpcy5fc2VsZWN0b3I9cyx0aGlzLl90cmlnZ2VyQXJyYXkucHVzaChvKSl9dGhpcy5fcGFyZW50PXRoaXMuX2NvbmZpZy5wYXJlbnQ/dGhpcy5fZ2V0UGFyZW50KCk6bnVsbCx0aGlzLl9jb25maWcucGFyZW50fHx0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fZWxlbWVudCx0aGlzLl90cmlnZ2VyQXJyYXkpLHRoaXMuX2NvbmZpZy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9dmFyIHM9by5wcm90b3R5cGU7cmV0dXJuIHMudG9nZ2xlPWZ1bmN0aW9uKCl7dCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhoKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX0scy5zaG93PWZ1bmN0aW9uKCl7dmFyIGUsaSxyPXRoaXM7aWYoIXRoaXMuX2lzVHJhbnNpdGlvbmluZyYmIXQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoaCkmJih0aGlzLl9wYXJlbnQmJjA9PT0oZT10Lm1ha2VBcnJheSh0KHRoaXMuX3BhcmVudCkuZmluZChtLkFDVElWRVMpLmZpbHRlcignW2RhdGEtcGFyZW50PSInK3RoaXMuX2NvbmZpZy5wYXJlbnQrJyJdJykpKS5sZW5ndGgmJihlPW51bGwpLCEoZSYmKGk9dChlKS5ub3QodGhpcy5fc2VsZWN0b3IpLmRhdGEobikpJiZpLl9pc1RyYW5zaXRpb25pbmcpKSl7dmFyIHM9dC5FdmVudChjLlNIT1cpO2lmKHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihzKSwhcy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmKG8uX2pRdWVyeUludGVyZmFjZS5jYWxsKHQoZSkubm90KHRoaXMuX3NlbGVjdG9yKSwiaGlkZSIpLGl8fHQoZSkuZGF0YShuLG51bGwpKTt2YXIgYT10aGlzLl9nZXREaW1lbnNpb24oKTt0KHRoaXMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKGYpLmFkZENsYXNzKHUpLHRoaXMuX2VsZW1lbnQuc3R5bGVbYV09MCx0aGlzLl90cmlnZ2VyQXJyYXkubGVuZ3RoPjAmJnQodGhpcy5fdHJpZ2dlckFycmF5KS5yZW1vdmVDbGFzcyhkKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTt2YXIgbD1mdW5jdGlvbigpe3Qoci5fZWxlbWVudCkucmVtb3ZlQ2xhc3ModSkuYWRkQ2xhc3MoZikuYWRkQ2xhc3MoaCksci5fZWxlbWVudC5zdHlsZVthXT0iIixyLnNldFRyYW5zaXRpb25pbmcoITEpLHQoci5fZWxlbWVudCkudHJpZ2dlcihjLlNIT1dOKX07aWYoay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSl7dmFyIHA9InNjcm9sbCIrKGFbMF0udG9VcHBlckNhc2UoKSthLnNsaWNlKDEpKTt0KHRoaXMuX2VsZW1lbnQpLm9uZShrLlRSQU5TSVRJT05fRU5ELGwpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDYwMCksdGhpcy5fZWxlbWVudC5zdHlsZVthXT10aGlzLl9lbGVtZW50W3BdKyJweCJ9ZWxzZSBsKCl9fX0scy5oaWRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighdGhpcy5faXNUcmFuc2l0aW9uaW5nJiZ0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKGgpKXt2YXIgbj10LkV2ZW50KGMuSElERSk7aWYodCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKG4pLCFuLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt2YXIgaT10aGlzLl9nZXREaW1lbnNpb24oKTtpZih0aGlzLl9lbGVtZW50LnN0eWxlW2ldPXRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbaV0rInB4IixrLnJlZmxvdyh0aGlzLl9lbGVtZW50KSx0KHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKHUpLnJlbW92ZUNsYXNzKGYpLnJlbW92ZUNsYXNzKGgpLHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg+MClmb3IodmFyIHI9MDtyPHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg7cisrKXt2YXIgbz10aGlzLl90cmlnZ2VyQXJyYXlbcl0scz1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQobyk7aWYobnVsbCE9PXMpdChzKS5oYXNDbGFzcyhoKXx8dChvKS5hZGRDbGFzcyhkKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSl9dGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTt2YXIgYT1mdW5jdGlvbigpe2Uuc2V0VHJhbnNpdGlvbmluZyghMSksdChlLl9lbGVtZW50KS5yZW1vdmVDbGFzcyh1KS5hZGRDbGFzcyhmKS50cmlnZ2VyKGMuSElEREVOKX07dGhpcy5fZWxlbWVudC5zdHlsZVtpXT0iIixrLnN1cHBvcnRzVHJhbnNpdGlvbkVuZCgpP3QodGhpcy5fZWxlbWVudCkub25lKGsuVFJBTlNJVElPTl9FTkQsYSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoNjAwKTphKCl9fX0scy5zZXRUcmFuc2l0aW9uaW5nPWZ1bmN0aW9uKHQpe3RoaXMuX2lzVHJhbnNpdGlvbmluZz10fSxzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxuKSx0aGlzLl9jb25maWc9bnVsbCx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5fdHJpZ2dlckFycmF5PW51bGwsdGhpcy5faXNUcmFuc2l0aW9uaW5nPW51bGx9LHMuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4odD1yKHt9LGEsdCkpLnRvZ2dsZT1Cb29sZWFuKHQudG9nZ2xlKSxrLnR5cGVDaGVja0NvbmZpZyhlLHQsbCksdH0scy5fZ2V0RGltZW5zaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MocCk/cDpnfSxzLl9nZXRQYXJlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49bnVsbDtrLmlzRWxlbWVudCh0aGlzLl9jb25maWcucGFyZW50KT8obj10aGlzLl9jb25maWcucGFyZW50LCJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcy5fY29uZmlnLnBhcmVudC5qcXVlcnkmJihuPXRoaXMuX2NvbmZpZy5wYXJlbnRbMF0pKTpuPXQodGhpcy5fY29uZmlnLnBhcmVudClbMF07dmFyIGk9J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXBhcmVudD0iJyt0aGlzLl9jb25maWcucGFyZW50KyciXSc7cmV0dXJuIHQobikuZmluZChpKS5lYWNoKGZ1bmN0aW9uKHQsbil7ZS5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKG8uX2dldFRhcmdldEZyb21FbGVtZW50KG4pLFtuXSl9KSxufSxzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3M9ZnVuY3Rpb24oZSxuKXtpZihlKXt2YXIgaT10KGUpLmhhc0NsYXNzKGgpO24ubGVuZ3RoPjAmJnQobikudG9nZ2xlQ2xhc3MoZCwhaSkuYXR0cigiYXJpYS1leHBhbmRlZCIsaSl9fSxvLl9nZXRUYXJnZXRGcm9tRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgbj1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7cmV0dXJuIG4/dChuKVswXTpudWxsfSxvLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscz1pLmRhdGEobiksbD1yKHt9LGEsaS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBlJiZlKTtpZighcyYmbC50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoZSkmJihsLnRvZ2dsZT0hMSksc3x8KHM9bmV3IG8odGhpcyxsKSxpLmRhdGEobixzKSksInN0cmluZyI9PXR5cGVvZiBlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHNbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtzW2VdKCl9fSl9LGkobyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fV0pLG99KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKGMuQ0xJQ0tfREFUQV9BUEksbS5EQVRBX1RPR0dMRSxmdW5jdGlvbihlKXsiQSI9PT1lLmN1cnJlbnRUYXJnZXQudGFnTmFtZSYmZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBpPXQodGhpcykscj1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodGhpcyk7dChyKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKSxyPWUuZGF0YShuKT8idG9nZ2xlIjppLmRhdGEoKTtfLl9qUXVlcnlJbnRlcmZhY2UuY2FsbChlLHIpfSl9KSx0LmZuW2VdPV8uX2pRdWVyeUludGVyZmFjZSx0LmZuW2VdLkNvbnN0cnVjdG9yPV8sdC5mbltlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZm5bZV09cyxfLl9qUXVlcnlJbnRlcmZhY2V9LF99KGUpLGo9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQsSD1bIkVkZ2UiLCJUcmlkZW50IiwiRmlyZWZveCJdLE09MCxXPTA7VzxILmxlbmd0aDtXKz0xKWlmKGomJm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihIW1ddKT49MCl7TT0xO2JyZWFrfXZhciBVPWomJndpbmRvdy5Qcm9taXNlP2Z1bmN0aW9uKHQpe3ZhciBlPSExO3JldHVybiBmdW5jdGlvbigpe2V8fChlPSEwLHdpbmRvdy5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7ZT0hMSx0KCl9KSl9fTpmdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZT0hMSx0KCl9LE0pKX19O2Z1bmN0aW9uIEIodCl7cmV0dXJuIHQmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT17fS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIEYodCxlKXtpZigxIT09dC5ub2RlVHlwZSlyZXR1cm5bXTt2YXIgbj1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk7cmV0dXJuIGU/bltlXTpufWZ1bmN0aW9uIEsodCl7cmV0dXJuIkhUTUwiPT09dC5ub2RlTmFtZT90OnQucGFyZW50Tm9kZXx8dC5ob3N0fWZ1bmN0aW9uIFYodCl7aWYoIXQpcmV0dXJuIGRvY3VtZW50LmJvZHk7c3dpdGNoKHQubm9kZU5hbWUpe2Nhc2UiSFRNTCI6Y2FzZSJCT0RZIjpyZXR1cm4gdC5vd25lckRvY3VtZW50LmJvZHk7Y2FzZSIjZG9jdW1lbnQiOnJldHVybiB0LmJvZHl9dmFyIGU9Rih0KSxuPWUub3ZlcmZsb3csaT1lLm92ZXJmbG93WCxyPWUub3ZlcmZsb3dZO3JldHVybi8oYXV0b3xzY3JvbGwpLy50ZXN0KG4rcitpKT90OlYoSyh0KSl9ZnVuY3Rpb24gUSh0KXt2YXIgZT10JiZ0Lm9mZnNldFBhcmVudCxuPWUmJmUubm9kZU5hbWU7cmV0dXJuIG4mJiJCT0RZIiE9PW4mJiJIVE1MIiE9PW4/LTEhPT1bIlREIiwiVEFCTEUiXS5pbmRleE9mKGUubm9kZU5hbWUpJiYic3RhdGljIj09PUYoZSwicG9zaXRpb24iKT9RKGUpOmU6dD90Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBZKHQpe3JldHVybiBudWxsIT09dC5wYXJlbnROb2RlP1kodC5wYXJlbnROb2RlKTp0fWZ1bmN0aW9uIEcodCxlKXtpZighKHQmJnQubm9kZVR5cGUmJmUmJmUubm9kZVR5cGUpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIG49dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyxpPW4/dDplLHI9bj9lOnQsbz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO28uc2V0U3RhcnQoaSwwKSxvLnNldEVuZChyLDApO3ZhciBzLGEsbD1vLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO2lmKHQhPT1sJiZlIT09bHx8aS5jb250YWlucyhyKSlyZXR1cm4iQk9EWSI9PT0oYT0ocz1sKS5ub2RlTmFtZSl8fCJIVE1MIiE9PWEmJlEocy5maXJzdEVsZW1lbnRDaGlsZCkhPT1zP1EobCk6bDt2YXIgYz1ZKHQpO3JldHVybiBjLmhvc3Q/RyhjLmhvc3QsZSk6Ryh0LFkoZSkuaG9zdCl9ZnVuY3Rpb24gcSh0KXt2YXIgZT0idG9wIj09PShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InRvcCIpPyJzY3JvbGxUb3AiOiJzY3JvbGxMZWZ0IixuPXQubm9kZU5hbWU7aWYoIkJPRFkiPT09bnx8IkhUTUwiPT09bil7dmFyIGk9dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyZXR1cm4odC5vd25lckRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnR8fGkpW2VdfXJldHVybiB0W2VdfWZ1bmN0aW9uIHoodCxlKXt2YXIgbj0ieCI9PT1lPyJMZWZ0IjoiVG9wIixpPSJMZWZ0Ij09PW4/IlJpZ2h0IjoiQm90dG9tIjtyZXR1cm4gcGFyc2VGbG9hdCh0WyJib3JkZXIiK24rIldpZHRoIl0sMTApK3BhcnNlRmxvYXQodFsiYm9yZGVyIitpKyJXaWR0aCJdLDEwKX12YXIgWD12b2lkIDAsWj1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1YJiYoWD0tMSE9PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIk1TSUUgMTAiKSksWH07ZnVuY3Rpb24gSih0LGUsbixpKXtyZXR1cm4gTWF0aC5tYXgoZVsib2Zmc2V0Iit0XSxlWyJzY3JvbGwiK3RdLG5bImNsaWVudCIrdF0sblsib2Zmc2V0Iit0XSxuWyJzY3JvbGwiK3RdLFooKT9uWyJvZmZzZXQiK3RdK2lbIm1hcmdpbiIrKCJIZWlnaHQiPT09dD8iVG9wIjoiTGVmdCIpXStpWyJtYXJnaW4iKygiSGVpZ2h0Ij09PXQ/IkJvdHRvbSI6IlJpZ2h0IildOjApfWZ1bmN0aW9uICQoKXt2YXIgdD1kb2N1bWVudC5ib2R5LGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49WigpJiZnZXRDb21wdXRlZFN0eWxlKGUpO3JldHVybntoZWlnaHQ6SigiSGVpZ2h0Iix0LGUsbiksd2lkdGg6SigiV2lkdGgiLHQsZSxuKX19dmFyIHR0PWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9LGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIG4mJnQoZS5wcm90b3R5cGUsbiksaSYmdChlLGkpLGV9fSgpLG50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH0saXQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgaSBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGkpJiYodFtpXT1uW2ldKX1yZXR1cm4gdH07ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGl0KHt9LHQse3JpZ2h0OnQubGVmdCt0LndpZHRoLGJvdHRvbTp0LnRvcCt0LmhlaWdodH0pfWZ1bmN0aW9uIG90KHQpe3ZhciBlPXt9O2lmKFooKSl0cnl7ZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBuPXEodCwidG9wIiksaT1xKHQsImxlZnQiKTtlLnRvcCs9bixlLmxlZnQrPWksZS5ib3R0b20rPW4sZS5yaWdodCs9aX1jYXRjaCh0KXt9ZWxzZSBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHI9e2xlZnQ6ZS5sZWZ0LHRvcDplLnRvcCx3aWR0aDplLnJpZ2h0LWUubGVmdCxoZWlnaHQ6ZS5ib3R0b20tZS50b3B9LG89IkhUTUwiPT09dC5ub2RlTmFtZT8kKCk6e30scz1vLndpZHRofHx0LmNsaWVudFdpZHRofHxyLnJpZ2h0LXIubGVmdCxhPW8uaGVpZ2h0fHx0LmNsaWVudEhlaWdodHx8ci5ib3R0b20tci50b3AsbD10Lm9mZnNldFdpZHRoLXMsYz10Lm9mZnNldEhlaWdodC1hO2lmKGx8fGMpe3ZhciBoPUYodCk7bC09eihoLCJ4IiksYy09eihoLCJ5Iiksci53aWR0aC09bCxyLmhlaWdodC09Y31yZXR1cm4gcnQocil9ZnVuY3Rpb24gc3QodCxlKXt2YXIgbj1aKCksaT0iSFRNTCI9PT1lLm5vZGVOYW1lLHI9b3QodCksbz1vdChlKSxzPVYodCksYT1GKGUpLGw9cGFyc2VGbG9hdChhLmJvcmRlclRvcFdpZHRoLDEwKSxjPXBhcnNlRmxvYXQoYS5ib3JkZXJMZWZ0V2lkdGgsMTApLGg9cnQoe3RvcDpyLnRvcC1vLnRvcC1sLGxlZnQ6ci5sZWZ0LW8ubGVmdC1jLHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0fSk7aWYoaC5tYXJnaW5Ub3A9MCxoLm1hcmdpbkxlZnQ9MCwhbiYmaSl7dmFyIGY9cGFyc2VGbG9hdChhLm1hcmdpblRvcCwxMCksdT1wYXJzZUZsb2F0KGEubWFyZ2luTGVmdCwxMCk7aC50b3AtPWwtZixoLmJvdHRvbS09bC1mLGgubGVmdC09Yy11LGgucmlnaHQtPWMtdSxoLm1hcmdpblRvcD1mLGgubWFyZ2luTGVmdD11fXJldHVybihuP2UuY29udGFpbnMocyk6ZT09PXMmJiJCT0RZIiE9PXMubm9kZU5hbWUpJiYoaD1mdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1xKGUsInRvcCIpLHI9cShlLCJsZWZ0Iiksbz1uPy0xOjE7cmV0dXJuIHQudG9wKz1pKm8sdC5ib3R0b20rPWkqbyx0LmxlZnQrPXIqbyx0LnJpZ2h0Kz1yKm8sdH0oaCxlKSksaH1mdW5jdGlvbiBhdCh0LGUsbixpKXt2YXIgcixvLHMsYSxsLGMsaCxmPXt0b3A6MCxsZWZ0OjB9LHU9Ryh0LGUpO2lmKCJ2aWV3cG9ydCI9PT1pKW89KHI9dSkub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscz1zdChyLG8pLGE9TWF0aC5tYXgoby5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCksbD1NYXRoLm1heChvLmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApLGM9cShvKSxoPXEobywibGVmdCIpLGY9cnQoe3RvcDpjLXMudG9wK3MubWFyZ2luVG9wLGxlZnQ6aC1zLmxlZnQrcy5tYXJnaW5MZWZ0LHdpZHRoOmEsaGVpZ2h0Omx9KTtlbHNle3ZhciBkPXZvaWQgMDsic2Nyb2xsUGFyZW50Ij09PWk/IkJPRFkiPT09KGQ9VihLKGUpKSkubm9kZU5hbWUmJihkPXQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOmQ9IndpbmRvdyI9PT1pP3Qub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6aTt2YXIgcD1zdChkLHUpO2lmKCJIVE1MIiE9PWQubm9kZU5hbWV8fGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ub2RlTmFtZTtyZXR1cm4iQk9EWSIhPT1uJiYiSFRNTCIhPT1uJiYoImZpeGVkIj09PUYoZSwicG9zaXRpb24iKXx8dChLKGUpKSl9KHUpKWY9cDtlbHNle3ZhciBnPSQoKSxtPWcuaGVpZ2h0LF89Zy53aWR0aDtmLnRvcCs9cC50b3AtcC5tYXJnaW5Ub3AsZi5ib3R0b209bStwLnRvcCxmLmxlZnQrPXAubGVmdC1wLm1hcmdpbkxlZnQsZi5yaWdodD1fK3AubGVmdH19cmV0dXJuIGYubGVmdCs9bixmLnRvcCs9bixmLnJpZ2h0LT1uLGYuYm90dG9tLT1uLGZ9ZnVuY3Rpb24gbHQodCxlLG4saSxyKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MDtpZigtMT09PXQuaW5kZXhPZigiYXV0byIpKXJldHVybiB0O3ZhciBzPWF0KG4saSxvLHIpLGE9e3RvcDp7d2lkdGg6cy53aWR0aCxoZWlnaHQ6ZS50b3Atcy50b3B9LHJpZ2h0Ont3aWR0aDpzLnJpZ2h0LWUucmlnaHQsaGVpZ2h0OnMuaGVpZ2h0fSxib3R0b206e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuYm90dG9tLWUuYm90dG9tfSxsZWZ0Ont3aWR0aDplLmxlZnQtcy5sZWZ0LGhlaWdodDpzLmhlaWdodH19LGw9T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBpdCh7a2V5OnR9LGFbdF0se2FyZWE6KGU9YVt0XSxlLndpZHRoKmUuaGVpZ2h0KX0pO3ZhciBlfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLmFyZWEtdC5hcmVhfSksYz1sLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLGk9dC5oZWlnaHQ7cmV0dXJuIGU+PW4uY2xpZW50V2lkdGgmJmk+PW4uY2xpZW50SGVpZ2h0fSksaD1jLmxlbmd0aD4wP2NbMF0ua2V5OmxbMF0ua2V5LGY9dC5zcGxpdCgiLSIpWzFdO3JldHVybiBoKyhmPyItIitmOiIiKX1mdW5jdGlvbiBjdCh0LGUsbil7cmV0dXJuIHN0KG4sRyhlLG4pKX1mdW5jdGlvbiBodCh0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQpLG49cGFyc2VGbG9hdChlLm1hcmdpblRvcCkrcGFyc2VGbG9hdChlLm1hcmdpbkJvdHRvbSksaT1wYXJzZUZsb2F0KGUubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChlLm1hcmdpblJpZ2h0KTtyZXR1cm57d2lkdGg6dC5vZmZzZXRXaWR0aCtpLGhlaWdodDp0Lm9mZnNldEhlaWdodCtufX1mdW5jdGlvbiBmdCh0KXt2YXIgZT17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gdC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIHV0KHQsZSxuKXtuPW4uc3BsaXQoIi0iKVswXTt2YXIgaT1odCh0KSxyPXt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0sbz0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihuKSxzPW8/InRvcCI6ImxlZnQiLGE9bz8ibGVmdCI6InRvcCIsbD1vPyJoZWlnaHQiOiJ3aWR0aCIsYz1vPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIHJbc109ZVtzXStlW2xdLzItaVtsXS8yLHJbYV09bj09PWE/ZVthXS1pW2NdOmVbZnQoYSldLHJ9ZnVuY3Rpb24gZHQodCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQ/dC5maW5kKGUpOnQuZmlsdGVyKGUpWzBdfWZ1bmN0aW9uIHB0KHQsZSxuKXtyZXR1cm4odm9pZCAwPT09bj90OnQuc2xpY2UoMCxmdW5jdGlvbih0LGUsbil7aWYoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleClyZXR1cm4gdC5maW5kSW5kZXgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV09PT1ufSk7dmFyIGk9ZHQodCxmdW5jdGlvbih0KXtyZXR1cm4gdFtlXT09PW59KTtyZXR1cm4gdC5pbmRleE9mKGkpfSh0LCJuYW1lIixuKSkpLmZvckVhY2goZnVuY3Rpb24odCl7dC5mdW5jdGlvbiYmY29uc29sZS53YXJuKCJgbW9kaWZpZXIuZnVuY3Rpb25gIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbW9kaWZpZXIuZm5gISIpO3ZhciBuPXQuZnVuY3Rpb258fHQuZm47dC5lbmFibGVkJiZCKG4pJiYoZS5vZmZzZXRzLnBvcHBlcj1ydChlLm9mZnNldHMucG9wcGVyKSxlLm9mZnNldHMucmVmZXJlbmNlPXJ0KGUub2Zmc2V0cy5yZWZlcmVuY2UpLGU9bihlLHQpKX0pLGV9ZnVuY3Rpb24gZ3QodCxlKXtyZXR1cm4gdC5zb21lKGZ1bmN0aW9uKHQpe3ZhciBuPXQubmFtZTtyZXR1cm4gdC5lbmFibGVkJiZuPT09ZX0pfWZ1bmN0aW9uIG10KHQpe2Zvcih2YXIgZT1bITEsIm1zIiwiV2Via2l0IiwiTW96IiwiTyJdLG49dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLGk9MDtpPGUubGVuZ3RoLTE7aSsrKXt2YXIgcj1lW2ldLG89cj8iIityK246dDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGVbb10pcmV0dXJuIG99cmV0dXJuIG51bGx9ZnVuY3Rpb24gX3QodCl7dmFyIGU9dC5vd25lckRvY3VtZW50O3JldHVybiBlP2UuZGVmYXVsdFZpZXc6d2luZG93fWZ1bmN0aW9uIHZ0KHQsZSxuLGkpe24udXBkYXRlQm91bmQ9aSxfdCh0KS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLG4udXBkYXRlQm91bmQse3Bhc3NpdmU6ITB9KTt2YXIgcj1WKHQpO3JldHVybiBmdW5jdGlvbiB0KGUsbixpLHIpe3ZhciBvPSJCT0RZIj09PWUubm9kZU5hbWUscz1vP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzplO3MuYWRkRXZlbnRMaXN0ZW5lcihuLGkse3Bhc3NpdmU6ITB9KSxvfHx0KFYocy5wYXJlbnROb2RlKSxuLGksciksci5wdXNoKHMpfShyLCJzY3JvbGwiLG4udXBkYXRlQm91bmQsbi5zY3JvbGxQYXJlbnRzKSxuLnNjcm9sbEVsZW1lbnQ9cixuLmV2ZW50c0VuYWJsZWQ9ITAsbn1mdW5jdGlvbiBFdCgpe3ZhciB0LGU7dGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkJiYoY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zY2hlZHVsZVVwZGF0ZSksdGhpcy5zdGF0ZT0odD10aGlzLnJlZmVyZW5jZSxlPXRoaXMuc3RhdGUsX3QodCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixlLnVwZGF0ZUJvdW5kKSxlLnNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZS51cGRhdGVCb3VuZCl9KSxlLnVwZGF0ZUJvdW5kPW51bGwsZS5zY3JvbGxQYXJlbnRzPVtdLGUuc2Nyb2xsRWxlbWVudD1udWxsLGUuZXZlbnRzRW5hYmxlZD0hMSxlKSl9ZnVuY3Rpb24geXQodCl7cmV0dXJuIiIhPT10JiYhaXNOYU4ocGFyc2VGbG9hdCh0KSkmJmlzRmluaXRlKHQpfWZ1bmN0aW9uIGJ0KHQsZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT0iIjstMSE9PVsid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5pbmRleE9mKG4pJiZ5dChlW25dKSYmKGk9InB4IiksdC5zdHlsZVtuXT1lW25dK2l9KX1mdW5jdGlvbiBUdCh0LGUsbil7dmFyIGk9ZHQodCxmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09ZX0pLHI9ISFpJiZ0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PW4mJnQuZW5hYmxlZCYmdC5vcmRlcjxpLm9yZGVyfSk7aWYoIXIpe3ZhciBvPSJgIitlKyJgIixzPSJgIituKyJgIjtjb25zb2xlLndhcm4ocysiIG1vZGlmaWVyIGlzIHJlcXVpcmVkIGJ5ICIrbysiIG1vZGlmaWVyIGluIG9yZGVyIHRvIHdvcmssIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBiZWZvcmUgIitvKyIhIil9cmV0dXJuIHJ9dmFyIEN0PVsiYXV0by1zdGFydCIsImF1dG8iLCJhdXRvLWVuZCIsInRvcC1zdGFydCIsInRvcCIsInRvcC1lbmQiLCJyaWdodC1zdGFydCIsInJpZ2h0IiwicmlnaHQtZW5kIiwiYm90dG9tLWVuZCIsImJvdHRvbSIsImJvdHRvbS1zdGFydCIsImxlZnQtZW5kIiwibGVmdCIsImxlZnQtc3RhcnQiXSx3dD1DdC5zbGljZSgzKTtmdW5jdGlvbiBJdCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49d3QuaW5kZXhPZih0KSxpPXd0LnNsaWNlKG4rMSkuY29uY2F0KHd0LnNsaWNlKDAsbikpO3JldHVybiBlP2kucmV2ZXJzZSgpOml9dmFyIEF0PXtGTElQOiJmbGlwIixDTE9DS1dJU0U6ImNsb2Nrd2lzZSIsQ09VTlRFUkNMT0NLV0lTRToiY291bnRlcmNsb2Nrd2lzZSJ9O2Z1bmN0aW9uIER0KHQsZSxuLGkpe3ZhciByPVswLDBdLG89LTEhPT1bInJpZ2h0IiwibGVmdCJdLmluZGV4T2YoaSkscz10LnNwbGl0KC8oXCt8XC0pLykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyaW0oKX0pLGE9cy5pbmRleE9mKGR0KHMsZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10LnNlYXJjaCgvLHxccy8pfSkpO3NbYV0mJi0xPT09c1thXS5pbmRleE9mKCIsIikmJmNvbnNvbGUud2FybigiT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLiIpO3ZhciBsPS9ccyosXHMqfFxzKy8sYz0tMSE9PWE/W3Muc2xpY2UoMCxhKS5jb25jYXQoW3NbYV0uc3BsaXQobClbMF1dKSxbc1thXS5zcGxpdChsKVsxXV0uY29uY2F0KHMuc2xpY2UoYSsxKSldOltzXTtyZXR1cm4oYz1jLm1hcChmdW5jdGlvbih0LGkpe3ZhciByPSgxPT09aT8hbzpvKT8iaGVpZ2h0Ijoid2lkdGgiLHM9ITE7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiI9PT10W3QubGVuZ3RoLTFdJiYtMSE9PVsiKyIsIi0iXS5pbmRleE9mKGUpPyh0W3QubGVuZ3RoLTFdPWUscz0hMCx0KTpzPyh0W3QubGVuZ3RoLTFdKz1lLHM9ITEsdCk6dC5jb25jYXQoZSl9LFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXQubWF0Y2goLygoPzpcLXxcKyk/XGQqXC4/XGQqKSguKikvKSxvPStyWzFdLHM9clsyXTtpZighbylyZXR1cm4gdDtpZigwPT09cy5pbmRleE9mKCIlIikpe3ZhciBhPXZvaWQgMDtzd2l0Y2gocyl7Y2FzZSIlcCI6YT1uO2JyZWFrO2Nhc2UiJSI6Y2FzZSIlciI6ZGVmYXVsdDphPWl9cmV0dXJuIHJ0KGEpW2VdLzEwMCpvfWlmKCJ2aCI9PT1zfHwidnciPT09cylyZXR1cm4oInZoIj09PXM/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApOk1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCkpLzEwMCpvO3JldHVybiBvfSh0LHIsZSxuKX0pfSkpLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24obixpKXt5dChuKSYmKHJbZV0rPW4qKCItIj09PXRbaS0xXT8tMToxKSl9KX0pLHJ9dmFyIFN0PXtwbGFjZW1lbnQ6ImJvdHRvbSIsZXZlbnRzRW5hYmxlZDohMCxyZW1vdmVPbkRlc3Ryb3k6ITEsb25DcmVhdGU6ZnVuY3Rpb24oKXt9LG9uVXBkYXRlOmZ1bmN0aW9uKCl7fSxtb2RpZmllcnM6e3NoaWZ0OntvcmRlcjoxMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPWUuc3BsaXQoIi0iKVsxXTtpZihpKXt2YXIgcj10Lm9mZnNldHMsbz1yLnJlZmVyZW5jZSxzPXIucG9wcGVyLGE9LTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2YobiksbD1hPyJsZWZ0IjoidG9wIixjPWE/IndpZHRoIjoiaGVpZ2h0IixoPXtzdGFydDpudCh7fSxsLG9bbF0pLGVuZDpudCh7fSxsLG9bbF0rb1tjXS1zW2NdKX07dC5vZmZzZXRzLnBvcHBlcj1pdCh7fSxzLGhbaV0pfXJldHVybiB0fX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUub2Zmc2V0LGk9dC5wbGFjZW1lbnQscj10Lm9mZnNldHMsbz1yLnBvcHBlcixzPXIucmVmZXJlbmNlLGE9aS5zcGxpdCgiLSIpWzBdLGw9dm9pZCAwO3JldHVybiBsPXl0KCtuKT9bK24sMF06RHQobixvLHMsYSksImxlZnQiPT09YT8oby50b3ArPWxbMF0sby5sZWZ0LT1sWzFdKToicmlnaHQiPT09YT8oby50b3ArPWxbMF0sby5sZWZ0Kz1sWzFdKToidG9wIj09PWE/KG8ubGVmdCs9bFswXSxvLnRvcC09bFsxXSk6ImJvdHRvbSI9PT1hJiYoby5sZWZ0Kz1sWzBdLG8udG9wKz1sWzFdKSx0LnBvcHBlcj1vLHR9LG9mZnNldDowfSxwcmV2ZW50T3ZlcmZsb3c6e29yZGVyOjMwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ib3VuZGFyaWVzRWxlbWVudHx8USh0Lmluc3RhbmNlLnBvcHBlcik7dC5pbnN0YW5jZS5yZWZlcmVuY2U9PT1uJiYobj1RKG4pKTt2YXIgaT1hdCh0Lmluc3RhbmNlLnBvcHBlcix0Lmluc3RhbmNlLnJlZmVyZW5jZSxlLnBhZGRpbmcsbik7ZS5ib3VuZGFyaWVzPWk7dmFyIHI9ZS5wcmlvcml0eSxvPXQub2Zmc2V0cy5wb3BwZXIscz17cHJpbWFyeTpmdW5jdGlvbih0KXt2YXIgbj1vW3RdO3JldHVybiBvW3RdPGlbdF0mJiFlLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWF4KG9bdF0saVt0XSkpLG50KHt9LHQsbil9LHNlY29uZGFyeTpmdW5jdGlvbih0KXt2YXIgbj0icmlnaHQiPT09dD8ibGVmdCI6InRvcCIscj1vW25dO3JldHVybiBvW3RdPmlbdF0mJiFlLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihyPU1hdGgubWluKG9bbl0saVt0XS0oInJpZ2h0Ij09PXQ/by53aWR0aDpvLmhlaWdodCkpKSxudCh7fSxuLHIpfX07cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0tMSE9PVsibGVmdCIsInRvcCJdLmluZGV4T2YodCk/InByaW1hcnkiOiJzZWNvbmRhcnkiO289aXQoe30sbyxzW2VdKHQpKX0pLHQub2Zmc2V0cy5wb3BwZXI9byx0fSxwcmlvcml0eTpbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoic2Nyb2xsUGFyZW50In0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10Lm9mZnNldHMsbj1lLnBvcHBlcixpPWUucmVmZXJlbmNlLHI9dC5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxvPU1hdGguZmxvb3Iscz0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihyKSxhPXM/InJpZ2h0IjoiYm90dG9tIixsPXM/ImxlZnQiOiJ0b3AiLGM9cz8id2lkdGgiOiJoZWlnaHQiO3JldHVybiBuW2FdPG8oaVtsXSkmJih0Lm9mZnNldHMucG9wcGVyW2xdPW8oaVtsXSktbltjXSksbltsXT5vKGlbYV0pJiYodC5vZmZzZXRzLnBvcHBlcltsXT1vKGlbYV0pKSx0fX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoIVR0KHQuaW5zdGFuY2UubW9kaWZpZXJzLCJhcnJvdyIsImtlZXBUb2dldGhlciIpKXJldHVybiB0O3ZhciBpPWUuZWxlbWVudDtpZigic3RyaW5nIj09dHlwZW9mIGkpe2lmKCEoaT10Lmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGkpKSlyZXR1cm4gdH1lbHNlIGlmKCF0Lmluc3RhbmNlLnBvcHBlci5jb250YWlucyhpKSlyZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksdDt2YXIgcj10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLG89dC5vZmZzZXRzLHM9by5wb3BwZXIsYT1vLnJlZmVyZW5jZSxsPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKHIpLGM9bD8iaGVpZ2h0Ijoid2lkdGgiLGg9bD8iVG9wIjoiTGVmdCIsZj1oLnRvTG93ZXJDYXNlKCksdT1sPyJsZWZ0IjoidG9wIixkPWw/ImJvdHRvbSI6InJpZ2h0IixwPWh0KGkpW2NdO2FbZF0tcDxzW2ZdJiYodC5vZmZzZXRzLnBvcHBlcltmXS09c1tmXS0oYVtkXS1wKSksYVtmXStwPnNbZF0mJih0Lm9mZnNldHMucG9wcGVyW2ZdKz1hW2ZdK3Atc1tkXSksdC5vZmZzZXRzLnBvcHBlcj1ydCh0Lm9mZnNldHMucG9wcGVyKTt2YXIgZz1hW2ZdK2FbY10vMi1wLzIsbT1GKHQuaW5zdGFuY2UucG9wcGVyKSxfPXBhcnNlRmxvYXQobVsibWFyZ2luIitoXSwxMCksdj1wYXJzZUZsb2F0KG1bImJvcmRlciIraCsiV2lkdGgiXSwxMCksRT1nLXQub2Zmc2V0cy5wb3BwZXJbZl0tXy12O3JldHVybiBFPU1hdGgubWF4KE1hdGgubWluKHNbY10tcCxFKSwwKSx0LmFycm93RWxlbWVudD1pLHQub2Zmc2V0cy5hcnJvdz0obnQobj17fSxmLE1hdGgucm91bmQoRSkpLG50KG4sdSwiIiksbiksdH0sZWxlbWVudDoiW3gtYXJyb3ddIn0sZmxpcDp7b3JkZXI6NjAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCxlKXtpZihndCh0Lmluc3RhbmNlLm1vZGlmaWVycywiaW5uZXIiKSlyZXR1cm4gdDtpZih0LmZsaXBwZWQmJnQucGxhY2VtZW50PT09dC5vcmlnaW5hbFBsYWNlbWVudClyZXR1cm4gdDt2YXIgbj1hdCh0Lmluc3RhbmNlLnBvcHBlcix0Lmluc3RhbmNlLnJlZmVyZW5jZSxlLnBhZGRpbmcsZS5ib3VuZGFyaWVzRWxlbWVudCksaT10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9ZnQoaSksbz10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzFdfHwiIixzPVtdO3N3aXRjaChlLmJlaGF2aW9yKXtjYXNlIEF0LkZMSVA6cz1baSxyXTticmVhaztjYXNlIEF0LkNMT0NLV0lTRTpzPUl0KGkpO2JyZWFrO2Nhc2UgQXQuQ09VTlRFUkNMT0NLV0lTRTpzPUl0KGksITApO2JyZWFrO2RlZmF1bHQ6cz1lLmJlaGF2aW9yfXJldHVybiBzLmZvckVhY2goZnVuY3Rpb24oYSxsKXtpZihpIT09YXx8cy5sZW5ndGg9PT1sKzEpcmV0dXJuIHQ7aT10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9ZnQoaSk7dmFyIGMsaD10Lm9mZnNldHMucG9wcGVyLGY9dC5vZmZzZXRzLnJlZmVyZW5jZSx1PU1hdGguZmxvb3IsZD0ibGVmdCI9PT1pJiZ1KGgucmlnaHQpPnUoZi5sZWZ0KXx8InJpZ2h0Ij09PWkmJnUoaC5sZWZ0KTx1KGYucmlnaHQpfHwidG9wIj09PWkmJnUoaC5ib3R0b20pPnUoZi50b3ApfHwiYm90dG9tIj09PWkmJnUoaC50b3ApPHUoZi5ib3R0b20pLHA9dShoLmxlZnQpPHUobi5sZWZ0KSxnPXUoaC5yaWdodCk+dShuLnJpZ2h0KSxtPXUoaC50b3ApPHUobi50b3ApLF89dShoLmJvdHRvbSk+dShuLmJvdHRvbSksdj0ibGVmdCI9PT1pJiZwfHwicmlnaHQiPT09aSYmZ3x8InRvcCI9PT1pJiZtfHwiYm90dG9tIj09PWkmJl8sRT0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihpKSx5PSEhZS5mbGlwVmFyaWF0aW9ucyYmKEUmJiJzdGFydCI9PT1vJiZwfHxFJiYiZW5kIj09PW8mJmd8fCFFJiYic3RhcnQiPT09byYmbXx8IUUmJiJlbmQiPT09byYmXyk7KGR8fHZ8fHkpJiYodC5mbGlwcGVkPSEwLChkfHx2KSYmKGk9c1tsKzFdKSx5JiYobz0iZW5kIj09PShjPW8pPyJzdGFydCI6InN0YXJ0Ij09PWM/ImVuZCI6YyksdC5wbGFjZW1lbnQ9aSsobz8iLSIrbzoiIiksdC5vZmZzZXRzLnBvcHBlcj1pdCh7fSx0Lm9mZnNldHMucG9wcGVyLHV0KHQuaW5zdGFuY2UucG9wcGVyLHQub2Zmc2V0cy5yZWZlcmVuY2UsdC5wbGFjZW1lbnQpKSx0PXB0KHQuaW5zdGFuY2UubW9kaWZpZXJzLHQsImZsaXAiKSl9KSx0fSxiZWhhdmlvcjoiZmxpcCIscGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJ2aWV3cG9ydCJ9LGlubmVyOntvcmRlcjo3MDAsZW5hYmxlZDohMSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPXQub2Zmc2V0cyxyPWkucG9wcGVyLG89aS5yZWZlcmVuY2Uscz0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihuKSxhPS0xPT09WyJ0b3AiLCJsZWZ0Il0uaW5kZXhPZihuKTtyZXR1cm4gcltzPyJsZWZ0IjoidG9wIl09b1tuXS0oYT9yW3M/IndpZHRoIjoiaGVpZ2h0Il06MCksdC5wbGFjZW1lbnQ9ZnQoZSksdC5vZmZzZXRzLnBvcHBlcj1ydChyKSx0fX0saGlkZTp7b3JkZXI6ODAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCl7aWYoIVR0KHQuaW5zdGFuY2UubW9kaWZpZXJzLCJoaWRlIiwicHJldmVudE92ZXJmbG93IikpcmV0dXJuIHQ7dmFyIGU9dC5vZmZzZXRzLnJlZmVyZW5jZSxuPWR0KHQuaW5zdGFuY2UubW9kaWZpZXJzLGZ1bmN0aW9uKHQpe3JldHVybiJwcmV2ZW50T3ZlcmZsb3ciPT09dC5uYW1lfSkuYm91bmRhcmllcztpZihlLmJvdHRvbTxuLnRvcHx8ZS5sZWZ0Pm4ucmlnaHR8fGUudG9wPm4uYm90dG9tfHxlLnJpZ2h0PG4ubGVmdCl7aWYoITA9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSEwLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSIifWVsc2V7aWYoITE9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSExLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSExfXJldHVybiB0fX0sY29tcHV0ZVN0eWxlOntvcmRlcjo4NTAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUueCxpPWUueSxyPXQub2Zmc2V0cy5wb3BwZXIsbz1kdCh0Lmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbih0KXtyZXR1cm4iYXBwbHlTdHlsZSI9PT10Lm5hbWV9KS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09byYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBzPXZvaWQgMCE9PW8/bzplLmdwdUFjY2VsZXJhdGlvbixhPW90KFEodC5pbnN0YW5jZS5wb3BwZXIpKSxsPXtwb3NpdGlvbjpyLnBvc2l0aW9ufSxjPXtsZWZ0Ok1hdGguZmxvb3Ioci5sZWZ0KSx0b3A6TWF0aC5mbG9vcihyLnRvcCksYm90dG9tOk1hdGguZmxvb3Ioci5ib3R0b20pLHJpZ2h0Ok1hdGguZmxvb3Ioci5yaWdodCl9LGg9ImJvdHRvbSI9PT1uPyJ0b3AiOiJib3R0b20iLGY9InJpZ2h0Ij09PWk/ImxlZnQiOiJyaWdodCIsdT1tdCgidHJhbnNmb3JtIiksZD12b2lkIDAscD12b2lkIDA7aWYocD0iYm90dG9tIj09PWg/LWEuaGVpZ2h0K2MuYm90dG9tOmMudG9wLGQ9InJpZ2h0Ij09PWY/LWEud2lkdGgrYy5yaWdodDpjLmxlZnQscyYmdSlsW3VdPSJ0cmFuc2xhdGUzZCgiK2QrInB4LCAiK3ArInB4LCAwKSIsbFtoXT0wLGxbZl09MCxsLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgZz0iYm90dG9tIj09PWg/LTE6MSxtPSJyaWdodCI9PT1mPy0xOjE7bFtoXT1wKmcsbFtmXT1kKm0sbC53aWxsQ2hhbmdlPWgrIiwgIitmfXZhciBfPXsieC1wbGFjZW1lbnQiOnQucGxhY2VtZW50fTtyZXR1cm4gdC5hdHRyaWJ1dGVzPWl0KHt9LF8sdC5hdHRyaWJ1dGVzKSx0LnN0eWxlcz1pdCh7fSxsLHQuc3R5bGVzKSx0LmFycm93U3R5bGVzPWl0KHt9LHQub2Zmc2V0cy5hcnJvdyx0LmFycm93U3R5bGVzKSx0fSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIGJ0KHQuaW5zdGFuY2UucG9wcGVyLHQuc3R5bGVzKSxlPXQuaW5zdGFuY2UucG9wcGVyLG49dC5hdHRyaWJ1dGVzLE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7ITEhPT1uW3RdP2Uuc2V0QXR0cmlidXRlKHQsblt0XSk6ZS5yZW1vdmVBdHRyaWJ1dGUodCl9KSx0LmFycm93RWxlbWVudCYmT2JqZWN0LmtleXModC5hcnJvd1N0eWxlcykubGVuZ3RoJiZidCh0LmFycm93RWxlbWVudCx0LmFycm93U3R5bGVzKSx0fSxvbkxvYWQ6ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz1jdCgwLGUsdCkscz1sdChuLnBsYWNlbWVudCxvLGUsdCxuLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LG4ubW9kaWZpZXJzLmZsaXAucGFkZGluZyk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIscyksYnQoZSx7cG9zaXRpb246ImFic29sdXRlIn0pLG59LGdwdUFjY2VsZXJhdGlvbjp2b2lkIDB9fX0sT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7dmFyIGk9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTt0dCh0aGlzLHQpLHRoaXMuc2NoZWR1bGVVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkudXBkYXRlKX0sdGhpcy51cGRhdGU9VSh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnM9aXQoe30sdC5EZWZhdWx0cyxyKSx0aGlzLnN0YXRlPXtpc0Rlc3Ryb3llZDohMSxpc0NyZWF0ZWQ6ITEsc2Nyb2xsUGFyZW50czpbXX0sdGhpcy5yZWZlcmVuY2U9ZSYmZS5qcXVlcnk/ZVswXTplLHRoaXMucG9wcGVyPW4mJm4uanF1ZXJ5P25bMF06bix0aGlzLm9wdGlvbnMubW9kaWZpZXJzPXt9LE9iamVjdC5rZXlzKGl0KHt9LHQuRGVmYXVsdHMubW9kaWZpZXJzLHIubW9kaWZpZXJzKSkuZm9yRWFjaChmdW5jdGlvbihlKXtpLm9wdGlvbnMubW9kaWZpZXJzW2VdPWl0KHt9LHQuRGVmYXVsdHMubW9kaWZpZXJzW2VdfHx7fSxyLm1vZGlmaWVycz9yLm1vZGlmaWVyc1tlXTp7fSl9KSx0aGlzLm1vZGlmaWVycz1PYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubW9kaWZpZXJzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGl0KHtuYW1lOnR9LGkub3B0aW9ucy5tb2RpZmllcnNbdF0pfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSx0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZW5hYmxlZCYmQih0Lm9uTG9hZCkmJnQub25Mb2FkKGkucmVmZXJlbmNlLGkucG9wcGVyLGkub3B0aW9ucyx0LGkuc3RhdGUpfSksdGhpcy51cGRhdGUoKTt2YXIgbz10aGlzLm9wdGlvbnMuZXZlbnRzRW5hYmxlZDtvJiZ0aGlzLmVuYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkPW99cmV0dXJuIGV0KHQsW3trZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtpZighdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZCl7dmFyIHQ9e2luc3RhbmNlOnRoaXMsc3R5bGVzOnt9LGFycm93U3R5bGVzOnt9LGF0dHJpYnV0ZXM6e30sZmxpcHBlZDohMSxvZmZzZXRzOnt9fTt0Lm9mZnNldHMucmVmZXJlbmNlPWN0KHRoaXMuc3RhdGUsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UpLHQucGxhY2VtZW50PWx0KHRoaXMub3B0aW9ucy5wbGFjZW1lbnQsdC5vZmZzZXRzLnJlZmVyZW5jZSx0aGlzLnBvcHBlcix0aGlzLnJlZmVyZW5jZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpLHQub3JpZ2luYWxQbGFjZW1lbnQ9dC5wbGFjZW1lbnQsdC5vZmZzZXRzLnBvcHBlcj11dCh0aGlzLnBvcHBlcix0Lm9mZnNldHMucmVmZXJlbmNlLHQucGxhY2VtZW50KSx0Lm9mZnNldHMucG9wcGVyLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdD1wdCh0aGlzLm1vZGlmaWVycyx0KSx0aGlzLnN0YXRlLmlzQ3JlYXRlZD90aGlzLm9wdGlvbnMub25VcGRhdGUodCk6KHRoaXMuc3RhdGUuaXNDcmVhdGVkPSEwLHRoaXMub3B0aW9ucy5vbkNyZWF0ZSh0KSl9fS5jYWxsKHRoaXMpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZD0hMCxndCh0aGlzLm1vZGlmaWVycywiYXBwbHlTdHlsZSIpJiYodGhpcy5wb3BwZXIucmVtb3ZlQXR0cmlidXRlKCJ4LXBsYWNlbWVudCIpLHRoaXMucG9wcGVyLnN0eWxlLmxlZnQ9IiIsdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb249IiIsdGhpcy5wb3BwZXIuc3R5bGUudG9wPSIiLHRoaXMucG9wcGVyLnN0eWxlW210KCJ0cmFuc2Zvcm0iKV09IiIpLHRoaXMuZGlzYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5vcHRpb25zLnJlbW92ZU9uRGVzdHJveSYmdGhpcy5wb3BwZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBvcHBlciksdGhpc30uY2FsbCh0aGlzKX19LHtrZXk6ImVuYWJsZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZHx8KHRoaXMuc3RhdGU9dnQodGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLHRoaXMuc3RhdGUsdGhpcy5zY2hlZHVsZVVwZGF0ZSkpfS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFdC5jYWxsKHRoaXMpfX1dKSx0fSgpO090LlV0aWxzPSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6Z2xvYmFsKS5Qb3BwZXJVdGlscyxPdC5wbGFjZW1lbnRzPUN0LE90LkRlZmF1bHRzPVN0O3ZhciBOdD1mdW5jdGlvbih0KXt2YXIgZT0iZHJvcGRvd24iLG49ImJzLmRyb3Bkb3duIixvPSIuIituLHM9dC5mbltlXSxhPW5ldyBSZWdFeHAoIjM4fDQwfDI3IiksbD17SElERToiaGlkZSIrbyxISURERU46ImhpZGRlbiIrbyxTSE9XOiJzaG93IitvLFNIT1dOOiJzaG93biIrbyxDTElDSzoiY2xpY2siK28sQ0xJQ0tfREFUQV9BUEk6ImNsaWNrIitvKyIuZGF0YS1hcGkiLEtFWURPV05fREFUQV9BUEk6ImtleWRvd24iK28rIi5kYXRhLWFwaSIsS0VZVVBfREFUQV9BUEk6ImtleXVwIitvKyIuZGF0YS1hcGkifSxjPSJkaXNhYmxlZCIsaD0ic2hvdyIsZj0iZHJvcHVwIix1PSJkcm9wcmlnaHQiLGQ9ImRyb3BsZWZ0IixwPSJkcm9wZG93bi1tZW51LXJpZ2h0IixnPSJkcm9wZG93bi1tZW51LWxlZnQiLG09InBvc2l0aW9uLXN0YXRpYyIsXz0nW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJyx2PSIuZHJvcGRvd24gZm9ybSIsRT0iLmRyb3Bkb3duLW1lbnUiLHk9Ii5uYXZiYXItbmF2IixiPSIuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpub3QoLmRpc2FibGVkKSIsVD0idG9wLXN0YXJ0IixDPSJ0b3AtZW5kIix3PSJib3R0b20tc3RhcnQiLEk9ImJvdHRvbS1lbmQiLEE9InJpZ2h0LXN0YXJ0IixEPSJsZWZ0LXN0YXJ0IixTPXtvZmZzZXQ6MCxmbGlwOiEwLGJvdW5kYXJ5OiJzY3JvbGxQYXJlbnQifSxPPXtvZmZzZXQ6IihudW1iZXJ8c3RyaW5nfGZ1bmN0aW9uKSIsZmxpcDoiYm9vbGVhbiIsYm91bmRhcnk6IihzdHJpbmd8ZWxlbWVudCkifSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyh0LGUpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9wb3BwZXI9bnVsbCx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKGUpLHRoaXMuX21lbnU9dGhpcy5fZ2V0TWVudUVsZW1lbnQoKSx0aGlzLl9pbk5hdmJhcj10aGlzLl9kZXRlY3ROYXZiYXIoKSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpfXZhciB2PXMucHJvdG90eXBlO3JldHVybiB2LnRvZ2dsZT1mdW5jdGlvbigpe2lmKCF0aGlzLl9lbGVtZW50LmRpc2FibGVkJiYhdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhjKSl7dmFyIGU9cy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCksbj10KHRoaXMuX21lbnUpLmhhc0NsYXNzKGgpO2lmKHMuX2NsZWFyTWVudXMoKSwhbil7dmFyIGk9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0scj10LkV2ZW50KGwuU0hPVyxpKTtpZih0KGUpLnRyaWdnZXIociksIXIuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKCF0aGlzLl9pbk5hdmJhcil7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBPdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAgZHJvcGRvd24gcmVxdWlyZSBQb3BwZXIuanMgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZykiKTt2YXIgbz10aGlzLl9lbGVtZW50O3QoZSkuaGFzQ2xhc3MoZikmJih0KHRoaXMuX21lbnUpLmhhc0NsYXNzKGcpfHx0KHRoaXMuX21lbnUpLmhhc0NsYXNzKHApKSYmKG89ZSksInNjcm9sbFBhcmVudCIhPT10aGlzLl9jb25maWcuYm91bmRhcnkmJnQoZSkuYWRkQ2xhc3MobSksdGhpcy5fcG9wcGVyPW5ldyBPdChvLHRoaXMuX21lbnUsdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKCkpfSJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYwPT09dChlKS5jbG9zZXN0KHkpLmxlbmd0aCYmdCgiYm9keSIpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCx0Lm5vb3ApLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsITApLHQodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoaCksdChlKS50b2dnbGVDbGFzcyhoKS50cmlnZ2VyKHQuRXZlbnQobC5TSE9XTixpKSl9fX19LHYuZGlzcG9zZT1mdW5jdGlvbigpe3QucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LG4pLHQodGhpcy5fZWxlbWVudCkub2ZmKG8pLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9tZW51PW51bGwsbnVsbCE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSx2LnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSx2Ll9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dCh0aGlzLl9lbGVtZW50KS5vbihsLkNMSUNLLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLGUudG9nZ2xlKCl9KX0sdi5fZ2V0Q29uZmlnPWZ1bmN0aW9uKG4pe3JldHVybiBuPXIoe30sdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LHQodGhpcy5fZWxlbWVudCkuZGF0YSgpLG4pLGsudHlwZUNoZWNrQ29uZmlnKGUsbix0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSxufSx2Ll9nZXRNZW51RWxlbWVudD1mdW5jdGlvbigpe2lmKCF0aGlzLl9tZW51KXt2YXIgZT1zLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTt0aGlzLl9tZW51PXQoZSkuZmluZChFKVswXX1yZXR1cm4gdGhpcy5fbWVudX0sdi5fZ2V0UGxhY2VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzLl9lbGVtZW50KS5wYXJlbnQoKSxuPXc7cmV0dXJuIGUuaGFzQ2xhc3MoZik/KG49VCx0KHRoaXMuX21lbnUpLmhhc0NsYXNzKHApJiYobj1DKSk6ZS5oYXNDbGFzcyh1KT9uPUE6ZS5oYXNDbGFzcyhkKT9uPUQ6dCh0aGlzLl9tZW51KS5oYXNDbGFzcyhwKSYmKG49SSksbn0sdi5fZGV0ZWN0TmF2YmFyPWZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5fZWxlbWVudCkuY2xvc2VzdCgiLm5hdmJhciIpLmxlbmd0aD4wfSx2Ll9nZXRQb3BwZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e307cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2NvbmZpZy5vZmZzZXQ/ZS5mbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5vZmZzZXRzPXIoe30sZS5vZmZzZXRzLHQuX2NvbmZpZy5vZmZzZXQoZS5vZmZzZXRzKXx8e30pLGV9OmUub2Zmc2V0PXRoaXMuX2NvbmZpZy5vZmZzZXQse3BsYWNlbWVudDp0aGlzLl9nZXRQbGFjZW1lbnQoKSxtb2RpZmllcnM6e29mZnNldDplLGZsaXA6e2VuYWJsZWQ6dGhpcy5fY29uZmlnLmZsaXB9LHByZXZlbnRPdmVyZmxvdzp7Ym91bmRhcmllc0VsZW1lbnQ6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX19fSxzLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKTtpZihpfHwoaT1uZXcgcyh0aGlzLCJvYmplY3QiPT10eXBlb2YgZT9lOm51bGwpLHQodGhpcykuZGF0YShuLGkpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgaVtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO2lbZV0oKX19KX0scy5fY2xlYXJNZW51cz1mdW5jdGlvbihlKXtpZighZXx8MyE9PWUud2hpY2gmJigia2V5dXAiIT09ZS50eXBlfHw5PT09ZS53aGljaCkpZm9yKHZhciBpPXQubWFrZUFycmF5KHQoXykpLHI9MDtyPGkubGVuZ3RoO3IrKyl7dmFyIG89cy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQoaVtyXSksYT10KGlbcl0pLmRhdGEobiksYz17cmVsYXRlZFRhcmdldDppW3JdfTtpZihhKXt2YXIgZj1hLl9tZW51O2lmKHQobykuaGFzQ2xhc3MoaCkmJiEoZSYmKCJjbGljayI9PT1lLnR5cGUmJi9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSl8fCJrZXl1cCI9PT1lLnR5cGUmJjk9PT1lLndoaWNoKSYmdC5jb250YWlucyhvLGUudGFyZ2V0KSkpe3ZhciB1PXQuRXZlbnQobC5ISURFLGMpO3QobykudHJpZ2dlcih1KSx1LmlzRGVmYXVsdFByZXZlbnRlZCgpfHwoIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnQoImJvZHkiKS5jaGlsZHJlbigpLm9mZigibW91c2VvdmVyIixudWxsLHQubm9vcCksaVtyXS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLHQoZikucmVtb3ZlQ2xhc3MoaCksdChvKS5yZW1vdmVDbGFzcyhoKS50cmlnZ2VyKHQuRXZlbnQobC5ISURERU4sYykpKX19fX0scy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIG4saT1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7cmV0dXJuIGkmJihuPXQoaSlbMF0pLG58fGUucGFyZW50Tm9kZX0scy5fZGF0YUFwaUtleWRvd25IYW5kbGVyPWZ1bmN0aW9uKGUpe2lmKCgvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpPyEoMzI9PT1lLndoaWNofHwyNyE9PWUud2hpY2gmJig0MCE9PWUud2hpY2gmJjM4IT09ZS53aGljaHx8dChlLnRhcmdldCkuY2xvc2VzdChFKS5sZW5ndGgpKTphLnRlc3QoZS53aGljaCkpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksIXRoaXMuZGlzYWJsZWQmJiF0KHRoaXMpLmhhc0NsYXNzKGMpKSl7dmFyIG49cy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcyksaT10KG4pLmhhc0NsYXNzKGgpO2lmKChpfHwyNz09PWUud2hpY2gmJjMyPT09ZS53aGljaCkmJighaXx8MjchPT1lLndoaWNoJiYzMiE9PWUud2hpY2gpKXt2YXIgcj10KG4pLmZpbmQoYikuZ2V0KCk7aWYoMCE9PXIubGVuZ3RoKXt2YXIgbz1yLmluZGV4T2YoZS50YXJnZXQpOzM4PT09ZS53aGljaCYmbz4wJiZvLS0sNDA9PT1lLndoaWNoJiZvPHIubGVuZ3RoLTEmJm8rKyxvPDAmJihvPTApLHJbb10uZm9jdXMoKX19ZWxzZXtpZigyNz09PWUud2hpY2gpe3ZhciBsPXQobikuZmluZChfKVswXTt0KGwpLnRyaWdnZXIoImZvY3VzIil9dCh0aGlzKS50cmlnZ2VyKCJjbGljayIpfX19LGkocyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFN9fSx7a2V5OiJEZWZhdWx0VHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE99fV0pLHN9KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKGwuS0VZRE9XTl9EQVRBX0FQSSxfLE4uX2RhdGFBcGlLZXlkb3duSGFuZGxlcikub24obC5LRVlET1dOX0RBVEFfQVBJLEUsTi5fZGF0YUFwaUtleWRvd25IYW5kbGVyKS5vbihsLkNMSUNLX0RBVEFfQVBJKyIgIitsLktFWVVQX0RBVEFfQVBJLE4uX2NsZWFyTWVudXMpLm9uKGwuQ0xJQ0tfREFUQV9BUEksXyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxOLl9qUXVlcnlJbnRlcmZhY2UuY2FsbCh0KHRoaXMpLCJ0b2dnbGUiKX0pLm9uKGwuQ0xJQ0tfREFUQV9BUEksdixmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSksdC5mbltlXT1OLl9qUXVlcnlJbnRlcmZhY2UsdC5mbltlXS5Db25zdHJ1Y3Rvcj1OLHQuZm5bZV0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuW2VdPXMsTi5falF1ZXJ5SW50ZXJmYWNlfSxOfShlKSxrdD1mdW5jdGlvbih0KXt2YXIgZT0iYnMubW9kYWwiLG49Ii4iK2Usbz10LmZuLm1vZGFsLHM9e2JhY2tkcm9wOiEwLGtleWJvYXJkOiEwLGZvY3VzOiEwLHNob3c6ITB9LGE9e2JhY2tkcm9wOiIoYm9vbGVhbnxzdHJpbmcpIixrZXlib2FyZDoiYm9vbGVhbiIsZm9jdXM6ImJvb2xlYW4iLHNob3c6ImJvb2xlYW4ifSxsPXtISURFOiJoaWRlIituLEhJRERFTjoiaGlkZGVuIituLFNIT1c6InNob3ciK24sU0hPV046InNob3duIituLEZPQ1VTSU46ImZvY3VzaW4iK24sUkVTSVpFOiJyZXNpemUiK24sQ0xJQ0tfRElTTUlTUzoiY2xpY2suZGlzbWlzcyIrbixLRVlET1dOX0RJU01JU1M6ImtleWRvd24uZGlzbWlzcyIrbixNT1VTRVVQX0RJU01JU1M6Im1vdXNldXAuZGlzbWlzcyIrbixNT1VTRURPV05fRElTTUlTUzoibW91c2Vkb3duLmRpc21pc3MiK24sQ0xJQ0tfREFUQV9BUEk6ImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIn0sYz0ibW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUiLGg9Im1vZGFsLWJhY2tkcm9wIixmPSJtb2RhbC1vcGVuIix1PSJmYWRlIixkPSJzaG93IixwPXtESUFMT0c6Ii5tb2RhbC1kaWFsb2ciLERBVEFfVE9HR0xFOidbZGF0YS10b2dnbGU9Im1vZGFsIl0nLERBVEFfRElTTUlTUzonW2RhdGEtZGlzbWlzcz0ibW9kYWwiXScsRklYRURfQ09OVEVOVDoiLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCIsU1RJQ0tZX0NPTlRFTlQ6Ii5zdGlja3ktdG9wIixOQVZCQVJfVE9HR0xFUjoiLm5hdmJhci10b2dnbGVyIn0sZz1mdW5jdGlvbigpe2Z1bmN0aW9uIG8oZSxuKXt0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKG4pLHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl9kaWFsb2c9dChlKS5maW5kKHAuRElBTE9HKVswXSx0aGlzLl9iYWNrZHJvcD1udWxsLHRoaXMuX2lzU2hvd249ITEsdGhpcy5faXNCb2R5T3ZlcmZsb3dpbmc9ITEsdGhpcy5faWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLl9vcmlnaW5hbEJvZHlQYWRkaW5nPTAsdGhpcy5fc2Nyb2xsYmFyV2lkdGg9MH12YXIgZz1vLnByb3RvdHlwZTtyZXR1cm4gZy50b2dnbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzU2hvd24/dGhpcy5oaWRlKCk6dGhpcy5zaG93KHQpfSxnLnNob3c9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZighdGhpcy5faXNUcmFuc2l0aW9uaW5nJiYhdGhpcy5faXNTaG93bil7ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyh1KSYmKHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMCk7dmFyIGk9dC5FdmVudChsLlNIT1cse3JlbGF0ZWRUYXJnZXQ6ZX0pO3QodGhpcy5fZWxlbWVudCkudHJpZ2dlcihpKSx0aGlzLl9pc1Nob3dufHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5faXNTaG93bj0hMCx0aGlzLl9jaGVja1Njcm9sbGJhcigpLHRoaXMuX3NldFNjcm9sbGJhcigpLHRoaXMuX2FkanVzdERpYWxvZygpLHQoZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoZiksdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSx0aGlzLl9zZXRSZXNpemVFdmVudCgpLHQodGhpcy5fZWxlbWVudCkub24obC5DTElDS19ESVNNSVNTLHAuREFUQV9ESVNNSVNTLGZ1bmN0aW9uKHQpe3JldHVybiBuLmhpZGUodCl9KSx0KHRoaXMuX2RpYWxvZykub24obC5NT1VTRURPV05fRElTTUlTUyxmdW5jdGlvbigpe3Qobi5fZWxlbWVudCkub25lKGwuTU9VU0VVUF9ESVNNSVNTLGZ1bmN0aW9uKGUpe3QoZS50YXJnZXQpLmlzKG4uX2VsZW1lbnQpJiYobi5faWdub3JlQmFja2Ryb3BDbGljaz0hMCl9KX0pLHRoaXMuX3Nob3dCYWNrZHJvcChmdW5jdGlvbigpe3JldHVybiBuLl9zaG93RWxlbWVudChlKX0pKX19LGcuaGlkZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzO2lmKGUmJmUucHJldmVudERlZmF1bHQoKSwhdGhpcy5faXNUcmFuc2l0aW9uaW5nJiZ0aGlzLl9pc1Nob3duKXt2YXIgaT10LkV2ZW50KGwuSElERSk7aWYodCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKGkpLHRoaXMuX2lzU2hvd24mJiFpLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt0aGlzLl9pc1Nob3duPSExO3ZhciByPWsuc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJnQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3ModSk7ciYmKHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMCksdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSx0aGlzLl9zZXRSZXNpemVFdmVudCgpLHQoZG9jdW1lbnQpLm9mZihsLkZPQ1VTSU4pLHQodGhpcy5fZWxlbWVudCkucmVtb3ZlQ2xhc3MoZCksdCh0aGlzLl9lbGVtZW50KS5vZmYobC5DTElDS19ESVNNSVNTKSx0KHRoaXMuX2RpYWxvZykub2ZmKGwuTU9VU0VET1dOX0RJU01JU1MpLHI/dCh0aGlzLl9lbGVtZW50KS5vbmUoay5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbih0KXtyZXR1cm4gbi5faGlkZU1vZGFsKHQpfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoMzAwKTp0aGlzLl9oaWRlTW9kYWwoKX19fSxnLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxlKSx0KHdpbmRvdyxkb2N1bWVudCx0aGlzLl9lbGVtZW50LHRoaXMuX2JhY2tkcm9wKS5vZmYobiksdGhpcy5fY29uZmlnPW51bGwsdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuX2RpYWxvZz1udWxsLHRoaXMuX2JhY2tkcm9wPW51bGwsdGhpcy5faXNTaG93bj1udWxsLHRoaXMuX2lzQm9keU92ZXJmbG93aW5nPW51bGwsdGhpcy5faWdub3JlQmFja2Ryb3BDbGljaz1udWxsLHRoaXMuX3Njcm9sbGJhcldpZHRoPW51bGx9LGcuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0RGlhbG9nKCl9LGcuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1yKHt9LHMsdCksay50eXBlQ2hlY2tDb25maWcoIm1vZGFsIix0LGEpLHR9LGcuX3Nob3dFbGVtZW50PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsaT1rLnN1cHBvcnRzVHJhbnNpdGlvbkVuZCgpJiZ0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKHUpO3RoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV8fGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksdGhpcy5fZWxlbWVudC5zY3JvbGxUb3A9MCxpJiZrLnJlZmxvdyh0aGlzLl9lbGVtZW50KSx0KHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKGQpLHRoaXMuX2NvbmZpZy5mb2N1cyYmdGhpcy5fZW5mb3JjZUZvY3VzKCk7dmFyIHI9dC5FdmVudChsLlNIT1dOLHtyZWxhdGVkVGFyZ2V0OmV9KSxvPWZ1bmN0aW9uKCl7bi5fY29uZmlnLmZvY3VzJiZuLl9lbGVtZW50LmZvY3VzKCksbi5faXNUcmFuc2l0aW9uaW5nPSExLHQobi5fZWxlbWVudCkudHJpZ2dlcihyKX07aT90KHRoaXMuX2RpYWxvZykub25lKGsuVFJBTlNJVElPTl9FTkQsbykuZW11bGF0ZVRyYW5zaXRpb25FbmQoMzAwKTpvKCl9LGcuX2VuZm9yY2VGb2N1cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dChkb2N1bWVudCkub2ZmKGwuRk9DVVNJTikub24obC5GT0NVU0lOLGZ1bmN0aW9uKG4pe2RvY3VtZW50IT09bi50YXJnZXQmJmUuX2VsZW1lbnQhPT1uLnRhcmdldCYmMD09PXQoZS5fZWxlbWVudCkuaGFzKG4udGFyZ2V0KS5sZW5ndGgmJmUuX2VsZW1lbnQuZm9jdXMoKX0pfSxnLl9zZXRFc2NhcGVFdmVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5faXNTaG93biYmdGhpcy5fY29uZmlnLmtleWJvYXJkP3QodGhpcy5fZWxlbWVudCkub24obC5LRVlET1dOX0RJU01JU1MsZnVuY3Rpb24odCl7Mjc9PT10LndoaWNoJiYodC5wcmV2ZW50RGVmYXVsdCgpLGUuaGlkZSgpKX0pOnRoaXMuX2lzU2hvd258fHQodGhpcy5fZWxlbWVudCkub2ZmKGwuS0VZRE9XTl9ESVNNSVNTKX0sZy5fc2V0UmVzaXplRXZlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2lzU2hvd24/dCh3aW5kb3cpLm9uKGwuUkVTSVpFLGZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZVVwZGF0ZSh0KX0pOnQod2luZG93KS5vZmYobC5SRVNJWkUpfSxnLl9oaWRlTW9kYWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwhMCksdGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX3Nob3dCYWNrZHJvcChmdW5jdGlvbigpe3QoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoZiksZS5fcmVzZXRBZGp1c3RtZW50cygpLGUuX3Jlc2V0U2Nyb2xsYmFyKCksdChlLl9lbGVtZW50KS50cmlnZ2VyKGwuSElEREVOKX0pfSxnLl9yZW1vdmVCYWNrZHJvcD1mdW5jdGlvbigpe3RoaXMuX2JhY2tkcm9wJiYodCh0aGlzLl9iYWNrZHJvcCkucmVtb3ZlKCksdGhpcy5fYmFja2Ryb3A9bnVsbCl9LGcuX3Nob3dCYWNrZHJvcD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLGk9dCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyh1KT91OiIiO2lmKHRoaXMuX2lzU2hvd24mJnRoaXMuX2NvbmZpZy5iYWNrZHJvcCl7dmFyIHI9ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmaTtpZih0aGlzLl9iYWNrZHJvcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLl9iYWNrZHJvcC5jbGFzc05hbWU9aCxpJiZ0KHRoaXMuX2JhY2tkcm9wKS5hZGRDbGFzcyhpKSx0KHRoaXMuX2JhY2tkcm9wKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KSx0KHRoaXMuX2VsZW1lbnQpLm9uKGwuQ0xJQ0tfRElTTUlTUyxmdW5jdGlvbih0KXtuLl9pZ25vcmVCYWNrZHJvcENsaWNrP24uX2lnbm9yZUJhY2tkcm9wQ2xpY2s9ITE6dC50YXJnZXQ9PT10LmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09PW4uX2NvbmZpZy5iYWNrZHJvcD9uLl9lbGVtZW50LmZvY3VzKCk6bi5oaWRlKCkpfSksciYmay5yZWZsb3codGhpcy5fYmFja2Ryb3ApLHQodGhpcy5fYmFja2Ryb3ApLmFkZENsYXNzKGQpLCFlKXJldHVybjtpZighcilyZXR1cm4gdm9pZCBlKCk7dCh0aGlzLl9iYWNrZHJvcCkub25lKGsuVFJBTlNJVElPTl9FTkQsZSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoMTUwKX1lbHNlIGlmKCF0aGlzLl9pc1Nob3duJiZ0aGlzLl9iYWNrZHJvcCl7dCh0aGlzLl9iYWNrZHJvcCkucmVtb3ZlQ2xhc3MoZCk7dmFyIG89ZnVuY3Rpb24oKXtuLl9yZW1vdmVCYWNrZHJvcCgpLGUmJmUoKX07ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyh1KT90KHRoaXMuX2JhY2tkcm9wKS5vbmUoay5UUkFOU0lUSU9OX0VORCxvKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxNTApOm8oKX1lbHNlIGUmJmUoKX0sZy5fYWRqdXN0RGlhbG9nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDshdGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcmJnQmJih0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0PXRoaXMuX3Njcm9sbGJhcldpZHRoKyJweCIpLHRoaXMuX2lzQm9keU92ZXJmbG93aW5nJiYhdCYmKHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0PXRoaXMuX3Njcm9sbGJhcldpZHRoKyJweCIpfSxnLl9yZXNldEFkanVzdG1lbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdD0iIix0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodD0iIn0sZy5fY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2lzQm9keU92ZXJmbG93aW5nPXQubGVmdCt0LnJpZ2h0PHdpbmRvdy5pbm5lcldpZHRoLHRoaXMuX3Njcm9sbGJhcldpZHRoPXRoaXMuX2dldFNjcm9sbGJhcldpZHRoKCl9LGcuX3NldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcpe3QocC5GSVhFRF9DT05URU5UKS5lYWNoKGZ1bmN0aW9uKG4saSl7dmFyIHI9dChpKVswXS5zdHlsZS5wYWRkaW5nUmlnaHQsbz10KGkpLmNzcygicGFkZGluZy1yaWdodCIpO3QoaSkuZGF0YSgicGFkZGluZy1yaWdodCIscikuY3NzKCJwYWRkaW5nLXJpZ2h0IixwYXJzZUZsb2F0KG8pK2UuX3Njcm9sbGJhcldpZHRoKyJweCIpfSksdChwLlNUSUNLWV9DT05URU5UKS5lYWNoKGZ1bmN0aW9uKG4saSl7dmFyIHI9dChpKVswXS5zdHlsZS5tYXJnaW5SaWdodCxvPXQoaSkuY3NzKCJtYXJnaW4tcmlnaHQiKTt0KGkpLmRhdGEoIm1hcmdpbi1yaWdodCIscikuY3NzKCJtYXJnaW4tcmlnaHQiLHBhcnNlRmxvYXQobyktZS5fc2Nyb2xsYmFyV2lkdGgrInB4Iil9KSx0KHAuTkFWQkFSX1RPR0dMRVIpLmVhY2goZnVuY3Rpb24obixpKXt2YXIgcj10KGkpWzBdLnN0eWxlLm1hcmdpblJpZ2h0LG89dChpKS5jc3MoIm1hcmdpbi1yaWdodCIpO3QoaSkuZGF0YSgibWFyZ2luLXJpZ2h0IixyKS5jc3MoIm1hcmdpbi1yaWdodCIscGFyc2VGbG9hdChvKStlLl9zY3JvbGxiYXJXaWR0aCsicHgiKX0pO3ZhciBuPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0LGk9dCgiYm9keSIpLmNzcygicGFkZGluZy1yaWdodCIpO3QoImJvZHkiKS5kYXRhKCJwYWRkaW5nLXJpZ2h0IixuKS5jc3MoInBhZGRpbmctcmlnaHQiLHBhcnNlRmxvYXQoaSkrdGhpcy5fc2Nyb2xsYmFyV2lkdGgrInB4Iil9fSxnLl9yZXNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3QocC5GSVhFRF9DT05URU5UKS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIGk9dChuKS5kYXRhKCJwYWRkaW5nLXJpZ2h0Iik7InVuZGVmaW5lZCIhPXR5cGVvZiBpJiZ0KG4pLmNzcygicGFkZGluZy1yaWdodCIsaSkucmVtb3ZlRGF0YSgicGFkZGluZy1yaWdodCIpfSksdChwLlNUSUNLWV9DT05URU5UKyIsICIrcC5OQVZCQVJfVE9HR0xFUikuZWFjaChmdW5jdGlvbihlLG4pe3ZhciBpPXQobikuZGF0YSgibWFyZ2luLXJpZ2h0Iik7InVuZGVmaW5lZCIhPXR5cGVvZiBpJiZ0KG4pLmNzcygibWFyZ2luLXJpZ2h0IixpKS5yZW1vdmVEYXRhKCJtYXJnaW4tcmlnaHQiKX0pO3ZhciBlPXQoImJvZHkiKS5kYXRhKCJwYWRkaW5nLXJpZ2h0Iik7InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZ0KCJib2R5IikuY3NzKCJwYWRkaW5nLXJpZ2h0IixlKS5yZW1vdmVEYXRhKCJwYWRkaW5nLXJpZ2h0Iil9LGcuX2dldFNjcm9sbGJhcldpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9Yyxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgtdC5jbGllbnRXaWR0aDtyZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxlfSxvLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24obixpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHM9dCh0aGlzKS5kYXRhKGUpLGE9cih7fSxvLkRlZmF1bHQsdCh0aGlzKS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBuJiZuKTtpZihzfHwocz1uZXcgbyh0aGlzLGEpLHQodGhpcykuZGF0YShlLHMpKSwic3RyaW5nIj09dHlwZW9mIG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygc1tuXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrbisnIicpO3Nbbl0oaSl9ZWxzZSBhLnNob3cmJnMuc2hvdyhpKX0pfSxpKG8sbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuMC4wIn19LHtrZXk6IkRlZmF1bHQiLGdldDpmdW5jdGlvbigpe3JldHVybiBzfX1dKSxvfSgpO3JldHVybiB0KGRvY3VtZW50KS5vbihsLkNMSUNLX0RBVEFfQVBJLHAuREFUQV9UT0dHTEUsZnVuY3Rpb24obil7dmFyIGksbz10aGlzLHM9ay5nZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpO3MmJihpPXQocylbMF0pO3ZhciBhPXQoaSkuZGF0YShlKT8idG9nZ2xlIjpyKHt9LHQoaSkuZGF0YSgpLHQodGhpcykuZGF0YSgpKTsiQSIhPT10aGlzLnRhZ05hbWUmJiJBUkVBIiE9PXRoaXMudGFnTmFtZXx8bi5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPXQoaSkub25lKGwuU0hPVyxmdW5jdGlvbihlKXtlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxjLm9uZShsLkhJRERFTixmdW5jdGlvbigpe3QobykuaXMoIjp2aXNpYmxlIikmJm8uZm9jdXMoKX0pfSk7Zy5falF1ZXJ5SW50ZXJmYWNlLmNhbGwodChpKSxhLHRoaXMpfSksdC5mbi5tb2RhbD1nLl9qUXVlcnlJbnRlcmZhY2UsdC5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1nLHQuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuLm1vZGFsPW8sZy5falF1ZXJ5SW50ZXJmYWNlfSxnfShlKSxMdD1mdW5jdGlvbih0KXt2YXIgZT0idG9vbHRpcCIsbj0iYnMudG9vbHRpcCIsbz0iLiIrbixzPXQuZm5bZV0sYT1uZXcgUmVnRXhwKCIoXnxcXHMpYnMtdG9vbHRpcFxcUysiLCJnIiksbD17YW5pbWF0aW9uOiJib29sZWFuIix0ZW1wbGF0ZToic3RyaW5nIix0aXRsZToiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSIsdHJpZ2dlcjoic3RyaW5nIixkZWxheToiKG51bWJlcnxvYmplY3QpIixodG1sOiJib29sZWFuIixzZWxlY3RvcjoiKHN0cmluZ3xib29sZWFuKSIscGxhY2VtZW50OiIoc3RyaW5nfGZ1bmN0aW9uKSIsb2Zmc2V0OiIobnVtYmVyfHN0cmluZykiLGNvbnRhaW5lcjoiKHN0cmluZ3xlbGVtZW50fGJvb2xlYW4pIixmYWxsYmFja1BsYWNlbWVudDoiKHN0cmluZ3xhcnJheSkiLGJvdW5kYXJ5OiIoc3RyaW5nfGVsZW1lbnQpIn0sYz17QVVUTzoiYXV0byIsVE9QOiJ0b3AiLFJJR0hUOiJyaWdodCIsQk9UVE9NOiJib3R0b20iLExFRlQ6ImxlZnQifSxoPXthbmltYXRpb246ITAsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwLWlubmVyIj48L2Rpdj48L2Rpdj4nLHRyaWdnZXI6ImhvdmVyIGZvY3VzIix0aXRsZToiIixkZWxheTowLGh0bWw6ITEsc2VsZWN0b3I6ITEscGxhY2VtZW50OiJ0b3AiLG9mZnNldDowLGNvbnRhaW5lcjohMSxmYWxsYmFja1BsYWNlbWVudDoiZmxpcCIsYm91bmRhcnk6InNjcm9sbFBhcmVudCJ9LGY9InNob3ciLHU9Im91dCIsZD17SElERToiaGlkZSIrbyxISURERU46ImhpZGRlbiIrbyxTSE9XOiJzaG93IitvLFNIT1dOOiJzaG93biIrbyxJTlNFUlRFRDoiaW5zZXJ0ZWQiK28sQ0xJQ0s6ImNsaWNrIitvLEZPQ1VTSU46ImZvY3VzaW4iK28sRk9DVVNPVVQ6ImZvY3Vzb3V0IitvLE1PVVNFRU5URVI6Im1vdXNlZW50ZXIiK28sTU9VU0VMRUFWRToibW91c2VsZWF2ZSIrb30scD0iZmFkZSIsZz0ic2hvdyIsbT0iLnRvb2x0aXAtaW5uZXIiLF89Ii5hcnJvdyIsdj0iaG92ZXIiLEU9ImZvY3VzIix5PSJjbGljayIsYj0ibWFudWFsIixUPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyh0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgT3QpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9vdHN0cmFwIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyLmpzIChodHRwczovL3BvcHBlci5qcy5vcmcpIik7dGhpcy5faXNFbmFibGVkPSEwLHRoaXMuX3RpbWVvdXQ9MCx0aGlzLl9ob3ZlclN0YXRlPSIiLHRoaXMuX2FjdGl2ZVRyaWdnZXI9e30sdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5lbGVtZW50PXQsdGhpcy5jb25maWc9dGhpcy5fZ2V0Q29uZmlnKGUpLHRoaXMudGlwPW51bGwsdGhpcy5fc2V0TGlzdGVuZXJzKCl9dmFyIFQ9cy5wcm90b3R5cGU7cmV0dXJuIFQuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5faXNFbmFibGVkPSEwfSxULmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLl9pc0VuYWJsZWQ9ITF9LFQudG9nZ2xlRW5hYmxlZD1mdW5jdGlvbigpe3RoaXMuX2lzRW5hYmxlZD0hdGhpcy5faXNFbmFibGVkfSxULnRvZ2dsZT1mdW5jdGlvbihlKXtpZih0aGlzLl9pc0VuYWJsZWQpaWYoZSl7dmFyIG49dGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSxpPXQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKG4pO2l8fChpPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGUuY3VycmVudFRhcmdldCx0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKSx0KGUuY3VycmVudFRhcmdldCkuZGF0YShuLGkpKSxpLl9hY3RpdmVUcmlnZ2VyLmNsaWNrPSFpLl9hY3RpdmVUcmlnZ2VyLmNsaWNrLGkuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKT9pLl9lbnRlcihudWxsLGkpOmkuX2xlYXZlKG51bGwsaSl9ZWxzZXtpZih0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKS5oYXNDbGFzcyhnKSlyZXR1cm4gdm9pZCB0aGlzLl9sZWF2ZShudWxsLHRoaXMpO3RoaXMuX2VudGVyKG51bGwsdGhpcyl9fSxULmRpc3Bvc2U9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdC5yZW1vdmVEYXRhKHRoaXMuZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKSx0KHRoaXMuZWxlbWVudCkub2ZmKHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKSx0KHRoaXMuZWxlbWVudCkuY2xvc2VzdCgiLm1vZGFsIikub2ZmKCJoaWRlLmJzLm1vZGFsIiksdGhpcy50aXAmJnQodGhpcy50aXApLnJlbW92ZSgpLHRoaXMuX2lzRW5hYmxlZD1udWxsLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9ob3ZlclN0YXRlPW51bGwsdGhpcy5fYWN0aXZlVHJpZ2dlcj1udWxsLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5lbGVtZW50PW51bGwsdGhpcy5jb25maWc9bnVsbCx0aGlzLnRpcD1udWxsfSxULnNob3c9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCJub25lIj09PXQodGhpcy5lbGVtZW50KS5jc3MoImRpc3BsYXkiKSl0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSB1c2Ugc2hvdyBvbiB2aXNpYmxlIGVsZW1lbnRzIik7dmFyIG49dC5FdmVudCh0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LlNIT1cpO2lmKHRoaXMuaXNXaXRoQ29udGVudCgpJiZ0aGlzLl9pc0VuYWJsZWQpe3QodGhpcy5lbGVtZW50KS50cmlnZ2VyKG4pO3ZhciBpPXQuY29udGFpbnModGhpcy5lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuZWxlbWVudCk7aWYobi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8IWkpcmV0dXJuO3ZhciByPXRoaXMuZ2V0VGlwRWxlbWVudCgpLG89ay5nZXRVSUQodGhpcy5jb25zdHJ1Y3Rvci5OQU1FKTtyLnNldEF0dHJpYnV0ZSgiaWQiLG8pLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLG8pLHRoaXMuc2V0Q29udGVudCgpLHRoaXMuY29uZmlnLmFuaW1hdGlvbiYmdChyKS5hZGRDbGFzcyhwKTt2YXIgYT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb25maWcucGxhY2VtZW50P3RoaXMuY29uZmlnLnBsYWNlbWVudC5jYWxsKHRoaXMscix0aGlzLmVsZW1lbnQpOnRoaXMuY29uZmlnLnBsYWNlbWVudCxsPXRoaXMuX2dldEF0dGFjaG1lbnQoYSk7dGhpcy5hZGRBdHRhY2htZW50Q2xhc3MobCk7dmFyIGM9ITE9PT10aGlzLmNvbmZpZy5jb250YWluZXI/ZG9jdW1lbnQuYm9keTp0KHRoaXMuY29uZmlnLmNvbnRhaW5lcik7dChyKS5kYXRhKHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVksdGhpcyksdC5jb250YWlucyh0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy50aXApfHx0KHIpLmFwcGVuZFRvKGMpLHQodGhpcy5lbGVtZW50KS50cmlnZ2VyKHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSU5TRVJURUQpLHRoaXMuX3BvcHBlcj1uZXcgT3QodGhpcy5lbGVtZW50LHIse3BsYWNlbWVudDpsLG1vZGlmaWVyczp7b2Zmc2V0OntvZmZzZXQ6dGhpcy5jb25maWcub2Zmc2V0fSxmbGlwOntiZWhhdmlvcjp0aGlzLmNvbmZpZy5mYWxsYmFja1BsYWNlbWVudH0sYXJyb3c6e2VsZW1lbnQ6X30scHJldmVudE92ZXJmbG93Ontib3VuZGFyaWVzRWxlbWVudDp0aGlzLmNvbmZpZy5ib3VuZGFyeX19LG9uQ3JlYXRlOmZ1bmN0aW9uKHQpe3Qub3JpZ2luYWxQbGFjZW1lbnQhPT10LnBsYWNlbWVudCYmZS5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKHQpfSxvblVwZGF0ZTpmdW5jdGlvbih0KXtlLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UodCl9fSksdChyKS5hZGRDbGFzcyhnKSwib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmdCgiYm9keSIpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCx0Lm5vb3ApO3ZhciBoPWZ1bmN0aW9uKCl7ZS5jb25maWcuYW5pbWF0aW9uJiZlLl9maXhUcmFuc2l0aW9uKCk7dmFyIG49ZS5faG92ZXJTdGF0ZTtlLl9ob3ZlclN0YXRlPW51bGwsdChlLmVsZW1lbnQpLnRyaWdnZXIoZS5jb25zdHJ1Y3Rvci5FdmVudC5TSE9XTiksbj09PXUmJmUuX2xlYXZlKG51bGwsZSl9O2suc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJnQodGhpcy50aXApLmhhc0NsYXNzKHApP3QodGhpcy50aXApLm9uZShrLlRSQU5TSVRJT05fRU5ELGgpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKHMuX1RSQU5TSVRJT05fRFVSQVRJT04pOmgoKX19LFQuaGlkZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLGk9dGhpcy5nZXRUaXBFbGVtZW50KCkscj10LkV2ZW50KHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSElERSksbz1mdW5jdGlvbigpe24uX2hvdmVyU3RhdGUhPT1mJiZpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSxuLl9jbGVhblRpcENsYXNzKCksbi5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIpLHQobi5lbGVtZW50KS50cmlnZ2VyKG4uY29uc3RydWN0b3IuRXZlbnQuSElEREVOKSxudWxsIT09bi5fcG9wcGVyJiZuLl9wb3BwZXIuZGVzdHJveSgpLGUmJmUoKX07dCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIociksci5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHQoaSkucmVtb3ZlQ2xhc3MoZyksIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnQoImJvZHkiKS5jaGlsZHJlbigpLm9mZigibW91c2VvdmVyIixudWxsLHQubm9vcCksdGhpcy5fYWN0aXZlVHJpZ2dlclt5XT0hMSx0aGlzLl9hY3RpdmVUcmlnZ2VyW0VdPSExLHRoaXMuX2FjdGl2ZVRyaWdnZXJbdl09ITEsay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLnRpcCkuaGFzQ2xhc3MocCk/dChpKS5vbmUoay5UUkFOU0lUSU9OX0VORCxvKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxNTApOm8oKSx0aGlzLl9ob3ZlclN0YXRlPSIiKX0sVC51cGRhdGU9ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5fcG9wcGVyJiZ0aGlzLl9wb3BwZXIuc2NoZWR1bGVVcGRhdGUoKX0sVC5pc1dpdGhDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5nZXRUaXRsZSgpKX0sVC5hZGRBdHRhY2htZW50Q2xhc3M9ZnVuY3Rpb24oZSl7dCh0aGlzLmdldFRpcEVsZW1lbnQoKSkuYWRkQ2xhc3MoImJzLXRvb2x0aXAtIitlKX0sVC5nZXRUaXBFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlwPXRoaXMudGlwfHx0KHRoaXMuY29uZmlnLnRlbXBsYXRlKVswXSx0aGlzLnRpcH0sVC5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzLmdldFRpcEVsZW1lbnQoKSk7dGhpcy5zZXRFbGVtZW50Q29udGVudChlLmZpbmQobSksdGhpcy5nZXRUaXRsZSgpKSxlLnJlbW92ZUNsYXNzKHArIiAiK2cpfSxULnNldEVsZW1lbnRDb250ZW50PWZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcy5jb25maWcuaHRtbDsib2JqZWN0Ij09dHlwZW9mIG4mJihuLm5vZGVUeXBlfHxuLmpxdWVyeSk/aT90KG4pLnBhcmVudCgpLmlzKGUpfHxlLmVtcHR5KCkuYXBwZW5kKG4pOmUudGV4dCh0KG4pLnRleHQoKSk6ZVtpPyJodG1sIjoidGV4dCJdKG4pfSxULmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbC10aXRsZSIpO3JldHVybiB0fHwodD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb25maWcudGl0bGU/dGhpcy5jb25maWcudGl0bGUuY2FsbCh0aGlzLmVsZW1lbnQpOnRoaXMuY29uZmlnLnRpdGxlKSx0fSxULl9nZXRBdHRhY2htZW50PWZ1bmN0aW9uKHQpe3JldHVybiBjW3QudG9VcHBlckNhc2UoKV19LFQuX3NldExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5jb25maWcudHJpZ2dlci5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24obil7aWYoImNsaWNrIj09PW4pdChlLmVsZW1lbnQpLm9uKGUuY29uc3RydWN0b3IuRXZlbnQuQ0xJQ0ssZS5jb25maWcuc2VsZWN0b3IsZnVuY3Rpb24odCl7cmV0dXJuIGUudG9nZ2xlKHQpfSk7ZWxzZSBpZihuIT09Yil7dmFyIGk9bj09PXY/ZS5jb25zdHJ1Y3Rvci5FdmVudC5NT1VTRUVOVEVSOmUuY29uc3RydWN0b3IuRXZlbnQuRk9DVVNJTixyPW49PT12P2UuY29uc3RydWN0b3IuRXZlbnQuTU9VU0VMRUFWRTplLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTT1VUO3QoZS5lbGVtZW50KS5vbihpLGUuY29uZmlnLnNlbGVjdG9yLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9lbnRlcih0KX0pLm9uKHIsZS5jb25maWcuc2VsZWN0b3IsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xlYXZlKHQpfSl9dChlLmVsZW1lbnQpLmNsb3Nlc3QoIi5tb2RhbCIpLm9uKCJoaWRlLmJzLm1vZGFsIixmdW5jdGlvbigpe3JldHVybiBlLmhpZGUoKX0pfSksdGhpcy5jb25maWcuc2VsZWN0b3I/dGhpcy5jb25maWc9cih7fSx0aGlzLmNvbmZpZyx7dHJpZ2dlcjoibWFudWFsIixzZWxlY3RvcjoiIn0pOnRoaXMuX2ZpeFRpdGxlKCl9LFQuX2ZpeFRpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9dHlwZW9mIHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtb3JpZ2luYWwtdGl0bGUiKTsodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgidGl0bGUiKXx8InN0cmluZyIhPT10KSYmKHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtb3JpZ2luYWwtdGl0bGUiLHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoInRpdGxlIil8fCIiKSx0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIiIpKX0sVC5fZW50ZXI9ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZOyhuPW58fHQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKGkpKXx8KG49bmV3IHRoaXMuY29uc3RydWN0b3IoZS5jdXJyZW50VGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpLHQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKGksbikpLGUmJihuLl9hY3RpdmVUcmlnZ2VyWyJmb2N1c2luIj09PWUudHlwZT9FOnZdPSEwKSx0KG4uZ2V0VGlwRWxlbWVudCgpKS5oYXNDbGFzcyhnKXx8bi5faG92ZXJTdGF0ZT09PWY/bi5faG92ZXJTdGF0ZT1mOihjbGVhclRpbWVvdXQobi5fdGltZW91dCksbi5faG92ZXJTdGF0ZT1mLG4uY29uZmlnLmRlbGF5JiZuLmNvbmZpZy5kZWxheS5zaG93P24uX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe24uX2hvdmVyU3RhdGU9PT1mJiZuLnNob3coKX0sbi5jb25maWcuZGVsYXkuc2hvdyk6bi5zaG93KCkpfSxULl9sZWF2ZT1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMuY29uc3RydWN0b3IuREFUQV9LRVk7KG49bnx8dChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoaSkpfHwobj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLmN1cnJlbnRUYXJnZXQsdGhpcy5fZ2V0RGVsZWdhdGVDb25maWcoKSksdChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoaSxuKSksZSYmKG4uX2FjdGl2ZVRyaWdnZXJbImZvY3Vzb3V0Ij09PWUudHlwZT9FOnZdPSExKSxuLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCl8fChjbGVhclRpbWVvdXQobi5fdGltZW91dCksbi5faG92ZXJTdGF0ZT11LG4uY29uZmlnLmRlbGF5JiZuLmNvbmZpZy5kZWxheS5oaWRlP24uX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe24uX2hvdmVyU3RhdGU9PT11JiZuLmhpZGUoKX0sbi5jb25maWcuZGVsYXkuaGlkZSk6bi5oaWRlKCkpfSxULl9pc1dpdGhBY3RpdmVUcmlnZ2VyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2FjdGl2ZVRyaWdnZXIpaWYodGhpcy5fYWN0aXZlVHJpZ2dlclt0XSlyZXR1cm4hMDtyZXR1cm4hMX0sVC5fZ2V0Q29uZmlnPWZ1bmN0aW9uKG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Yobj1yKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCx0KHRoaXMuZWxlbWVudCkuZGF0YSgpLG4pKS5kZWxheSYmKG4uZGVsYXk9e3Nob3c6bi5kZWxheSxoaWRlOm4uZGVsYXl9KSwibnVtYmVyIj09dHlwZW9mIG4udGl0bGUmJihuLnRpdGxlPW4udGl0bGUudG9TdHJpbmcoKSksIm51bWJlciI9PXR5cGVvZiBuLmNvbnRlbnQmJihuLmNvbnRlbnQ9bi5jb250ZW50LnRvU3RyaW5nKCkpLGsudHlwZUNoZWNrQ29uZmlnKGUsbix0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSxufSxULl9nZXREZWxlZ2F0ZUNvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXt9O2lmKHRoaXMuY29uZmlnKWZvcih2YXIgZSBpbiB0aGlzLmNvbmZpZyl0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZV0hPT10aGlzLmNvbmZpZ1tlXSYmKHRbZV09dGhpcy5jb25maWdbZV0pO3JldHVybiB0fSxULl9jbGVhblRpcENsYXNzPWZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzLmdldFRpcEVsZW1lbnQoKSksbj1lLmF0dHIoImNsYXNzIikubWF0Y2goYSk7bnVsbCE9PW4mJm4ubGVuZ3RoPjAmJmUucmVtb3ZlQ2xhc3Mobi5qb2luKCIiKSl9LFQuX2hhbmRsZVBvcHBlclBsYWNlbWVudENoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9jbGVhblRpcENsYXNzKCksdGhpcy5hZGRBdHRhY2htZW50Q2xhc3ModGhpcy5fZ2V0QXR0YWNobWVudCh0LnBsYWNlbWVudCkpfSxULl9maXhUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRUaXBFbGVtZW50KCksbj10aGlzLmNvbmZpZy5hbmltYXRpb247bnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIpJiYodChlKS5yZW1vdmVDbGFzcyhwKSx0aGlzLmNvbmZpZy5hbmltYXRpb249ITEsdGhpcy5oaWRlKCksdGhpcy5zaG93KCksdGhpcy5jb25maWcuYW5pbWF0aW9uPW4pfSxzLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKSxyPSJvYmplY3QiPT10eXBlb2YgZSYmZTtpZigoaXx8IS9kaXNwb3NlfGhpZGUvLnRlc3QoZSkpJiYoaXx8KGk9bmV3IHModGhpcyxyKSx0KHRoaXMpLmRhdGEobixpKSksInN0cmluZyI9PXR5cGVvZiBlKSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBpW2VdKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCAiJytlKyciJyk7aVtlXSgpfX0pfSxpKHMsbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuMC4wIn19LHtrZXk6IkRlZmF1bHQiLGdldDpmdW5jdGlvbigpe3JldHVybiBofX0se2tleToiTkFNRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9fSx7a2V5OiJEQVRBX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSx7a2V5OiJFdmVudCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGR9fSx7a2V5OiJFVkVOVF9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBvfX0se2tleToiRGVmYXVsdFR5cGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBsfX1dKSxzfSgpO3JldHVybiB0LmZuW2VdPVQuX2pRdWVyeUludGVyZmFjZSx0LmZuW2VdLkNvbnN0cnVjdG9yPVQsdC5mbltlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZm5bZV09cyxULl9qUXVlcnlJbnRlcmZhY2V9LFR9KGUpLFB0PWZ1bmN0aW9uKHQpe3ZhciBlPSJwb3BvdmVyIixuPSJicy5wb3BvdmVyIixvPSIuIituLHM9dC5mbltlXSxhPW5ldyBSZWdFeHAoIihefFxccylicy1wb3BvdmVyXFxTKyIsImciKSxsPXIoe30sTHQuRGVmYXVsdCx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPjxkaXYgY2xhc3M9InBvcG92ZXItYm9keSI+PC9kaXY+PC9kaXY+J30pLGM9cih7fSxMdC5EZWZhdWx0VHlwZSx7Y29udGVudDoiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSJ9KSxoPSJmYWRlIixmPSJzaG93Iix1PSIucG9wb3Zlci1oZWFkZXIiLGQ9Ii5wb3BvdmVyLWJvZHkiLHA9e0hJREU6ImhpZGUiK28sSElEREVOOiJoaWRkZW4iK28sU0hPVzoic2hvdyIrbyxTSE9XTjoic2hvd24iK28sSU5TRVJURUQ6Imluc2VydGVkIitvLENMSUNLOiJjbGljayIrbyxGT0NVU0lOOiJmb2N1c2luIitvLEZPQ1VTT1VUOiJmb2N1c291dCIrbyxNT1VTRUVOVEVSOiJtb3VzZWVudGVyIitvLE1PVVNFTEVBVkU6Im1vdXNlbGVhdmUiK299LGc9ZnVuY3Rpb24ocil7dmFyIHMsZztmdW5jdGlvbiBtKCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfWc9ciwocz1tKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSkscy5wcm90b3R5cGUuY29uc3RydWN0b3I9cyxzLl9fcHJvdG9fXz1nO3ZhciBfPW0ucHJvdG90eXBlO3JldHVybiBfLmlzV2l0aENvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLl9nZXRDb250ZW50KCl9LF8uYWRkQXR0YWNobWVudENsYXNzPWZ1bmN0aW9uKGUpe3QodGhpcy5nZXRUaXBFbGVtZW50KCkpLmFkZENsYXNzKCJicy1wb3BvdmVyLSIrZSl9LF8uZ2V0VGlwRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpcD10aGlzLnRpcHx8dCh0aGlzLmNvbmZpZy50ZW1wbGF0ZSlbMF0sdGhpcy50aXB9LF8uc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBlPXQodGhpcy5nZXRUaXBFbGVtZW50KCkpO3RoaXMuc2V0RWxlbWVudENvbnRlbnQoZS5maW5kKHUpLHRoaXMuZ2V0VGl0bGUoKSk7dmFyIG49dGhpcy5fZ2V0Q29udGVudCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuJiYobj1uLmNhbGwodGhpcy5lbGVtZW50KSksdGhpcy5zZXRFbGVtZW50Q29udGVudChlLmZpbmQoZCksbiksZS5yZW1vdmVDbGFzcyhoKyIgIitmKX0sXy5fZ2V0Q29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvbnRlbnQiKXx8dGhpcy5jb25maWcuY29udGVudH0sXy5fY2xlYW5UaXBDbGFzcz1mdW5jdGlvbigpe3ZhciBlPXQodGhpcy5nZXRUaXBFbGVtZW50KCkpLG49ZS5hdHRyKCJjbGFzcyIpLm1hdGNoKGEpO251bGwhPT1uJiZuLmxlbmd0aD4wJiZlLnJlbW92ZUNsYXNzKG4uam9pbigiIikpfSxtLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKSxyPSJvYmplY3QiPT10eXBlb2YgZT9lOm51bGw7aWYoKGl8fCEvZGVzdHJveXxoaWRlLy50ZXN0KGUpKSYmKGl8fChpPW5ldyBtKHRoaXMsciksdCh0aGlzKS5kYXRhKG4saSkpLCJzdHJpbmciPT10eXBlb2YgZSkpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgaVtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO2lbZV0oKX19KX0saShtLG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjAuMCJ9fSx7a2V5OiJEZWZhdWx0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbH19LHtrZXk6Ik5BTUUiLGdldDpmdW5jdGlvbigpe3JldHVybiBlfX0se2tleToiREFUQV9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBufX0se2tleToiRXZlbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiBwfX0se2tleToiRVZFTlRfS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb319LHtrZXk6IkRlZmF1bHRUeXBlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY319XSksbX0oTHQpO3JldHVybiB0LmZuW2VdPWcuX2pRdWVyeUludGVyZmFjZSx0LmZuW2VdLkNvbnN0cnVjdG9yPWcsdC5mbltlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZm5bZV09cyxnLl9qUXVlcnlJbnRlcmZhY2V9LGd9KGUpLHh0PWZ1bmN0aW9uKHQpe3ZhciBlPSJzY3JvbGxzcHkiLG49ImJzLnNjcm9sbHNweSIsbz0iLiIrbixzPXQuZm5bZV0sYT17b2Zmc2V0OjEwLG1ldGhvZDoiYXV0byIsdGFyZ2V0OiIifSxsPXtvZmZzZXQ6Im51bWJlciIsbWV0aG9kOiJzdHJpbmciLHRhcmdldDoiKHN0cmluZ3xlbGVtZW50KSJ9LGM9e0FDVElWQVRFOiJhY3RpdmF0ZSIrbyxTQ1JPTEw6InNjcm9sbCIrbyxMT0FEX0RBVEFfQVBJOiJsb2FkIitvKyIuZGF0YS1hcGkifSxoPSJkcm9wZG93bi1pdGVtIixmPSJhY3RpdmUiLHU9e0RBVEFfU1BZOidbZGF0YS1zcHk9InNjcm9sbCJdJyxBQ1RJVkU6Ii5hY3RpdmUiLE5BVl9MSVNUX0dST1VQOiIubmF2LCAubGlzdC1ncm91cCIsTkFWX0xJTktTOiIubmF2LWxpbmsiLE5BVl9JVEVNUzoiLm5hdi1pdGVtIixMSVNUX0lURU1TOiIubGlzdC1ncm91cC1pdGVtIixEUk9QRE9XTjoiLmRyb3Bkb3duIixEUk9QRE9XTl9JVEVNUzoiLmRyb3Bkb3duLWl0ZW0iLERST1BET1dOX1RPR0dMRToiLmRyb3Bkb3duLXRvZ2dsZSJ9LGQ9Im9mZnNldCIscD0icG9zaXRpb24iLGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGUsbil7dmFyIGk9dGhpczt0aGlzLl9lbGVtZW50PWUsdGhpcy5fc2Nyb2xsRWxlbWVudD0iQk9EWSI9PT1lLnRhZ05hbWU/d2luZG93OmUsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhuKSx0aGlzLl9zZWxlY3Rvcj10aGlzLl9jb25maWcudGFyZ2V0KyIgIit1Lk5BVl9MSU5LUysiLCIrdGhpcy5fY29uZmlnLnRhcmdldCsiICIrdS5MSVNUX0lURU1TKyIsIit0aGlzLl9jb25maWcudGFyZ2V0KyIgIit1LkRST1BET1dOX0lURU1TLHRoaXMuX29mZnNldHM9W10sdGhpcy5fdGFyZ2V0cz1bXSx0aGlzLl9hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLl9zY3JvbGxIZWlnaHQ9MCx0KHRoaXMuX3Njcm9sbEVsZW1lbnQpLm9uKGMuU0NST0xMLGZ1bmN0aW9uKHQpe3JldHVybiBpLl9wcm9jZXNzKHQpfSksdGhpcy5yZWZyZXNoKCksdGhpcy5fcHJvY2VzcygpfXZhciBnPXMucHJvdG90eXBlO3JldHVybiBnLnJlZnJlc2g9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dGhpcy5fc2Nyb2xsRWxlbWVudD09PXRoaXMuX3Njcm9sbEVsZW1lbnQud2luZG93P2Q6cCxpPSJhdXRvIj09PXRoaXMuX2NvbmZpZy5tZXRob2Q/bjp0aGlzLl9jb25maWcubWV0aG9kLHI9aT09PXA/dGhpcy5fZ2V0U2Nyb2xsVG9wKCk6MDt0aGlzLl9vZmZzZXRzPVtdLHRoaXMuX3RhcmdldHM9W10sdGhpcy5fc2Nyb2xsSGVpZ2h0PXRoaXMuX2dldFNjcm9sbEhlaWdodCgpLHQubWFrZUFycmF5KHQodGhpcy5fc2VsZWN0b3IpKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG4sbz1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7aWYobyYmKG49dChvKVswXSksbil7dmFyIHM9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihzLndpZHRofHxzLmhlaWdodClyZXR1cm5bdChuKVtpXSgpLnRvcCtyLG9dfXJldHVybiBudWxsfSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0WzBdLWVbMF19KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuX29mZnNldHMucHVzaCh0WzBdKSxlLl90YXJnZXRzLnB1c2godFsxXSl9KX0sZy5kaXNwb3NlPWZ1bmN0aW9uKCl7dC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsbiksdCh0aGlzLl9zY3JvbGxFbGVtZW50KS5vZmYobyksdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuX3Njcm9sbEVsZW1lbnQ9bnVsbCx0aGlzLl9jb25maWc9bnVsbCx0aGlzLl9zZWxlY3Rvcj1udWxsLHRoaXMuX29mZnNldHM9bnVsbCx0aGlzLl90YXJnZXRzPW51bGwsdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5fc2Nyb2xsSGVpZ2h0PW51bGx9LGcuX2dldENvbmZpZz1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mKG49cih7fSxhLG4pKS50YXJnZXQpe3ZhciBpPXQobi50YXJnZXQpLmF0dHIoImlkIik7aXx8KGk9ay5nZXRVSUQoZSksdChuLnRhcmdldCkuYXR0cigiaWQiLGkpKSxuLnRhcmdldD0iIyIraX1yZXR1cm4gay50eXBlQ2hlY2tDb25maWcoZSxuLGwpLG59LGcuX2dldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3RoaXMuX3Njcm9sbEVsZW1lbnQucGFnZVlPZmZzZXQ6dGhpcy5fc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3B9LGcuX2dldFNjcm9sbEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodHx8TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCl9LGcuX2dldE9mZnNldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLl9zY3JvbGxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0sZy5fcHJvY2Vzcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFNjcm9sbFRvcCgpK3RoaXMuX2NvbmZpZy5vZmZzZXQsZT10aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSxuPXRoaXMuX2NvbmZpZy5vZmZzZXQrZS10aGlzLl9nZXRPZmZzZXRIZWlnaHQoKTtpZih0aGlzLl9zY3JvbGxIZWlnaHQhPT1lJiZ0aGlzLnJlZnJlc2goKSx0Pj1uKXt2YXIgaT10aGlzLl90YXJnZXRzW3RoaXMuX3RhcmdldHMubGVuZ3RoLTFdO3RoaXMuX2FjdGl2ZVRhcmdldCE9PWkmJnRoaXMuX2FjdGl2YXRlKGkpfWVsc2V7aWYodGhpcy5fYWN0aXZlVGFyZ2V0JiZ0PHRoaXMuX29mZnNldHNbMF0mJnRoaXMuX29mZnNldHNbMF0+MClyZXR1cm4gdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdm9pZCB0aGlzLl9jbGVhcigpO2Zvcih2YXIgcj10aGlzLl9vZmZzZXRzLmxlbmd0aDtyLS07KXt0aGlzLl9hY3RpdmVUYXJnZXQhPT10aGlzLl90YXJnZXRzW3JdJiZ0Pj10aGlzLl9vZmZzZXRzW3JdJiYoInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLl9vZmZzZXRzW3IrMV18fHQ8dGhpcy5fb2Zmc2V0c1tyKzFdKSYmdGhpcy5fYWN0aXZhdGUodGhpcy5fdGFyZ2V0c1tyXSl9fX0sZy5fYWN0aXZhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fYWN0aXZlVGFyZ2V0PWUsdGhpcy5fY2xlYXIoKTt2YXIgbj10aGlzLl9zZWxlY3Rvci5zcGxpdCgiLCIpO249bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQrJ1tkYXRhLXRhcmdldD0iJytlKyciXSwnK3QrJ1tocmVmPSInK2UrJyJdJ30pO3ZhciBpPXQobi5qb2luKCIsIikpO2kuaGFzQ2xhc3MoaCk/KGkuY2xvc2VzdCh1LkRST1BET1dOKS5maW5kKHUuRFJPUERPV05fVE9HR0xFKS5hZGRDbGFzcyhmKSxpLmFkZENsYXNzKGYpKTooaS5hZGRDbGFzcyhmKSxpLnBhcmVudHModS5OQVZfTElTVF9HUk9VUCkucHJldih1Lk5BVl9MSU5LUysiLCAiK3UuTElTVF9JVEVNUykuYWRkQ2xhc3MoZiksaS5wYXJlbnRzKHUuTkFWX0xJU1RfR1JPVVApLnByZXYodS5OQVZfSVRFTVMpLmNoaWxkcmVuKHUuTkFWX0xJTktTKS5hZGRDbGFzcyhmKSksdCh0aGlzLl9zY3JvbGxFbGVtZW50KS50cmlnZ2VyKGMuQUNUSVZBVEUse3JlbGF0ZWRUYXJnZXQ6ZX0pfSxnLl9jbGVhcj1mdW5jdGlvbigpe3QodGhpcy5fc2VsZWN0b3IpLmZpbHRlcih1LkFDVElWRSkucmVtb3ZlQ2xhc3MoZil9LHMuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKS5kYXRhKG4pO2lmKGl8fChpPW5ldyBzKHRoaXMsIm9iamVjdCI9PXR5cGVvZiBlJiZlKSx0KHRoaXMpLmRhdGEobixpKSksInN0cmluZyI9PXR5cGVvZiBlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGlbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtpW2VdKCl9fSl9LGkocyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fV0pLHN9KCk7cmV0dXJuIHQod2luZG93KS5vbihjLkxPQURfREFUQV9BUEksZnVuY3Rpb24oKXtmb3IodmFyIGU9dC5tYWtlQXJyYXkodCh1LkRBVEFfU1BZKSksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT10KGVbbl0pO2cuX2pRdWVyeUludGVyZmFjZS5jYWxsKGksaS5kYXRhKCkpfX0pLHQuZm5bZV09Zy5falF1ZXJ5SW50ZXJmYWNlLHQuZm5bZV0uQ29uc3RydWN0b3I9Zyx0LmZuW2VdLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdC5mbltlXT1zLGcuX2pRdWVyeUludGVyZmFjZX0sZ30oZSksUnQ9ZnVuY3Rpb24odCl7dmFyIGU9Ii5icy50YWIiLG49dC5mbi50YWIscj17SElERToiaGlkZSIrZSxISURERU46ImhpZGRlbiIrZSxTSE9XOiJzaG93IitlLFNIT1dOOiJzaG93biIrZSxDTElDS19EQVRBX0FQSToiY2xpY2suYnMudGFiLmRhdGEtYXBpIn0sbz0iZHJvcGRvd24tbWVudSIscz0iYWN0aXZlIixhPSJkaXNhYmxlZCIsbD0iZmFkZSIsYz0ic2hvdyIsaD0iLmRyb3Bkb3duIixmPSIubmF2LCAubGlzdC1ncm91cCIsdT0iLmFjdGl2ZSIsZD0iPiBsaSA+IC5hY3RpdmUiLHA9J1tkYXRhLXRvZ2dsZT0idGFiIl0sIFtkYXRhLXRvZ2dsZT0icGlsbCJdLCBbZGF0YS10b2dnbGU9Imxpc3QiXScsZz0iLmRyb3Bkb3duLXRvZ2dsZSIsbT0iPiAuZHJvcGRvd24tbWVudSAuYWN0aXZlIixfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt0aGlzLl9lbGVtZW50PXR9dmFyIG49ZS5wcm90b3R5cGU7cmV0dXJuIG4uc2hvdz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoISh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKHMpfHx0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKGEpKSl7dmFyIG4saSxvPXQodGhpcy5fZWxlbWVudCkuY2xvc2VzdChmKVswXSxsPWsuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtpZihvKXt2YXIgYz0iVUwiPT09by5ub2RlTmFtZT9kOnU7aT0oaT10Lm1ha2VBcnJheSh0KG8pLmZpbmQoYykpKVtpLmxlbmd0aC0xXX12YXIgaD10LkV2ZW50KHIuSElERSx7cmVsYXRlZFRhcmdldDp0aGlzLl9lbGVtZW50fSkscD10LkV2ZW50KHIuU0hPVyx7cmVsYXRlZFRhcmdldDppfSk7aWYoaSYmdChpKS50cmlnZ2VyKGgpLHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihwKSwhcC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIWguaXNEZWZhdWx0UHJldmVudGVkKCkpe2wmJihuPXQobClbMF0pLHRoaXMuX2FjdGl2YXRlKHRoaXMuX2VsZW1lbnQsbyk7dmFyIGc9ZnVuY3Rpb24oKXt2YXIgbj10LkV2ZW50KHIuSElEREVOLHtyZWxhdGVkVGFyZ2V0OmUuX2VsZW1lbnR9KSxvPXQuRXZlbnQoci5TSE9XTix7cmVsYXRlZFRhcmdldDppfSk7dChpKS50cmlnZ2VyKG4pLHQoZS5fZWxlbWVudCkudHJpZ2dlcihvKX07bj90aGlzLl9hY3RpdmF0ZShuLG4ucGFyZW50Tm9kZSxnKTpnKCl9fX0sbi5kaXNwb3NlPWZ1bmN0aW9uKCl7dC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsImJzLnRhYiIpLHRoaXMuX2VsZW1lbnQ9bnVsbH0sbi5fYWN0aXZhdGU9ZnVuY3Rpb24oZSxuLGkpe3ZhciByPXRoaXMsbz0oIlVMIj09PW4ubm9kZU5hbWU/dChuKS5maW5kKGQpOnQobikuY2hpbGRyZW4odSkpWzBdLHM9aSYmay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmbyYmdChvKS5oYXNDbGFzcyhsKSxhPWZ1bmN0aW9uKCl7cmV0dXJuIHIuX3RyYW5zaXRpb25Db21wbGV0ZShlLG8saSl9O28mJnM/dChvKS5vbmUoay5UUkFOU0lUSU9OX0VORCxhKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxNTApOmEoKX0sbi5fdHJhbnNpdGlvbkNvbXBsZXRlPWZ1bmN0aW9uKGUsbixpKXtpZihuKXt0KG4pLnJlbW92ZUNsYXNzKGMrIiAiK3MpO3ZhciByPXQobi5wYXJlbnROb2RlKS5maW5kKG0pWzBdO3ImJnQocikucmVtb3ZlQ2xhc3MocyksInRhYiI9PT1uLmdldEF0dHJpYnV0ZSgicm9sZSIpJiZuLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsITEpfWlmKHQoZSkuYWRkQ2xhc3MocyksInRhYiI9PT1lLmdldEF0dHJpYnV0ZSgicm9sZSIpJiZlLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsITApLGsucmVmbG93KGUpLHQoZSkuYWRkQ2xhc3MoYyksZS5wYXJlbnROb2RlJiZ0KGUucGFyZW50Tm9kZSkuaGFzQ2xhc3Mobykpe3ZhciBhPXQoZSkuY2xvc2VzdChoKVswXTthJiZ0KGEpLmZpbmQoZykuYWRkQ2xhc3MocyksZS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCEwKX1pJiZpKCl9LGUuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKSxyPWkuZGF0YSgiYnMudGFiIik7aWYocnx8KHI9bmV3IGUodGhpcyksaS5kYXRhKCJicy50YWIiLHIpKSwic3RyaW5nIj09dHlwZW9mIG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgcltuXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrbisnIicpO3Jbbl0oKX19KX0saShlLG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjAuMCJ9fV0pLGV9KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKHIuQ0xJQ0tfREFUQV9BUEkscCxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksXy5falF1ZXJ5SW50ZXJmYWNlLmNhbGwodCh0aGlzKSwic2hvdyIpfSksdC5mbi50YWI9Xy5falF1ZXJ5SW50ZXJmYWNlLHQuZm4udGFiLkNvbnN0cnVjdG9yPV8sdC5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuLnRhYj1uLF8uX2pRdWVyeUludGVyZmFjZX0sX30oZSk7IWZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGpRdWVyeS4galF1ZXJ5IG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIEJvb3RzdHJhcCdzIEphdmFTY3JpcHQuIik7dmFyIGU9dC5mbi5qcXVlcnkuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpO2lmKGVbMF08MiYmZVsxXTw5fHwxPT09ZVswXSYmOT09PWVbMV0mJmVbMl08MXx8ZVswXT49NCl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgYXQgbGVhc3QgalF1ZXJ5IHYxLjkuMSBidXQgbGVzcyB0aGFuIHY0LjAuMCIpfShlKSx0LlV0aWw9ayx0LkFsZXJ0PUwsdC5CdXR0b249UCx0LkNhcm91c2VsPXgsdC5Db2xsYXBzZT1SLHQuRHJvcGRvd249TnQsdC5Nb2RhbD1rdCx0LlBvcG92ZXI9UHQsdC5TY3JvbGxzcHk9eHQsdC5UYWI9UnQsdC5Ub29sdGlwPUx0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1ib290c3RyYXAuYnVuZGxlLm1pbi5qcy5tYXA=\"") - packr.PackJSONBytes("./assets", "bootstrap.min.css", "\"LyohCiAqIEJvb3Rzd2F0Y2ggdjQuMS4zCiAqIEhvbWVwYWdlOiBodHRwczovL2Jvb3Rzd2F0Y2guY29tCiAqIENvcHlyaWdodCAyMDEyLTIwMTggVGhvbWFzIFBhcmsKICogTGljZW5zZWQgdW5kZXIgTUlUCiAqIEJhc2VkIG9uIEJvb3RzdHJhcAoqLy8qIQogKiBCb290c3RyYXAgdjQuMS4zIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE4IFRoZSBCb290c3RyYXAgQXV0aG9ycwogKiBDb3B5cmlnaHQgMjAxMS0yMDE4IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovQGltcG9ydCB1cmwoImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1OdW5pdG8rU2Fuczo0MDAsNjAwIik7OnJvb3R7LS1ibHVlOiMwMDdiZmY7LS1pbmRpZ286IzY2MTBmMjstLXB1cnBsZTojNmY0MmMxOy0tcGluazojZTgzZThjOy0tcmVkOiNkOTUzNGY7LS1vcmFuZ2U6I2ZkN2UxNDstLXllbGxvdzojZjBhZDRlOy0tZ3JlZW46IzRCQkY3MzstLXRlYWw6IzIwYzk5NzstLWN5YW46IzFGOUJDRjstLXdoaXRlOiNmZmY7LS1ncmF5OiM5MTlhYTE7LS1ncmF5LWRhcms6IzM0M2E0MDstLXByaW1hcnk6IzFhMWExYTstLXNlY29uZGFyeTojZmZmOy0tc3VjY2VzczojNEJCRjczOy0taW5mbzojMUY5QkNGOy0td2FybmluZzojZjBhZDRlOy0tZGFuZ2VyOiNkOTUzNGY7LS1saWdodDojZmZmOy0tZGFyazojMzQzYTQwOy0tYnJlYWtwb2ludC14czowOy0tYnJlYWtwb2ludC1zbTo1NzZweDstLWJyZWFrcG9pbnQtbWQ6NzY4cHg7LS1icmVha3BvaW50LWxnOjk5MnB4Oy0tYnJlYWtwb2ludC14bDoxMjAwcHg7LS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiJOdW5pdG8gU2FucyIsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCI7LS1mb250LWZhbWlseS1tb25vc3BhY2U6U0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlfSosKjo6YmVmb3JlLCo6OmFmdGVyey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH1odG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4xNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy1tcy1vdmVyZmxvdy1zdHlsZTpzY3JvbGxiYXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fUAtbXMtdmlld3BvcnR7d2lkdGg6ZGV2aWNlLXdpZHRofWFydGljbGUsYXNpZGUsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWFpbixuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWJvZHl7bWFyZ2luOjA7Zm9udC1mYW1pbHk6Ik51bml0byBTYW5zIiwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIjtmb250LXNpemU6MC44NzVyZW07Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojOTE5YWExO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9W3RhYmluZGV4PSItMSJdOmZvY3Vze291dGxpbmU6MCAhaW1wb3J0YW50fWhyey13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO292ZXJmbG93OnZpc2libGV9aDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MC41cmVtfXB7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbX1hYmJyW3RpdGxlXSxhYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVde3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDtjdXJzb3I6aGVscDtib3JkZXItYm90dG9tOjB9YWRkcmVzc3ttYXJnaW4tYm90dG9tOjFyZW07Zm9udC1zdHlsZTpub3JtYWw7bGluZS1oZWlnaHQ6aW5oZXJpdH1vbCx1bCxkbHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxcmVtfW9sIG9sLHVsIHVsLG9sIHVsLHVsIG9se21hcmdpbi1ib3R0b206MH1kdHtmb250LXdlaWdodDo3MDB9ZGR7bWFyZ2luLWJvdHRvbTouNXJlbTttYXJnaW4tbGVmdDowfWJsb2NrcXVvdGV7bWFyZ2luOjAgMCAxcmVtfWRmbntmb250LXN0eWxlOml0YWxpY31iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfWF7Y29sb3I6IzFhMWExYTt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6b2JqZWN0c31hOmhvdmVye2NvbG9yOmJsYWNrO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSl7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX1hOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpob3ZlcixhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1c3tjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lfWE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3Vze291dGxpbmU6MH1wcmUsY29kZSxrYmQsc2FtcHtmb250LWZhbWlseTpTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJMaWJlcmF0aW9uIE1vbm8iLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7Zm9udC1zaXplOjFlbX1wcmV7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbTtvdmVyZmxvdzphdXRvOy1tcy1vdmVyZmxvdy1zdHlsZTpzY3JvbGxiYXJ9ZmlndXJle21hcmdpbjowIDAgMXJlbX1pbWd7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci1zdHlsZTpub25lfXN2Z3tvdmVyZmxvdzpoaWRkZW47dmVydGljYWwtYWxpZ246bWlkZGxlfXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX1jYXB0aW9ue3BhZGRpbmctdG9wOjAuNzVyZW07cGFkZGluZy1ib3R0b206MC43NXJlbTtjb2xvcjojOTE5YWExO3RleHQtYWxpZ246bGVmdDtjYXB0aW9uLXNpZGU6Ym90dG9tfXRoe3RleHQtYWxpZ246aW5oZXJpdH1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjAuNXJlbX1idXR0b257Ym9yZGVyLXJhZGl1czowfWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjFweCBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3J9aW5wdXQsYnV0dG9uLHNlbGVjdCxvcHRncm91cCx0ZXh0YXJlYXttYXJnaW46MDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXR9YnV0dG9uLGlucHV0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIFt0eXBlPSJidXR0b24iXSxbdHlwZT0icmVzZXQiXSxbdHlwZT0ic3VibWl0Il17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPSJyZXNldCJdOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyLXN0eWxlOm5vbmV9aW5wdXRbdHlwZT0icmFkaW8iXSxpbnB1dFt0eXBlPSJjaGVja2JveCJdey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9aW5wdXRbdHlwZT0iZGF0ZSJdLGlucHV0W3R5cGU9InRpbWUiXSxpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLGlucHV0W3R5cGU9Im1vbnRoIl17LXdlYmtpdC1hcHBlYXJhbmNlOmxpc3Rib3h9dGV4dGFyZWF7b3ZlcmZsb3c6YXV0bztyZXNpemU6dmVydGljYWx9ZmllbGRzZXR7bWluLXdpZHRoOjA7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowfWxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbi1ib3R0b206LjVyZW07Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7d2hpdGUtc3BhY2U6bm9ybWFsfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfVt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9InNlYXJjaCJde291dGxpbmUtb2Zmc2V0Oi0ycHg7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2ZvbnQ6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9ufW91dHB1dHtkaXNwbGF5OmlubGluZS1ibG9ja31zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtO2N1cnNvcjpwb2ludGVyfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX1baGlkZGVuXXtkaXNwbGF5Om5vbmUgIWltcG9ydGFudH1oMSxoMixoMyxoNCxoNSxoNiwuaDEsLmgyLC5oMywuaDQsLmg1LC5oNnttYXJnaW4tYm90dG9tOjAuNXJlbTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjI7Y29sb3I6IzFhMWExYX1oMSwuaDF7Zm9udC1zaXplOjJyZW19aDIsLmgye2ZvbnQtc2l6ZToxLjc1cmVtfWgzLC5oM3tmb250LXNpemU6MS41cmVtfWg0LC5oNHtmb250LXNpemU6MS4yNXJlbX1oNSwuaDV7Zm9udC1zaXplOjFyZW19aDYsLmg2e2ZvbnQtc2l6ZTowLjc1cmVtfS5sZWFke2ZvbnQtc2l6ZToxLjA5Mzc1cmVtO2ZvbnQtd2VpZ2h0OjMwMH0uZGlzcGxheS0xe2ZvbnQtc2l6ZTo2cmVtO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9LmRpc3BsYXktMntmb250LXNpemU6NS41cmVtO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9LmRpc3BsYXktM3tmb250LXNpemU6NC41cmVtO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9LmRpc3BsYXktNHtmb250LXNpemU6My41cmVtO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9aHJ7bWFyZ2luLXRvcDoxcmVtO21hcmdpbi1ib3R0b206MXJlbTtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSl9c21hbGwsLnNtYWxse2ZvbnQtc2l6ZTo4MCU7Zm9udC13ZWlnaHQ6NDAwfW1hcmssLm1hcmt7cGFkZGluZzowLjJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9Lmxpc3QtdW5zdHlsZWR7cGFkZGluZy1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfS5saXN0LWlubGluZXtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5lLWl0ZW17ZGlzcGxheTppbmxpbmUtYmxvY2t9Lmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6MC41cmVtfS5pbml0aWFsaXNte2ZvbnQtc2l6ZTo5MCU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5ibG9ja3F1b3Rle21hcmdpbi1ib3R0b206MXJlbTtmb250LXNpemU6MS4wOTM3NXJlbX0uYmxvY2txdW90ZS1mb290ZXJ7ZGlzcGxheTpibG9jaztmb250LXNpemU6ODAlO2NvbG9yOiM5MTlhYTF9LmJsb2NrcXVvdGUtZm9vdGVyOjpiZWZvcmV7Y29udGVudDoiXDIwMTQgXDAwQTAifS5pbWctZmx1aWR7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99LmltZy10aHVtYm5haWx7cGFkZGluZzowLjI1cmVtO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlY2VlZWY7Ym9yZGVyLXJhZGl1czowO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfS5maWd1cmV7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZpZ3VyZS1pbWd7bWFyZ2luLWJvdHRvbTowLjVyZW07bGluZS1oZWlnaHQ6MX0uZmlndXJlLWNhcHRpb257Zm9udC1zaXplOjkwJTtjb2xvcjojOTE5YWExfWNvZGV7Zm9udC1zaXplOjg3LjUlO2NvbG9yOiNlODNlOGM7d29yZC1icmVhazpicmVhay13b3JkfWE+Y29kZXtjb2xvcjppbmhlcml0fWtiZHtwYWRkaW5nOjAuMnJlbSAwLjRyZW07Zm9udC1zaXplOjg3LjUlO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhO2JvcmRlci1yYWRpdXM6MH1rYmQga2Jke3BhZGRpbmc6MDtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDB9cHJle2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjg3LjUlO2NvbG9yOiMxYTFhMWF9cHJlIGNvZGV7Zm9udC1zaXplOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDt3b3JkLWJyZWFrOm5vcm1hbH0ucHJlLXNjcm9sbGFibGV7bWF4LWhlaWdodDozNDBweDtvdmVyZmxvdy15OnNjcm9sbH0uY29udGFpbmVye3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxNXB4O3BhZGRpbmctbGVmdDoxNXB4O21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsuY29udGFpbmVye21heC13aWR0aDo1NDBweH19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsuY29udGFpbmVye21heC13aWR0aDo3MjBweH19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KXsuY29udGFpbmVye21heC13aWR0aDo5NjBweH19QG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTE0MHB4fX0uY29udGFpbmVyLWZsdWlke3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxNXB4O3BhZGRpbmctbGVmdDoxNXB4O21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG99LnJvd3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tcmlnaHQ6LTE1cHg7bWFyZ2luLWxlZnQ6LTE1cHh9Lm5vLWd1dHRlcnN7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MH0ubm8tZ3V0dGVycz4uY29sLC5uby1ndXR0ZXJzPltjbGFzcyo9ImNvbC0iXXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9LmNvbC0xLC5jb2wtMiwuY29sLTMsLmNvbC00LC5jb2wtNSwuY29sLTYsLmNvbC03LC5jb2wtOCwuY29sLTksLmNvbC0xMCwuY29sLTExLC5jb2wtMTIsLmNvbCwuY29sLWF1dG8sLmNvbC1zbS0xLC5jb2wtc20tMiwuY29sLXNtLTMsLmNvbC1zbS00LC5jb2wtc20tNSwuY29sLXNtLTYsLmNvbC1zbS03LC5jb2wtc20tOCwuY29sLXNtLTksLmNvbC1zbS0xMCwuY29sLXNtLTExLC5jb2wtc20tMTIsLmNvbC1zbSwuY29sLXNtLWF1dG8sLmNvbC1tZC0xLC5jb2wtbWQtMiwuY29sLW1kLTMsLmNvbC1tZC00LC5jb2wtbWQtNSwuY29sLW1kLTYsLmNvbC1tZC03LC5jb2wtbWQtOCwuY29sLW1kLTksLmNvbC1tZC0xMCwuY29sLW1kLTExLC5jb2wtbWQtMTIsLmNvbC1tZCwuY29sLW1kLWF1dG8sLmNvbC1sZy0xLC5jb2wtbGctMiwuY29sLWxnLTMsLmNvbC1sZy00LC5jb2wtbGctNSwuY29sLWxnLTYsLmNvbC1sZy03LC5jb2wtbGctOCwuY29sLWxnLTksLmNvbC1sZy0xMCwuY29sLWxnLTExLC5jb2wtbGctMTIsLmNvbC1sZywuY29sLWxnLWF1dG8sLmNvbC14bC0xLC5jb2wteGwtMiwuY29sLXhsLTMsLmNvbC14bC00LC5jb2wteGwtNSwuY29sLXhsLTYsLmNvbC14bC03LC5jb2wteGwtOCwuY29sLXhsLTksLmNvbC14bC0xMCwuY29sLXhsLTExLC5jb2wteGwtMTIsLmNvbC14bCwuY29sLXhsLWF1dG97cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjFweDtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHh9LmNvbHstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTowO2ZsZXgtYmFzaXM6MDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY29sLWF1dG97LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCBhdXRvO2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY29sLTF7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4LjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9LmNvbC0yey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtM3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDI1JTtmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY29sLTR7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNvbC01ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jb2wtNnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDUwJTtmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY29sLTd7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTtmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNvbC04ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jb2wtOXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDc1JTtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY29sLTEwey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgODMuMzMzMzMzMzMzMyU7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jb2wtMTF7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA5MS42NjY2NjY2NjY3JTtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNvbC0xMnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDEwMCU7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0ub3JkZXItZmlyc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDowOy1tcy1mbGV4LW9yZGVyOi0xO29yZGVyOi0xfS5vcmRlci1sYXN0ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTQ7LW1zLWZsZXgtb3JkZXI6MTM7b3JkZXI6MTN9Lm9yZGVyLTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxOy1tcy1mbGV4LW9yZGVyOjA7b3JkZXI6MH0ub3JkZXItMXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjI7LW1zLWZsZXgtb3JkZXI6MTtvcmRlcjoxfS5vcmRlci0yey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MzstbXMtZmxleC1vcmRlcjoyO29yZGVyOjJ9Lm9yZGVyLTN7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo0Oy1tcy1mbGV4LW9yZGVyOjM7b3JkZXI6M30ub3JkZXItNHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjU7LW1zLWZsZXgtb3JkZXI6NDtvcmRlcjo0fS5vcmRlci01ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NjstbXMtZmxleC1vcmRlcjo1O29yZGVyOjV9Lm9yZGVyLTZ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo3Oy1tcy1mbGV4LW9yZGVyOjY7b3JkZXI6Nn0ub3JkZXItN3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjg7LW1zLWZsZXgtb3JkZXI6NztvcmRlcjo3fS5vcmRlci04ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6OTstbXMtZmxleC1vcmRlcjo4O29yZGVyOjh9Lm9yZGVyLTl7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMDstbXMtZmxleC1vcmRlcjo5O29yZGVyOjl9Lm9yZGVyLTEwey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTE7LW1zLWZsZXgtb3JkZXI6MTA7b3JkZXI6MTB9Lm9yZGVyLTExey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTI7LW1zLWZsZXgtb3JkZXI6MTE7b3JkZXI6MTF9Lm9yZGVyLTEyey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTM7LW1zLWZsZXgtb3JkZXI6MTI7b3JkZXI6MTJ9Lm9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9Lm9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0ub2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0ub2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9Lm9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsuY29sLXNtey1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jb2wtc20tYXV0b3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jb2wtc20tMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDguMzMzMzMzMzMzMyU7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY29sLXNtLTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxNi42NjY2NjY2NjY3JTtmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNvbC1zbS0zey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMjUlO2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jb2wtc20tNHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY29sLXNtLTV7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA0MS42NjY2NjY2NjY3JTtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNvbC1zbS02ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTAlO2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wtc20tN3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY29sLXNtLTh7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNvbC1zbS05ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNzUlO2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jb2wtc20tMTB7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4My4zMzMzMzMzMzMzJTtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNvbC1zbS0xMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY29sLXNtLTEyey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTAwJTtmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci1zbS1maXJzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjA7LW1zLWZsZXgtb3JkZXI6LTE7b3JkZXI6LTF9Lm9yZGVyLXNtLWxhc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxNDstbXMtZmxleC1vcmRlcjoxMztvcmRlcjoxM30ub3JkZXItc20tMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci1zbS0xey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MjstbXMtZmxleC1vcmRlcjoxO29yZGVyOjF9Lm9yZGVyLXNtLTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXItc20tM3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci1zbS00ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NTstbXMtZmxleC1vcmRlcjo0O29yZGVyOjR9Lm9yZGVyLXNtLTV7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXItc20tNnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci1zbS03ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6ODstbXMtZmxleC1vcmRlcjo3O29yZGVyOjd9Lm9yZGVyLXNtLTh7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXItc20tOXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwOy1tcy1mbGV4LW9yZGVyOjk7b3JkZXI6OX0ub3JkZXItc20tMTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMTstbXMtZmxleC1vcmRlcjoxMDtvcmRlcjoxMH0ub3JkZXItc20tMTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMjstbXMtZmxleC1vcmRlcjoxMTtvcmRlcjoxMX0ub3JkZXItc20tMTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMzstbXMtZmxleC1vcmRlcjoxMjtvcmRlcjoxMn0ub2Zmc2V0LXNtLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LXNtLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0ub2Zmc2V0LXNtLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9Lm9mZnNldC1zbS0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXNtLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9Lm9mZnNldC1zbS01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5vZmZzZXQtc20tNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC1zbS03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5vZmZzZXQtc20tOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0ub2Zmc2V0LXNtLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQtc20tMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9Lm9mZnNldC1zbS0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsuY29sLW1key1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jb2wtbWQtYXV0b3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jb2wtbWQtMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDguMzMzMzMzMzMzMyU7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY29sLW1kLTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxNi42NjY2NjY2NjY3JTtmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNvbC1tZC0zey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMjUlO2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jb2wtbWQtNHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY29sLW1kLTV7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA0MS42NjY2NjY2NjY3JTtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNvbC1tZC02ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTAlO2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wtbWQtN3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY29sLW1kLTh7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNvbC1tZC05ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNzUlO2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jb2wtbWQtMTB7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4My4zMzMzMzMzMzMzJTtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNvbC1tZC0xMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY29sLW1kLTEyey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTAwJTtmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci1tZC1maXJzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjA7LW1zLWZsZXgtb3JkZXI6LTE7b3JkZXI6LTF9Lm9yZGVyLW1kLWxhc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxNDstbXMtZmxleC1vcmRlcjoxMztvcmRlcjoxM30ub3JkZXItbWQtMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci1tZC0xey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MjstbXMtZmxleC1vcmRlcjoxO29yZGVyOjF9Lm9yZGVyLW1kLTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXItbWQtM3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci1tZC00ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NTstbXMtZmxleC1vcmRlcjo0O29yZGVyOjR9Lm9yZGVyLW1kLTV7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXItbWQtNnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci1tZC03ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6ODstbXMtZmxleC1vcmRlcjo3O29yZGVyOjd9Lm9yZGVyLW1kLTh7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXItbWQtOXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwOy1tcy1mbGV4LW9yZGVyOjk7b3JkZXI6OX0ub3JkZXItbWQtMTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMTstbXMtZmxleC1vcmRlcjoxMDtvcmRlcjoxMH0ub3JkZXItbWQtMTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMjstbXMtZmxleC1vcmRlcjoxMTtvcmRlcjoxMX0ub3JkZXItbWQtMTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMzstbXMtZmxleC1vcmRlcjoxMjtvcmRlcjoxMn0ub2Zmc2V0LW1kLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LW1kLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0ub2Zmc2V0LW1kLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9Lm9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9Lm9mZnNldC1tZC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5vZmZzZXQtbWQtNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC1tZC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5vZmZzZXQtbWQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0ub2Zmc2V0LW1kLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQtbWQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9Lm9mZnNldC1tZC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KXsuY29sLWxney1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jb2wtbGctYXV0b3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jb2wtbGctMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDguMzMzMzMzMzMzMyU7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY29sLWxnLTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxNi42NjY2NjY2NjY3JTtmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNvbC1sZy0zey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMjUlO2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jb2wtbGctNHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY29sLWxnLTV7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA0MS42NjY2NjY2NjY3JTtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNvbC1sZy02ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTAlO2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wtbGctN3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY29sLWxnLTh7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNvbC1sZy05ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNzUlO2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jb2wtbGctMTB7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4My4zMzMzMzMzMzMzJTtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNvbC1sZy0xMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY29sLWxnLTEyey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTAwJTtmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci1sZy1maXJzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjA7LW1zLWZsZXgtb3JkZXI6LTE7b3JkZXI6LTF9Lm9yZGVyLWxnLWxhc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxNDstbXMtZmxleC1vcmRlcjoxMztvcmRlcjoxM30ub3JkZXItbGctMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci1sZy0xey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MjstbXMtZmxleC1vcmRlcjoxO29yZGVyOjF9Lm9yZGVyLWxnLTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXItbGctM3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci1sZy00ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NTstbXMtZmxleC1vcmRlcjo0O29yZGVyOjR9Lm9yZGVyLWxnLTV7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXItbGctNnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci1sZy03ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6ODstbXMtZmxleC1vcmRlcjo3O29yZGVyOjd9Lm9yZGVyLWxnLTh7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXItbGctOXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwOy1tcy1mbGV4LW9yZGVyOjk7b3JkZXI6OX0ub3JkZXItbGctMTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMTstbXMtZmxleC1vcmRlcjoxMDtvcmRlcjoxMH0ub3JkZXItbGctMTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMjstbXMtZmxleC1vcmRlcjoxMTtvcmRlcjoxMX0ub3JkZXItbGctMTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMzstbXMtZmxleC1vcmRlcjoxMjtvcmRlcjoxMn0ub2Zmc2V0LWxnLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LWxnLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0ub2Zmc2V0LWxnLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9Lm9mZnNldC1sZy0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9Lm9mZnNldC1sZy01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5vZmZzZXQtbGctNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC1sZy03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0ub2Zmc2V0LWxnLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQtbGctMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9Lm9mZnNldC1sZy0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCl7LmNvbC14bHstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTowO2ZsZXgtYmFzaXM6MDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY29sLXhsLWF1dG97LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCBhdXRvO2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY29sLXhsLTF7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4LjMzMzMzMzMzMzMlO2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9LmNvbC14bC0yey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wteGwtM3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDI1JTtmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY29sLXhsLTR7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNvbC14bC01ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jb2wteGwtNnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDUwJTtmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY29sLXhsLTd7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTtmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNvbC14bC04ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jb2wteGwtOXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDc1JTtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY29sLXhsLTEwey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgODMuMzMzMzMzMzMzMyU7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jb2wteGwtMTF7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA5MS42NjY2NjY2NjY3JTtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNvbC14bC0xMnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDEwMCU7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0ub3JkZXIteGwtZmlyc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDowOy1tcy1mbGV4LW9yZGVyOi0xO29yZGVyOi0xfS5vcmRlci14bC1sYXN0ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTQ7LW1zLWZsZXgtb3JkZXI6MTM7b3JkZXI6MTN9Lm9yZGVyLXhsLTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxOy1tcy1mbGV4LW9yZGVyOjA7b3JkZXI6MH0ub3JkZXIteGwtMXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjI7LW1zLWZsZXgtb3JkZXI6MTtvcmRlcjoxfS5vcmRlci14bC0yey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MzstbXMtZmxleC1vcmRlcjoyO29yZGVyOjJ9Lm9yZGVyLXhsLTN7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo0Oy1tcy1mbGV4LW9yZGVyOjM7b3JkZXI6M30ub3JkZXIteGwtNHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjU7LW1zLWZsZXgtb3JkZXI6NDtvcmRlcjo0fS5vcmRlci14bC01ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NjstbXMtZmxleC1vcmRlcjo1O29yZGVyOjV9Lm9yZGVyLXhsLTZ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo3Oy1tcy1mbGV4LW9yZGVyOjY7b3JkZXI6Nn0ub3JkZXIteGwtN3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjg7LW1zLWZsZXgtb3JkZXI6NztvcmRlcjo3fS5vcmRlci14bC04ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6OTstbXMtZmxleC1vcmRlcjo4O29yZGVyOjh9Lm9yZGVyLXhsLTl7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMDstbXMtZmxleC1vcmRlcjo5O29yZGVyOjl9Lm9yZGVyLXhsLTEwey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTE7LW1zLWZsZXgtb3JkZXI6MTA7b3JkZXI6MTB9Lm9yZGVyLXhsLTExey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTI7LW1zLWZsZXgtb3JkZXI6MTE7b3JkZXI6MTF9Lm9yZGVyLXhsLTEyey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTM7LW1zLWZsZXgtb3JkZXI6MTI7b3JkZXI6MTJ9Lm9mZnNldC14bC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC14bC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9Lm9mZnNldC14bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC14bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5vZmZzZXQteGwtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0ub2Zmc2V0LXhsLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQteGwtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0ub2Zmc2V0LXhsLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9Lm9mZnNldC14bC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXhsLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5vZmZzZXQteGwtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fS50YWJsZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MXJlbTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS50YWJsZSB0aCwudGFibGUgdGR7cGFkZGluZzowLjc1cmVtO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMDUpfS50YWJsZSB0aGVhZCB0aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Ym9yZGVyLWJvdHRvbToycHggc29saWQgcmdiYSgwLDAsMCwwLjA1KX0udGFibGUgdGJvZHkrdGJvZHl7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwwLjA1KX0udGFibGUgLnRhYmxle2JhY2tncm91bmQtY29sb3I6I2ZmZn0udGFibGUtc20gdGgsLnRhYmxlLXNtIHRke3BhZGRpbmc6MC4zcmVtfS50YWJsZS1ib3JkZXJlZHtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4wNSl9LnRhYmxlLWJvcmRlcmVkIHRoLC50YWJsZS1ib3JkZXJlZCB0ZHtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4wNSl9LnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRoLC50YWJsZS1ib3JkZXJlZCB0aGVhZCB0ZHtib3JkZXItYm90dG9tLXdpZHRoOjJweH0udGFibGUtYm9yZGVybGVzcyB0aCwudGFibGUtYm9yZGVybGVzcyB0ZCwudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwudGFibGUtYm9yZGVybGVzcyB0Ym9keSt0Ym9keXtib3JkZXI6MH0udGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjA1KX0udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMDc1KX0udGFibGUtcHJpbWFyeSwudGFibGUtcHJpbWFyeT50aCwudGFibGUtcHJpbWFyeT50ZHtiYWNrZ3JvdW5kLWNvbG9yOiNiZmJmYmZ9LnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2IyYjJiMn0udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXI+dGQsLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyPnRoe2JhY2tncm91bmQtY29sb3I6I2IyYjJiMn0udGFibGUtc2Vjb25kYXJ5LC50YWJsZS1zZWNvbmRhcnk+dGgsLnRhYmxlLXNlY29uZGFyeT50ZHtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlfS50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2YyZjJmMn0udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNmMmYyZjJ9LnRhYmxlLXN1Y2Nlc3MsLnRhYmxlLXN1Y2Nlc3M+dGgsLnRhYmxlLXN1Y2Nlc3M+dGR7YmFja2dyb3VuZC1jb2xvcjojY2RlZGQ4fS50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNiYWU2Yzl9LnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyPnRkLC50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNiYWU2Yzl9LnRhYmxlLWluZm8sLnRhYmxlLWluZm8+dGgsLnRhYmxlLWluZm8+dGR7YmFja2dyb3VuZC1jb2xvcjojYzBlM2YyfS50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNhYmRhZWV9LnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyPnRkLC50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNhYmRhZWV9LnRhYmxlLXdhcm5pbmcsLnRhYmxlLXdhcm5pbmc+dGgsLnRhYmxlLXdhcm5pbmc+dGR7YmFja2dyb3VuZC1jb2xvcjojZmJlOGNkfS50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmOWRkYjV9LnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyPnRkLC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNmOWRkYjV9LnRhYmxlLWRhbmdlciwudGFibGUtZGFuZ2VyPnRoLC50YWJsZS1kYW5nZXI+dGR7YmFja2dyb3VuZC1jb2xvcjojZjRjZmNlfS50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VmYmJiOX0udGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNlZmJiYjl9LnRhYmxlLWxpZ2h0LC50YWJsZS1saWdodD50aCwudGFibGUtbGlnaHQ+dGR7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZX0udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2YyZjJmMn0udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyPnRkLC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyfS50YWJsZS1kYXJrLC50YWJsZS1kYXJrPnRoLC50YWJsZS1kYXJrPnRke2JhY2tncm91bmQtY29sb3I6I2M2YzhjYX0udGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYjliYmJlfS50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojYjliYmJlfS50YWJsZS1hY3RpdmUsLnRhYmxlLWFjdGl2ZT50aCwudGFibGUtYWN0aXZlPnRke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjA3NSl9LnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMDc1KX0udGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4wNzUpfS50YWJsZSAudGhlYWQtZGFyayB0aHtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzFhMWExYTtib3JkZXItY29sb3I6IzJkMmQyZH0udGFibGUgLnRoZWFkLWxpZ2h0IHRoe2NvbG9yOiM1NTU5NWM7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5O2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDAuMDUpfS50YWJsZS1kYXJre2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhfS50YWJsZS1kYXJrIHRoLC50YWJsZS1kYXJrIHRkLC50YWJsZS1kYXJrIHRoZWFkIHRoe2JvcmRlci1jb2xvcjojMmQyZDJkfS50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfS50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4wNSl9LnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuMDc1KX1AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpey50YWJsZS1yZXNwb25zaXZlLXNte2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7LW1zLW92ZXJmbG93LXN0eWxlOi1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcn0udGFibGUtcmVzcG9uc2l2ZS1zbT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9fUBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCl7LnRhYmxlLXJlc3BvbnNpdmUtbWR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO292ZXJmbG93LXg6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyfS50YWJsZS1yZXNwb25zaXZlLW1kPi50YWJsZS1ib3JkZXJlZHtib3JkZXI6MH19QG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS1sZ3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXJ9LnRhYmxlLXJlc3BvbnNpdmUtbGc+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfX1AbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS14bHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXJ9LnRhYmxlLXJlc3BvbnNpdmUteGw+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfX0udGFibGUtcmVzcG9uc2l2ZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXJ9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfS5mb3JtLWNvbnRyb2x7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDpjYWxjKDIuODEyNXJlbSArIDApO3BhZGRpbmc6MC43NXJlbSAycmVtO2ZvbnQtc2l6ZTowLjg3NXJlbTtsaW5lLWhlaWdodDoxLjVyZW07Y29sb3I6IzU1NTk1YztiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjk7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjowIHNvbGlkICNjZWQ0ZGE7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXR9QG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LmZvcm0tY29udHJvbHstd2Via2l0LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9fS5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MH0uZm9ybS1jb250cm9sOmZvY3Vze2NvbG9yOiM1NTU5NWM7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5O2JvcmRlci1jb2xvcjojNWE1YTVhO291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjYsMjYsMjYsMC4yNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjI1KX0uZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5MTlhYTE7b3BhY2l0eToxfS5mb3JtLWNvbnRyb2w6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5MTlhYTE7b3BhY2l0eToxfS5mb3JtLWNvbnRyb2w6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojOTE5YWExO29wYWNpdHk6MX0uZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlcntjb2xvcjojOTE5YWExO29wYWNpdHk6MX0uZm9ybS1jb250cm9sOmRpc2FibGVkLC5mb3JtLWNvbnRyb2xbcmVhZG9ubHlde2JhY2tncm91bmQtY29sb3I6I2VjZWVlZjtvcGFjaXR5OjF9c2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVle2NvbG9yOiM1NTU5NWM7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5fS5mb3JtLWNvbnRyb2wtZmlsZSwuZm9ybS1jb250cm9sLXJhbmdle2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0uY29sLWZvcm0tbGFiZWx7cGFkZGluZy10b3A6Y2FsYygwLjc1cmVtICsgMCk7cGFkZGluZy1ib3R0b206Y2FsYygwLjc1cmVtICsgMCk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNXJlbX0uY29sLWZvcm0tbGFiZWwtbGd7cGFkZGluZy10b3A6Y2FsYygycmVtICsgMCk7cGFkZGluZy1ib3R0b206Y2FsYygycmVtICsgMCk7Zm9udC1zaXplOjEuMDkzNzVyZW07bGluZS1oZWlnaHQ6MS41fS5jb2wtZm9ybS1sYWJlbC1zbXtwYWRkaW5nLXRvcDpjYWxjKDAuNXJlbSArIDApO3BhZGRpbmctYm90dG9tOmNhbGMoMC41cmVtICsgMCk7Zm9udC1zaXplOjAuNzY1NjI1cmVtO2xpbmUtaGVpZ2h0OjEuNX0uZm9ybS1jb250cm9sLXBsYWludGV4dHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZy10b3A6MC43NXJlbTtwYWRkaW5nLWJvdHRvbTowLjc1cmVtO21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDoxLjVyZW07Y29sb3I6IzkxOWFhMTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6MCAwfS5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1zbSwuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtbGd7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5mb3JtLWNvbnRyb2wtc217aGVpZ2h0OmNhbGMoMi4xNDg0Mzc1cmVtICsgMCk7cGFkZGluZzowLjVyZW0gMXJlbTtmb250LXNpemU6MC43NjU2MjVyZW07bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6MH0uZm9ybS1jb250cm9sLWxne2hlaWdodDpjYWxjKDUuNjQwNjI1cmVtICsgMCk7cGFkZGluZzoycmVtIDNyZW07Zm9udC1zaXplOjEuMDkzNzVyZW07bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6MH1zZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLHNlbGVjdC5mb3JtLWNvbnRyb2xbbXVsdGlwbGVde2hlaWdodDphdXRvfXRleHRhcmVhLmZvcm0tY29udHJvbHtoZWlnaHQ6YXV0b30uZm9ybS1ncm91cHttYXJnaW4tYm90dG9tOjFyZW19LmZvcm0tdGV4dHtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MC4yNXJlbX0uZm9ybS1yb3d7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7bWFyZ2luLXJpZ2h0Oi01cHg7bWFyZ2luLWxlZnQ6LTVweH0uZm9ybS1yb3c+LmNvbCwuZm9ybS1yb3c+W2NsYXNzKj0iY29sLSJde3BhZGRpbmctcmlnaHQ6NXB4O3BhZGRpbmctbGVmdDo1cHh9LmZvcm0tY2hlY2t7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nLWxlZnQ6MS4yNXJlbX0uZm9ybS1jaGVjay1pbnB1dHtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOjAuM3JlbTttYXJnaW4tbGVmdDotMS4yNXJlbX0uZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVse2NvbG9yOiM5MTlhYTF9LmZvcm0tY2hlY2stbGFiZWx7bWFyZ2luLWJvdHRvbTowfS5mb3JtLWNoZWNrLWlubGluZXtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmctbGVmdDowO21hcmdpbi1yaWdodDowLjc1cmVtfS5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dHtwb3NpdGlvbjpzdGF0aWM7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDowLjMxMjVyZW07bWFyZ2luLWxlZnQ6MH0udmFsaWQtZmVlZGJhY2t7ZGlzcGxheTpub25lO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDowLjI1cmVtO2ZvbnQtc2l6ZTo4MCU7Y29sb3I6IzRCQkY3M30udmFsaWQtdG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTt6LWluZGV4OjU7ZGlzcGxheTpub25lO21heC13aWR0aDoxMDAlO3BhZGRpbmc6MC4yNXJlbSAwLjVyZW07bWFyZ2luLXRvcDouMXJlbTtmb250LXNpemU6MC43NjU2MjVyZW07bGluZS1oZWlnaHQ6MS41O2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDc1LDE5MSwxMTUsMC45KTtib3JkZXItcmFkaXVzOjB9Lndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwuZm9ybS1jb250cm9sLmlzLXZhbGlkLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkLC5jdXN0b20tc2VsZWN0LmlzLXZhbGlke2JvcmRlci1jb2xvcjojNEJCRjczfS53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQ6Zm9jdXMsLmZvcm0tY29udHJvbC5pcy12YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZDpmb2N1cywuY3VzdG9tLXNlbGVjdC5pcy12YWxpZDpmb2N1c3tib3JkZXItY29sb3I6IzRCQkY3Mzstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjI1KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDc1LDE5MSwxMTUsMC4yNSl9Lndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsLmZvcm0tY29udHJvbC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwe2Rpc3BsYXk6YmxvY2t9Lndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC10b29sdGlwLC5mb3JtLWNvbnRyb2wtZmlsZS5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywuZm9ybS1jb250cm9sLWZpbGUuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbHtjb2xvcjojNEJCRjczfS53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWx7Y29sb3I6IzRCQkY3M30ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNhOWUwYmN9Lndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM3MWNjOTB9Lndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDc1LDE5MSwxMTUsMC4yNSk7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAwLjJyZW0gcmdiYSg3NSwxOTEsMTE1LDAuMjUpfS53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCwuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWx7Ym9yZGVyLWNvbG9yOiM0QkJGNzN9Lndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVye2JvcmRlci1jb2xvcjppbmhlcml0fS53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwsLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSg3NSwxOTEsMTE1LDAuMjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjI1KX0uaW52YWxpZC1mZWVkYmFja3tkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjAuMjVyZW07Zm9udC1zaXplOjgwJTtjb2xvcjojZDk1MzRmfS5pbnZhbGlkLXRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7ei1pbmRleDo1O2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjAuMjVyZW0gMC41cmVtO21hcmdpbi10b3A6LjFyZW07Zm9udC1zaXplOjAuNzY1NjI1cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSgyMTcsODMsNzksMC45KTtib3JkZXItcmFkaXVzOjB9Lndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkLC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkLC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWR7Ym9yZGVyLWNvbG9yOiNkOTUzNGZ9Lndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkOmZvY3VzLC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNkOTUzNGY7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjI1KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjI1KX0ud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLC5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssLmZvcm0tY29udHJvbC1maWxlLmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwe2Rpc3BsYXk6YmxvY2t9Lndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbHtjb2xvcjojZDk1MzRmfS53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbHtjb2xvcjojZDk1MzRmfS53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmMGI5Yjh9Lndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2UyN2M3OX0ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjI1KTtib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjI1KX0ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCwuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbHtib3JkZXItY29sb3I6I2Q5NTM0Zn0ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVye2JvcmRlci1jb2xvcjppbmhlcml0fS53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwe2Rpc3BsYXk6YmxvY2t9Lndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwsLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWx7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjI1KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjI1KX0uZm9ybS1pbmxpbmV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWZsb3c6cm93IHdyYXA7ZmxleC1mbG93OnJvdyB3cmFwOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5mb3JtLWlubGluZSAuZm9ybS1jaGVja3t3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LmZvcm0taW5saW5lIGxhYmVse2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tYm90dG9tOjB9LmZvcm0taW5saW5lIC5mb3JtLWdyb3Vwe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCBhdXRvO2ZsZXg6MCAwIGF1dG87LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyB3cmFwO2ZsZXgtZmxvdzpyb3cgd3JhcDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjB9LmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2x7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0bzt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0e3dpZHRoOmF1dG99LmZvcm0taW5saW5lIC5mb3JtLWNoZWNre2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDphdXRvO3BhZGRpbmctbGVmdDowfS5mb3JtLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjA7bWFyZ2luLXJpZ2h0OjAuMjVyZW07bWFyZ2luLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjB9fS5idG57ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6NjAwO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JvcmRlcjowIHNvbGlkIHRyYW5zcGFyZW50O3BhZGRpbmc6MC43NXJlbSAycmVtO2ZvbnQtc2l6ZTowLjg3NXJlbTtsaW5lLWhlaWdodDoxLjVyZW07Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjpjb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjpjb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246Y29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0fUBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5idG57LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfX0uYnRuOmhvdmVyLC5idG46Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmJ0bjpmb2N1cywuYnRuLmZvY3Vze291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjYsMjYsMjYsMC4yNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjI1KX0uYnRuLmRpc2FibGVkLC5idG46ZGlzYWJsZWR7b3BhY2l0eTowLjY1fS5idG46bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9YS5idG4uZGlzYWJsZWQsZmllbGRzZXQ6ZGlzYWJsZWQgYS5idG57cG9pbnRlci1ldmVudHM6bm9uZX0uYnRuLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWE7Ym9yZGVyLWNvbG9yOiMxYTFhMWF9LmJ0bi1wcmltYXJ5OmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDcwNzA3O2JvcmRlci1jb2xvcjojMDEwMDAwfS5idG4tcHJpbWFyeTpmb2N1cywuYnRuLXByaW1hcnkuZm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjUpfS5idG4tcHJpbWFyeS5kaXNhYmxlZCwuYnRuLXByaW1hcnk6ZGlzYWJsZWR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWE7Ym9yZGVyLWNvbG9yOiMxYTFhMWF9LmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5zaG93Pi5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMTAwMDA7Ym9yZGVyLWNvbG9yOmJsYWNrfS5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlOmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjYsMjYsMjYsMC41KX0uYnRuLXNlY29uZGFyeXtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2ZmZn0uYnRuLXNlY29uZGFyeTpob3Zlcntjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2VjZWNlYztib3JkZXItY29sb3I6I2U2ZTVlNX0uYnRuLXNlY29uZGFyeTpmb2N1cywuYnRuLXNlY29uZGFyeS5mb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjU1LDI1NSwyNTUsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSl9LmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWR7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNmZmZ9LmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU1ZTU7Ym9yZGVyLWNvbG9yOiNkZmRmZGZ9LmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNTUsMjU1LDI1NSwwLjUpfS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzRCQkY3Mztib3JkZXItY29sb3I6IzRCQkY3M30uYnRuLXN1Y2Nlc3M6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzY2E4NjE7Ym9yZGVyLWNvbG9yOiMzODlmNWN9LmJ0bi1zdWNjZXNzOmZvY3VzLC5idG4tc3VjY2Vzcy5mb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjUpfS5idG4tc3VjY2Vzcy5kaXNhYmxlZCwuYnRuLXN1Y2Nlc3M6ZGlzYWJsZWR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0QkJGNzM7Ym9yZGVyLWNvbG9yOiM0QkJGNzN9LmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5zaG93Pi5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzODlmNWM7Ym9yZGVyLWNvbG9yOiMzNTk1NTZ9LmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5zaG93Pi5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDc1LDE5MSwxMTUsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDc1LDE5MSwxMTUsMC41KX0uYnRuLWluZm97Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxRjlCQ0Y7Ym9yZGVyLWNvbG9yOiMxRjlCQ0Z9LmJ0bi1pbmZvOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWE4MmFlO2JvcmRlci1jb2xvcjojMTg3YWEzfS5idG4taW5mbzpmb2N1cywuYnRuLWluZm8uZm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDMxLDE1NSwyMDcsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDMxLDE1NSwyMDcsMC41KX0uYnRuLWluZm8uZGlzYWJsZWQsLmJ0bi1pbmZvOmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMUY5QkNGO2JvcmRlci1jb2xvcjojMUY5QkNGfS5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMTg3YWEzO2JvcmRlci1jb2xvcjojMTc3MTk4fS5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgzMSwxNTUsMjA3LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgzMSwxNTUsMjA3LDAuNSl9LmJ0bi13YXJuaW5ne2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlO2JvcmRlci1jb2xvcjojZjBhZDRlfS5idG4td2FybmluZzpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2VkOWQyYjtib3JkZXItY29sb3I6I2VjOTcxZn0uYnRuLXdhcm5pbmc6Zm9jdXMsLmJ0bi13YXJuaW5nLmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNDAsMTczLDc4LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNDAsMTczLDc4LDAuNSl9LmJ0bi13YXJuaW5nLmRpc2FibGVkLC5idG4td2FybmluZzpkaXNhYmxlZHtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2YwYWQ0ZTtib3JkZXItY29sb3I6I2YwYWQ0ZX0uYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLnNob3c+LmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2VjOTcxZjtib3JkZXItY29sb3I6I2VhOTIxNH0uYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjQwLDE3Myw3OCwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjQwLDE3Myw3OCwwLjUpfS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZDk1MzRmO2JvcmRlci1jb2xvcjojZDk1MzRmfS5idG4tZGFuZ2VyOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZDIzNDMwO2JvcmRlci1jb2xvcjojYzkzMDJjfS5idG4tZGFuZ2VyOmZvY3VzLC5idG4tZGFuZ2VyLmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyMTcsODMsNzksMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjUpfS5idG4tZGFuZ2VyLmRpc2FibGVkLC5idG4tZGFuZ2VyOmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZDk1MzRmO2JvcmRlci1jb2xvcjojZDk1MzRmfS5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLnNob3c+LmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojYmYyZTI5fS5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyMTcsODMsNzksMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjUpfS5idG4tbGlnaHR7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNmZmZ9LmJ0bi1saWdodDpob3Zlcntjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2VjZWNlYztib3JkZXItY29sb3I6I2U2ZTVlNX0uYnRuLWxpZ2h0OmZvY3VzLC5idG4tbGlnaHQuZm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNTUsMjU1LDI1NSwwLjUpfS5idG4tbGlnaHQuZGlzYWJsZWQsLmJ0bi1saWdodDpkaXNhYmxlZHtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2ZmZn0uYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2U2ZTVlNTtib3JkZXItY29sb3I6I2RmZGZkZn0uYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjU1LDI1NSwyNTUsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSl9LmJ0bi1kYXJre2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwO2JvcmRlci1jb2xvcjojMzQzYTQwfS5idG4tZGFyazpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzIzMjcyYjtib3JkZXItY29sb3I6IzFkMjEyNH0uYnRuLWRhcms6Zm9jdXMsLmJ0bi1kYXJrLmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSg1Miw1OCw2NCwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNTIsNTgsNjQsMC41KX0uYnRuLWRhcmsuZGlzYWJsZWQsLmJ0bi1kYXJrOmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwO2JvcmRlci1jb2xvcjojMzQzYTQwfS5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWQyMTI0O2JvcmRlci1jb2xvcjojMTcxYTFkfS5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSg1Miw1OCw2NCwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNTIsNTgsNjQsMC41KX0uYnRuLW91dGxpbmUtcHJpbWFyeXtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojMWExYTFhfS5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhO2JvcmRlci1jb2xvcjojMWExYTFhfS5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLC5idG4tb3V0bGluZS1wcmltYXJ5LmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjYsMjYsMjYsMC41KX0uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZHtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWE7Ym9yZGVyLWNvbG9yOiMxYTFhMWF9LmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjUpfS5idG4tb3V0bGluZS1zZWNvbmRhcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6I2ZmZn0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVye2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjU1LDI1NSwyNTUsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSl9LmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2ZmZn0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjU1LDI1NSwyNTUsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSl9LmJ0bi1vdXRsaW5lLXN1Y2Nlc3N7Y29sb3I6IzRCQkY3MztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzRCQkY3M30uYnRuLW91dGxpbmUtc3VjY2Vzczpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzRCQkY3Mztib3JkZXItY29sb3I6IzRCQkY3M30uYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywuYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjUpfS5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVke2NvbG9yOiM0QkJGNzM7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5zaG93Pi5idG4tb3V0bGluZS1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzRCQkY3Mztib3JkZXItY29sb3I6IzRCQkY3M30uYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5zaG93Pi5idG4tb3V0bGluZS1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNzUsMTkxLDExNSwwLjUpfS5idG4tb3V0bGluZS1pbmZve2NvbG9yOiMxRjlCQ0Y7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMxRjlCQ0Z9LmJ0bi1vdXRsaW5lLWluZm86aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxRjlCQ0Y7Ym9yZGVyLWNvbG9yOiMxRjlCQ0Z9LmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDMxLDE1NSwyMDcsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDMxLDE1NSwyMDcsMC41KX0uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwuYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZHtjb2xvcjojMUY5QkNGO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxRjlCQ0Y7Ym9yZGVyLWNvbG9yOiMxRjlCQ0Z9LmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDMxLDE1NSwyMDcsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDMxLDE1NSwyMDcsMC41KX0uYnRuLW91dGxpbmUtd2FybmluZ3tjb2xvcjojZjBhZDRlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojZjBhZDRlfS5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlO2JvcmRlci1jb2xvcjojZjBhZDRlfS5idG4tb3V0bGluZS13YXJuaW5nOmZvY3VzLC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNDAsMTczLDc4LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNDAsMTczLDc4LDAuNSl9LmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWR7Y29sb3I6I2YwYWQ0ZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLnNob3c+LmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlO2JvcmRlci1jb2xvcjojZjBhZDRlfS5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNDAsMTczLDc4LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNDAsMTczLDc4LDAuNSl9LmJ0bi1vdXRsaW5lLWRhbmdlcntjb2xvcjojZDk1MzRmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojZDk1MzRmfS5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGY7Ym9yZGVyLWNvbG9yOiNkOTUzNGZ9LmJ0bi1vdXRsaW5lLWRhbmdlcjpmb2N1cywuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyMTcsODMsNzksMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjUpfS5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZHtjb2xvcjojZDk1MzRmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLnNob3c+LmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGY7Ym9yZGVyLWNvbG9yOiNkOTUzNGZ9LmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGU6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIxNyw4Myw3OSwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjE3LDgzLDc5LDAuNSl9LmJ0bi1vdXRsaW5lLWxpZ2h0e2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiNmZmZ9LmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVye2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS5idG4tb3V0bGluZS1saWdodDpmb2N1cywuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNTUsMjU1LDI1NSwwLjUpfS5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwuYnRuLW91dGxpbmUtbGlnaHQ6ZGlzYWJsZWR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNTUsMjU1LDI1NSwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjU1LDI1NSwyNTUsMC41KX0uYnRuLW91dGxpbmUtZGFya3tjb2xvcjojMzQzYTQwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojMzQzYTQwfS5idG4tb3V0bGluZS1kYXJrOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwO2JvcmRlci1jb2xvcjojMzQzYTQwfS5idG4tb3V0bGluZS1kYXJrOmZvY3VzLC5idG4tb3V0bGluZS1kYXJrLmZvY3Vzey13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSg1Miw1OCw2NCwwLjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoNTIsNTgsNjQsMC41KX0uYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwuYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZHtjb2xvcjojMzQzYTQwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzNDNhNDA7Ym9yZGVyLWNvbG9yOiMzNDNhNDB9LmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDUyLDU4LDY0LDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSg1Miw1OCw2NCwwLjUpfS5idG4tbGlua3tmb250LXdlaWdodDo0MDA7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tbGluazpob3Zlcntjb2xvcjpibGFjazt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tbGluazpmb2N1cywuYnRuLWxpbmsuZm9jdXN7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5idG4tbGluazpkaXNhYmxlZCwuYnRuLWxpbmsuZGlzYWJsZWR7Y29sb3I6IzkxOWFhMTtwb2ludGVyLWV2ZW50czpub25lfS5idG4tbGcsLmJ0bi1ncm91cC1sZz4uYnRue3BhZGRpbmc6MnJlbSAzcmVtO2ZvbnQtc2l6ZToxLjA5Mzc1cmVtO2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjB9LmJ0bi1zbSwuYnRuLWdyb3VwLXNtPi5idG57cGFkZGluZzowLjVyZW0gMXJlbTtmb250LXNpemU6MC43NjU2MjVyZW07bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6MH0uYnRuLWJsb2Nre2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0uYnRuLWJsb2NrKy5idG4tYmxvY2t7bWFyZ2luLXRvcDowLjVyZW19aW5wdXRbdHlwZT0ic3VibWl0Il0uYnRuLWJsb2NrLGlucHV0W3R5cGU9InJlc2V0Il0uYnRuLWJsb2NrLGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9ja3t3aWR0aDoxMDAlfS5mYWRley13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTVzIGxpbmVhcjt0cmFuc2l0aW9uOm9wYWNpdHkgMC4xNXMgbGluZWFyfUBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5mYWRley13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX19LmZhZGU6bm90KC5zaG93KXtvcGFjaXR5OjB9LmNvbGxhcHNlOm5vdCguc2hvdyl7ZGlzcGxheTpub25lfS5jb2xsYXBzaW5ne3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDowO292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246aGVpZ2h0IDAuMzVzIGVhc2U7dHJhbnNpdGlvbjpoZWlnaHQgMC4zNXMgZWFzZX1AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsuY29sbGFwc2luZ3std2Via2l0LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9fS5kcm9wdXAsLmRyb3ByaWdodCwuZHJvcGRvd24sLmRyb3BsZWZ0e3Bvc2l0aW9uOnJlbGF0aXZlfS5kcm9wZG93bi10b2dnbGU6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLWxlZnQ6MC4yNTVlbTt2ZXJ0aWNhbC1hbGlnbjowLjI1NWVtO2NvbnRlbnQ6IiI7Ym9yZGVyLXRvcDowLjNlbSBzb2xpZDtib3JkZXItcmlnaHQ6MC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci1sZWZ0OjAuM2VtIHNvbGlkIHRyYW5zcGFyZW50fS5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVye21hcmdpbi1sZWZ0OjB9LmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7bGVmdDowO3otaW5kZXg6MTAwMDtkaXNwbGF5Om5vbmU7ZmxvYXQ6bGVmdDttaW4td2lkdGg6MTByZW07cGFkZGluZzowLjVyZW0gMDttYXJnaW46MC4xMjVyZW0gMCAwO2ZvbnQtc2l6ZTowLjg3NXJlbTtjb2xvcjojOTE5YWExO3RleHQtYWxpZ246bGVmdDtsaXN0LXN0eWxlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7Ym9yZGVyLXJhZGl1czowfS5kcm9wZG93bi1tZW51LXJpZ2h0e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wdXAgLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCU7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MC4xMjVyZW19LmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDowO2hlaWdodDowO21hcmdpbi1sZWZ0OjAuMjU1ZW07dmVydGljYWwtYWxpZ246MC4yNTVlbTtjb250ZW50OiIiO2JvcmRlci10b3A6MDtib3JkZXItcmlnaHQ6MC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTowLjNlbSBzb2xpZDtib3JkZXItbGVmdDowLjNlbSBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVye21hcmdpbi1sZWZ0OjB9LmRyb3ByaWdodCAuZHJvcGRvd24tbWVudXt0b3A6MDtyaWdodDphdXRvO2xlZnQ6MTAwJTttYXJnaW4tdG9wOjA7bWFyZ2luLWxlZnQ6MC4xMjVyZW19LmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDowO2hlaWdodDowO21hcmdpbi1sZWZ0OjAuMjU1ZW07dmVydGljYWwtYWxpZ246MC4yNTVlbTtjb250ZW50OiIiO2JvcmRlci10b3A6MC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjA7Ym9yZGVyLWJvdHRvbTowLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDowLjNlbSBzb2xpZH0uZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVye21hcmdpbi1sZWZ0OjB9LmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlcnt2ZXJ0aWNhbC1hbGlnbjowfS5kcm9wbGVmdCAuZHJvcGRvd24tbWVudXt0b3A6MDtyaWdodDoxMDAlO2xlZnQ6YXV0bzttYXJnaW4tdG9wOjA7bWFyZ2luLXJpZ2h0OjAuMTI1cmVtfS5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDowO2hlaWdodDowO21hcmdpbi1sZWZ0OjAuMjU1ZW07dmVydGljYWwtYWxpZ246MC4yNTVlbTtjb250ZW50OiIifS5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlcntkaXNwbGF5Om5vbmV9LmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDowO2hlaWdodDowO21hcmdpbi1yaWdodDowLjI1NWVtO3ZlcnRpY2FsLWFsaWduOjAuMjU1ZW07Y29udGVudDoiIjtib3JkZXItdG9wOjAuM2VtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDowLjNlbSBzb2xpZDtib3JkZXItYm90dG9tOjAuM2VtIHNvbGlkIHRyYW5zcGFyZW50fS5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlcnttYXJnaW4tbGVmdDowfS5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjpiZWZvcmV7dmVydGljYWwtYWxpZ246MH0uZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InRvcCJdLC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0icmlnaHQiXSwuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49ImJvdHRvbSJdLC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0ibGVmdCJde3JpZ2h0OmF1dG87Ym90dG9tOmF1dG99LmRyb3Bkb3duLWRpdmlkZXJ7aGVpZ2h0OjA7bWFyZ2luOjAuNXJlbSAwO292ZXJmbG93OmhpZGRlbjtib3JkZXItdG9wOjFweCBzb2xpZCAjZjdmN2Y5fS5kcm9wZG93bi1pdGVte2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nOjAuMjVyZW0gMS41cmVtO2NsZWFyOmJvdGg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMxYTFhMWE7dGV4dC1hbGlnbjppbmhlcml0O3doaXRlLXNwYWNlOm5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5kcm9wZG93bi1pdGVtOmhvdmVyLC5kcm9wZG93bi1pdGVtOmZvY3Vze2NvbG9yOiMwZDBkMGQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjhmOWZhfS5kcm9wZG93bi1pdGVtLmFjdGl2ZSwuZHJvcGRvd24taXRlbTphY3RpdmV7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWF9LmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWR7Y29sb3I6IzkxOWFhMTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5kcm9wZG93bi1tZW51LnNob3d7ZGlzcGxheTpibG9ja30uZHJvcGRvd24taGVhZGVye2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowLjVyZW0gMS41cmVtO21hcmdpbi1ib3R0b206MDtmb250LXNpemU6MC43NjU2MjVyZW07Y29sb3I6IzkxOWFhMTt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLWl0ZW0tdGV4dHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MC4yNXJlbSAxLjVyZW07Y29sb3I6IzFhMWExYX0uYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmJ0bi1ncm91cD4uYnRuLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bntwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAxIGF1dG87ZmxleDowIDEgYXV0b30uYnRuLWdyb3VwPi5idG46aG92ZXIsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmhvdmVye3otaW5kZXg6MX0uYnRuLWdyb3VwPi5idG46Zm9jdXMsLmJ0bi1ncm91cD4uYnRuOmFjdGl2ZSwuYnRuLWdyb3VwPi5idG4uYWN0aXZlLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpmb2N1cywuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46YWN0aXZlLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi5hY3RpdmV7ei1pbmRleDoxfS5idG4tZ3JvdXAgLmJ0bisuYnRuLC5idG4tZ3JvdXAgLmJ0bisuYnRuLWdyb3VwLC5idG4tZ3JvdXAgLmJ0bi1ncm91cCsuYnRuLC5idG4tZ3JvdXAgLmJ0bi1ncm91cCsuYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bisuYnRuLC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bisuYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCsuYnRuLC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCsuYnRuLWdyb3Vwe21hcmdpbi1sZWZ0OjB9LmJ0bi10b29sYmFye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwOy13ZWJraXQtYm94LXBhY2s6c3RhcnQ7LW1zLWZsZXgtcGFjazpzdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uYnRuLXRvb2xiYXIgLmlucHV0LWdyb3Vwe3dpZHRoOmF1dG99LmJ0bi1ncm91cD4uYnRuOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LmJ0bi1ncm91cD4uYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLC5idG4tZ3JvdXA+LmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwuYnRuLWdyb3VwPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk+LmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5kcm9wZG93bi10b2dnbGUtc3BsaXR7cGFkZGluZy1yaWdodDoxLjVyZW07cGFkZGluZy1sZWZ0OjEuNXJlbX0uZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwuZHJvcHVwIC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLC5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXJ7bWFyZ2luLWxlZnQ6MH0uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YmVmb3Jle21hcmdpbi1yaWdodDowfS5idG4tc20rLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwuYnRuLWdyb3VwLXNtPi5idG4rLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdHtwYWRkaW5nLXJpZ2h0OjAuNzVyZW07cGFkZGluZy1sZWZ0OjAuNzVyZW19LmJ0bi1sZysuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LC5idG4tZ3JvdXAtbGc+LmJ0bisuZHJvcGRvd24tdG9nZ2xlLXNwbGl0e3BhZGRpbmctcmlnaHQ6Mi4yNXJlbTtwYWRkaW5nLWxlZnQ6Mi4yNXJlbX0uYnRuLWdyb3VwLXZlcnRpY2Fsey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3Vwe3dpZHRoOjEwMCV9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuKy5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuKy5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwKy5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwKy5idG4tZ3JvdXB7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKT4uYnRue2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAtdG9nZ2xlPi5idG4sLmJ0bi1ncm91cC10b2dnbGU+LmJ0bi1ncm91cD4uYnRue21hcmdpbi1ib3R0b206MH0uYnRuLWdyb3VwLXRvZ2dsZT4uYnRuIGlucHV0W3R5cGU9InJhZGlvIl0sLmJ0bi1ncm91cC10b2dnbGU+LmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdLC5idG4tZ3JvdXAtdG9nZ2xlPi5idG4tZ3JvdXA+LmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLC5idG4tZ3JvdXAtdG9nZ2xlPi5idG4tZ3JvdXA+LmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJde3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwLCAwLCAwLCAwKTtwb2ludGVyLWV2ZW50czpub25lfS5pbnB1dC1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstd2Via2l0LWJveC1hbGlnbjpzdHJldGNoOy1tcy1mbGV4LWFsaWduOnN0cmV0Y2g7YWxpZ24taXRlbXM6c3RyZXRjaDt3aWR0aDoxMDAlfS5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cD4uY3VzdG9tLXNlbGVjdCwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxle3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDEgYXV0bztmbGV4OjEgMSBhdXRvO3dpZHRoOjElO21hcmdpbi1ib3R0b206MH0uaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbCsuZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sKy5jdXN0b20tc2VsZWN0LC5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sKy5jdXN0b20tZmlsZSwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1zZWxlY3QrLmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1zZWxlY3QrLmN1c3RvbS1zZWxlY3QsLmlucHV0LWdyb3VwPi5jdXN0b20tc2VsZWN0Ky5jdXN0b20tZmlsZSwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlKy5mb3JtLWNvbnRyb2wsLmlucHV0LWdyb3VwPi5jdXN0b20tZmlsZSsuY3VzdG9tLXNlbGVjdCwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlKy5jdXN0b20tZmlsZXttYXJnaW4tbGVmdDowfS5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sOmZvY3VzLC5pbnB1dC1ncm91cD4uY3VzdG9tLXNlbGVjdDpmb2N1cywuaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbHt6LWluZGV4OjN9LmlucHV0LWdyb3VwPi5jdXN0b20tZmlsZSAuY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXN7ei1pbmRleDo0fS5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCksLmlucHV0LWdyb3VwPi5jdXN0b20tc2VsZWN0Om5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLC5pbnB1dC1ncm91cD4uY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5pbnB1dC1ncm91cD4uY3VzdG9tLWZpbGV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsLC5pbnB1dC1ncm91cD4uY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5pbnB1dC1ncm91cC1wcmVwZW5kLC5pbnB1dC1ncm91cC1hcHBlbmR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0bntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0bisuYnRuLC5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4rLmlucHV0LWdyb3VwLXRleHQsLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQrLmlucHV0LWdyb3VwLXRleHQsLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQrLmJ0biwuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4rLmJ0biwuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4rLmlucHV0LWdyb3VwLXRleHQsLmlucHV0LWdyb3VwLWFwcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCsuaW5wdXQtZ3JvdXAtdGV4dCwuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0Ky5idG57bWFyZ2luLWxlZnQ6MH0uaW5wdXQtZ3JvdXAtcHJlcGVuZHttYXJnaW4tcmlnaHQ6MH0uaW5wdXQtZ3JvdXAtYXBwZW5ke21hcmdpbi1sZWZ0OjB9LmlucHV0LWdyb3VwLXRleHR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjAuNzVyZW0gMnJlbTttYXJnaW4tYm90dG9tOjA7Zm9udC1zaXplOjAuODc1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjVyZW07Y29sb3I6IzU1NTk1Yzt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7YmFja2dyb3VuZC1jb2xvcjojZWNlZWVmO2JvcmRlcjowIHNvbGlkICNjZWQ0ZGE7Ym9yZGVyLXJhZGl1czowfS5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sLmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT0iY2hlY2tib3giXXttYXJnaW4tdG9wOjB9LmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1wcmVwZW5kPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uYnRuLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5idG57aGVpZ2h0OmNhbGMoNS42NDA2MjVyZW0gKyAwKTtwYWRkaW5nOjJyZW0gM3JlbTtmb250LXNpemU6MS4wOTM3NXJlbTtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czowfS5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uaW5wdXQtZ3JvdXAtdGV4dCwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFwcGVuZD4uaW5wdXQtZ3JvdXAtdGV4dCwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLXByZXBlbmQ+LmJ0biwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFwcGVuZD4uYnRue2hlaWdodDpjYWxjKDIuMTQ4NDM3NXJlbSArIDApO3BhZGRpbmc6MC41cmVtIDFyZW07Zm9udC1zaXplOjAuNzY1NjI1cmVtO2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjB9LmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1wcmVwZW5kPi5idG4sLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1wcmVwZW5kPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCk+LmJ0biwuaW5wdXQtZ3JvdXA+LmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQ+LmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwuaW5wdXQtZ3JvdXA+LmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkPi5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5idG4sLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1hcHBlbmQ+LmlucHV0LWdyb3VwLXRleHQsLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1wcmVwZW5kOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG4sLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1wcmVwZW5kOm5vdCg6Zmlyc3QtY2hpbGQpPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZD4uaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5jdXN0b20tY29udHJvbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21pbi1oZWlnaHQ6MS4zMTI1cmVtO3BhZGRpbmctbGVmdDoxLjVyZW19LmN1c3RvbS1jb250cm9sLWlubGluZXtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4O21hcmdpbi1yaWdodDoxcmVtfS5jdXN0b20tY29udHJvbC1pbnB1dHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xO29wYWNpdHk6MH0uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhfS5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jley13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjI1KTtib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuMjUpfS5jdXN0b20tY29udHJvbC1pbnB1dDphY3RpdmUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzczNzM3M30uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWx7Y29sb3I6IzkxOWFhMX0uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjl9LmN1c3RvbS1jb250cm9sLWxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1ib3R0b206MH0uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MC4xNTYyNXJlbTtsZWZ0Oi0xLjVyZW07ZGlzcGxheTpibG9jazt3aWR0aDoxcmVtO2hlaWdodDoxcmVtO3BvaW50ZXItZXZlbnRzOm5vbmU7Y29udGVudDoiIjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWNlZWVmfS5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjAuMTU2MjVyZW07bGVmdDotMS41cmVtO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MXJlbTtoZWlnaHQ6MXJlbTtjb250ZW50OiIiO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjUwJSA1MCV9LmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtib3JkZXItcmFkaXVzOjB9LmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzFhMWExYX0uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRSIpfS5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWF9LmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0UiKX0uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI2LDI2LDI2LDAuNSl9LmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNiwyNiwyNiwwLjUpfS5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7Ym9yZGVyLXJhZGl1czo1MCV9LmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzFhMWExYX0uY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNFJTNDL3N2ZyUzRSIpfS5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjYsMjYsMjYsMC41KX0uY3VzdG9tLXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO2hlaWdodDpjYWxjKDIuODEyNXJlbSArIDApO3BhZGRpbmc6MC4zNzVyZW0gMS43NXJlbSAwLjM3NXJlbSAwLjc1cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojNTU1OTVjO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kOiNmN2Y3ZjkgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNFJTNDcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzRSUzQy9zdmclM0UiKSBuby1yZXBlYXQgcmlnaHQgMC43NXJlbSBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjhweCAxMHB4O2JvcmRlcjowIHNvbGlkICNjZWQ0ZGE7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0uY3VzdG9tLXNlbGVjdDpmb2N1c3tib3JkZXItY29sb3I6IzVhNWE1YTtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDkwLDkwLDkwLDAuNSk7Ym94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSg5MCw5MCw5MCwwLjUpfS5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWV7Y29sb3I6IzU1NTk1YztiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjl9LmN1c3RvbS1zZWxlY3RbbXVsdGlwbGVdLC5jdXN0b20tc2VsZWN0W3NpemVdOm5vdChbc2l6ZT0iMSJdKXtoZWlnaHQ6YXV0bztwYWRkaW5nLXJpZ2h0OjAuNzVyZW07YmFja2dyb3VuZC1pbWFnZTpub25lfS5jdXN0b20tc2VsZWN0OmRpc2FibGVke2NvbG9yOiM5MTlhYTE7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5fS5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5ke29wYWNpdHk6MH0uY3VzdG9tLXNlbGVjdC1zbXtoZWlnaHQ6Y2FsYygyLjE0ODQzNzVyZW0gKyAwKTtwYWRkaW5nLXRvcDowLjM3NXJlbTtwYWRkaW5nLWJvdHRvbTowLjM3NXJlbTtmb250LXNpemU6NzUlfS5jdXN0b20tc2VsZWN0LWxne2hlaWdodDpjYWxjKDUuNjQwNjI1cmVtICsgMCk7cGFkZGluZy10b3A6MC4zNzVyZW07cGFkZGluZy1ib3R0b206MC4zNzVyZW07Zm9udC1zaXplOjEyNSV9LmN1c3RvbS1maWxle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OmNhbGMoMi44MTI1cmVtICsgMCk7bWFyZ2luLWJvdHRvbTowfS5jdXN0b20tZmlsZS1pbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7d2lkdGg6MTAwJTtoZWlnaHQ6Y2FsYygyLjgxMjVyZW0gKyAwKTttYXJnaW46MDtvcGFjaXR5OjB9LmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVse2JvcmRlci1jb2xvcjojNWE1YTVhOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgyNiwyNiwyNiwwLjI1KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuMjUpfS5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiM1YTVhNWF9LmN1c3RvbS1maWxlLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2VjZWVlZn0uY3VzdG9tLWZpbGUtaW5wdXQ6bGFuZyhlbikgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVye2NvbnRlbnQ6IkJyb3dzZSJ9LmN1c3RvbS1maWxlLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7bGVmdDowO3otaW5kZXg6MTtoZWlnaHQ6Y2FsYygyLjgxMjVyZW0gKyAwKTtwYWRkaW5nOjAuNzVyZW0gMnJlbTtsaW5lLWhlaWdodDoxLjU7Y29sb3I6IzU1NTk1YztiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjk7Ym9yZGVyOjAgc29saWQgI2NlZDRkYTtib3JkZXItcmFkaXVzOjB9LmN1c3RvbS1maWxlLWxhYmVsOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6MztkaXNwbGF5OmJsb2NrO2hlaWdodDoyLjgxMjVyZW07cGFkZGluZzowLjc1cmVtIDJyZW07bGluZS1oZWlnaHQ6MS41O2NvbG9yOiM1NTU5NWM7Y29udGVudDoiQnJvd3NlIjtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VlZWY7Ym9yZGVyLWxlZnQ6MCBzb2xpZCAjY2VkNGRhO2JvcmRlci1yYWRpdXM6MCAwIDAgMH0uY3VzdG9tLXJhbmdle3dpZHRoOjEwMCU7cGFkZGluZy1sZWZ0OjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LmN1c3RvbS1yYW5nZTpmb2N1c3tvdXRsaW5lOm5vbmV9LmN1c3RvbS1yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuMjUpO2JveC1zaGFkb3c6MCAwIDAgMXB4ICNmZmYsMCAwIDAgMC4ycmVtIHJnYmEoMjYsMjYsMjYsMC4yNSl9LmN1c3RvbS1yYW5nZTpmb2N1czo6LW1vei1yYW5nZS10aHVtYntib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuMjUpfS5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYntib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuMjUpfS5jdXN0b20tcmFuZ2U6Oi1tb3otZm9jdXMtb3V0ZXJ7Ym9yZGVyOjB9LmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7d2lkdGg6MXJlbTtoZWlnaHQ6MXJlbTttYXJnaW4tdG9wOi0wLjI1cmVtO2JhY2tncm91bmQtY29sb3I6IzFhMWExYTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjFyZW07LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfX0uY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNzM3MzczfS5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNre3dpZHRoOjEwMCU7aGVpZ2h0OjAuNXJlbTtjb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VlZWY7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MXJlbX0uY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1ie3dpZHRoOjFyZW07aGVpZ2h0OjFyZW07YmFja2dyb3VuZC1jb2xvcjojMWExYTFhO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MXJlbTstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0Oy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX1AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsuY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iey13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX19LmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNzM3MzczfS5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2t7d2lkdGg6MTAwJTtoZWlnaHQ6MC41cmVtO2NvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6I2VjZWVlZjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxcmVtfS5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYnt3aWR0aDoxcmVtO2hlaWdodDoxcmVtO21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6MC4ycmVtO21hcmdpbi1sZWZ0OjAuMnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWE7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxcmVtOy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7YXBwZWFyYW5jZTpub25lfUBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYnstd2Via2l0LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9fS5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNzM3MzczfS5jdXN0b20tcmFuZ2U6Oi1tcy10cmFja3t3aWR0aDoxMDAlO2hlaWdodDowLjVyZW07Y29sb3I6dHJhbnNwYXJlbnQ7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjAuNXJlbX0uY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlcntiYWNrZ3JvdW5kLWNvbG9yOiNlY2VlZWY7Ym9yZGVyLXJhZGl1czoxcmVtfS5jdXN0b20tcmFuZ2U6Oi1tcy1maWxsLXVwcGVye21hcmdpbi1yaWdodDoxNXB4O2JhY2tncm91bmQtY29sb3I6I2VjZWVlZjtib3JkZXItcmFkaXVzOjFyZW19LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLmN1c3RvbS1maWxlLWxhYmVsLC5jdXN0b20tc2VsZWN0ey13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXR9QG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLmN1c3RvbS1maWxlLWxhYmVsLC5jdXN0b20tc2VsZWN0ey13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX19Lm5hdntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5uYXYtbGlua3tkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MC41cmVtIDFyZW19Lm5hdi1saW5rOmhvdmVyLC5uYXYtbGluazpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2LWxpbmsuZGlzYWJsZWR7Y29sb3I6IzkxOWFhMX0ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWVlZn0ubmF2LXRhYnMgLm5hdi1pdGVte21hcmdpbi1ib3R0b206LTFweH0ubmF2LXRhYnMgLm5hdi1saW5re2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lm5hdi10YWJzIC5uYXYtbGluazpob3ZlciwubmF2LXRhYnMgLm5hdi1saW5rOmZvY3Vze2JvcmRlci1jb2xvcjojZjdmN2Y5ICNmN2Y3ZjkgI2VjZWVlZn0ubmF2LXRhYnMgLm5hdi1saW5rLmRpc2FibGVke2NvbG9yOiM5MTlhYTE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm5hdi10YWJzIC5uYXYtbGluay5hY3RpdmUsLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGlua3tjb2xvcjojNTU1OTVjO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2VjZWVlZiAjZWNlZWVmICNmZmZ9Lm5hdi10YWJzIC5kcm9wZG93bi1tZW51e21hcmdpbi10b3A6LTFweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubmF2LXBpbGxzIC5uYXYtbGlua3tib3JkZXItcmFkaXVzOjB9Lm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLC5uYXYtcGlsbHMgLnNob3c+Lm5hdi1saW5re2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhfS5uYXYtZmlsbCAubmF2LWl0ZW17LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87dGV4dC1hbGlnbjpjZW50ZXJ9Lm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtey1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO3RleHQtYWxpZ246Y2VudGVyfS50YWItY29udGVudD4udGFiLXBhbmV7ZGlzcGxheTpub25lfS50YWItY29udGVudD4uYWN0aXZle2Rpc3BsYXk6YmxvY2t9Lm5hdmJhcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MS41cmVtIDFyZW19Lm5hdmJhcj4uY29udGFpbmVyLC5uYXZiYXI+LmNvbnRhaW5lci1mbHVpZHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5uYXZiYXItYnJhbmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy10b3A6MC4zMzU5Mzc1cmVtO3BhZGRpbmctYm90dG9tOjAuMzM1OTM3NXJlbTttYXJnaW4tcmlnaHQ6MXJlbTtmb250LXNpemU6MS4wOTM3NXJlbTtsaW5lLWhlaWdodDppbmhlcml0O3doaXRlLXNwYWNlOm5vd3JhcH0ubmF2YmFyLWJyYW5kOmhvdmVyLC5uYXZiYXItYnJhbmQ6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm5hdmJhci1uYXZ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5uYXZiYXItbmF2IC5uYXYtbGlua3twYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9Lm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246c3RhdGljO2Zsb2F0Om5vbmV9Lm5hdmJhci10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctdG9wOjAuNXJlbTtwYWRkaW5nLWJvdHRvbTowLjVyZW19Lm5hdmJhci1jb2xsYXBzZXstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZToxMDAlO2ZsZXgtYmFzaXM6MTAwJTstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MTstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0ubmF2YmFyLXRvZ2dsZXJ7cGFkZGluZzowLjI1cmVtIDAuNzVyZW07Zm9udC1zaXplOjEuMDkzNzVyZW07bGluZS1oZWlnaHQ6MTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowfS5uYXZiYXItdG9nZ2xlcjpob3ZlciwubmF2YmFyLXRvZ2dsZXI6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm5hdmJhci10b2dnbGVyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS5uYXZiYXItdG9nZ2xlci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEuNWVtO2hlaWdodDoxLjVlbTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOm5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9QG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KXsubmF2YmFyLWV4cGFuZC1zbT4uY29udGFpbmVyLC5uYXZiYXItZXhwYW5kLXNtPi5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfX1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey5uYXZiYXItZXhwYW5kLXNtey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZmxvdzpyb3cgbm93cmFwO2ZsZXgtZmxvdzpyb3cgbm93cmFwOy13ZWJraXQtYm94LXBhY2s6c3RhcnQ7LW1zLWZsZXgtcGFjazpzdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdnstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1kaXJlY3Rpb246cm93fS5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlfS5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5uYXYtbGlua3twYWRkaW5nLXJpZ2h0OjAuNXJlbTtwYWRkaW5nLWxlZnQ6MC41cmVtfS5uYXZiYXItZXhwYW5kLXNtPi5jb250YWluZXIsLm5hdmJhci1leHBhbmQtc20+LmNvbnRhaW5lci1mbHVpZHstbXMtZmxleC13cmFwOm5vd3JhcDtmbGV4LXdyYXA6bm93cmFwfS5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTotd2Via2l0LWJveCAhaW1wb3J0YW50O2Rpc3BsYXk6LW1zLWZsZXhib3ggIWltcG9ydGFudDtkaXNwbGF5OmZsZXggIWltcG9ydGFudDstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2ZsZXgtYmFzaXM6YXV0b30ubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXJ7ZGlzcGxheTpub25lfX1AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpey5uYXZiYXItZXhwYW5kLW1kPi5jb250YWluZXIsLm5hdmJhci1leHBhbmQtbWQ+LmNvbnRhaW5lci1mbHVpZHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7Lm5hdmJhci1leHBhbmQtbWR7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyBub3dyYXA7ZmxleC1mbG93OnJvdyBub3dyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6MC41cmVtO3BhZGRpbmctbGVmdDowLjVyZW19Lm5hdmJhci1leHBhbmQtbWQ+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZC1tZD4uY29udGFpbmVyLWZsdWlkey1tcy1mbGV4LXdyYXA6bm93cmFwO2ZsZXgtd3JhcDpub3dyYXB9Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5Oi13ZWJraXQtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCAhaW1wb3J0YW50Oy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87ZmxleC1iYXNpczphdXRvfS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCl7Lm5hdmJhci1leHBhbmQtbGc+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZC1sZz4uY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KXsubmF2YmFyLWV4cGFuZC1sZ3std2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWZsb3c6cm93IG5vd3JhcDtmbGV4LWZsb3c6cm93IG5vd3JhcDstd2Via2l0LWJveC1wYWNrOnN0YXJ0Oy1tcy1mbGV4LXBhY2s6c3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXZ7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvd30ubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0ubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmt7cGFkZGluZy1yaWdodDowLjVyZW07cGFkZGluZy1sZWZ0OjAuNXJlbX0ubmF2YmFyLWV4cGFuZC1sZz4uY29udGFpbmVyLC5uYXZiYXItZXhwYW5kLWxnPi5jb250YWluZXItZmx1aWR7LW1zLWZsZXgtd3JhcDpub3dyYXA7ZmxleC13cmFwOm5vd3JhcH0ubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNle2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4ICFpbXBvcnRhbnQ7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bztmbGV4LWJhc2lzOmF1dG99Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVye2Rpc3BsYXk6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCl7Lm5hdmJhci1leHBhbmQteGw+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZC14bD4uY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCl7Lm5hdmJhci1leHBhbmQteGx7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyBub3dyYXA7ZmxleC1mbG93OnJvdyBub3dyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6MC41cmVtO3BhZGRpbmctbGVmdDowLjVyZW19Lm5hdmJhci1leHBhbmQteGw+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZC14bD4uY29udGFpbmVyLWZsdWlkey1tcy1mbGV4LXdyYXA6bm93cmFwO2ZsZXgtd3JhcDpub3dyYXB9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5Oi13ZWJraXQtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCAhaW1wb3J0YW50Oy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87ZmxleC1iYXNpczphdXRvfS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9fS5uYXZiYXItZXhwYW5key13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZmxvdzpyb3cgbm93cmFwO2ZsZXgtZmxvdzpyb3cgbm93cmFwOy13ZWJraXQtYm94LXBhY2s6c3RhcnQ7LW1zLWZsZXgtcGFjazpzdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ubmF2YmFyLWV4cGFuZD4uY29udGFpbmVyLC5uYXZiYXItZXhwYW5kPi5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6MC41cmVtO3BhZGRpbmctbGVmdDowLjVyZW19Lm5hdmJhci1leHBhbmQ+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZD4uY29udGFpbmVyLWZsdWlkey1tcy1mbGV4LXdyYXA6bm93cmFwO2ZsZXgtd3JhcDpub3dyYXB9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5Oi13ZWJraXQtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCAhaW1wb3J0YW50Oy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87ZmxleC1iYXNpczphdXRvfS5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5ke2NvbG9yOiMxYTFhMWF9Lm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1c3tjb2xvcjojMWExYTFhfS5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5re2NvbG9yOnJnYmEoMCwwLDAsMC4zKX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1c3tjb2xvcjojMWExYTFhfS5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsMC4zKX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5zaG93Pi5uYXYtbGluaywubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5hY3RpdmU+Lm5hdi1saW5rLC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOiMxYTFhMWF9Lm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXJ7Y29sb3I6cmdiYSgwLDAsMCwwLjMpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDAuMSl9Lm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXItaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9J3JnYmEoMCwgMCwgMCwgMC4zKScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0UiKX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dHtjb2xvcjpyZ2JhKDAsMCwwLDAuMyl9Lm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYXtjb2xvcjojMWExYTFhfS5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6aG92ZXIsLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpmb2N1c3tjb2xvcjojMWExYTFhfS5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5ke2NvbG9yOiNmZmZ9Lm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIsLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6Zm9jdXN7Y29sb3I6I2ZmZn0ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5re2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC41KX0ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXN7Y29sb3I6I2ZmZn0ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4yNSl9Lm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5zaG93Pi5uYXYtbGluaywubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZT4ubmF2LWxpbmssLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOiNmZmZ9Lm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNSk7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4xKX0ubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFIil9Lm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNSl9Lm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhe2NvbG9yOiNmZmZ9Lm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmhvdmVyLC5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpmb2N1c3tjb2xvcjojZmZmfS5jYXJke3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjA7d29yZC13cmFwOmJyZWFrLXdvcmQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY2xpcDpib3JkZXItYm94O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjEyNSk7Ym9yZGVyLXJhZGl1czowfS5jYXJkPmhye21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9LmNhcmQ+Lmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uY2FyZD4ubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uY2FyZC1ib2R5ey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDEgYXV0bztmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MS4yNXJlbX0uY2FyZC10aXRsZXttYXJnaW4tYm90dG9tOjAuNzVyZW19LmNhcmQtc3VidGl0bGV7bWFyZ2luLXRvcDotMC4zNzVyZW07bWFyZ2luLWJvdHRvbTowfS5jYXJkLXRleHQ6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmNhcmQtbGluazpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2FyZC1saW5rKy5jYXJkLWxpbmt7bWFyZ2luLWxlZnQ6MS4yNXJlbX0uY2FyZC1oZWFkZXJ7cGFkZGluZzowLjc1cmVtIDEuMjVyZW07bWFyZ2luLWJvdHRvbTowO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjAzKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTI1KX0uY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czpjYWxjKDAgLSAxcHgpIGNhbGMoMCAtIDFweCkgMCAwfS5jYXJkLWhlYWRlcisubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxke2JvcmRlci10b3A6MH0uY2FyZC1mb290ZXJ7cGFkZGluZzowLjc1cmVtIDEuMjVyZW07YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMDMpO2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xMjUpfS5jYXJkLWZvb3RlcjpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MCAwIGNhbGMoMCAtIDFweCkgY2FsYygwIC0gMXB4KX0uY2FyZC1oZWFkZXItdGFic3ttYXJnaW4tcmlnaHQ6LTAuNjI1cmVtO21hcmdpbi1ib3R0b206LTAuNzVyZW07bWFyZ2luLWxlZnQ6LTAuNjI1cmVtO2JvcmRlci1ib3R0b206MH0uY2FyZC1oZWFkZXItcGlsbHN7bWFyZ2luLXJpZ2h0Oi0wLjYyNXJlbTttYXJnaW4tbGVmdDotMC42MjVyZW19LmNhcmQtaW1nLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7cGFkZGluZzoxLjI1cmVtfS5jYXJkLWltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6Y2FsYygwIC0gMXB4KX0uY2FyZC1pbWctdG9we3dpZHRoOjEwMCU7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKDAgLSAxcHgpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGMoMCAtIDFweCl9LmNhcmQtaW1nLWJvdHRvbXt3aWR0aDoxMDAlO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOmNhbGMoMCAtIDFweCk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKDAgLSAxcHgpfS5jYXJkLWRlY2t7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2FyZC1kZWNrIC5jYXJke21hcmdpbi1ib3R0b206MTVweH1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey5jYXJkLWRlY2t7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyB3cmFwO2ZsZXgtZmxvdzpyb3cgd3JhcDttYXJnaW4tcmlnaHQ6LTE1cHg7bWFyZ2luLWxlZnQ6LTE1cHh9LmNhcmQtZGVjayAuY2FyZHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDAgMCU7ZmxleDoxIDAgMCU7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLXJpZ2h0OjE1cHg7bWFyZ2luLWJvdHRvbTowO21hcmdpbi1sZWZ0OjE1cHh9fS5jYXJkLWdyb3Vwe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNhcmQtZ3JvdXA+LmNhcmR7bWFyZ2luLWJvdHRvbToxNXB4fUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LmNhcmQtZ3JvdXB7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyB3cmFwO2ZsZXgtZmxvdzpyb3cgd3JhcH0uY2FyZC1ncm91cD4uY2FyZHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIDAlO2ZsZXg6MSAwIDAlO21hcmdpbi1ib3R0b206MH0uY2FyZC1ncm91cD4uY2FyZCsuY2FyZHttYXJnaW4tbGVmdDowO2JvcmRlci1sZWZ0OjB9LmNhcmQtZ3JvdXA+LmNhcmQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5jYXJkLWdyb3VwPi5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy10b3AsLmNhcmQtZ3JvdXA+LmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaGVhZGVye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmNhcmQtZ3JvdXA+LmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwuY2FyZC1ncm91cD4uY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1mb290ZXJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpsYXN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmNhcmQtZ3JvdXA+LmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctdG9wLC5jYXJkLWdyb3VwPi5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaGVhZGVye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sLmNhcmQtZ3JvdXA+LmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1mb290ZXJ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5jYXJkLWdyb3VwPi5jYXJkOm9ubHktY2hpbGR7Ym9yZGVyLXJhZGl1czowfS5jYXJkLWdyb3VwPi5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaW1nLXRvcCwuY2FyZC1ncm91cD4uY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWhlYWRlcntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sLmNhcmQtZ3JvdXA+LmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmNhcmQtZ3JvdXA+LmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpe2JvcmRlci1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLXRvcCwuY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwuY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaGVhZGVyLC5jYXJkLWdyb3VwPi5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1mb290ZXJ7Ym9yZGVyLXJhZGl1czowfX0uY2FyZC1jb2x1bW5zIC5jYXJke21hcmdpbi1ib3R0b206MC43NXJlbX1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey5jYXJkLWNvbHVtbnN7LXdlYmtpdC1jb2x1bW4tY291bnQ6Mztjb2x1bW4tY291bnQ6Mzstd2Via2l0LWNvbHVtbi1nYXA6MS4yNXJlbTtjb2x1bW4tZ2FwOjEuMjVyZW07b3JwaGFuczoxO3dpZG93czoxfS5jYXJkLWNvbHVtbnMgLmNhcmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX19LmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpOm5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItYm90dG9tOjA7Ym9yZGVyLXJhZGl1czowfS5hY2NvcmRpb24gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKSAuY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowfS5hY2NvcmRpb24gLmNhcmQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmFjY29yZGlvbiAuY2FyZDpsYXN0LW9mLXR5cGV7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmJyZWFkY3J1bWJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7cGFkZGluZzowLjc1cmVtIDFyZW07bWFyZ2luLWJvdHRvbToxcmVtO2xpc3Qtc3R5bGU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MH0uYnJlYWRjcnVtYi1pdGVtKy5icmVhZGNydW1iLWl0ZW17cGFkZGluZy1sZWZ0OjAuNXJlbX0uYnJlYWRjcnVtYi1pdGVtKy5icmVhZGNydW1iLWl0ZW06OmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXJpZ2h0OjAuNXJlbTtjb2xvcjojOTE5YWExO2NvbnRlbnQ6Ii8ifS5icmVhZGNydW1iLWl0ZW0rLmJyZWFkY3J1bWItaXRlbTpob3Zlcjo6YmVmb3Jle3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmJyZWFkY3J1bWItaXRlbSsuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmJyZWFkY3J1bWItaXRlbS5hY3RpdmV7Y29sb3I6IzkxOWFhMX0ucGFnaW5hdGlvbntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjB9LnBhZ2UtbGlua3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MC41cmVtIDAuNzVyZW07bWFyZ2luLWxlZnQ6LTFweDtsaW5lLWhlaWdodDoxLjI1O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9LnBhZ2UtbGluazpob3Zlcnt6LWluZGV4OjI7Y29sb3I6YmxhY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ucGFnZS1saW5rOmZvY3Vze3otaW5kZXg6MjtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDI2LDI2LDI2LDAuMjUpO2JveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjYsMjYsMjYsMC4yNSl9LnBhZ2UtbGluazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn0ucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmt7bWFyZ2luLWxlZnQ6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5re2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5re3otaW5kZXg6MTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzFhMWExYTtib3JkZXItY29sb3I6IzFhMWExYX0ucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmt7Y29sb3I6IzkxOWFhMTtwb2ludGVyLWV2ZW50czpub25lO2N1cnNvcjphdXRvO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnBhZ2luYXRpb24tbGcgLnBhZ2UtbGlua3twYWRkaW5nOjAuNzVyZW0gMS41cmVtO2ZvbnQtc2l6ZToxLjA5Mzc1cmVtO2xpbmUtaGVpZ2h0OjEuNX0ucGFnaW5hdGlvbi1sZyAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmt7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ucGFnaW5hdGlvbi1sZyAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGlua3tib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnBhZ2luYXRpb24tc20gLnBhZ2UtbGlua3twYWRkaW5nOjAuMjVyZW0gMC41cmVtO2ZvbnQtc2l6ZTowLjc2NTYyNXJlbTtsaW5lLWhlaWdodDoxLjV9LnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5re2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmt7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjAuMjVlbSAwLjRlbTtmb250LXNpemU6NzUlO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtib3JkZXItcmFkaXVzOjB9LmJhZGdlOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYnRuIC5iYWRnZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweH0uYmFkZ2UtcGlsbHtwYWRkaW5nLXJpZ2h0OjAuNmVtO3BhZGRpbmctbGVmdDowLjZlbTtib3JkZXItcmFkaXVzOjEwcmVtfS5iYWRnZS1wcmltYXJ5e2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhfS5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLC5iYWRnZS1wcmltYXJ5W2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMDEwMDAwfS5iYWRnZS1zZWNvbmRhcnl7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJhZGdlLXNlY29uZGFyeVtocmVmXTpob3ZlciwuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3Vze2NvbG9yOiMxYTFhMWE7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZTZlNWU1fS5iYWRnZS1zdWNjZXNze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNEJCRjczfS5iYWRnZS1zdWNjZXNzW2hyZWZdOmhvdmVyLC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMzg5ZjVjfS5iYWRnZS1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMUY5QkNGfS5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLC5iYWRnZS1pbmZvW2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMTg3YWEzfS5iYWRnZS13YXJuaW5ne2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZjBhZDRlfS5iYWRnZS13YXJuaW5nW2hyZWZdOmhvdmVyLC5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWM5NzFmfS5iYWRnZS1kYW5nZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGZ9LmJhZGdlLWRhbmdlcltocmVmXTpob3ZlciwuYmFkZ2UtZGFuZ2VyW2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjfS5iYWRnZS1saWdodHtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsLmJhZGdlLWxpZ2h0W2hyZWZdOmZvY3Vze2NvbG9yOiMxYTFhMWE7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZTZlNWU1fS5iYWRnZS1kYXJre2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwfS5iYWRnZS1kYXJrW2hyZWZdOmhvdmVyLC5iYWRnZS1kYXJrW2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMWQyMTI0fS5qdW1ib3Ryb257cGFkZGluZzoycmVtIDFyZW07bWFyZ2luLWJvdHRvbToycmVtO2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmOTtib3JkZXItcmFkaXVzOjB9QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsuanVtYm90cm9ue3BhZGRpbmc6NHJlbSAycmVtfX0uanVtYm90cm9uLWZsdWlke3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MDtib3JkZXItcmFkaXVzOjB9LmFsZXJ0e3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MC43NXJlbSAxLjI1cmVtO21hcmdpbi1ib3R0b206MXJlbTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MH0uYWxlcnQtaGVhZGluZ3tjb2xvcjppbmhlcml0fS5hbGVydC1saW5re2ZvbnQtd2VpZ2h0OjcwMH0uYWxlcnQtZGlzbWlzc2libGV7cGFkZGluZy1yaWdodDozLjgxMjVyZW19LmFsZXJ0LWRpc21pc3NpYmxlIC5jbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO3BhZGRpbmc6MC43NXJlbSAxLjI1cmVtO2NvbG9yOmluaGVyaXR9LmFsZXJ0LXByaW1hcnl7Y29sb3I6IzBlMGUwZTtiYWNrZ3JvdW5kLWNvbG9yOiNkMWQxZDE7Ym9yZGVyLWNvbG9yOiNiZmJmYmZ9LmFsZXJ0LXByaW1hcnkgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYjJiMmIyfS5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5re2NvbG9yOmJsYWNrfS5hbGVydC1zZWNvbmRhcnl7Y29sb3I6Izg1ODU4NTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO2JvcmRlci1jb2xvcjp3aGl0ZX0uYWxlcnQtc2Vjb25kYXJ5IGhye2JvcmRlci10b3AtY29sb3I6I2YyZjJmMn0uYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5re2NvbG9yOiM2YzZiNmJ9LmFsZXJ0LXN1Y2Nlc3N7Y29sb3I6IzI3NjMzYztiYWNrZ3JvdW5kLWNvbG9yOiNkYmYyZTM7Ym9yZGVyLWNvbG9yOiNjZGVkZDh9LmFsZXJ0LXN1Y2Nlc3MgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYmFlNmM5fS5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5re2NvbG9yOiMxOTNlMjZ9LmFsZXJ0LWluZm97Y29sb3I6IzEwNTE2YztiYWNrZ3JvdW5kLWNvbG9yOiNkMmViZjU7Ym9yZGVyLWNvbG9yOiNjMGUzZjJ9LmFsZXJ0LWluZm8gaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYWJkYWVlfS5hbGVydC1pbmZvIC5hbGVydC1saW5re2NvbG9yOiMwOTMwNDB9LmFsZXJ0LXdhcm5pbmd7Y29sb3I6IzdkNWEyOTtiYWNrZ3JvdW5kLWNvbG9yOiNmY2VmZGM7Ym9yZGVyLWNvbG9yOiNmYmU4Y2R9LmFsZXJ0LXdhcm5pbmcgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojZjlkZGI1fS5hbGVydC13YXJuaW5nIC5hbGVydC1saW5re2NvbG9yOiM1NzNlMWN9LmFsZXJ0LWRhbmdlcntjb2xvcjojNzEyYjI5O2JhY2tncm91bmQtY29sb3I6I2Y3ZGRkYztib3JkZXItY29sb3I6I2Y0Y2ZjZX0uYWxlcnQtZGFuZ2VyIGhye2JvcmRlci10b3AtY29sb3I6I2VmYmJiOX0uYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5re2NvbG9yOiM0YzFkMWJ9LmFsZXJ0LWxpZ2h0e2NvbG9yOiM4NTg1ODU7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtib3JkZXItY29sb3I6d2hpdGV9LmFsZXJ0LWxpZ2h0IGhye2JvcmRlci10b3AtY29sb3I6I2YyZjJmMn0uYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmt7Y29sb3I6IzZjNmI2Yn0uYWxlcnQtZGFya3tjb2xvcjojMWIxZTIxO2JhY2tncm91bmQtY29sb3I6I2Q2ZDhkOTtib3JkZXItY29sb3I6I2M2YzhjYX0uYWxlcnQtZGFyayBocntib3JkZXItdG9wLWNvbG9yOiNiOWJiYmV9LmFsZXJ0LWRhcmsgLmFsZXJ0LWxpbmt7Y29sb3I6IzA0MDUwNX1ALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjFyZW0gMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH19QGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246MXJlbSAwfXRve2JhY2tncm91bmQtcG9zaXRpb246MCAwfX0ucHJvZ3Jlc3N7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MXJlbTtvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOjAuNjU2MjVyZW07YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5O2JvcmRlci1yYWRpdXM6MH0ucHJvZ3Jlc3MtYmFye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWE7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIDAuNnMgZWFzZTt0cmFuc2l0aW9uOndpZHRoIDAuNnMgZWFzZX1AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsucHJvZ3Jlc3MtYmFyey13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX19LnByb2dyZXNzLWJhci1zdHJpcGVke2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LDI1NSwyNTUsMC4xNSkgNTAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1zaXplOjFyZW0gMXJlbX0ucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkey13ZWJraXQtYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlfS5tZWRpYXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lm1lZGlhLWJvZHl7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxfS5saXN0LWdyb3Vwe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWJvdHRvbTowfS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9ue3dpZHRoOjEwMCU7Y29sb3I6IzU1NTk1Yzt0ZXh0LWFsaWduOmluaGVyaXR9Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXN7Y29sb3I6IzU1NTk1Yzt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY5ZmF9Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246YWN0aXZle2NvbG9yOiM5MTlhYTE7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5fS5saXN0LWdyb3VwLWl0ZW17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nOjAuNzVyZW0gMS4yNXJlbTttYXJnaW4tYm90dG9tOi0xcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjEyNSl9Lmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5saXN0LWdyb3VwLWl0ZW06aG92ZXIsLmxpc3QtZ3JvdXAtaXRlbTpmb2N1c3t6LWluZGV4OjE7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwubGlzdC1ncm91cC1pdGVtOmRpc2FibGVke2NvbG9yOiM5MTlhYTE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle3otaW5kZXg6Mjtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzFhMWExYTtib3JkZXItY29sb3I6IzFhMWExYX0ubGlzdC1ncm91cC1mbHVzaCAubGlzdC1ncm91cC1pdGVte2JvcmRlci1yaWdodDowO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJhZGl1czowfS5saXN0LWdyb3VwLWZsdXNoOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDowfS5saXN0LWdyb3VwLWZsdXNoOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MH0ubGlzdC1ncm91cC1pdGVtLXByaW1hcnl7Y29sb3I6IzBlMGUwZTtiYWNrZ3JvdW5kLWNvbG9yOiNiZmJmYmZ9Lmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXN7Y29sb3I6IzBlMGUwZTtiYWNrZ3JvdW5kLWNvbG9yOiNiMmIyYjJ9Lmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMGUwZTBlO2JvcmRlci1jb2xvcjojMGUwZTBlfS5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5e2NvbG9yOiM4NTg1ODU7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZX0ubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLC5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXN7Y29sb3I6Izg1ODU4NTtiYWNrZ3JvdW5kLWNvbG9yOiNmMmYyZjJ9Lmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM4NTg1ODU7Ym9yZGVyLWNvbG9yOiM4NTg1ODV9Lmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMyNzYzM2M7YmFja2dyb3VuZC1jb2xvcjojY2RlZGQ4fS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3Vze2NvbG9yOiMyNzYzM2M7YmFja2dyb3VuZC1jb2xvcjojYmFlNmM5fS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzI3NjMzYztib3JkZXItY29sb3I6IzI3NjMzY30ubGlzdC1ncm91cC1pdGVtLWluZm97Y29sb3I6IzEwNTE2YztiYWNrZ3JvdW5kLWNvbG9yOiNjMGUzZjJ9Lmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXN7Y29sb3I6IzEwNTE2YztiYWNrZ3JvdW5kLWNvbG9yOiNhYmRhZWV9Lmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMTA1MTZjO2JvcmRlci1jb2xvcjojMTA1MTZjfS5saXN0LWdyb3VwLWl0ZW0td2FybmluZ3tjb2xvcjojN2Q1YTI5O2JhY2tncm91bmQtY29sb3I6I2ZiZThjZH0ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1c3tjb2xvcjojN2Q1YTI5O2JhY2tncm91bmQtY29sb3I6I2Y5ZGRiNX0ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM3ZDVhMjk7Ym9yZGVyLWNvbG9yOiM3ZDVhMjl9Lmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXJ7Y29sb3I6IzcxMmIyOTtiYWNrZ3JvdW5kLWNvbG9yOiNmNGNmY2V9Lmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3Vze2NvbG9yOiM3MTJiMjk7YmFja2dyb3VuZC1jb2xvcjojZWZiYmI5fS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNzEyYjI5O2JvcmRlci1jb2xvcjojNzEyYjI5fS5saXN0LWdyb3VwLWl0ZW0tbGlnaHR7Y29sb3I6Izg1ODU4NTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlfS5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXN7Y29sb3I6Izg1ODU4NTtiYWNrZ3JvdW5kLWNvbG9yOiNmMmYyZjJ9Lmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6Izg1ODU4NTtib3JkZXItY29sb3I6Izg1ODU4NX0ubGlzdC1ncm91cC1pdGVtLWRhcmt7Y29sb3I6IzFiMWUyMTtiYWNrZ3JvdW5kLWNvbG9yOiNjNmM4Y2F9Lmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXN7Y29sb3I6IzFiMWUyMTtiYWNrZ3JvdW5kLWNvbG9yOiNiOWJiYmV9Lmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWIxZTIxO2JvcmRlci1jb2xvcjojMWIxZTIxfS5jbG9zZXtmbG9hdDpyaWdodDtmb250LXNpemU6MS4zMTI1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxO2NvbG9yOiMwMDA7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6LjV9LmNsb3NlOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwuY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6Zm9jdXN7Y29sb3I6IzAwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtvcGFjaXR5Oi43NX1idXR0b24uY2xvc2V7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1vZGFsLW9wZW57b3ZlcmZsb3c6aGlkZGVufS5tb2RhbC1vcGVuIC5tb2RhbHtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG99Lm1vZGFse3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTA1MDtkaXNwbGF5Om5vbmU7b3ZlcmZsb3c6aGlkZGVuO291dGxpbmU6MH0ubW9kYWwtZGlhbG9ne3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOmF1dG87bWFyZ2luOjAuNXJlbTtwb2ludGVyLWV2ZW50czpub25lfS5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2d7LXdlYmtpdC10cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgLTI1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtMjUlKX1AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9ney13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX19Lm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZ3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAwKX0ubW9kYWwtZGlhbG9nLWNlbnRlcmVke2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLWhlaWdodDpjYWxjKDEwMCUgLSAoMC41cmVtICogMikpfS5tb2RhbC1kaWFsb2ctY2VudGVyZWQ6OmJlZm9yZXtkaXNwbGF5OmJsb2NrO2hlaWdodDpjYWxjKDEwMHZoIC0gKDAuNXJlbSAqIDIpKTtjb250ZW50OiIifS5tb2RhbC1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czphdXRvO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7Ym9yZGVyLXJhZGl1czowO291dGxpbmU6MH0ubW9kYWwtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxMDQwO2JhY2tncm91bmQtY29sb3I6IzAwMH0ubW9kYWwtYmFja2Ryb3AuZmFkZXtvcGFjaXR5OjB9Lm1vZGFsLWJhY2tkcm9wLnNob3d7b3BhY2l0eTowLjV9Lm1vZGFsLWhlYWRlcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjFyZW07Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Y3ZjdmOTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubW9kYWwtaGVhZGVyIC5jbG9zZXtwYWRkaW5nOjFyZW07bWFyZ2luOi0xcmVtIC0xcmVtIC0xcmVtIGF1dG99Lm1vZGFsLXRpdGxle21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDoxLjV9Lm1vZGFsLWJvZHl7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxcmVtfS5tb2RhbC1mb290ZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmVuZDstbXMtZmxleC1wYWNrOmVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZzoxcmVtO2JvcmRlci10b3A6MXB4IHNvbGlkICNmN2Y3Zjl9Lm1vZGFsLWZvb3Rlcj46bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6LjI1cmVtfS5tb2RhbC1mb290ZXI+Om5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTk5cHg7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpzY3JvbGx9QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsubW9kYWwtZGlhbG9ne21heC13aWR0aDo1MDBweDttYXJnaW46MS43NXJlbSBhdXRvfS5tb2RhbC1kaWFsb2ctY2VudGVyZWR7bWluLWhlaWdodDpjYWxjKDEwMCUgLSAoMS43NXJlbSAqIDIpKX0ubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmV7aGVpZ2h0OmNhbGMoMTAwdmggLSAoMS43NXJlbSAqIDIpKX0ubW9kYWwtc217bWF4LXdpZHRoOjMwMHB4fX1AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpey5tb2RhbC1sZ3ttYXgtd2lkdGg6ODAwcHh9fS50b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3MDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2ZvbnQtZmFtaWx5OiJOdW5pdG8gU2FucyIsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzpub25lO3RleHQtdHJhbnNmb3JtOm5vbmU7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO2xpbmUtYnJlYWs6YXV0bztmb250LXNpemU6MC43NjU2MjVyZW07d29yZC13cmFwOmJyZWFrLXdvcmQ7b3BhY2l0eTowfS50b29sdGlwLnNob3d7b3BhY2l0eTowLjl9LnRvb2x0aXAgLmFycm93e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MC44cmVtO2hlaWdodDowLjRyZW19LnRvb2x0aXAgLmFycm93OjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5icy10b29sdGlwLXRvcCwuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl17cGFkZGluZzowLjRyZW0gMH0uYnMtdG9vbHRpcC10b3AgLmFycm93LC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3d7Ym90dG9tOjB9LmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZXt0b3A6MDtib3JkZXItd2lkdGg6MC40cmVtIDAuNHJlbSAwO2JvcmRlci10b3AtY29sb3I6IzAwMH0uYnMtdG9vbHRpcC1yaWdodCwuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXXtwYWRkaW5nOjAgMC40cmVtfS5icy10b29sdGlwLXJpZ2h0IC5hcnJvdywuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3d7bGVmdDowO3dpZHRoOjAuNHJlbTtoZWlnaHQ6MC44cmVtfS5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3Jle3JpZ2h0OjA7Ym9yZGVyLXdpZHRoOjAuNHJlbSAwLjRyZW0gMC40cmVtIDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMwMDB9LmJzLXRvb2x0aXAtYm90dG9tLC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXXtwYWRkaW5nOjAuNHJlbSAwfS5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvd3t0b3A6MH0uYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3Jle2JvdHRvbTowO2JvcmRlci13aWR0aDowIDAuNHJlbSAwLjRyZW07Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAwfS5icy10b29sdGlwLWxlZnQsLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXXtwYWRkaW5nOjAgMC40cmVtfS5icy10b29sdGlwLWxlZnQgLmFycm93LC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93e3JpZ2h0OjA7d2lkdGg6MC40cmVtO2hlaWdodDowLjhyZW19LmJzLXRvb2x0aXAtbGVmdCAuYXJyb3c6OmJlZm9yZSwuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3Jle2xlZnQ6MDtib3JkZXItd2lkdGg6MC40cmVtIDAgMC40cmVtIDAuNHJlbTtib3JkZXItbGVmdC1jb2xvcjojMDAwfS50b29sdGlwLWlubmVye21heC13aWR0aDoyMDBweDtwYWRkaW5nOjAuMjVyZW0gMC41cmVtO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6MH0ucG9wb3Zlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDoxMDYwO2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjI3NnB4O2ZvbnQtZmFtaWx5OiJOdW5pdG8gU2FucyIsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzpub25lO3RleHQtdHJhbnNmb3JtOm5vbmU7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO2xpbmUtYnJlYWs6YXV0bztmb250LXNpemU6MC43NjU2MjVyZW07d29yZC13cmFwOmJyZWFrLXdvcmQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4yKTtib3JkZXItcmFkaXVzOjB9LnBvcG92ZXIgLmFycm93e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MXJlbTtoZWlnaHQ6MC41cmVtO21hcmdpbjowIDB9LnBvcG92ZXIgLmFycm93OjpiZWZvcmUsLnBvcG92ZXIgLmFycm93OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiI7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0uYnMtcG9wb3Zlci10b3AsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJde21hcmdpbi1ib3R0b206MC41cmVtfS5icy1wb3BvdmVyLXRvcCAuYXJyb3csLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvd3tib3R0b206Y2FsYygoMC41cmVtICsgMXB4KSAqIC0xKX0uYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmFmdGVye2JvcmRlci13aWR0aDowLjVyZW0gMC41cmVtIDB9LmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZXtib3R0b206MDtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsMC4yNSl9LmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXJ7Ym90dG9tOjFweDtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LmJzLXBvcG92ZXItcmlnaHQsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il17bWFyZ2luLWxlZnQ6MC41cmVtfS5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdywuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3d7bGVmdDpjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpO3dpZHRoOjAuNXJlbTtoZWlnaHQ6MXJlbTttYXJnaW46MCAwfS5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjphZnRlcntib3JkZXItd2lkdGg6MC41cmVtIDAuNXJlbSAwLjVyZW0gMH0uYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmJlZm9yZXtsZWZ0OjA7Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMC4yNSl9LmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjphZnRlciwuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVye2xlZnQ6MXB4O2JvcmRlci1yaWdodC1jb2xvcjojZmZmfS5icy1wb3BvdmVyLWJvdHRvbSwuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl17bWFyZ2luLXRvcDowLjVyZW19LmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdywuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93e3RvcDpjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpfS5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjAgMC41cmVtIDAuNXJlbSAwLjVyZW19LmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZXt0b3A6MDtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsMC4yNSl9LmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXJ7dG9wOjFweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjUwJTtkaXNwbGF5OmJsb2NrO3dpZHRoOjFyZW07bWFyZ2luLWxlZnQ6LTAuNXJlbTtjb250ZW50OiIiO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmN2Y3Zjd9LmJzLXBvcG92ZXItbGVmdCwuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJde21hcmdpbi1yaWdodDowLjVyZW19LmJzLXBvcG92ZXItbGVmdCAuYXJyb3csLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3d7cmlnaHQ6Y2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTt3aWR0aDowLjVyZW07aGVpZ2h0OjFyZW07bWFyZ2luOjAgMH0uYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjphZnRlcntib3JkZXItd2lkdGg6MC41cmVtIDAgMC41cmVtIDAuNXJlbX0uYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmV7cmlnaHQ6MDtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLDAuMjUpfS5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YWZ0ZXJ7cmlnaHQ6MXB4O2JvcmRlci1sZWZ0LWNvbG9yOiNmZmZ9LnBvcG92ZXItaGVhZGVye3BhZGRpbmc6MC41cmVtIDAuNzVyZW07bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTowLjg3NXJlbTtjb2xvcjojMWExYTFhO2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYygwIC0gMXB4KTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czpjYWxjKDAgLSAxcHgpfS5wb3BvdmVyLWhlYWRlcjplbXB0eXtkaXNwbGF5Om5vbmV9LnBvcG92ZXItYm9keXtwYWRkaW5nOjAuNXJlbSAwLjc1cmVtO2NvbG9yOiM5MTlhYTF9LmNhcm91c2Vse3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXJvdXNlbC1pbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0uY2Fyb3VzZWwtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtcGVyc3BlY3RpdmU6MTAwMHB4O3BlcnNwZWN0aXZlOjEwMDBweH0uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsLmNhcm91c2VsLWl0ZW0tbmV4dCwuY2Fyb3VzZWwtaXRlbS1wcmV2e2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC10cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIDAuNnMgZWFzZTt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIDAuNnMgZWFzZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjZzIGVhc2U7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC42cyBlYXNlLCAtd2Via2l0LXRyYW5zZm9ybSAwLjZzIGVhc2V9QG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LmNhcm91c2VsLWl0ZW0uYWN0aXZlLC5jYXJvdXNlbC1pdGVtLW5leHQsLmNhcm91c2VsLWl0ZW0tcHJldnstd2Via2l0LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9fS5jYXJvdXNlbC1pdGVtLW5leHQsLmNhcm91c2VsLWl0ZW0tcHJldntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0uY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX1Ac3VwcG9ydHMgKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Qpey5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCl9fS5jYXJvdXNlbC1pdGVtLW5leHQsLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9QHN1cHBvcnRzICgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIG9yICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKXsuY2Fyb3VzZWwtaXRlbS1uZXh0LC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwgMCwgMCl9fS5jYXJvdXNlbC1pdGVtLXByZXYsLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfUBzdXBwb3J0cyAoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCl7LmNhcm91c2VsLWl0ZW0tcHJldiwuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKX19LmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW17b3BhY2l0eTowOy13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjouNnM7dHJhbnNpdGlvbi1kdXJhdGlvbjouNnM7LXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5fS5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHR7b3BhY2l0eToxfS5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodHtvcGFjaXR5OjB9LmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfUBzdXBwb3J0cyAoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCl7LmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCl9fS5jYXJvdXNlbC1jb250cm9sLXByZXYsLmNhcm91c2VsLWNvbnRyb2wtbmV4dHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTUlO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7b3BhY2l0eTowLjV9LmNhcm91c2VsLWNvbnRyb2wtcHJldjpob3ZlciwuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLC5jYXJvdXNlbC1jb250cm9sLW5leHQ6aG92ZXIsLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpmb2N1c3tjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MDtvcGFjaXR5Oi45fS5jYXJvdXNlbC1jb250cm9sLXByZXZ7bGVmdDowfS5jYXJvdXNlbC1jb250cm9sLW5leHR7cmlnaHQ6MH0uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudCBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNNS4yNSAwbC00IDQgNCA0IDEuNS0xLjUtMi41LTIuNSAyLjUtMi41LTEuNS0xLjV6Jy8lM0UlM0Mvc3ZnJTNFIil9LmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgdmlld0JveD0nMCAwIDggOCclM0UlM0NwYXRoIGQ9J00yLjc1IDBsLTEuNSAxLjUgMi41IDIuNS0yLjUgMi41IDEuNSAxLjUgNC00LTQtNHonLyUzRSUzQy9zdmclM0UiKX0uY2Fyb3VzZWwtaW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbToxMHB4O2xlZnQ6MDt6LWluZGV4OjE1O2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MTUlO21hcmdpbi1sZWZ0OjE1JTtsaXN0LXN0eWxlOm5vbmV9LmNhcm91c2VsLWluZGljYXRvcnMgbGl7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMSBhdXRvO2ZsZXg6MCAxIGF1dG87d2lkdGg6MzBweDtoZWlnaHQ6M3B4O21hcmdpbi1yaWdodDozcHg7bWFyZ2luLWxlZnQ6M3B4O3RleHQtaW5kZW50Oi05OTlweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC41KX0uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaTo6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTBweDtsZWZ0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTBweDtjb250ZW50OiIifS5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTEwcHg7bGVmdDowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwcHg7Y29udGVudDoiIn0uY2Fyb3VzZWwtaW5kaWNhdG9ycyAuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2ZmZn0uY2Fyb3VzZWwtY2FwdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxNSU7Ym90dG9tOjIwcHg7bGVmdDoxNSU7ei1pbmRleDoxMDtwYWRkaW5nLXRvcDoyMHB4O3BhZGRpbmctYm90dG9tOjIwcHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcn0uYWxpZ24tYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUgIWltcG9ydGFudH0uYWxpZ24tdG9we3ZlcnRpY2FsLWFsaWduOnRvcCAhaW1wb3J0YW50fS5hbGlnbi1taWRkbGV7dmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnR9LmFsaWduLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b20gIWltcG9ydGFudH0uYWxpZ24tdGV4dC1ib3R0b217dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b20gIWltcG9ydGFudH0uYWxpZ24tdGV4dC10b3B7dmVydGljYWwtYWxpZ246dGV4dC10b3AgIWltcG9ydGFudH0uYmctcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWEgIWltcG9ydGFudH1hLmJnLXByaW1hcnk6aG92ZXIsYS5iZy1wcmltYXJ5OmZvY3VzLGJ1dHRvbi5iZy1wcmltYXJ5OmhvdmVyLGJ1dHRvbi5iZy1wcmltYXJ5OmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzAxMDAwMCAhaW1wb3J0YW50fS5iZy1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojZmZmICFpbXBvcnRhbnR9YS5iZy1zZWNvbmRhcnk6aG92ZXIsYS5iZy1zZWNvbmRhcnk6Zm9jdXMsYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlcixidXR0b24uYmctc2Vjb25kYXJ5OmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U2ZTVlNSAhaW1wb3J0YW50fS5iZy1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzRCQkY3MyAhaW1wb3J0YW50fWEuYmctc3VjY2Vzczpob3ZlcixhLmJnLXN1Y2Nlc3M6Zm9jdXMsYnV0dG9uLmJnLXN1Y2Nlc3M6aG92ZXIsYnV0dG9uLmJnLXN1Y2Nlc3M6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojMzg5ZjVjICFpbXBvcnRhbnR9LmJnLWluZm97YmFja2dyb3VuZC1jb2xvcjojMUY5QkNGICFpbXBvcnRhbnR9YS5iZy1pbmZvOmhvdmVyLGEuYmctaW5mbzpmb2N1cyxidXR0b24uYmctaW5mbzpob3ZlcixidXR0b24uYmctaW5mbzpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiMxODdhYTMgIWltcG9ydGFudH0uYmctd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmMGFkNGUgIWltcG9ydGFudH1hLmJnLXdhcm5pbmc6aG92ZXIsYS5iZy13YXJuaW5nOmZvY3VzLGJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLGJ1dHRvbi5iZy13YXJuaW5nOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2VjOTcxZiAhaW1wb3J0YW50fS5iZy1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZDk1MzRmICFpbXBvcnRhbnR9YS5iZy1kYW5nZXI6aG92ZXIsYS5iZy1kYW5nZXI6Zm9jdXMsYnV0dG9uLmJnLWRhbmdlcjpob3ZlcixidXR0b24uYmctZGFuZ2VyOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2M5MzAyYyAhaW1wb3J0YW50fS5iZy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYgIWltcG9ydGFudH1hLmJnLWxpZ2h0OmhvdmVyLGEuYmctbGlnaHQ6Zm9jdXMsYnV0dG9uLmJnLWxpZ2h0OmhvdmVyLGJ1dHRvbi5iZy1saWdodDpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNlNmU1ZTUgIWltcG9ydGFudH0uYmctZGFya3tiYWNrZ3JvdW5kLWNvbG9yOiMzNDNhNDAgIWltcG9ydGFudH1hLmJnLWRhcms6aG92ZXIsYS5iZy1kYXJrOmZvY3VzLGJ1dHRvbi5iZy1kYXJrOmhvdmVyLGJ1dHRvbi5iZy1kYXJrOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzFkMjEyNCAhaW1wb3J0YW50fS5iZy13aGl0ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYgIWltcG9ydGFudH0uYmctdHJhbnNwYXJlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50fS5ib3JkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZWNlZWVmICFpbXBvcnRhbnR9LmJvcmRlci10b3B7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VjZWVlZiAhaW1wb3J0YW50fS5ib3JkZXItcmlnaHR7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWNlZWVmICFpbXBvcnRhbnR9LmJvcmRlci1ib3R0b217Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWVlZiAhaW1wb3J0YW50fS5ib3JkZXItbGVmdHtib3JkZXItbGVmdDoxcHggc29saWQgI2VjZWVlZiAhaW1wb3J0YW50fS5ib3JkZXItMHtib3JkZXI6MCAhaW1wb3J0YW50fS5ib3JkZXItdG9wLTB7Ym9yZGVyLXRvcDowICFpbXBvcnRhbnR9LmJvcmRlci1yaWdodC0we2JvcmRlci1yaWdodDowICFpbXBvcnRhbnR9LmJvcmRlci1ib3R0b20tMHtib3JkZXItYm90dG9tOjAgIWltcG9ydGFudH0uYm9yZGVyLWxlZnQtMHtib3JkZXItbGVmdDowICFpbXBvcnRhbnR9LmJvcmRlci1wcmltYXJ5e2JvcmRlci1jb2xvcjojMWExYTFhICFpbXBvcnRhbnR9LmJvcmRlci1zZWNvbmRhcnl7Ym9yZGVyLWNvbG9yOiNmZmYgIWltcG9ydGFudH0uYm9yZGVyLXN1Y2Nlc3N7Ym9yZGVyLWNvbG9yOiM0QkJGNzMgIWltcG9ydGFudH0uYm9yZGVyLWluZm97Ym9yZGVyLWNvbG9yOiMxRjlCQ0YgIWltcG9ydGFudH0uYm9yZGVyLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOiNmMGFkNGUgIWltcG9ydGFudH0uYm9yZGVyLWRhbmdlcntib3JkZXItY29sb3I6I2Q5NTM0ZiAhaW1wb3J0YW50fS5ib3JkZXItbGlnaHR7Ym9yZGVyLWNvbG9yOiNmZmYgIWltcG9ydGFudH0uYm9yZGVyLWRhcmt7Ym9yZGVyLWNvbG9yOiMzNDNhNDAgIWltcG9ydGFudH0uYm9yZGVyLXdoaXRle2JvcmRlci1jb2xvcjojZmZmICFpbXBvcnRhbnR9LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czowICFpbXBvcnRhbnR9LnJvdW5kZWQtdG9we2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjAgIWltcG9ydGFudH0ucm91bmRlZC1yaWdodHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50fS5yb3VuZGVkLWJvdHRvbXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnR9LnJvdW5kZWQtbGVmdHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudH0ucm91bmRlZC1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCUgIWltcG9ydGFudH0ucm91bmRlZC0we2JvcmRlci1yYWRpdXM6MCAhaW1wb3J0YW50fS5jbGVhcmZpeDo6YWZ0ZXJ7ZGlzcGxheTpibG9jaztjbGVhcjpib3RoO2NvbnRlbnQ6IiJ9LmQtbm9uZXtkaXNwbGF5Om5vbmUgIWltcG9ydGFudH0uZC1pbmxpbmV7ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudH0uZC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2sgIWltcG9ydGFudH0uZC1ibG9ja3tkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnR9LmQtdGFibGV7ZGlzcGxheTp0YWJsZSAhaW1wb3J0YW50fS5kLXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyAhaW1wb3J0YW50fS5kLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsICFpbXBvcnRhbnR9LmQtZmxleHtkaXNwbGF5Oi13ZWJraXQtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCAhaW1wb3J0YW50fS5kLWlubGluZS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1mbGV4ICFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsuZC1zbS1ub25le2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5kLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50fS5kLXNtLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50fS5kLXNtLWJsb2Nre2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudH0uZC1zbS10YWJsZXtkaXNwbGF5OnRhYmxlICFpbXBvcnRhbnR9LmQtc20tdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93ICFpbXBvcnRhbnR9LmQtc20tdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwgIWltcG9ydGFudH0uZC1zbS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4ICFpbXBvcnRhbnR9LmQtc20taW5saW5lLWZsZXh7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXggIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsuZC1tZC1ub25le2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5kLW1kLWlubGluZXtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50fS5kLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50fS5kLW1kLWJsb2Nre2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudH0uZC1tZC10YWJsZXtkaXNwbGF5OnRhYmxlICFpbXBvcnRhbnR9LmQtbWQtdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93ICFpbXBvcnRhbnR9LmQtbWQtdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwgIWltcG9ydGFudH0uZC1tZC1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4ICFpbXBvcnRhbnR9LmQtbWQtaW5saW5lLWZsZXh7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXggIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KXsuZC1sZy1ub25le2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5kLWxnLWlubGluZXtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50fS5kLWxnLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50fS5kLWxnLWJsb2Nre2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudH0uZC1sZy10YWJsZXtkaXNwbGF5OnRhYmxlICFpbXBvcnRhbnR9LmQtbGctdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93ICFpbXBvcnRhbnR9LmQtbGctdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwgIWltcG9ydGFudH0uZC1sZy1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4ICFpbXBvcnRhbnR9LmQtbGctaW5saW5lLWZsZXh7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXggIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCl7LmQteGwtbm9uZXtkaXNwbGF5Om5vbmUgIWltcG9ydGFudH0uZC14bC1pbmxpbmV7ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudH0uZC14bC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2sgIWltcG9ydGFudH0uZC14bC1ibG9ja3tkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnR9LmQteGwtdGFibGV7ZGlzcGxheTp0YWJsZSAhaW1wb3J0YW50fS5kLXhsLXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyAhaW1wb3J0YW50fS5kLXhsLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsICFpbXBvcnRhbnR9LmQteGwtZmxleHtkaXNwbGF5Oi13ZWJraXQtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCAhaW1wb3J0YW50fS5kLXhsLWlubGluZS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94ICFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1mbGV4ICFpbXBvcnRhbnR9fUBtZWRpYSBwcmludHsuZC1wcmludC1ub25le2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5kLXByaW50LWlubGluZXtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50fS5kLXByaW50LWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50fS5kLXByaW50LWJsb2Nre2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudH0uZC1wcmludC10YWJsZXtkaXNwbGF5OnRhYmxlICFpbXBvcnRhbnR9LmQtcHJpbnQtdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93ICFpbXBvcnRhbnR9LmQtcHJpbnQtdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwgIWltcG9ydGFudH0uZC1wcmludC1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4ICFpbXBvcnRhbnR9LmQtcHJpbnQtaW5saW5lLWZsZXh7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXggIWltcG9ydGFudH19LmVtYmVkLXJlc3BvbnNpdmV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW59LmVtYmVkLXJlc3BvbnNpdmU6OmJlZm9yZXtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiJ9LmVtYmVkLXJlc3BvbnNpdmUgLmVtYmVkLXJlc3BvbnNpdmUtaXRlbSwuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsLmVtYmVkLXJlc3BvbnNpdmUgb2JqZWN0LC5lbWJlZC1yZXNwb25zaXZlIHZpZGVve3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowfS5lbWJlZC1yZXNwb25zaXZlLTIxYnk5OjpiZWZvcmV7cGFkZGluZy10b3A6NDIuODU3MTQyODU3MSV9LmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZXtwYWRkaW5nLXRvcDo1Ni4yNSV9LmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3Jle3BhZGRpbmctdG9wOjc1JX0uZW1iZWQtcmVzcG9uc2l2ZS0xYnkxOjpiZWZvcmV7cGFkZGluZy10b3A6MTAwJX0uZmxleC1yb3d7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdyAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOnJvdyAhaW1wb3J0YW50fS5mbGV4LWNvbHVtbnstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbiAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiAhaW1wb3J0YW50fS5mbGV4LXJvdy1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2UgIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UgIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSAhaW1wb3J0YW50fS5mbGV4LWNvbHVtbi1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCAhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UgIWltcG9ydGFudH0uZmxleC13cmFwey1tcy1mbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwICFpbXBvcnRhbnR9LmZsZXgtbm93cmFwey1tcy1mbGV4LXdyYXA6bm93cmFwICFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCAhaW1wb3J0YW50fS5mbGV4LXdyYXAtcmV2ZXJzZXstbXMtZmxleC13cmFwOndyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UgIWltcG9ydGFudH0uZmxleC1maWxsey13ZWJraXQtYm94LWZsZXg6MSAhaW1wb3J0YW50Oy1tcy1mbGV4OjEgMSBhdXRvICFpbXBvcnRhbnQ7ZmxleDoxIDEgYXV0byAhaW1wb3J0YW50fS5mbGV4LWdyb3ctMHstd2Via2l0LWJveC1mbGV4OjAgIWltcG9ydGFudDstbXMtZmxleC1wb3NpdGl2ZTowICFpbXBvcnRhbnQ7ZmxleC1ncm93OjAgIWltcG9ydGFudH0uZmxleC1ncm93LTF7LXdlYmtpdC1ib3gtZmxleDoxICFpbXBvcnRhbnQ7LW1zLWZsZXgtcG9zaXRpdmU6MSAhaW1wb3J0YW50O2ZsZXgtZ3JvdzoxICFpbXBvcnRhbnR9LmZsZXgtc2hyaW5rLTB7LW1zLWZsZXgtbmVnYXRpdmU6MCAhaW1wb3J0YW50O2ZsZXgtc2hyaW5rOjAgIWltcG9ydGFudH0uZmxleC1zaHJpbmstMXstbXMtZmxleC1uZWdhdGl2ZToxICFpbXBvcnRhbnQ7ZmxleC1zaHJpbms6MSAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc3RhcnR7LXdlYmtpdC1ib3gtcGFjazpzdGFydCAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6c3RhcnQgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtZW5key13ZWJraXQtYm94LXBhY2s6ZW5kICFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazplbmQgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlciAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6Y2VudGVyICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbnstd2Via2l0LWJveC1wYWNrOmp1c3RpZnkgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmp1c3RpZnkgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtYXJvdW5key1tcy1mbGV4LXBhY2s6ZGlzdHJpYnV0ZSAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdGFydCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtZW5key13ZWJraXQtYm94LWFsaWduOmVuZCAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmVuZCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtZW5kICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWNlbnRlcnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXIgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpjZW50ZXIgIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtYmFzZWxpbmV7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmUgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpiYXNlbGluZSAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmJhc2VsaW5lICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXN0cmV0Y2h7LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaCAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOnN0cmV0Y2ggIWltcG9ydGFudDthbGlnbi1pdGVtczpzdHJldGNoICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc3RhcnR7LW1zLWZsZXgtbGluZS1wYWNrOnN0YXJ0ICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtZW5key1tcy1mbGV4LWxpbmUtcGFjazplbmQgIWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtZW5kICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtY2VudGVyey1tcy1mbGV4LWxpbmUtcGFjazpjZW50ZXIgIWltcG9ydGFudDthbGlnbi1jb250ZW50OmNlbnRlciAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LWJldHdlZW57LW1zLWZsZXgtbGluZS1wYWNrOmp1c3RpZnkgIWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1hcm91bmR7LW1zLWZsZXgtbGluZS1wYWNrOmRpc3RyaWJ1dGUgIWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXN0cmV0Y2h7LW1zLWZsZXgtbGluZS1wYWNrOnN0cmV0Y2ggIWltcG9ydGFudDthbGlnbi1jb250ZW50OnN0cmV0Y2ggIWltcG9ydGFudH0uYWxpZ24tc2VsZi1hdXRvey1tcy1mbGV4LWl0ZW0tYWxpZ246YXV0byAhaW1wb3J0YW50O2FsaWduLXNlbGY6YXV0byAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXN0YXJ0ey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RhcnQgIWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtc3RhcnQgIWltcG9ydGFudH0uYWxpZ24tc2VsZi1lbmR7LW1zLWZsZXgtaXRlbS1hbGlnbjplbmQgIWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtZW5kICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtY2VudGVyey1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpjZW50ZXIgIWltcG9ydGFudH0uYWxpZ24tc2VsZi1iYXNlbGluZXstbXMtZmxleC1pdGVtLWFsaWduOmJhc2VsaW5lICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpiYXNlbGluZSAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXN0cmV0Y2h7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdHJldGNoICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpzdHJldGNoICFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsuZmxleC1zbS1yb3d7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdyAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOnJvdyAhaW1wb3J0YW50fS5mbGV4LXNtLWNvbHVtbnstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbiAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiAhaW1wb3J0YW50fS5mbGV4LXNtLXJvdy1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2UgIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UgIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSAhaW1wb3J0YW50fS5mbGV4LXNtLWNvbHVtbi1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCAhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UgIWltcG9ydGFudH0uZmxleC1zbS13cmFwey1tcy1mbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwICFpbXBvcnRhbnR9LmZsZXgtc20tbm93cmFwey1tcy1mbGV4LXdyYXA6bm93cmFwICFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCAhaW1wb3J0YW50fS5mbGV4LXNtLXdyYXAtcmV2ZXJzZXstbXMtZmxleC13cmFwOndyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UgIWltcG9ydGFudH0uZmxleC1zbS1maWxsey13ZWJraXQtYm94LWZsZXg6MSAhaW1wb3J0YW50Oy1tcy1mbGV4OjEgMSBhdXRvICFpbXBvcnRhbnQ7ZmxleDoxIDEgYXV0byAhaW1wb3J0YW50fS5mbGV4LXNtLWdyb3ctMHstd2Via2l0LWJveC1mbGV4OjAgIWltcG9ydGFudDstbXMtZmxleC1wb3NpdGl2ZTowICFpbXBvcnRhbnQ7ZmxleC1ncm93OjAgIWltcG9ydGFudH0uZmxleC1zbS1ncm93LTF7LXdlYmtpdC1ib3gtZmxleDoxICFpbXBvcnRhbnQ7LW1zLWZsZXgtcG9zaXRpdmU6MSAhaW1wb3J0YW50O2ZsZXgtZ3JvdzoxICFpbXBvcnRhbnR9LmZsZXgtc20tc2hyaW5rLTB7LW1zLWZsZXgtbmVnYXRpdmU6MCAhaW1wb3J0YW50O2ZsZXgtc2hyaW5rOjAgIWltcG9ydGFudH0uZmxleC1zbS1zaHJpbmstMXstbXMtZmxleC1uZWdhdGl2ZToxICFpbXBvcnRhbnQ7ZmxleC1zaHJpbms6MSAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnR7LXdlYmtpdC1ib3gtcGFjazpzdGFydCAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6c3RhcnQgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc20tZW5key13ZWJraXQtYm94LXBhY2s6ZW5kICFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazplbmQgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlciAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6Y2VudGVyICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2Vlbnstd2Via2l0LWJveC1wYWNrOmp1c3RpZnkgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmp1c3RpZnkgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc20tYXJvdW5key1tcy1mbGV4LXBhY2s6ZGlzdHJpYnV0ZSAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc20tc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdGFydCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc20tZW5key13ZWJraXQtYm94LWFsaWduOmVuZCAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmVuZCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtZW5kICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXNtLWNlbnRlcnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXIgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpjZW50ZXIgIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc20tYmFzZWxpbmV7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmUgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpiYXNlbGluZSAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmJhc2VsaW5lICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2h7LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaCAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOnN0cmV0Y2ggIWltcG9ydGFudDthbGlnbi1pdGVtczpzdHJldGNoICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tc3RhcnR7LW1zLWZsZXgtbGluZS1wYWNrOnN0YXJ0ICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tZW5key1tcy1mbGV4LWxpbmUtcGFjazplbmQgIWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtZW5kICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tY2VudGVyey1tcy1mbGV4LWxpbmUtcGFjazpjZW50ZXIgIWltcG9ydGFudDthbGlnbi1jb250ZW50OmNlbnRlciAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXNtLWJldHdlZW57LW1zLWZsZXgtbGluZS1wYWNrOmp1c3RpZnkgIWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1hcm91bmR7LW1zLWZsZXgtbGluZS1wYWNrOmRpc3RyaWJ1dGUgIWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXNtLXN0cmV0Y2h7LW1zLWZsZXgtbGluZS1wYWNrOnN0cmV0Y2ggIWltcG9ydGFudDthbGlnbi1jb250ZW50OnN0cmV0Y2ggIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zbS1hdXRvey1tcy1mbGV4LWl0ZW0tYWxpZ246YXV0byAhaW1wb3J0YW50O2FsaWduLXNlbGY6YXV0byAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXNtLXN0YXJ0ey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RhcnQgIWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtc3RhcnQgIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zbS1lbmR7LW1zLWZsZXgtaXRlbS1hbGlnbjplbmQgIWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtZW5kICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc20tY2VudGVyey1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpjZW50ZXIgIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zbS1iYXNlbGluZXstbXMtZmxleC1pdGVtLWFsaWduOmJhc2VsaW5lICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpiYXNlbGluZSAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXNtLXN0cmV0Y2h7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdHJldGNoICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpzdHJldGNoICFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7LmZsZXgtbWQtcm93ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpyb3cgIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3cgIWltcG9ydGFudH0uZmxleC1tZC1jb2x1bW57LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4gIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4gIWltcG9ydGFudH0uZmxleC1tZC1yb3ctcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbCAhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UgIWltcG9ydGFudH0uZmxleC1tZC1jb2x1bW4tcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnR9LmZsZXgtbWQtd3JhcHstbXMtZmxleC13cmFwOndyYXAgIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50fS5mbGV4LW1kLW5vd3JhcHstbXMtZmxleC13cmFwOm5vd3JhcCAhaW1wb3J0YW50O2ZsZXgtd3JhcDpub3dyYXAgIWltcG9ydGFudH0uZmxleC1tZC13cmFwLXJldmVyc2V7LW1zLWZsZXgtd3JhcDp3cmFwLXJldmVyc2UgIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlICFpbXBvcnRhbnR9LmZsZXgtbWQtZmlsbHstd2Via2l0LWJveC1mbGV4OjEgIWltcG9ydGFudDstbXMtZmxleDoxIDEgYXV0byAhaW1wb3J0YW50O2ZsZXg6MSAxIGF1dG8gIWltcG9ydGFudH0uZmxleC1tZC1ncm93LTB7LXdlYmtpdC1ib3gtZmxleDowICFpbXBvcnRhbnQ7LW1zLWZsZXgtcG9zaXRpdmU6MCAhaW1wb3J0YW50O2ZsZXgtZ3JvdzowICFpbXBvcnRhbnR9LmZsZXgtbWQtZ3Jvdy0xey13ZWJraXQtYm94LWZsZXg6MSAhaW1wb3J0YW50Oy1tcy1mbGV4LXBvc2l0aXZlOjEgIWltcG9ydGFudDtmbGV4LWdyb3c6MSAhaW1wb3J0YW50fS5mbGV4LW1kLXNocmluay0wey1tcy1mbGV4LW5lZ2F0aXZlOjAgIWltcG9ydGFudDtmbGV4LXNocmluazowICFpbXBvcnRhbnR9LmZsZXgtbWQtc2hyaW5rLTF7LW1zLWZsZXgtbmVnYXRpdmU6MSAhaW1wb3J0YW50O2ZsZXgtc2hyaW5rOjEgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0ey13ZWJraXQtYm94LXBhY2s6c3RhcnQgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOnN0YXJ0ICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LW1kLWVuZHstd2Via2l0LWJveC1wYWNrOmVuZCAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6ZW5kICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kICFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1jZW50ZXJ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXIgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmNlbnRlciAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpjZW50ZXIgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW57LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5ICFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpqdXN0aWZ5ICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LW1kLWFyb3VuZHstbXMtZmxleC1wYWNrOmRpc3RyaWJ1dGUgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLXN0YXJ0ey13ZWJraXQtYm94LWFsaWduOnN0YXJ0ICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQgIWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLWVuZHstd2Via2l0LWJveC1hbGlnbjplbmQgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjplbmQgIWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LWVuZCAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1tZC1jZW50ZXJ7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5ley13ZWJraXQtYm94LWFsaWduOmJhc2VsaW5lICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmUgIWltcG9ydGFudDthbGlnbi1pdGVtczpiYXNlbGluZSAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1tZC1zdHJldGNoey13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2ggIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdHJldGNoICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6c3RyZXRjaCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LW1kLXN0YXJ0ey1tcy1mbGV4LWxpbmUtcGFjazpzdGFydCAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LW1kLWVuZHstbXMtZmxleC1saW5lLXBhY2s6ZW5kICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpmbGV4LWVuZCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LW1kLWNlbnRlcnstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpjZW50ZXIgIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1tZC1iZXR3ZWVuey1tcy1mbGV4LWxpbmUtcGFjazpqdXN0aWZ5ICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtYXJvdW5key1tcy1mbGV4LWxpbmUtcGFjazpkaXN0cmlidXRlICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQgIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1tZC1zdHJldGNoey1tcy1mbGV4LWxpbmUtcGFjazpzdHJldGNoICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzdHJldGNoICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtYXV0b3stbXMtZmxleC1pdGVtLWFsaWduOmF1dG8gIWltcG9ydGFudDthbGlnbi1zZWxmOmF1dG8gIWltcG9ydGFudH0uYWxpZ24tc2VsZi1tZC1zdGFydHstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0ICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtZW5key1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LWVuZCAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLW1kLWNlbnRlcnstbXMtZmxleC1pdGVtLWFsaWduOmNlbnRlciAhaW1wb3J0YW50O2FsaWduLXNlbGY6Y2VudGVyICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtYmFzZWxpbmV7LW1zLWZsZXgtaXRlbS1hbGlnbjpiYXNlbGluZSAhaW1wb3J0YW50O2FsaWduLXNlbGY6YmFzZWxpbmUgIWltcG9ydGFudH0uYWxpZ24tc2VsZi1tZC1zdHJldGNoey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RyZXRjaCAhaW1wb3J0YW50O2FsaWduLXNlbGY6c3RyZXRjaCAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpey5mbGV4LWxnLXJvd3std2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbCAhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWwgIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93ICFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246cm93ICFpbXBvcnRhbnR9LmZsZXgtbGctY29sdW1uey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCAhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWwgIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uICFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uICFpbXBvcnRhbnR9LmZsZXgtbGctcm93LXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlICFpbXBvcnRhbnR9LmZsZXgtbGctY29sdW1uLXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2UgIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50fS5mbGV4LWxnLXdyYXB7LW1zLWZsZXgtd3JhcDp3cmFwICFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAgIWltcG9ydGFudH0uZmxleC1sZy1ub3dyYXB7LW1zLWZsZXgtd3JhcDpub3dyYXAgIWltcG9ydGFudDtmbGV4LXdyYXA6bm93cmFwICFpbXBvcnRhbnR9LmZsZXgtbGctd3JhcC1yZXZlcnNley1tcy1mbGV4LXdyYXA6d3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSAhaW1wb3J0YW50fS5mbGV4LWxnLWZpbGx7LXdlYmtpdC1ib3gtZmxleDoxICFpbXBvcnRhbnQ7LW1zLWZsZXg6MSAxIGF1dG8gIWltcG9ydGFudDtmbGV4OjEgMSBhdXRvICFpbXBvcnRhbnR9LmZsZXgtbGctZ3Jvdy0wey13ZWJraXQtYm94LWZsZXg6MCAhaW1wb3J0YW50Oy1tcy1mbGV4LXBvc2l0aXZlOjAgIWltcG9ydGFudDtmbGV4LWdyb3c6MCAhaW1wb3J0YW50fS5mbGV4LWxnLWdyb3ctMXstd2Via2l0LWJveC1mbGV4OjEgIWltcG9ydGFudDstbXMtZmxleC1wb3NpdGl2ZToxICFpbXBvcnRhbnQ7ZmxleC1ncm93OjEgIWltcG9ydGFudH0uZmxleC1sZy1zaHJpbmstMHstbXMtZmxleC1uZWdhdGl2ZTowICFpbXBvcnRhbnQ7ZmxleC1zaHJpbms6MCAhaW1wb3J0YW50fS5mbGV4LWxnLXNocmluay0xey1tcy1mbGV4LW5lZ2F0aXZlOjEgIWltcG9ydGFudDtmbGV4LXNocmluazoxICFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1sZy1zdGFydHstd2Via2l0LWJveC1wYWNrOnN0YXJ0ICFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpzdGFydCAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1sZy1lbmR7LXdlYmtpdC1ib3gtcGFjazplbmQgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmVuZCAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCAhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyey13ZWJraXQtYm94LXBhY2s6Y2VudGVyICFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpjZW50ZXIgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyICFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVuey13ZWJraXQtYm94LXBhY2s6anVzdGlmeSAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6anVzdGlmeSAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1sZy1hcm91bmR7LW1zLWZsZXgtcGFjazpkaXN0cmlidXRlICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1sZy1zdGFydHstd2Via2l0LWJveC1hbGlnbjpzdGFydCAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOnN0YXJ0ICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1sZy1lbmR7LXdlYmtpdC1ib3gtYWxpZ246ZW5kICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246ZW5kICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6ZmxleC1lbmQgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtbGctY2VudGVyey13ZWJraXQtYm94LWFsaWduOmNlbnRlciAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmNlbnRlciAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1sZy1iYXNlbGluZXstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZSAhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmJhc2VsaW5lICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6YmFzZWxpbmUgIWltcG9ydGFudH0uYWxpZ24taXRlbXMtbGctc3RyZXRjaHstd2Via2l0LWJveC1hbGlnbjpzdHJldGNoICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RyZXRjaCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOnN0cmV0Y2ggIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1zdGFydHstbXMtZmxleC1saW5lLXBhY2s6c3RhcnQgIWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQgIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1lbmR7LW1zLWZsZXgtbGluZS1wYWNrOmVuZCAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQgIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1jZW50ZXJ7LW1zLWZsZXgtbGluZS1wYWNrOmNlbnRlciAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6Y2VudGVyICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbnstbXMtZmxleC1saW5lLXBhY2s6anVzdGlmeSAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LWxnLWFyb3VuZHstbXMtZmxleC1saW5lLXBhY2s6ZGlzdHJpYnV0ZSAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaHstbXMtZmxleC1saW5lLXBhY2s6c3RyZXRjaCAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3RyZXRjaCAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLWF1dG97LW1zLWZsZXgtaXRlbS1hbGlnbjphdXRvICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjphdXRvICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctc3RhcnR7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdGFydCAhaW1wb3J0YW50O2FsaWduLXNlbGY6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLWVuZHstbXMtZmxleC1pdGVtLWFsaWduOmVuZCAhaW1wb3J0YW50O2FsaWduLXNlbGY6ZmxleC1lbmQgIWltcG9ydGFudH0uYWxpZ24tc2VsZi1sZy1jZW50ZXJ7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXIgIWltcG9ydGFudDthbGlnbi1zZWxmOmNlbnRlciAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLWJhc2VsaW5ley1tcy1mbGV4LWl0ZW0tYWxpZ246YmFzZWxpbmUgIWltcG9ydGFudDthbGlnbi1zZWxmOmJhc2VsaW5lICFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctc3RyZXRjaHstbXMtZmxleC1pdGVtLWFsaWduOnN0cmV0Y2ggIWltcG9ydGFudDthbGlnbi1zZWxmOnN0cmV0Y2ggIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCl7LmZsZXgteGwtcm93ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpyb3cgIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3cgIWltcG9ydGFudH0uZmxleC14bC1jb2x1bW57LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsICFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4gIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4gIWltcG9ydGFudH0uZmxleC14bC1yb3ctcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbCAhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlICFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UgIWltcG9ydGFudH0uZmxleC14bC1jb2x1bW4tcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwgIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSAhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnR9LmZsZXgteGwtd3JhcHstbXMtZmxleC13cmFwOndyYXAgIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50fS5mbGV4LXhsLW5vd3JhcHstbXMtZmxleC13cmFwOm5vd3JhcCAhaW1wb3J0YW50O2ZsZXgtd3JhcDpub3dyYXAgIWltcG9ydGFudH0uZmxleC14bC13cmFwLXJldmVyc2V7LW1zLWZsZXgtd3JhcDp3cmFwLXJldmVyc2UgIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlICFpbXBvcnRhbnR9LmZsZXgteGwtZmlsbHstd2Via2l0LWJveC1mbGV4OjEgIWltcG9ydGFudDstbXMtZmxleDoxIDEgYXV0byAhaW1wb3J0YW50O2ZsZXg6MSAxIGF1dG8gIWltcG9ydGFudH0uZmxleC14bC1ncm93LTB7LXdlYmtpdC1ib3gtZmxleDowICFpbXBvcnRhbnQ7LW1zLWZsZXgtcG9zaXRpdmU6MCAhaW1wb3J0YW50O2ZsZXgtZ3JvdzowICFpbXBvcnRhbnR9LmZsZXgteGwtZ3Jvdy0xey13ZWJraXQtYm94LWZsZXg6MSAhaW1wb3J0YW50Oy1tcy1mbGV4LXBvc2l0aXZlOjEgIWltcG9ydGFudDtmbGV4LWdyb3c6MSAhaW1wb3J0YW50fS5mbGV4LXhsLXNocmluay0wey1tcy1mbGV4LW5lZ2F0aXZlOjAgIWltcG9ydGFudDtmbGV4LXNocmluazowICFpbXBvcnRhbnR9LmZsZXgteGwtc2hyaW5rLTF7LW1zLWZsZXgtbmVnYXRpdmU6MSAhaW1wb3J0YW50O2ZsZXgtc2hyaW5rOjEgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0ey13ZWJraXQtYm94LXBhY2s6c3RhcnQgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOnN0YXJ0ICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXhsLWVuZHstd2Via2l0LWJveC1wYWNrOmVuZCAhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6ZW5kICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kICFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1jZW50ZXJ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXIgIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmNlbnRlciAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpjZW50ZXIgIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW57LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5ICFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpqdXN0aWZ5ICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXhsLWFyb3VuZHstbXMtZmxleC1wYWNrOmRpc3RyaWJ1dGUgIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXhsLXN0YXJ0ey13ZWJraXQtYm94LWFsaWduOnN0YXJ0ICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQgIWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXhsLWVuZHstd2Via2l0LWJveC1hbGlnbjplbmQgIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjplbmQgIWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LWVuZCAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14bC1jZW50ZXJ7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyICFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5ley13ZWJraXQtYm94LWFsaWduOmJhc2VsaW5lICFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmUgIWltcG9ydGFudDthbGlnbi1pdGVtczpiYXNlbGluZSAhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14bC1zdHJldGNoey13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2ggIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdHJldGNoICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6c3RyZXRjaCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLXN0YXJ0ey1tcy1mbGV4LWxpbmUtcGFjazpzdGFydCAhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLWVuZHstbXMtZmxleC1saW5lLXBhY2s6ZW5kICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpmbGV4LWVuZCAhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLWNlbnRlcnstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpjZW50ZXIgIWltcG9ydGFudH0uYWxpZ24tY29udGVudC14bC1iZXR3ZWVuey1tcy1mbGV4LWxpbmUtcGFjazpqdXN0aWZ5ICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtYXJvdW5key1tcy1mbGV4LWxpbmUtcGFjazpkaXN0cmlidXRlICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQgIWltcG9ydGFudH0uYWxpZ24tY29udGVudC14bC1zdHJldGNoey1tcy1mbGV4LWxpbmUtcGFjazpzdHJldGNoICFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzdHJldGNoICFpbXBvcnRhbnR9LmFsaWduLXNlbGYteGwtYXV0b3stbXMtZmxleC1pdGVtLWFsaWduOmF1dG8gIWltcG9ydGFudDthbGlnbi1zZWxmOmF1dG8gIWltcG9ydGFudH0uYWxpZ24tc2VsZi14bC1zdGFydHstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0ICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0ICFpbXBvcnRhbnR9LmFsaWduLXNlbGYteGwtZW5key1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kICFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LWVuZCAhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXhsLWNlbnRlcnstbXMtZmxleC1pdGVtLWFsaWduOmNlbnRlciAhaW1wb3J0YW50O2FsaWduLXNlbGY6Y2VudGVyICFpbXBvcnRhbnR9LmFsaWduLXNlbGYteGwtYmFzZWxpbmV7LW1zLWZsZXgtaXRlbS1hbGlnbjpiYXNlbGluZSAhaW1wb3J0YW50O2FsaWduLXNlbGY6YmFzZWxpbmUgIWltcG9ydGFudH0uYWxpZ24tc2VsZi14bC1zdHJldGNoey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RyZXRjaCAhaW1wb3J0YW50O2FsaWduLXNlbGY6c3RyZXRjaCAhaW1wb3J0YW50fX0uZmxvYXQtbGVmdHtmbG9hdDpsZWZ0ICFpbXBvcnRhbnR9LmZsb2F0LXJpZ2h0e2Zsb2F0OnJpZ2h0ICFpbXBvcnRhbnR9LmZsb2F0LW5vbmV7ZmxvYXQ6bm9uZSAhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LmZsb2F0LXNtLWxlZnR7ZmxvYXQ6bGVmdCAhaW1wb3J0YW50fS5mbG9hdC1zbS1yaWdodHtmbG9hdDpyaWdodCAhaW1wb3J0YW50fS5mbG9hdC1zbS1ub25le2Zsb2F0Om5vbmUgIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsuZmxvYXQtbWQtbGVmdHtmbG9hdDpsZWZ0ICFpbXBvcnRhbnR9LmZsb2F0LW1kLXJpZ2h0e2Zsb2F0OnJpZ2h0ICFpbXBvcnRhbnR9LmZsb2F0LW1kLW5vbmV7ZmxvYXQ6bm9uZSAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpey5mbG9hdC1sZy1sZWZ0e2Zsb2F0OmxlZnQgIWltcG9ydGFudH0uZmxvYXQtbGctcmlnaHR7ZmxvYXQ6cmlnaHQgIWltcG9ydGFudH0uZmxvYXQtbGctbm9uZXtmbG9hdDpub25lICFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpey5mbG9hdC14bC1sZWZ0e2Zsb2F0OmxlZnQgIWltcG9ydGFudH0uZmxvYXQteGwtcmlnaHR7ZmxvYXQ6cmlnaHQgIWltcG9ydGFudH0uZmxvYXQteGwtbm9uZXtmbG9hdDpub25lICFpbXBvcnRhbnR9fS5wb3NpdGlvbi1zdGF0aWN7cG9zaXRpb246c3RhdGljICFpbXBvcnRhbnR9LnBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnR9LnBvc2l0aW9uLWFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnR9LnBvc2l0aW9uLWZpeGVke3Bvc2l0aW9uOmZpeGVkICFpbXBvcnRhbnR9LnBvc2l0aW9uLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O3Bvc2l0aW9uOnN0aWNreSAhaW1wb3J0YW50fS5maXhlZC10b3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDMwfS5maXhlZC1ib3R0b217cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxMDMwfUBzdXBwb3J0cyAocG9zaXRpb246IC13ZWJraXQtc3RpY2t5KSBvciAocG9zaXRpb246IHN0aWNreSl7LnN0aWNreS10b3B7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTAyMH19LnNyLW9ubHl7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7cGFkZGluZzowO292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwgMCwgMCwgMCk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlcjowfS5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsLnNyLW9ubHktZm9jdXNhYmxlOmZvY3Vze3Bvc2l0aW9uOnN0YXRpYzt3aWR0aDphdXRvO2hlaWdodDphdXRvO292ZXJmbG93OnZpc2libGU7Y2xpcDphdXRvO3doaXRlLXNwYWNlOm5vcm1hbH0uc2hhZG93LXNtey13ZWJraXQtYm94LXNoYWRvdzowIDAuMTI1cmVtIDAuMjVyZW0gcmdiYSgwLDAsMCwwLjA3NSkgIWltcG9ydGFudDtib3gtc2hhZG93OjAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsMCwwLDAuMDc1KSAhaW1wb3J0YW50fS5zaGFkb3d7LXdlYmtpdC1ib3gtc2hhZG93OjAgMC41cmVtIDFyZW0gcmdiYSgwLDAsMCwwLjE1KSAhaW1wb3J0YW50O2JveC1zaGFkb3c6MCAwLjVyZW0gMXJlbSByZ2JhKDAsMCwwLDAuMTUpICFpbXBvcnRhbnR9LnNoYWRvdy1sZ3std2Via2l0LWJveC1zaGFkb3c6MCAxcmVtIDNyZW0gcmdiYSgwLDAsMCwwLjE3NSkgIWltcG9ydGFudDtib3gtc2hhZG93OjAgMXJlbSAzcmVtIHJnYmEoMCwwLDAsMC4xNzUpICFpbXBvcnRhbnR9LnNoYWRvdy1ub25ley13ZWJraXQtYm94LXNoYWRvdzpub25lICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lICFpbXBvcnRhbnR9LnctMjV7d2lkdGg6MjUlICFpbXBvcnRhbnR9LnctNTB7d2lkdGg6NTAlICFpbXBvcnRhbnR9LnctNzV7d2lkdGg6NzUlICFpbXBvcnRhbnR9LnctMTAwe3dpZHRoOjEwMCUgIWltcG9ydGFudH0udy1hdXRve3dpZHRoOmF1dG8gIWltcG9ydGFudH0uaC0yNXtoZWlnaHQ6MjUlICFpbXBvcnRhbnR9LmgtNTB7aGVpZ2h0OjUwJSAhaW1wb3J0YW50fS5oLTc1e2hlaWdodDo3NSUgIWltcG9ydGFudH0uaC0xMDB7aGVpZ2h0OjEwMCUgIWltcG9ydGFudH0uaC1hdXRve2hlaWdodDphdXRvICFpbXBvcnRhbnR9Lm13LTEwMHttYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50fS5taC0xMDB7bWF4LWhlaWdodDoxMDAlICFpbXBvcnRhbnR9Lm0tMHttYXJnaW46MCAhaW1wb3J0YW50fS5tdC0wLC5teS0we21hcmdpbi10b3A6MCAhaW1wb3J0YW50fS5tci0wLC5teC0we21hcmdpbi1yaWdodDowICFpbXBvcnRhbnR9Lm1iLTAsLm15LTB7bWFyZ2luLWJvdHRvbTowICFpbXBvcnRhbnR9Lm1sLTAsLm14LTB7bWFyZ2luLWxlZnQ6MCAhaW1wb3J0YW50fS5tLTF7bWFyZ2luOjAuMjVyZW0gIWltcG9ydGFudH0ubXQtMSwubXktMXttYXJnaW4tdG9wOjAuMjVyZW0gIWltcG9ydGFudH0ubXItMSwubXgtMXttYXJnaW4tcmlnaHQ6MC4yNXJlbSAhaW1wb3J0YW50fS5tYi0xLC5teS0xe21hcmdpbi1ib3R0b206MC4yNXJlbSAhaW1wb3J0YW50fS5tbC0xLC5teC0xe21hcmdpbi1sZWZ0OjAuMjVyZW0gIWltcG9ydGFudH0ubS0ye21hcmdpbjowLjVyZW0gIWltcG9ydGFudH0ubXQtMiwubXktMnttYXJnaW4tdG9wOjAuNXJlbSAhaW1wb3J0YW50fS5tci0yLC5teC0ye21hcmdpbi1yaWdodDowLjVyZW0gIWltcG9ydGFudH0ubWItMiwubXktMnttYXJnaW4tYm90dG9tOjAuNXJlbSAhaW1wb3J0YW50fS5tbC0yLC5teC0ye21hcmdpbi1sZWZ0OjAuNXJlbSAhaW1wb3J0YW50fS5tLTN7bWFyZ2luOjFyZW0gIWltcG9ydGFudH0ubXQtMywubXktM3ttYXJnaW4tdG9wOjFyZW0gIWltcG9ydGFudH0ubXItMywubXgtM3ttYXJnaW4tcmlnaHQ6MXJlbSAhaW1wb3J0YW50fS5tYi0zLC5teS0ze21hcmdpbi1ib3R0b206MXJlbSAhaW1wb3J0YW50fS5tbC0zLC5teC0ze21hcmdpbi1sZWZ0OjFyZW0gIWltcG9ydGFudH0ubS00e21hcmdpbjoxLjVyZW0gIWltcG9ydGFudH0ubXQtNCwubXktNHttYXJnaW4tdG9wOjEuNXJlbSAhaW1wb3J0YW50fS5tci00LC5teC00e21hcmdpbi1yaWdodDoxLjVyZW0gIWltcG9ydGFudH0ubWItNCwubXktNHttYXJnaW4tYm90dG9tOjEuNXJlbSAhaW1wb3J0YW50fS5tbC00LC5teC00e21hcmdpbi1sZWZ0OjEuNXJlbSAhaW1wb3J0YW50fS5tLTV7bWFyZ2luOjNyZW0gIWltcG9ydGFudH0ubXQtNSwubXktNXttYXJnaW4tdG9wOjNyZW0gIWltcG9ydGFudH0ubXItNSwubXgtNXttYXJnaW4tcmlnaHQ6M3JlbSAhaW1wb3J0YW50fS5tYi01LC5teS01e21hcmdpbi1ib3R0b206M3JlbSAhaW1wb3J0YW50fS5tbC01LC5teC01e21hcmdpbi1sZWZ0OjNyZW0gIWltcG9ydGFudH0ucC0we3BhZGRpbmc6MCAhaW1wb3J0YW50fS5wdC0wLC5weS0we3BhZGRpbmctdG9wOjAgIWltcG9ydGFudH0ucHItMCwucHgtMHtwYWRkaW5nLXJpZ2h0OjAgIWltcG9ydGFudH0ucGItMCwucHktMHtwYWRkaW5nLWJvdHRvbTowICFpbXBvcnRhbnR9LnBsLTAsLnB4LTB7cGFkZGluZy1sZWZ0OjAgIWltcG9ydGFudH0ucC0xe3BhZGRpbmc6MC4yNXJlbSAhaW1wb3J0YW50fS5wdC0xLC5weS0xe3BhZGRpbmctdG9wOjAuMjVyZW0gIWltcG9ydGFudH0ucHItMSwucHgtMXtwYWRkaW5nLXJpZ2h0OjAuMjVyZW0gIWltcG9ydGFudH0ucGItMSwucHktMXtwYWRkaW5nLWJvdHRvbTowLjI1cmVtICFpbXBvcnRhbnR9LnBsLTEsLnB4LTF7cGFkZGluZy1sZWZ0OjAuMjVyZW0gIWltcG9ydGFudH0ucC0ye3BhZGRpbmc6MC41cmVtICFpbXBvcnRhbnR9LnB0LTIsLnB5LTJ7cGFkZGluZy10b3A6MC41cmVtICFpbXBvcnRhbnR9LnByLTIsLnB4LTJ7cGFkZGluZy1yaWdodDowLjVyZW0gIWltcG9ydGFudH0ucGItMiwucHktMntwYWRkaW5nLWJvdHRvbTowLjVyZW0gIWltcG9ydGFudH0ucGwtMiwucHgtMntwYWRkaW5nLWxlZnQ6MC41cmVtICFpbXBvcnRhbnR9LnAtM3twYWRkaW5nOjFyZW0gIWltcG9ydGFudH0ucHQtMywucHktM3twYWRkaW5nLXRvcDoxcmVtICFpbXBvcnRhbnR9LnByLTMsLnB4LTN7cGFkZGluZy1yaWdodDoxcmVtICFpbXBvcnRhbnR9LnBiLTMsLnB5LTN7cGFkZGluZy1ib3R0b206MXJlbSAhaW1wb3J0YW50fS5wbC0zLC5weC0ze3BhZGRpbmctbGVmdDoxcmVtICFpbXBvcnRhbnR9LnAtNHtwYWRkaW5nOjEuNXJlbSAhaW1wb3J0YW50fS5wdC00LC5weS00e3BhZGRpbmctdG9wOjEuNXJlbSAhaW1wb3J0YW50fS5wci00LC5weC00e3BhZGRpbmctcmlnaHQ6MS41cmVtICFpbXBvcnRhbnR9LnBiLTQsLnB5LTR7cGFkZGluZy1ib3R0b206MS41cmVtICFpbXBvcnRhbnR9LnBsLTQsLnB4LTR7cGFkZGluZy1sZWZ0OjEuNXJlbSAhaW1wb3J0YW50fS5wLTV7cGFkZGluZzozcmVtICFpbXBvcnRhbnR9LnB0LTUsLnB5LTV7cGFkZGluZy10b3A6M3JlbSAhaW1wb3J0YW50fS5wci01LC5weC01e3BhZGRpbmctcmlnaHQ6M3JlbSAhaW1wb3J0YW50fS5wYi01LC5weS01e3BhZGRpbmctYm90dG9tOjNyZW0gIWltcG9ydGFudH0ucGwtNSwucHgtNXtwYWRkaW5nLWxlZnQ6M3JlbSAhaW1wb3J0YW50fS5tLWF1dG97bWFyZ2luOmF1dG8gIWltcG9ydGFudH0ubXQtYXV0bywubXktYXV0b3ttYXJnaW4tdG9wOmF1dG8gIWltcG9ydGFudH0ubXItYXV0bywubXgtYXV0b3ttYXJnaW4tcmlnaHQ6YXV0byAhaW1wb3J0YW50fS5tYi1hdXRvLC5teS1hdXRve21hcmdpbi1ib3R0b206YXV0byAhaW1wb3J0YW50fS5tbC1hdXRvLC5teC1hdXRve21hcmdpbi1sZWZ0OmF1dG8gIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey5tLXNtLTB7bWFyZ2luOjAgIWltcG9ydGFudH0ubXQtc20tMCwubXktc20tMHttYXJnaW4tdG9wOjAgIWltcG9ydGFudH0ubXItc20tMCwubXgtc20tMHttYXJnaW4tcmlnaHQ6MCAhaW1wb3J0YW50fS5tYi1zbS0wLC5teS1zbS0we21hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50fS5tbC1zbS0wLC5teC1zbS0we21hcmdpbi1sZWZ0OjAgIWltcG9ydGFudH0ubS1zbS0xe21hcmdpbjowLjI1cmVtICFpbXBvcnRhbnR9Lm10LXNtLTEsLm15LXNtLTF7bWFyZ2luLXRvcDowLjI1cmVtICFpbXBvcnRhbnR9Lm1yLXNtLTEsLm14LXNtLTF7bWFyZ2luLXJpZ2h0OjAuMjVyZW0gIWltcG9ydGFudH0ubWItc20tMSwubXktc20tMXttYXJnaW4tYm90dG9tOjAuMjVyZW0gIWltcG9ydGFudH0ubWwtc20tMSwubXgtc20tMXttYXJnaW4tbGVmdDowLjI1cmVtICFpbXBvcnRhbnR9Lm0tc20tMnttYXJnaW46MC41cmVtICFpbXBvcnRhbnR9Lm10LXNtLTIsLm15LXNtLTJ7bWFyZ2luLXRvcDowLjVyZW0gIWltcG9ydGFudH0ubXItc20tMiwubXgtc20tMnttYXJnaW4tcmlnaHQ6MC41cmVtICFpbXBvcnRhbnR9Lm1iLXNtLTIsLm15LXNtLTJ7bWFyZ2luLWJvdHRvbTowLjVyZW0gIWltcG9ydGFudH0ubWwtc20tMiwubXgtc20tMnttYXJnaW4tbGVmdDowLjVyZW0gIWltcG9ydGFudH0ubS1zbS0ze21hcmdpbjoxcmVtICFpbXBvcnRhbnR9Lm10LXNtLTMsLm15LXNtLTN7bWFyZ2luLXRvcDoxcmVtICFpbXBvcnRhbnR9Lm1yLXNtLTMsLm14LXNtLTN7bWFyZ2luLXJpZ2h0OjFyZW0gIWltcG9ydGFudH0ubWItc20tMywubXktc20tM3ttYXJnaW4tYm90dG9tOjFyZW0gIWltcG9ydGFudH0ubWwtc20tMywubXgtc20tM3ttYXJnaW4tbGVmdDoxcmVtICFpbXBvcnRhbnR9Lm0tc20tNHttYXJnaW46MS41cmVtICFpbXBvcnRhbnR9Lm10LXNtLTQsLm15LXNtLTR7bWFyZ2luLXRvcDoxLjVyZW0gIWltcG9ydGFudH0ubXItc20tNCwubXgtc20tNHttYXJnaW4tcmlnaHQ6MS41cmVtICFpbXBvcnRhbnR9Lm1iLXNtLTQsLm15LXNtLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0gIWltcG9ydGFudH0ubWwtc20tNCwubXgtc20tNHttYXJnaW4tbGVmdDoxLjVyZW0gIWltcG9ydGFudH0ubS1zbS01e21hcmdpbjozcmVtICFpbXBvcnRhbnR9Lm10LXNtLTUsLm15LXNtLTV7bWFyZ2luLXRvcDozcmVtICFpbXBvcnRhbnR9Lm1yLXNtLTUsLm14LXNtLTV7bWFyZ2luLXJpZ2h0OjNyZW0gIWltcG9ydGFudH0ubWItc20tNSwubXktc20tNXttYXJnaW4tYm90dG9tOjNyZW0gIWltcG9ydGFudH0ubWwtc20tNSwubXgtc20tNXttYXJnaW4tbGVmdDozcmVtICFpbXBvcnRhbnR9LnAtc20tMHtwYWRkaW5nOjAgIWltcG9ydGFudH0ucHQtc20tMCwucHktc20tMHtwYWRkaW5nLXRvcDowICFpbXBvcnRhbnR9LnByLXNtLTAsLnB4LXNtLTB7cGFkZGluZy1yaWdodDowICFpbXBvcnRhbnR9LnBiLXNtLTAsLnB5LXNtLTB7cGFkZGluZy1ib3R0b206MCAhaW1wb3J0YW50fS5wbC1zbS0wLC5weC1zbS0we3BhZGRpbmctbGVmdDowICFpbXBvcnRhbnR9LnAtc20tMXtwYWRkaW5nOjAuMjVyZW0gIWltcG9ydGFudH0ucHQtc20tMSwucHktc20tMXtwYWRkaW5nLXRvcDowLjI1cmVtICFpbXBvcnRhbnR9LnByLXNtLTEsLnB4LXNtLTF7cGFkZGluZy1yaWdodDowLjI1cmVtICFpbXBvcnRhbnR9LnBiLXNtLTEsLnB5LXNtLTF7cGFkZGluZy1ib3R0b206MC4yNXJlbSAhaW1wb3J0YW50fS5wbC1zbS0xLC5weC1zbS0xe3BhZGRpbmctbGVmdDowLjI1cmVtICFpbXBvcnRhbnR9LnAtc20tMntwYWRkaW5nOjAuNXJlbSAhaW1wb3J0YW50fS5wdC1zbS0yLC5weS1zbS0ye3BhZGRpbmctdG9wOjAuNXJlbSAhaW1wb3J0YW50fS5wci1zbS0yLC5weC1zbS0ye3BhZGRpbmctcmlnaHQ6MC41cmVtICFpbXBvcnRhbnR9LnBiLXNtLTIsLnB5LXNtLTJ7cGFkZGluZy1ib3R0b206MC41cmVtICFpbXBvcnRhbnR9LnBsLXNtLTIsLnB4LXNtLTJ7cGFkZGluZy1sZWZ0OjAuNXJlbSAhaW1wb3J0YW50fS5wLXNtLTN7cGFkZGluZzoxcmVtICFpbXBvcnRhbnR9LnB0LXNtLTMsLnB5LXNtLTN7cGFkZGluZy10b3A6MXJlbSAhaW1wb3J0YW50fS5wci1zbS0zLC5weC1zbS0ze3BhZGRpbmctcmlnaHQ6MXJlbSAhaW1wb3J0YW50fS5wYi1zbS0zLC5weS1zbS0ze3BhZGRpbmctYm90dG9tOjFyZW0gIWltcG9ydGFudH0ucGwtc20tMywucHgtc20tM3twYWRkaW5nLWxlZnQ6MXJlbSAhaW1wb3J0YW50fS5wLXNtLTR7cGFkZGluZzoxLjVyZW0gIWltcG9ydGFudH0ucHQtc20tNCwucHktc20tNHtwYWRkaW5nLXRvcDoxLjVyZW0gIWltcG9ydGFudH0ucHItc20tNCwucHgtc20tNHtwYWRkaW5nLXJpZ2h0OjEuNXJlbSAhaW1wb3J0YW50fS5wYi1zbS00LC5weS1zbS00e3BhZGRpbmctYm90dG9tOjEuNXJlbSAhaW1wb3J0YW50fS5wbC1zbS00LC5weC1zbS00e3BhZGRpbmctbGVmdDoxLjVyZW0gIWltcG9ydGFudH0ucC1zbS01e3BhZGRpbmc6M3JlbSAhaW1wb3J0YW50fS5wdC1zbS01LC5weS1zbS01e3BhZGRpbmctdG9wOjNyZW0gIWltcG9ydGFudH0ucHItc20tNSwucHgtc20tNXtwYWRkaW5nLXJpZ2h0OjNyZW0gIWltcG9ydGFudH0ucGItc20tNSwucHktc20tNXtwYWRkaW5nLWJvdHRvbTozcmVtICFpbXBvcnRhbnR9LnBsLXNtLTUsLnB4LXNtLTV7cGFkZGluZy1sZWZ0OjNyZW0gIWltcG9ydGFudH0ubS1zbS1hdXRve21hcmdpbjphdXRvICFpbXBvcnRhbnR9Lm10LXNtLWF1dG8sLm15LXNtLWF1dG97bWFyZ2luLXRvcDphdXRvICFpbXBvcnRhbnR9Lm1yLXNtLWF1dG8sLm14LXNtLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8gIWltcG9ydGFudH0ubWItc20tYXV0bywubXktc20tYXV0b3ttYXJnaW4tYm90dG9tOmF1dG8gIWltcG9ydGFudH0ubWwtc20tYXV0bywubXgtc20tYXV0b3ttYXJnaW4tbGVmdDphdXRvICFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7Lm0tbWQtMHttYXJnaW46MCAhaW1wb3J0YW50fS5tdC1tZC0wLC5teS1tZC0we21hcmdpbi10b3A6MCAhaW1wb3J0YW50fS5tci1tZC0wLC5teC1tZC0we21hcmdpbi1yaWdodDowICFpbXBvcnRhbnR9Lm1iLW1kLTAsLm15LW1kLTB7bWFyZ2luLWJvdHRvbTowICFpbXBvcnRhbnR9Lm1sLW1kLTAsLm14LW1kLTB7bWFyZ2luLWxlZnQ6MCAhaW1wb3J0YW50fS5tLW1kLTF7bWFyZ2luOjAuMjVyZW0gIWltcG9ydGFudH0ubXQtbWQtMSwubXktbWQtMXttYXJnaW4tdG9wOjAuMjVyZW0gIWltcG9ydGFudH0ubXItbWQtMSwubXgtbWQtMXttYXJnaW4tcmlnaHQ6MC4yNXJlbSAhaW1wb3J0YW50fS5tYi1tZC0xLC5teS1tZC0xe21hcmdpbi1ib3R0b206MC4yNXJlbSAhaW1wb3J0YW50fS5tbC1tZC0xLC5teC1tZC0xe21hcmdpbi1sZWZ0OjAuMjVyZW0gIWltcG9ydGFudH0ubS1tZC0ye21hcmdpbjowLjVyZW0gIWltcG9ydGFudH0ubXQtbWQtMiwubXktbWQtMnttYXJnaW4tdG9wOjAuNXJlbSAhaW1wb3J0YW50fS5tci1tZC0yLC5teC1tZC0ye21hcmdpbi1yaWdodDowLjVyZW0gIWltcG9ydGFudH0ubWItbWQtMiwubXktbWQtMnttYXJnaW4tYm90dG9tOjAuNXJlbSAhaW1wb3J0YW50fS5tbC1tZC0yLC5teC1tZC0ye21hcmdpbi1sZWZ0OjAuNXJlbSAhaW1wb3J0YW50fS5tLW1kLTN7bWFyZ2luOjFyZW0gIWltcG9ydGFudH0ubXQtbWQtMywubXktbWQtM3ttYXJnaW4tdG9wOjFyZW0gIWltcG9ydGFudH0ubXItbWQtMywubXgtbWQtM3ttYXJnaW4tcmlnaHQ6MXJlbSAhaW1wb3J0YW50fS5tYi1tZC0zLC5teS1tZC0ze21hcmdpbi1ib3R0b206MXJlbSAhaW1wb3J0YW50fS5tbC1tZC0zLC5teC1tZC0ze21hcmdpbi1sZWZ0OjFyZW0gIWltcG9ydGFudH0ubS1tZC00e21hcmdpbjoxLjVyZW0gIWltcG9ydGFudH0ubXQtbWQtNCwubXktbWQtNHttYXJnaW4tdG9wOjEuNXJlbSAhaW1wb3J0YW50fS5tci1tZC00LC5teC1tZC00e21hcmdpbi1yaWdodDoxLjVyZW0gIWltcG9ydGFudH0ubWItbWQtNCwubXktbWQtNHttYXJnaW4tYm90dG9tOjEuNXJlbSAhaW1wb3J0YW50fS5tbC1tZC00LC5teC1tZC00e21hcmdpbi1sZWZ0OjEuNXJlbSAhaW1wb3J0YW50fS5tLW1kLTV7bWFyZ2luOjNyZW0gIWltcG9ydGFudH0ubXQtbWQtNSwubXktbWQtNXttYXJnaW4tdG9wOjNyZW0gIWltcG9ydGFudH0ubXItbWQtNSwubXgtbWQtNXttYXJnaW4tcmlnaHQ6M3JlbSAhaW1wb3J0YW50fS5tYi1tZC01LC5teS1tZC01e21hcmdpbi1ib3R0b206M3JlbSAhaW1wb3J0YW50fS5tbC1tZC01LC5teC1tZC01e21hcmdpbi1sZWZ0OjNyZW0gIWltcG9ydGFudH0ucC1tZC0we3BhZGRpbmc6MCAhaW1wb3J0YW50fS5wdC1tZC0wLC5weS1tZC0we3BhZGRpbmctdG9wOjAgIWltcG9ydGFudH0ucHItbWQtMCwucHgtbWQtMHtwYWRkaW5nLXJpZ2h0OjAgIWltcG9ydGFudH0ucGItbWQtMCwucHktbWQtMHtwYWRkaW5nLWJvdHRvbTowICFpbXBvcnRhbnR9LnBsLW1kLTAsLnB4LW1kLTB7cGFkZGluZy1sZWZ0OjAgIWltcG9ydGFudH0ucC1tZC0xe3BhZGRpbmc6MC4yNXJlbSAhaW1wb3J0YW50fS5wdC1tZC0xLC5weS1tZC0xe3BhZGRpbmctdG9wOjAuMjVyZW0gIWltcG9ydGFudH0ucHItbWQtMSwucHgtbWQtMXtwYWRkaW5nLXJpZ2h0OjAuMjVyZW0gIWltcG9ydGFudH0ucGItbWQtMSwucHktbWQtMXtwYWRkaW5nLWJvdHRvbTowLjI1cmVtICFpbXBvcnRhbnR9LnBsLW1kLTEsLnB4LW1kLTF7cGFkZGluZy1sZWZ0OjAuMjVyZW0gIWltcG9ydGFudH0ucC1tZC0ye3BhZGRpbmc6MC41cmVtICFpbXBvcnRhbnR9LnB0LW1kLTIsLnB5LW1kLTJ7cGFkZGluZy10b3A6MC41cmVtICFpbXBvcnRhbnR9LnByLW1kLTIsLnB4LW1kLTJ7cGFkZGluZy1yaWdodDowLjVyZW0gIWltcG9ydGFudH0ucGItbWQtMiwucHktbWQtMntwYWRkaW5nLWJvdHRvbTowLjVyZW0gIWltcG9ydGFudH0ucGwtbWQtMiwucHgtbWQtMntwYWRkaW5nLWxlZnQ6MC41cmVtICFpbXBvcnRhbnR9LnAtbWQtM3twYWRkaW5nOjFyZW0gIWltcG9ydGFudH0ucHQtbWQtMywucHktbWQtM3twYWRkaW5nLXRvcDoxcmVtICFpbXBvcnRhbnR9LnByLW1kLTMsLnB4LW1kLTN7cGFkZGluZy1yaWdodDoxcmVtICFpbXBvcnRhbnR9LnBiLW1kLTMsLnB5LW1kLTN7cGFkZGluZy1ib3R0b206MXJlbSAhaW1wb3J0YW50fS5wbC1tZC0zLC5weC1tZC0ze3BhZGRpbmctbGVmdDoxcmVtICFpbXBvcnRhbnR9LnAtbWQtNHtwYWRkaW5nOjEuNXJlbSAhaW1wb3J0YW50fS5wdC1tZC00LC5weS1tZC00e3BhZGRpbmctdG9wOjEuNXJlbSAhaW1wb3J0YW50fS5wci1tZC00LC5weC1tZC00e3BhZGRpbmctcmlnaHQ6MS41cmVtICFpbXBvcnRhbnR9LnBiLW1kLTQsLnB5LW1kLTR7cGFkZGluZy1ib3R0b206MS41cmVtICFpbXBvcnRhbnR9LnBsLW1kLTQsLnB4LW1kLTR7cGFkZGluZy1sZWZ0OjEuNXJlbSAhaW1wb3J0YW50fS5wLW1kLTV7cGFkZGluZzozcmVtICFpbXBvcnRhbnR9LnB0LW1kLTUsLnB5LW1kLTV7cGFkZGluZy10b3A6M3JlbSAhaW1wb3J0YW50fS5wci1tZC01LC5weC1tZC01e3BhZGRpbmctcmlnaHQ6M3JlbSAhaW1wb3J0YW50fS5wYi1tZC01LC5weS1tZC01e3BhZGRpbmctYm90dG9tOjNyZW0gIWltcG9ydGFudH0ucGwtbWQtNSwucHgtbWQtNXtwYWRkaW5nLWxlZnQ6M3JlbSAhaW1wb3J0YW50fS5tLW1kLWF1dG97bWFyZ2luOmF1dG8gIWltcG9ydGFudH0ubXQtbWQtYXV0bywubXktbWQtYXV0b3ttYXJnaW4tdG9wOmF1dG8gIWltcG9ydGFudH0ubXItbWQtYXV0bywubXgtbWQtYXV0b3ttYXJnaW4tcmlnaHQ6YXV0byAhaW1wb3J0YW50fS5tYi1tZC1hdXRvLC5teS1tZC1hdXRve21hcmdpbi1ib3R0b206YXV0byAhaW1wb3J0YW50fS5tbC1tZC1hdXRvLC5teC1tZC1hdXRve21hcmdpbi1sZWZ0OmF1dG8gIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KXsubS1sZy0we21hcmdpbjowICFpbXBvcnRhbnR9Lm10LWxnLTAsLm15LWxnLTB7bWFyZ2luLXRvcDowICFpbXBvcnRhbnR9Lm1yLWxnLTAsLm14LWxnLTB7bWFyZ2luLXJpZ2h0OjAgIWltcG9ydGFudH0ubWItbGctMCwubXktbGctMHttYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudH0ubWwtbGctMCwubXgtbGctMHttYXJnaW4tbGVmdDowICFpbXBvcnRhbnR9Lm0tbGctMXttYXJnaW46MC4yNXJlbSAhaW1wb3J0YW50fS5tdC1sZy0xLC5teS1sZy0xe21hcmdpbi10b3A6MC4yNXJlbSAhaW1wb3J0YW50fS5tci1sZy0xLC5teC1sZy0xe21hcmdpbi1yaWdodDowLjI1cmVtICFpbXBvcnRhbnR9Lm1iLWxnLTEsLm15LWxnLTF7bWFyZ2luLWJvdHRvbTowLjI1cmVtICFpbXBvcnRhbnR9Lm1sLWxnLTEsLm14LWxnLTF7bWFyZ2luLWxlZnQ6MC4yNXJlbSAhaW1wb3J0YW50fS5tLWxnLTJ7bWFyZ2luOjAuNXJlbSAhaW1wb3J0YW50fS5tdC1sZy0yLC5teS1sZy0ye21hcmdpbi10b3A6MC41cmVtICFpbXBvcnRhbnR9Lm1yLWxnLTIsLm14LWxnLTJ7bWFyZ2luLXJpZ2h0OjAuNXJlbSAhaW1wb3J0YW50fS5tYi1sZy0yLC5teS1sZy0ye21hcmdpbi1ib3R0b206MC41cmVtICFpbXBvcnRhbnR9Lm1sLWxnLTIsLm14LWxnLTJ7bWFyZ2luLWxlZnQ6MC41cmVtICFpbXBvcnRhbnR9Lm0tbGctM3ttYXJnaW46MXJlbSAhaW1wb3J0YW50fS5tdC1sZy0zLC5teS1sZy0ze21hcmdpbi10b3A6MXJlbSAhaW1wb3J0YW50fS5tci1sZy0zLC5teC1sZy0ze21hcmdpbi1yaWdodDoxcmVtICFpbXBvcnRhbnR9Lm1iLWxnLTMsLm15LWxnLTN7bWFyZ2luLWJvdHRvbToxcmVtICFpbXBvcnRhbnR9Lm1sLWxnLTMsLm14LWxnLTN7bWFyZ2luLWxlZnQ6MXJlbSAhaW1wb3J0YW50fS5tLWxnLTR7bWFyZ2luOjEuNXJlbSAhaW1wb3J0YW50fS5tdC1sZy00LC5teS1sZy00e21hcmdpbi10b3A6MS41cmVtICFpbXBvcnRhbnR9Lm1yLWxnLTQsLm14LWxnLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSAhaW1wb3J0YW50fS5tYi1sZy00LC5teS1sZy00e21hcmdpbi1ib3R0b206MS41cmVtICFpbXBvcnRhbnR9Lm1sLWxnLTQsLm14LWxnLTR7bWFyZ2luLWxlZnQ6MS41cmVtICFpbXBvcnRhbnR9Lm0tbGctNXttYXJnaW46M3JlbSAhaW1wb3J0YW50fS5tdC1sZy01LC5teS1sZy01e21hcmdpbi10b3A6M3JlbSAhaW1wb3J0YW50fS5tci1sZy01LC5teC1sZy01e21hcmdpbi1yaWdodDozcmVtICFpbXBvcnRhbnR9Lm1iLWxnLTUsLm15LWxnLTV7bWFyZ2luLWJvdHRvbTozcmVtICFpbXBvcnRhbnR9Lm1sLWxnLTUsLm14LWxnLTV7bWFyZ2luLWxlZnQ6M3JlbSAhaW1wb3J0YW50fS5wLWxnLTB7cGFkZGluZzowICFpbXBvcnRhbnR9LnB0LWxnLTAsLnB5LWxnLTB7cGFkZGluZy10b3A6MCAhaW1wb3J0YW50fS5wci1sZy0wLC5weC1sZy0we3BhZGRpbmctcmlnaHQ6MCAhaW1wb3J0YW50fS5wYi1sZy0wLC5weS1sZy0we3BhZGRpbmctYm90dG9tOjAgIWltcG9ydGFudH0ucGwtbGctMCwucHgtbGctMHtwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50fS5wLWxnLTF7cGFkZGluZzowLjI1cmVtICFpbXBvcnRhbnR9LnB0LWxnLTEsLnB5LWxnLTF7cGFkZGluZy10b3A6MC4yNXJlbSAhaW1wb3J0YW50fS5wci1sZy0xLC5weC1sZy0xe3BhZGRpbmctcmlnaHQ6MC4yNXJlbSAhaW1wb3J0YW50fS5wYi1sZy0xLC5weS1sZy0xe3BhZGRpbmctYm90dG9tOjAuMjVyZW0gIWltcG9ydGFudH0ucGwtbGctMSwucHgtbGctMXtwYWRkaW5nLWxlZnQ6MC4yNXJlbSAhaW1wb3J0YW50fS5wLWxnLTJ7cGFkZGluZzowLjVyZW0gIWltcG9ydGFudH0ucHQtbGctMiwucHktbGctMntwYWRkaW5nLXRvcDowLjVyZW0gIWltcG9ydGFudH0ucHItbGctMiwucHgtbGctMntwYWRkaW5nLXJpZ2h0OjAuNXJlbSAhaW1wb3J0YW50fS5wYi1sZy0yLC5weS1sZy0ye3BhZGRpbmctYm90dG9tOjAuNXJlbSAhaW1wb3J0YW50fS5wbC1sZy0yLC5weC1sZy0ye3BhZGRpbmctbGVmdDowLjVyZW0gIWltcG9ydGFudH0ucC1sZy0ze3BhZGRpbmc6MXJlbSAhaW1wb3J0YW50fS5wdC1sZy0zLC5weS1sZy0ze3BhZGRpbmctdG9wOjFyZW0gIWltcG9ydGFudH0ucHItbGctMywucHgtbGctM3twYWRkaW5nLXJpZ2h0OjFyZW0gIWltcG9ydGFudH0ucGItbGctMywucHktbGctM3twYWRkaW5nLWJvdHRvbToxcmVtICFpbXBvcnRhbnR9LnBsLWxnLTMsLnB4LWxnLTN7cGFkZGluZy1sZWZ0OjFyZW0gIWltcG9ydGFudH0ucC1sZy00e3BhZGRpbmc6MS41cmVtICFpbXBvcnRhbnR9LnB0LWxnLTQsLnB5LWxnLTR7cGFkZGluZy10b3A6MS41cmVtICFpbXBvcnRhbnR9LnByLWxnLTQsLnB4LWxnLTR7cGFkZGluZy1yaWdodDoxLjVyZW0gIWltcG9ydGFudH0ucGItbGctNCwucHktbGctNHtwYWRkaW5nLWJvdHRvbToxLjVyZW0gIWltcG9ydGFudH0ucGwtbGctNCwucHgtbGctNHtwYWRkaW5nLWxlZnQ6MS41cmVtICFpbXBvcnRhbnR9LnAtbGctNXtwYWRkaW5nOjNyZW0gIWltcG9ydGFudH0ucHQtbGctNSwucHktbGctNXtwYWRkaW5nLXRvcDozcmVtICFpbXBvcnRhbnR9LnByLWxnLTUsLnB4LWxnLTV7cGFkZGluZy1yaWdodDozcmVtICFpbXBvcnRhbnR9LnBiLWxnLTUsLnB5LWxnLTV7cGFkZGluZy1ib3R0b206M3JlbSAhaW1wb3J0YW50fS5wbC1sZy01LC5weC1sZy01e3BhZGRpbmctbGVmdDozcmVtICFpbXBvcnRhbnR9Lm0tbGctYXV0b3ttYXJnaW46YXV0byAhaW1wb3J0YW50fS5tdC1sZy1hdXRvLC5teS1sZy1hdXRve21hcmdpbi10b3A6YXV0byAhaW1wb3J0YW50fS5tci1sZy1hdXRvLC5teC1sZy1hdXRve21hcmdpbi1yaWdodDphdXRvICFpbXBvcnRhbnR9Lm1iLWxnLWF1dG8sLm15LWxnLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvICFpbXBvcnRhbnR9Lm1sLWxnLWF1dG8sLm14LWxnLWF1dG97bWFyZ2luLWxlZnQ6YXV0byAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KXsubS14bC0we21hcmdpbjowICFpbXBvcnRhbnR9Lm10LXhsLTAsLm15LXhsLTB7bWFyZ2luLXRvcDowICFpbXBvcnRhbnR9Lm1yLXhsLTAsLm14LXhsLTB7bWFyZ2luLXJpZ2h0OjAgIWltcG9ydGFudH0ubWIteGwtMCwubXkteGwtMHttYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudH0ubWwteGwtMCwubXgteGwtMHttYXJnaW4tbGVmdDowICFpbXBvcnRhbnR9Lm0teGwtMXttYXJnaW46MC4yNXJlbSAhaW1wb3J0YW50fS5tdC14bC0xLC5teS14bC0xe21hcmdpbi10b3A6MC4yNXJlbSAhaW1wb3J0YW50fS5tci14bC0xLC5teC14bC0xe21hcmdpbi1yaWdodDowLjI1cmVtICFpbXBvcnRhbnR9Lm1iLXhsLTEsLm15LXhsLTF7bWFyZ2luLWJvdHRvbTowLjI1cmVtICFpbXBvcnRhbnR9Lm1sLXhsLTEsLm14LXhsLTF7bWFyZ2luLWxlZnQ6MC4yNXJlbSAhaW1wb3J0YW50fS5tLXhsLTJ7bWFyZ2luOjAuNXJlbSAhaW1wb3J0YW50fS5tdC14bC0yLC5teS14bC0ye21hcmdpbi10b3A6MC41cmVtICFpbXBvcnRhbnR9Lm1yLXhsLTIsLm14LXhsLTJ7bWFyZ2luLXJpZ2h0OjAuNXJlbSAhaW1wb3J0YW50fS5tYi14bC0yLC5teS14bC0ye21hcmdpbi1ib3R0b206MC41cmVtICFpbXBvcnRhbnR9Lm1sLXhsLTIsLm14LXhsLTJ7bWFyZ2luLWxlZnQ6MC41cmVtICFpbXBvcnRhbnR9Lm0teGwtM3ttYXJnaW46MXJlbSAhaW1wb3J0YW50fS5tdC14bC0zLC5teS14bC0ze21hcmdpbi10b3A6MXJlbSAhaW1wb3J0YW50fS5tci14bC0zLC5teC14bC0ze21hcmdpbi1yaWdodDoxcmVtICFpbXBvcnRhbnR9Lm1iLXhsLTMsLm15LXhsLTN7bWFyZ2luLWJvdHRvbToxcmVtICFpbXBvcnRhbnR9Lm1sLXhsLTMsLm14LXhsLTN7bWFyZ2luLWxlZnQ6MXJlbSAhaW1wb3J0YW50fS5tLXhsLTR7bWFyZ2luOjEuNXJlbSAhaW1wb3J0YW50fS5tdC14bC00LC5teS14bC00e21hcmdpbi10b3A6MS41cmVtICFpbXBvcnRhbnR9Lm1yLXhsLTQsLm14LXhsLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSAhaW1wb3J0YW50fS5tYi14bC00LC5teS14bC00e21hcmdpbi1ib3R0b206MS41cmVtICFpbXBvcnRhbnR9Lm1sLXhsLTQsLm14LXhsLTR7bWFyZ2luLWxlZnQ6MS41cmVtICFpbXBvcnRhbnR9Lm0teGwtNXttYXJnaW46M3JlbSAhaW1wb3J0YW50fS5tdC14bC01LC5teS14bC01e21hcmdpbi10b3A6M3JlbSAhaW1wb3J0YW50fS5tci14bC01LC5teC14bC01e21hcmdpbi1yaWdodDozcmVtICFpbXBvcnRhbnR9Lm1iLXhsLTUsLm15LXhsLTV7bWFyZ2luLWJvdHRvbTozcmVtICFpbXBvcnRhbnR9Lm1sLXhsLTUsLm14LXhsLTV7bWFyZ2luLWxlZnQ6M3JlbSAhaW1wb3J0YW50fS5wLXhsLTB7cGFkZGluZzowICFpbXBvcnRhbnR9LnB0LXhsLTAsLnB5LXhsLTB7cGFkZGluZy10b3A6MCAhaW1wb3J0YW50fS5wci14bC0wLC5weC14bC0we3BhZGRpbmctcmlnaHQ6MCAhaW1wb3J0YW50fS5wYi14bC0wLC5weS14bC0we3BhZGRpbmctYm90dG9tOjAgIWltcG9ydGFudH0ucGwteGwtMCwucHgteGwtMHtwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50fS5wLXhsLTF7cGFkZGluZzowLjI1cmVtICFpbXBvcnRhbnR9LnB0LXhsLTEsLnB5LXhsLTF7cGFkZGluZy10b3A6MC4yNXJlbSAhaW1wb3J0YW50fS5wci14bC0xLC5weC14bC0xe3BhZGRpbmctcmlnaHQ6MC4yNXJlbSAhaW1wb3J0YW50fS5wYi14bC0xLC5weS14bC0xe3BhZGRpbmctYm90dG9tOjAuMjVyZW0gIWltcG9ydGFudH0ucGwteGwtMSwucHgteGwtMXtwYWRkaW5nLWxlZnQ6MC4yNXJlbSAhaW1wb3J0YW50fS5wLXhsLTJ7cGFkZGluZzowLjVyZW0gIWltcG9ydGFudH0ucHQteGwtMiwucHkteGwtMntwYWRkaW5nLXRvcDowLjVyZW0gIWltcG9ydGFudH0ucHIteGwtMiwucHgteGwtMntwYWRkaW5nLXJpZ2h0OjAuNXJlbSAhaW1wb3J0YW50fS5wYi14bC0yLC5weS14bC0ye3BhZGRpbmctYm90dG9tOjAuNXJlbSAhaW1wb3J0YW50fS5wbC14bC0yLC5weC14bC0ye3BhZGRpbmctbGVmdDowLjVyZW0gIWltcG9ydGFudH0ucC14bC0ze3BhZGRpbmc6MXJlbSAhaW1wb3J0YW50fS5wdC14bC0zLC5weS14bC0ze3BhZGRpbmctdG9wOjFyZW0gIWltcG9ydGFudH0ucHIteGwtMywucHgteGwtM3twYWRkaW5nLXJpZ2h0OjFyZW0gIWltcG9ydGFudH0ucGIteGwtMywucHkteGwtM3twYWRkaW5nLWJvdHRvbToxcmVtICFpbXBvcnRhbnR9LnBsLXhsLTMsLnB4LXhsLTN7cGFkZGluZy1sZWZ0OjFyZW0gIWltcG9ydGFudH0ucC14bC00e3BhZGRpbmc6MS41cmVtICFpbXBvcnRhbnR9LnB0LXhsLTQsLnB5LXhsLTR7cGFkZGluZy10b3A6MS41cmVtICFpbXBvcnRhbnR9LnByLXhsLTQsLnB4LXhsLTR7cGFkZGluZy1yaWdodDoxLjVyZW0gIWltcG9ydGFudH0ucGIteGwtNCwucHkteGwtNHtwYWRkaW5nLWJvdHRvbToxLjVyZW0gIWltcG9ydGFudH0ucGwteGwtNCwucHgteGwtNHtwYWRkaW5nLWxlZnQ6MS41cmVtICFpbXBvcnRhbnR9LnAteGwtNXtwYWRkaW5nOjNyZW0gIWltcG9ydGFudH0ucHQteGwtNSwucHkteGwtNXtwYWRkaW5nLXRvcDozcmVtICFpbXBvcnRhbnR9LnByLXhsLTUsLnB4LXhsLTV7cGFkZGluZy1yaWdodDozcmVtICFpbXBvcnRhbnR9LnBiLXhsLTUsLnB5LXhsLTV7cGFkZGluZy1ib3R0b206M3JlbSAhaW1wb3J0YW50fS5wbC14bC01LC5weC14bC01e3BhZGRpbmctbGVmdDozcmVtICFpbXBvcnRhbnR9Lm0teGwtYXV0b3ttYXJnaW46YXV0byAhaW1wb3J0YW50fS5tdC14bC1hdXRvLC5teS14bC1hdXRve21hcmdpbi10b3A6YXV0byAhaW1wb3J0YW50fS5tci14bC1hdXRvLC5teC14bC1hdXRve21hcmdpbi1yaWdodDphdXRvICFpbXBvcnRhbnR9Lm1iLXhsLWF1dG8sLm15LXhsLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvICFpbXBvcnRhbnR9Lm1sLXhsLWF1dG8sLm14LXhsLWF1dG97bWFyZ2luLWxlZnQ6YXV0byAhaW1wb3J0YW50fX0udGV4dC1tb25vc3BhY2V7Zm9udC1mYW1pbHk6U0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlfS50ZXh0LWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5ICFpbXBvcnRhbnR9LnRleHQtbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcCAhaW1wb3J0YW50fS50ZXh0LXRydW5jYXRle292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQgIWltcG9ydGFudH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIgIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey50ZXh0LXNtLWxlZnR7dGV4dC1hbGlnbjpsZWZ0ICFpbXBvcnRhbnR9LnRleHQtc20tcmlnaHR7dGV4dC1hbGlnbjpyaWdodCAhaW1wb3J0YW50fS50ZXh0LXNtLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey50ZXh0LW1kLWxlZnR7dGV4dC1hbGlnbjpsZWZ0ICFpbXBvcnRhbnR9LnRleHQtbWQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodCAhaW1wb3J0YW50fS50ZXh0LW1kLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpey50ZXh0LWxnLWxlZnR7dGV4dC1hbGlnbjpsZWZ0ICFpbXBvcnRhbnR9LnRleHQtbGctcmlnaHR7dGV4dC1hbGlnbjpyaWdodCAhaW1wb3J0YW50fS50ZXh0LWxnLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KXsudGV4dC14bC1sZWZ0e3RleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50fS50ZXh0LXhsLXJpZ2h0e3RleHQtYWxpZ246cmlnaHQgIWltcG9ydGFudH0udGV4dC14bC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIgIWltcG9ydGFudH19LnRleHQtbG93ZXJjYXNle3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZSAhaW1wb3J0YW50fS50ZXh0LXVwcGVyY2FzZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UgIWltcG9ydGFudH0udGV4dC1jYXBpdGFsaXple3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemUgIWltcG9ydGFudH0uZm9udC13ZWlnaHQtbGlnaHR7Zm9udC13ZWlnaHQ6MzAwICFpbXBvcnRhbnR9LmZvbnQtd2VpZ2h0LW5vcm1hbHtmb250LXdlaWdodDo0MDAgIWltcG9ydGFudH0uZm9udC13ZWlnaHQtYm9sZHtmb250LXdlaWdodDo3MDAgIWltcG9ydGFudH0uZm9udC1pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMgIWltcG9ydGFudH0udGV4dC13aGl0ZXtjb2xvcjojZmZmICFpbXBvcnRhbnR9LnRleHQtcHJpbWFyeXtjb2xvcjojMWExYTFhICFpbXBvcnRhbnR9YS50ZXh0LXByaW1hcnk6aG92ZXIsYS50ZXh0LXByaW1hcnk6Zm9jdXN7Y29sb3I6IzAxMDAwMCAhaW1wb3J0YW50fS50ZXh0LXNlY29uZGFyeXtjb2xvcjojZmZmICFpbXBvcnRhbnR9YS50ZXh0LXNlY29uZGFyeTpob3ZlcixhLnRleHQtc2Vjb25kYXJ5OmZvY3Vze2NvbG9yOiNlNmU1ZTUgIWltcG9ydGFudH0udGV4dC1zdWNjZXNze2NvbG9yOiM0QkJGNzMgIWltcG9ydGFudH1hLnRleHQtc3VjY2Vzczpob3ZlcixhLnRleHQtc3VjY2Vzczpmb2N1c3tjb2xvcjojMzg5ZjVjICFpbXBvcnRhbnR9LnRleHQtaW5mb3tjb2xvcjojMUY5QkNGICFpbXBvcnRhbnR9YS50ZXh0LWluZm86aG92ZXIsYS50ZXh0LWluZm86Zm9jdXN7Y29sb3I6IzE4N2FhMyAhaW1wb3J0YW50fS50ZXh0LXdhcm5pbmd7Y29sb3I6I2YwYWQ0ZSAhaW1wb3J0YW50fWEudGV4dC13YXJuaW5nOmhvdmVyLGEudGV4dC13YXJuaW5nOmZvY3Vze2NvbG9yOiNlYzk3MWYgIWltcG9ydGFudH0udGV4dC1kYW5nZXJ7Y29sb3I6I2Q5NTM0ZiAhaW1wb3J0YW50fWEudGV4dC1kYW5nZXI6aG92ZXIsYS50ZXh0LWRhbmdlcjpmb2N1c3tjb2xvcjojYzkzMDJjICFpbXBvcnRhbnR9LnRleHQtbGlnaHR7Y29sb3I6I2ZmZiAhaW1wb3J0YW50fWEudGV4dC1saWdodDpob3ZlcixhLnRleHQtbGlnaHQ6Zm9jdXN7Y29sb3I6I2U2ZTVlNSAhaW1wb3J0YW50fS50ZXh0LWRhcmt7Y29sb3I6IzM0M2E0MCAhaW1wb3J0YW50fWEudGV4dC1kYXJrOmhvdmVyLGEudGV4dC1kYXJrOmZvY3Vze2NvbG9yOiMxZDIxMjQgIWltcG9ydGFudH0udGV4dC1ib2R5e2NvbG9yOiM5MTlhYTEgIWltcG9ydGFudH0udGV4dC1tdXRlZHtjb2xvcjojOTE5YWExICFpbXBvcnRhbnR9LnRleHQtYmxhY2stNTB7Y29sb3I6cmdiYSgwLDAsMCwwLjUpICFpbXBvcnRhbnR9LnRleHQtd2hpdGUtNTB7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjUpICFpbXBvcnRhbnR9LnRleHQtaGlkZXtmb250OjAvMCBhO2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MH0udmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudH0uaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnR9QG1lZGlhIHByaW50eyosKjo6YmVmb3JlLCo6OmFmdGVye3RleHQtc2hhZG93Om5vbmUgIWltcG9ydGFudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50fWE6bm90KC5idG4pe3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YWJiclt0aXRsZV06OmFmdGVye2NvbnRlbnQ6IiAoIiBhdHRyKHRpdGxlKSAiKSJ9cHJle3doaXRlLXNwYWNlOnByZS13cmFwICFpbXBvcnRhbnR9cHJlLGJsb2NrcXVvdGV7Ym9yZGVyOjFweCBzb2xpZCAjYWRiNWJkO3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfXRoZWFke2Rpc3BsYXk6dGFibGUtaGVhZGVyLWdyb3VwfXRyLGltZ3twYWdlLWJyZWFrLWluc2lkZTphdm9pZH1wLGgyLGgze29ycGhhbnM6Mzt3aWRvd3M6M31oMixoM3twYWdlLWJyZWFrLWFmdGVyOmF2b2lkfUBwYWdle3NpemU6YTN9Ym9keXttaW4td2lkdGg6OTkycHggIWltcG9ydGFudH0uY29udGFpbmVye21pbi13aWR0aDo5OTJweCAhaW1wb3J0YW50fS5uYXZiYXJ7ZGlzcGxheTpub25lfS5iYWRnZXtib3JkZXI6MXB4IHNvbGlkICMwMDB9LnRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZSAhaW1wb3J0YW50fS50YWJsZSB0ZCwudGFibGUgdGh7YmFja2dyb3VuZC1jb2xvcjojZmZmICFpbXBvcnRhbnR9LnRhYmxlLWJvcmRlcmVkIHRoLC50YWJsZS1ib3JkZXJlZCB0ZHtib3JkZXI6MXB4IHNvbGlkICNlY2VlZWYgIWltcG9ydGFudH0udGFibGUtZGFya3tjb2xvcjppbmhlcml0fS50YWJsZS1kYXJrIHRoLC50YWJsZS1kYXJrIHRkLC50YWJsZS1kYXJrIHRoZWFkIHRoLC50YWJsZS1kYXJrIHRib2R5K3Rib2R5e2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDAuMDUpfS50YWJsZSAudGhlYWQtZGFyayB0aHtjb2xvcjppbmhlcml0O2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDAuMDUpfX0ubmF2YmFye2ZvbnQtc2l6ZTowLjc2NTYyNXJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Zm9udC13ZWlnaHQ6NjAwfS5uYXZiYXItbmF2IC5uYXYtbGlua3twYWRkaW5nLXRvcDouNzE1cmVtO3BhZGRpbmctYm90dG9tOi43MTVyZW19Lm5hdmJhci1icmFuZHttYXJnaW4tcmlnaHQ6MnJlbX0uYmctcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMxYTFhMWEgIWltcG9ydGFudH0uYmctbGlnaHR7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSl9LmJnLWxpZ2h0Lm5hdmJhci1maXhlZC10b3B7Ym9yZGVyLXdpZHRoOjAgMCAxcHggMH0uYmctbGlnaHQubmF2YmFyLWJvdHRvbS10b3B7Ym9yZGVyLXdpZHRoOjFweCAwIDAgMH0ubmF2LWl0ZW17bWFyZ2luLXJpZ2h0OjJyZW19LmJ0bntmb250LXNpemU6MC43NjU2MjVyZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5idG4tc20sLmJ0bi1ncm91cC1zbT4uYnRue2ZvbnQtc2l6ZToxMHB4fS5idG4td2FybmluZywuYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nOm5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLmJ0bi13YXJuaW5nOmZvY3Vze2NvbG9yOiNmZmZ9LmJ0bi1vdXRsaW5lLXNlY29uZGFyeXtib3JkZXItY29sb3I6IzkxOWFhMTtjb2xvcjojOTE5YWExfS5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmhvdmVyLC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmZvY3VzLC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOm5vdCguZGlzYWJsZWQpOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjZWQ0ZGE7Ym9yZGVyLWNvbG9yOiNjZWQ0ZGE7Y29sb3I6I2ZmZn0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdChbZGlzYWJsZWRdKTpub3QoLmRpc2FibGVkKTpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMjA2LDIxMiwyMTgsMC41KTtib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDIwNiwyMTIsMjE4LDAuNSl9W2NsYXNzKj0iYnRuLW91dGxpbmUtIl17Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXNlY29uZGFyeXtib3JkZXI6MXB4IHNvbGlkICNjZWQ0ZGEgIWltcG9ydGFudH1ib2R5e2ZvbnQtd2VpZ2h0OjIwMDtsZXR0ZXItc3BhY2luZzoxcHh9aDEsaDIsaDMsaDQsaDUsaDZ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjNweH0udGV4dC1zZWNvbmRhcnl7Y29sb3I6IzkxOWFhMSAhaW1wb3J0YW50fXRoe2ZvbnQtc2l6ZTowLjc2NTYyNXJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnRhYmxlIHRoLC50YWJsZSB0ZHtwYWRkaW5nOjEuNXJlbX0udGFibGUtc20gdGgsLnRhYmxlLXNtIHRke3BhZGRpbmc6MC43NXJlbX0uZHJvcGRvd24tbWVudXtmb250LXNpemU6MC43NjU2MjVyZW07dGV4dC10cmFuc2Zvcm06bm9uZX0ubGlzdC1ncm91cC1pdGVtIGgxLC5saXN0LWdyb3VwLWl0ZW0gaDIsLmxpc3QtZ3JvdXAtaXRlbSBoMywubGlzdC1ncm91cC1pdGVtIGg0LC5saXN0LWdyb3VwLWl0ZW0gaDUsLmxpc3QtZ3JvdXAtaXRlbSBoNiwubGlzdC1ncm91cC1pdGVtIC5oMSwubGlzdC1ncm91cC1pdGVtIC5oMiwubGlzdC1ncm91cC1pdGVtIC5oMywubGlzdC1ncm91cC1pdGVtIC5oNCwubGlzdC1ncm91cC1pdGVtIC5oNSwubGlzdC1ncm91cC1pdGVtIC5oNntjb2xvcjppbmhlcml0fS5jYXJkLXRpdGxlLC5jYXJkLWhlYWRlcntjb2xvcjppbmhlcml0fQ==\"") - packr.PackJSONBytes("./assets", "LICENSE", "\"VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTEtMjAxOCBUd2l0dGVyLCBJbmMuCkNvcHlyaWdodCAoYykgMjAxMS0yMDE4IFRoZSBCb290c3RyYXAgQXV0aG9ycwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4=\"") - packr.PackJSONBytes("./assets", "bootstrap.bundle.min.js", "\"LyohCiAgKiBCb290c3RyYXAgdjQuMC4wIChodHRwczovL2dldGJvb3RzdHJhcC5jb20pCiAgKiBDb3B5cmlnaHQgMjAxMS0yMDE4IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpCiAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogICovCiFmdW5jdGlvbih0LGUpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/ZShleHBvcnRzLHJlcXVpcmUoImpxdWVyeSIpKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiLCJqcXVlcnkiXSxlKTplKHQuYm9vdHN0cmFwPXt9LHQualF1ZXJ5KX0odGhpcyxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLmtleSxpKX19ZnVuY3Rpb24gaSh0LGUsaSl7cmV0dXJuIGUmJm4odC5wcm90b3R5cGUsZSksaSYmbih0LGkpLHR9ZnVuY3Rpb24gcigpe3JldHVybihyPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIGkgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSYmKHRbaV09bltpXSl9cmV0dXJuIHR9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Zm9yKHZhciBvLHMsYSxsLGMsaCxmLHUsZCxwLGcsbSxfLHYsRSx5LGIsVCxDLHcsSSxBLEQsUyxPLE4saz1mdW5jdGlvbih0KXt2YXIgZT0hMTtmdW5jdGlvbiBuKGUpe3ZhciBuPXRoaXMscj0hMTtyZXR1cm4gdCh0aGlzKS5vbmUoaS5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbigpe3I9ITB9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cnx8aS50cmlnZ2VyVHJhbnNpdGlvbkVuZChuKX0sZSksdGhpc312YXIgaT17VFJBTlNJVElPTl9FTkQ6ImJzVHJhbnNpdGlvbkVuZCIsZ2V0VUlEOmZ1bmN0aW9uKHQpe2Rve3QrPX5+KDFlNipNYXRoLnJhbmRvbSgpKX13aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSk7cmV0dXJuIHR9LGdldFNlbGVjdG9yRnJvbUVsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFyIG4saT1lLmdldEF0dHJpYnV0ZSgiZGF0YS10YXJnZXQiKTtpJiYiIyIhPT1pfHwoaT1lLmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiIiksIiMiPT09aS5jaGFyQXQoMCkmJihuPWksaT1uPSJmdW5jdGlvbiI9PXR5cGVvZiB0LmVzY2FwZVNlbGVjdG9yP3QuZXNjYXBlU2VsZWN0b3Iobikuc3Vic3RyKDEpOm4ucmVwbGFjZSgvKDp8XC58XFt8XF18LHw9fEApL2csIlxcJDEiKSk7dHJ5e3JldHVybiB0KGRvY3VtZW50KS5maW5kKGkpLmxlbmd0aD4wP2k6bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19LHJlZmxvdzpmdW5jdGlvbih0KXtyZXR1cm4gdC5vZmZzZXRIZWlnaHR9LHRyaWdnZXJUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKG4pe3QobikudHJpZ2dlcihlLmVuZCl9LHN1cHBvcnRzVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKGUpfSxpc0VsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuKHRbMF18fHQpLm5vZGVUeXBlfSx0eXBlQ2hlY2tDb25maWc6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgciBpbiBuKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpKXt2YXIgbz1uW3JdLHM9ZVtyXSxhPXMmJmkuaXNFbGVtZW50KHMpPyJlbGVtZW50IjoobD1zLHt9LnRvU3RyaW5nLmNhbGwobCkubWF0Y2goL1xzKFthLXpBLVpdKykvKVsxXS50b0xvd2VyQ2FzZSgpKTtpZighbmV3IFJlZ0V4cChvKS50ZXN0KGEpKXRocm93IG5ldyBFcnJvcih0LnRvVXBwZXJDYXNlKCkrJzogT3B0aW9uICInK3IrJyIgcHJvdmlkZWQgdHlwZSAiJythKyciIGJ1dCBleHBlY3RlZCB0eXBlICInK28rJyIuJyl9dmFyIGx9fTtyZXR1cm4gZT0oInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuUVVuaXQpJiZ7ZW5kOiJ0cmFuc2l0aW9uZW5kIn0sdC5mbi5lbXVsYXRlVHJhbnNpdGlvbkVuZD1uLGkuc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJih0LmV2ZW50LnNwZWNpYWxbaS5UUkFOU0lUSU9OX0VORF09e2JpbmRUeXBlOmUuZW5kLGRlbGVnYXRlVHlwZTplLmVuZCxoYW5kbGU6ZnVuY3Rpb24oZSl7aWYodChlLnRhcmdldCkuaXModGhpcykpcmV0dXJuIGUuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pLGl9KGU9ZSYmZS5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdCIpP2UuZGVmYXVsdDplKSxMPShzPSJhbGVydCIsbD0iLiIrKGE9ImJzLmFsZXJ0IiksYz0obz1lKS5mbltzXSxoPXtDTE9TRToiY2xvc2UiK2wsQ0xPU0VEOiJjbG9zZWQiK2wsQ0xJQ0tfREFUQV9BUEk6ImNsaWNrIitsKyIuZGF0YS1hcGkifSxmPSJhbGVydCIsdT0iZmFkZSIsZD0ic2hvdyIscD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZWxlbWVudD10fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmNsb3NlPWZ1bmN0aW9uKHQpe3Q9dHx8dGhpcy5fZWxlbWVudDt2YXIgZT10aGlzLl9nZXRSb290RWxlbWVudCh0KTt0aGlzLl90cmlnZ2VyQ2xvc2VFdmVudChlKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8dGhpcy5fcmVtb3ZlRWxlbWVudChlKX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7by5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsYSksdGhpcy5fZWxlbWVudD1udWxsfSxlLl9nZXRSb290RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodCksbj0hMTtyZXR1cm4gZSYmKG49byhlKVswXSksbnx8KG49byh0KS5jbG9zZXN0KCIuIitmKVswXSksbn0sZS5fdHJpZ2dlckNsb3NlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9by5FdmVudChoLkNMT1NFKTtyZXR1cm4gbyh0KS50cmlnZ2VyKGUpLGV9LGUuX3JlbW92ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztvKHQpLnJlbW92ZUNsYXNzKGQpLGsuc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJm8odCkuaGFzQ2xhc3ModSk/byh0KS5vbmUoay5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbihuKXtyZXR1cm4gZS5fZGVzdHJveUVsZW1lbnQodCxuKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDE1MCk6dGhpcy5fZGVzdHJveUVsZW1lbnQodCl9LGUuX2Rlc3Ryb3lFbGVtZW50PWZ1bmN0aW9uKHQpe28odCkuZGV0YWNoKCkudHJpZ2dlcihoLkNMT1NFRCkucmVtb3ZlKCl9LHQuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49byh0aGlzKSxpPW4uZGF0YShhKTtpfHwoaT1uZXcgdCh0aGlzKSxuLmRhdGEoYSxpKSksImNsb3NlIj09PWUmJmlbZV0odGhpcyl9KX0sdC5faGFuZGxlRGlzbWlzcz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLHQuY2xvc2UodGhpcyl9fSxpKHQsbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuMC4wIn19XSksdH0oKSxvKGRvY3VtZW50KS5vbihoLkNMSUNLX0RBVEFfQVBJLCdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJyxwLl9oYW5kbGVEaXNtaXNzKG5ldyBwKSksby5mbltzXT1wLl9qUXVlcnlJbnRlcmZhY2Usby5mbltzXS5Db25zdHJ1Y3Rvcj1wLG8uZm5bc10ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBvLmZuW3NdPWMscC5falF1ZXJ5SW50ZXJmYWNlfSxwKSxQPShtPSJidXR0b24iLHY9Ii4iKyhfPSJicy5idXR0b24iKSxFPSIuZGF0YS1hcGkiLHk9KGc9ZSkuZm5bbV0sYj0iYWN0aXZlIixUPSJidG4iLEM9ImZvY3VzIix3PSdbZGF0YS10b2dnbGVePSJidXR0b24iXScsST0nW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0nLEE9ImlucHV0IixEPSIuYWN0aXZlIixTPSIuYnRuIixPPXtDTElDS19EQVRBX0FQSToiY2xpY2siK3YrRSxGT0NVU19CTFVSX0RBVEFfQVBJOiJmb2N1cyIrditFKyIgYmx1ciIrditFfSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9lbGVtZW50PXR9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIHQ9ITAsZT0hMCxuPWcodGhpcy5fZWxlbWVudCkuY2xvc2VzdChJKVswXTtpZihuKXt2YXIgaT1nKHRoaXMuX2VsZW1lbnQpLmZpbmQoQSlbMF07aWYoaSl7aWYoInJhZGlvIj09PWkudHlwZSlpZihpLmNoZWNrZWQmJmcodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoYikpdD0hMTtlbHNle3ZhciByPWcobikuZmluZChEKVswXTtyJiZnKHIpLnJlbW92ZUNsYXNzKGIpfWlmKHQpe2lmKGkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHxuLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8aS5jbGFzc0xpc3QuY29udGFpbnMoImRpc2FibGVkIil8fG4uY2xhc3NMaXN0LmNvbnRhaW5zKCJkaXNhYmxlZCIpKXJldHVybjtpLmNoZWNrZWQ9IWcodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoYiksZyhpKS50cmlnZ2VyKCJjaGFuZ2UiKX1pLmZvY3VzKCksZT0hMX19ZSYmdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsIWcodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoYikpLHQmJmcodGhpcy5fZWxlbWVudCkudG9nZ2xlQ2xhc3MoYil9LGUuZGlzcG9zZT1mdW5jdGlvbigpe2cucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LF8pLHRoaXMuX2VsZW1lbnQ9bnVsbH0sdC5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj1nKHRoaXMpLmRhdGEoXyk7bnx8KG49bmV3IHQodGhpcyksZyh0aGlzKS5kYXRhKF8sbikpLCJ0b2dnbGUiPT09ZSYmbltlXSgpfSl9LGkodCxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX1dKSx0fSgpLGcoZG9jdW1lbnQpLm9uKE8uQ0xJQ0tfREFUQV9BUEksdyxmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIGU9dC50YXJnZXQ7ZyhlKS5oYXNDbGFzcyhUKXx8KGU9ZyhlKS5jbG9zZXN0KFMpKSxOLl9qUXVlcnlJbnRlcmZhY2UuY2FsbChnKGUpLCJ0b2dnbGUiKX0pLm9uKE8uRk9DVVNfQkxVUl9EQVRBX0FQSSx3LGZ1bmN0aW9uKHQpe3ZhciBlPWcodC50YXJnZXQpLmNsb3Nlc3QoUylbMF07ZyhlKS50b2dnbGVDbGFzcyhDLC9eZm9jdXMoaW4pPyQvLnRlc3QodC50eXBlKSl9KSxnLmZuW21dPU4uX2pRdWVyeUludGVyZmFjZSxnLmZuW21dLkNvbnN0cnVjdG9yPU4sZy5mblttXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGcuZm5bbV09eSxOLl9qUXVlcnlJbnRlcmZhY2V9LE4pLHg9ZnVuY3Rpb24odCl7dmFyIGU9ImNhcm91c2VsIixuPSJicy5jYXJvdXNlbCIsbz0iLiIrbixzPXQuZm5bZV0sYT17aW50ZXJ2YWw6NWUzLGtleWJvYXJkOiEwLHNsaWRlOiExLHBhdXNlOiJob3ZlciIsd3JhcDohMH0sbD17aW50ZXJ2YWw6IihudW1iZXJ8Ym9vbGVhbikiLGtleWJvYXJkOiJib29sZWFuIixzbGlkZToiKGJvb2xlYW58c3RyaW5nKSIscGF1c2U6IihzdHJpbmd8Ym9vbGVhbikiLHdyYXA6ImJvb2xlYW4ifSxjPSJuZXh0IixoPSJwcmV2IixmPSJsZWZ0Iix1PSJyaWdodCIsZD17U0xJREU6InNsaWRlIitvLFNMSUQ6InNsaWQiK28sS0VZRE9XTjoia2V5ZG93biIrbyxNT1VTRUVOVEVSOiJtb3VzZWVudGVyIitvLE1PVVNFTEVBVkU6Im1vdXNlbGVhdmUiK28sVE9VQ0hFTkQ6InRvdWNoZW5kIitvLExPQURfREFUQV9BUEk6ImxvYWQiK28rIi5kYXRhLWFwaSIsQ0xJQ0tfREFUQV9BUEk6ImNsaWNrIitvKyIuZGF0YS1hcGkifSxwPSJjYXJvdXNlbCIsZz0iYWN0aXZlIixtPSJzbGlkZSIsXz0iY2Fyb3VzZWwtaXRlbS1yaWdodCIsdj0iY2Fyb3VzZWwtaXRlbS1sZWZ0IixFPSJjYXJvdXNlbC1pdGVtLW5leHQiLHk9ImNhcm91c2VsLWl0ZW0tcHJldiIsYj17QUNUSVZFOiIuYWN0aXZlIixBQ1RJVkVfSVRFTToiLmFjdGl2ZS5jYXJvdXNlbC1pdGVtIixJVEVNOiIuY2Fyb3VzZWwtaXRlbSIsTkVYVF9QUkVWOiIuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IixJTkRJQ0FUT1JTOiIuY2Fyb3VzZWwtaW5kaWNhdG9ycyIsREFUQV9TTElERToiW2RhdGEtc2xpZGVdLCBbZGF0YS1zbGlkZS10b10iLERBVEFfUklERTonW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXSd9LFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGUsbil7dGhpcy5faXRlbXM9bnVsbCx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl9pc1NsaWRpbmc9ITEsdGhpcy50b3VjaFRpbWVvdXQ9bnVsbCx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKG4pLHRoaXMuX2VsZW1lbnQ9dChlKVswXSx0aGlzLl9pbmRpY2F0b3JzRWxlbWVudD10KHRoaXMuX2VsZW1lbnQpLmZpbmQoYi5JTkRJQ0FUT1JTKVswXSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpfXZhciBUPXMucHJvdG90eXBlO3JldHVybiBULm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9pc1NsaWRpbmd8fHRoaXMuX3NsaWRlKGMpfSxULm5leHRXaGVuVmlzaWJsZT1mdW5jdGlvbigpeyFkb2N1bWVudC5oaWRkZW4mJnQodGhpcy5fZWxlbWVudCkuaXMoIjp2aXNpYmxlIikmJiJoaWRkZW4iIT09dCh0aGlzLl9lbGVtZW50KS5jc3MoInZpc2liaWxpdHkiKSYmdGhpcy5uZXh0KCl9LFQucHJldj1mdW5jdGlvbigpe3RoaXMuX2lzU2xpZGluZ3x8dGhpcy5fc2xpZGUoaCl9LFQucGF1c2U9ZnVuY3Rpb24oZSl7ZXx8KHRoaXMuX2lzUGF1c2VkPSEwKSx0KHRoaXMuX2VsZW1lbnQpLmZpbmQoYi5ORVhUX1BSRVYpWzBdJiZrLnN1cHBvcnRzVHJhbnNpdGlvbkVuZCgpJiYoay50cmlnZ2VyVHJhbnNpdGlvbkVuZCh0aGlzLl9lbGVtZW50KSx0aGlzLmN5Y2xlKCEwKSksY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbH0sVC5jeWNsZT1mdW5jdGlvbih0KXt0fHwodGhpcy5faXNQYXVzZWQ9ITEpLHRoaXMuX2ludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbCksdGhpcy5fY29uZmlnLmludGVydmFsJiYhdGhpcy5faXNQYXVzZWQmJih0aGlzLl9pbnRlcnZhbD1zZXRJbnRlcnZhbCgoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP3RoaXMubmV4dFdoZW5WaXNpYmxlOnRoaXMubmV4dCkuYmluZCh0aGlzKSx0aGlzLl9jb25maWcuaW50ZXJ2YWwpKX0sVC50bz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3RoaXMuX2FjdGl2ZUVsZW1lbnQ9dCh0aGlzLl9lbGVtZW50KS5maW5kKGIuQUNUSVZFX0lURU0pWzBdO3ZhciBpPXRoaXMuX2dldEl0ZW1JbmRleCh0aGlzLl9hY3RpdmVFbGVtZW50KTtpZighKGU+dGhpcy5faXRlbXMubGVuZ3RoLTF8fGU8MCkpaWYodGhpcy5faXNTbGlkaW5nKXQodGhpcy5fZWxlbWVudCkub25lKGQuU0xJRCxmdW5jdGlvbigpe3JldHVybiBuLnRvKGUpfSk7ZWxzZXtpZihpPT09ZSlyZXR1cm4gdGhpcy5wYXVzZSgpLHZvaWQgdGhpcy5jeWNsZSgpO3ZhciByPWU+aT9jOmg7dGhpcy5fc2xpZGUocix0aGlzLl9pdGVtc1tlXSl9fSxULmRpc3Bvc2U9ZnVuY3Rpb24oKXt0KHRoaXMuX2VsZW1lbnQpLm9mZihvKSx0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxuKSx0aGlzLl9pdGVtcz1udWxsLHRoaXMuX2NvbmZpZz1udWxsLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2lzUGF1c2VkPW51bGwsdGhpcy5faXNTbGlkaW5nPW51bGwsdGhpcy5fYWN0aXZlRWxlbWVudD1udWxsLHRoaXMuX2luZGljYXRvcnNFbGVtZW50PW51bGx9LFQuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1yKHt9LGEsdCksay50eXBlQ2hlY2tDb25maWcoZSx0LGwpLHR9LFQuX2FkZEV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9jb25maWcua2V5Ym9hcmQmJnQodGhpcy5fZWxlbWVudCkub24oZC5LRVlET1dOLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9rZXlkb3duKHQpfSksImhvdmVyIj09PXRoaXMuX2NvbmZpZy5wYXVzZSYmKHQodGhpcy5fZWxlbWVudCkub24oZC5NT1VTRUVOVEVSLGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhdXNlKHQpfSkub24oZC5NT1VTRUxFQVZFLGZ1bmN0aW9uKHQpe3JldHVybiBlLmN5Y2xlKHQpfSksIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnQodGhpcy5fZWxlbWVudCkub24oZC5UT1VDSEVORCxmdW5jdGlvbigpe2UucGF1c2UoKSxlLnRvdWNoVGltZW91dCYmY2xlYXJUaW1lb3V0KGUudG91Y2hUaW1lb3V0KSxlLnRvdWNoVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKHQpe3JldHVybiBlLmN5Y2xlKHQpfSw1MDArZS5fY29uZmlnLmludGVydmFsKX0pKX0sVC5fa2V5ZG93bj1mdW5jdGlvbih0KXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdCh0LnRhcmdldC50YWdOYW1lKSlzd2l0Y2godC53aGljaCl7Y2FzZSAzNzp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5uZXh0KCl9fSxULl9nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2l0ZW1zPXQubWFrZUFycmF5KHQoZSkucGFyZW50KCkuZmluZChiLklURU0pKSx0aGlzLl9pdGVtcy5pbmRleE9mKGUpfSxULl9nZXRJdGVtQnlEaXJlY3Rpb249ZnVuY3Rpb24odCxlKXt2YXIgbj10PT09YyxpPXQ9PT1oLHI9dGhpcy5fZ2V0SXRlbUluZGV4KGUpLG89dGhpcy5faXRlbXMubGVuZ3RoLTE7aWYoKGkmJjA9PT1yfHxuJiZyPT09bykmJiF0aGlzLl9jb25maWcud3JhcClyZXR1cm4gZTt2YXIgcz0ocisodD09PWg/LTE6MSkpJXRoaXMuX2l0ZW1zLmxlbmd0aDtyZXR1cm4tMT09PXM/dGhpcy5faXRlbXNbdGhpcy5faXRlbXMubGVuZ3RoLTFdOnRoaXMuX2l0ZW1zW3NdfSxULl90cmlnZ2VyU2xpZGVFdmVudD1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMuX2dldEl0ZW1JbmRleChlKSxyPXRoaXMuX2dldEl0ZW1JbmRleCh0KHRoaXMuX2VsZW1lbnQpLmZpbmQoYi5BQ1RJVkVfSVRFTSlbMF0pLG89dC5FdmVudChkLlNMSURFLHtyZWxhdGVkVGFyZ2V0OmUsZGlyZWN0aW9uOm4sZnJvbTpyLHRvOml9KTtyZXR1cm4gdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKG8pLG99LFQuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpe3QodGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpLmZpbmQoYi5BQ1RJVkUpLnJlbW92ZUNsYXNzKGcpO3ZhciBuPXRoaXMuX2luZGljYXRvcnNFbGVtZW50LmNoaWxkcmVuW3RoaXMuX2dldEl0ZW1JbmRleChlKV07biYmdChuKS5hZGRDbGFzcyhnKX19LFQuX3NsaWRlPWZ1bmN0aW9uKGUsbil7dmFyIGkscixvLHM9dGhpcyxhPXQodGhpcy5fZWxlbWVudCkuZmluZChiLkFDVElWRV9JVEVNKVswXSxsPXRoaXMuX2dldEl0ZW1JbmRleChhKSxoPW58fGEmJnRoaXMuX2dldEl0ZW1CeURpcmVjdGlvbihlLGEpLHA9dGhpcy5fZ2V0SXRlbUluZGV4KGgpLFQ9Qm9vbGVhbih0aGlzLl9pbnRlcnZhbCk7aWYoZT09PWM/KGk9dixyPUUsbz1mKTooaT1fLHI9eSxvPXUpLGgmJnQoaCkuaGFzQ2xhc3MoZykpdGhpcy5faXNTbGlkaW5nPSExO2Vsc2UgaWYoIXRoaXMuX3RyaWdnZXJTbGlkZUV2ZW50KGgsbykuaXNEZWZhdWx0UHJldmVudGVkKCkmJmEmJmgpe3RoaXMuX2lzU2xpZGluZz0hMCxUJiZ0aGlzLnBhdXNlKCksdGhpcy5fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudChoKTt2YXIgQz10LkV2ZW50KGQuU0xJRCx7cmVsYXRlZFRhcmdldDpoLGRpcmVjdGlvbjpvLGZyb206bCx0bzpwfSk7ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhtKT8odChoKS5hZGRDbGFzcyhyKSxrLnJlZmxvdyhoKSx0KGEpLmFkZENsYXNzKGkpLHQoaCkuYWRkQ2xhc3MoaSksdChhKS5vbmUoay5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbigpe3QoaCkucmVtb3ZlQ2xhc3MoaSsiICIrcikuYWRkQ2xhc3MoZyksdChhKS5yZW1vdmVDbGFzcyhnKyIgIityKyIgIitpKSxzLl9pc1NsaWRpbmc9ITEsc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0KHMuX2VsZW1lbnQpLnRyaWdnZXIoQyl9LDApfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoNjAwKSk6KHQoYSkucmVtb3ZlQ2xhc3MoZyksdChoKS5hZGRDbGFzcyhnKSx0aGlzLl9pc1NsaWRpbmc9ITEsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKEMpKSxUJiZ0aGlzLmN5Y2xlKCl9fSxzLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKSxvPXIoe30sYSx0KHRoaXMpLmRhdGEoKSk7Im9iamVjdCI9PXR5cGVvZiBlJiYobz1yKHt9LG8sZSkpO3ZhciBsPSJzdHJpbmciPT10eXBlb2YgZT9lOm8uc2xpZGU7aWYoaXx8KGk9bmV3IHModGhpcyxvKSx0KHRoaXMpLmRhdGEobixpKSksIm51bWJlciI9PXR5cGVvZiBlKWkudG8oZSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGwpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgaVtsXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrbCsnIicpO2lbbF0oKX1lbHNlIG8uaW50ZXJ2YWwmJihpLnBhdXNlKCksaS5jeWNsZSgpKX0pfSxzLl9kYXRhQXBpQ2xpY2tIYW5kbGVyPWZ1bmN0aW9uKGUpe3ZhciBpPWsuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKTtpZihpKXt2YXIgbz10KGkpWzBdO2lmKG8mJnQobykuaGFzQ2xhc3MocCkpe3ZhciBhPXIoe30sdChvKS5kYXRhKCksdCh0aGlzKS5kYXRhKCkpLGw9dGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtc2xpZGUtdG8iKTtsJiYoYS5pbnRlcnZhbD0hMSkscy5falF1ZXJ5SW50ZXJmYWNlLmNhbGwodChvKSxhKSxsJiZ0KG8pLmRhdGEobikudG8obCksZS5wcmV2ZW50RGVmYXVsdCgpfX19LGkocyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fV0pLHN9KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKGQuQ0xJQ0tfREFUQV9BUEksYi5EQVRBX1NMSURFLFQuX2RhdGFBcGlDbGlja0hhbmRsZXIpLHQod2luZG93KS5vbihkLkxPQURfREFUQV9BUEksZnVuY3Rpb24oKXt0KGIuREFUQV9SSURFKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtULl9qUXVlcnlJbnRlcmZhY2UuY2FsbChlLGUuZGF0YSgpKX0pfSksdC5mbltlXT1ULl9qUXVlcnlJbnRlcmZhY2UsdC5mbltlXS5Db25zdHJ1Y3Rvcj1ULHQuZm5bZV0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuW2VdPXMsVC5falF1ZXJ5SW50ZXJmYWNlfSxUfShlKSxSPWZ1bmN0aW9uKHQpe3ZhciBlPSJjb2xsYXBzZSIsbj0iYnMuY29sbGFwc2UiLG89Ii4iK24scz10LmZuW2VdLGE9e3RvZ2dsZTohMCxwYXJlbnQ6IiJ9LGw9e3RvZ2dsZToiYm9vbGVhbiIscGFyZW50OiIoc3RyaW5nfGVsZW1lbnQpIn0sYz17U0hPVzoic2hvdyIrbyxTSE9XTjoic2hvd24iK28sSElERToiaGlkZSIrbyxISURERU46ImhpZGRlbiIrbyxDTElDS19EQVRBX0FQSToiY2xpY2siK28rIi5kYXRhLWFwaSJ9LGg9InNob3ciLGY9ImNvbGxhcHNlIix1PSJjb2xsYXBzaW5nIixkPSJjb2xsYXBzZWQiLHA9IndpZHRoIixnPSJoZWlnaHQiLG09e0FDVElWRVM6Ii5zaG93LCAuY29sbGFwc2luZyIsREFUQV9UT0dHTEU6J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXSd9LF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBvKGUsbil7dGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKG4pLHRoaXMuX3RyaWdnZXJBcnJheT10Lm1ha2VBcnJheSh0KCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1baHJlZj0iIycrZS5pZCsnIl0sW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtdGFyZ2V0PSIjJytlLmlkKyciXScpKTtmb3IodmFyIGk9dChtLkRBVEFfVE9HR0xFKSxyPTA7cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl0scz1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQobyk7bnVsbCE9PXMmJnQocykuZmlsdGVyKGUpLmxlbmd0aD4wJiYodGhpcy5fc2VsZWN0b3I9cyx0aGlzLl90cmlnZ2VyQXJyYXkucHVzaChvKSl9dGhpcy5fcGFyZW50PXRoaXMuX2NvbmZpZy5wYXJlbnQ/dGhpcy5fZ2V0UGFyZW50KCk6bnVsbCx0aGlzLl9jb25maWcucGFyZW50fHx0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fZWxlbWVudCx0aGlzLl90cmlnZ2VyQXJyYXkpLHRoaXMuX2NvbmZpZy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9dmFyIHM9by5wcm90b3R5cGU7cmV0dXJuIHMudG9nZ2xlPWZ1bmN0aW9uKCl7dCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhoKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX0scy5zaG93PWZ1bmN0aW9uKCl7dmFyIGUsaSxyPXRoaXM7aWYoIXRoaXMuX2lzVHJhbnNpdGlvbmluZyYmIXQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoaCkmJih0aGlzLl9wYXJlbnQmJjA9PT0oZT10Lm1ha2VBcnJheSh0KHRoaXMuX3BhcmVudCkuZmluZChtLkFDVElWRVMpLmZpbHRlcignW2RhdGEtcGFyZW50PSInK3RoaXMuX2NvbmZpZy5wYXJlbnQrJyJdJykpKS5sZW5ndGgmJihlPW51bGwpLCEoZSYmKGk9dChlKS5ub3QodGhpcy5fc2VsZWN0b3IpLmRhdGEobikpJiZpLl9pc1RyYW5zaXRpb25pbmcpKSl7dmFyIHM9dC5FdmVudChjLlNIT1cpO2lmKHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihzKSwhcy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmKG8uX2pRdWVyeUludGVyZmFjZS5jYWxsKHQoZSkubm90KHRoaXMuX3NlbGVjdG9yKSwiaGlkZSIpLGl8fHQoZSkuZGF0YShuLG51bGwpKTt2YXIgYT10aGlzLl9nZXREaW1lbnNpb24oKTt0KHRoaXMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKGYpLmFkZENsYXNzKHUpLHRoaXMuX2VsZW1lbnQuc3R5bGVbYV09MCx0aGlzLl90cmlnZ2VyQXJyYXkubGVuZ3RoPjAmJnQodGhpcy5fdHJpZ2dlckFycmF5KS5yZW1vdmVDbGFzcyhkKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTt2YXIgbD1mdW5jdGlvbigpe3Qoci5fZWxlbWVudCkucmVtb3ZlQ2xhc3ModSkuYWRkQ2xhc3MoZikuYWRkQ2xhc3MoaCksci5fZWxlbWVudC5zdHlsZVthXT0iIixyLnNldFRyYW5zaXRpb25pbmcoITEpLHQoci5fZWxlbWVudCkudHJpZ2dlcihjLlNIT1dOKX07aWYoay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSl7dmFyIHA9InNjcm9sbCIrKGFbMF0udG9VcHBlckNhc2UoKSthLnNsaWNlKDEpKTt0KHRoaXMuX2VsZW1lbnQpLm9uZShrLlRSQU5TSVRJT05fRU5ELGwpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKDYwMCksdGhpcy5fZWxlbWVudC5zdHlsZVthXT10aGlzLl9lbGVtZW50W3BdKyJweCJ9ZWxzZSBsKCl9fX0scy5oaWRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighdGhpcy5faXNUcmFuc2l0aW9uaW5nJiZ0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKGgpKXt2YXIgbj10LkV2ZW50KGMuSElERSk7aWYodCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKG4pLCFuLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt2YXIgaT10aGlzLl9nZXREaW1lbnNpb24oKTtpZih0aGlzLl9lbGVtZW50LnN0eWxlW2ldPXRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbaV0rInB4IixrLnJlZmxvdyh0aGlzLl9lbGVtZW50KSx0KHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKHUpLnJlbW92ZUNsYXNzKGYpLnJlbW92ZUNsYXNzKGgpLHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg+MClmb3IodmFyIHI9MDtyPHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg7cisrKXt2YXIgbz10aGlzLl90cmlnZ2VyQXJyYXlbcl0scz1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQobyk7aWYobnVsbCE9PXMpdChzKS5oYXNDbGFzcyhoKXx8dChvKS5hZGRDbGFzcyhkKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSl9dGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTt2YXIgYT1mdW5jdGlvbigpe2Uuc2V0VHJhbnNpdGlvbmluZyghMSksdChlLl9lbGVtZW50KS5yZW1vdmVDbGFzcyh1KS5hZGRDbGFzcyhmKS50cmlnZ2VyKGMuSElEREVOKX07dGhpcy5fZWxlbWVudC5zdHlsZVtpXT0iIixrLnN1cHBvcnRzVHJhbnNpdGlvbkVuZCgpP3QodGhpcy5fZWxlbWVudCkub25lKGsuVFJBTlNJVElPTl9FTkQsYSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoNjAwKTphKCl9fX0scy5zZXRUcmFuc2l0aW9uaW5nPWZ1bmN0aW9uKHQpe3RoaXMuX2lzVHJhbnNpdGlvbmluZz10fSxzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxuKSx0aGlzLl9jb25maWc9bnVsbCx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5fdHJpZ2dlckFycmF5PW51bGwsdGhpcy5faXNUcmFuc2l0aW9uaW5nPW51bGx9LHMuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4odD1yKHt9LGEsdCkpLnRvZ2dsZT1Cb29sZWFuKHQudG9nZ2xlKSxrLnR5cGVDaGVja0NvbmZpZyhlLHQsbCksdH0scy5fZ2V0RGltZW5zaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MocCk/cDpnfSxzLl9nZXRQYXJlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49bnVsbDtrLmlzRWxlbWVudCh0aGlzLl9jb25maWcucGFyZW50KT8obj10aGlzLl9jb25maWcucGFyZW50LCJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcy5fY29uZmlnLnBhcmVudC5qcXVlcnkmJihuPXRoaXMuX2NvbmZpZy5wYXJlbnRbMF0pKTpuPXQodGhpcy5fY29uZmlnLnBhcmVudClbMF07dmFyIGk9J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXBhcmVudD0iJyt0aGlzLl9jb25maWcucGFyZW50KyciXSc7cmV0dXJuIHQobikuZmluZChpKS5lYWNoKGZ1bmN0aW9uKHQsbil7ZS5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKG8uX2dldFRhcmdldEZyb21FbGVtZW50KG4pLFtuXSl9KSxufSxzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3M9ZnVuY3Rpb24oZSxuKXtpZihlKXt2YXIgaT10KGUpLmhhc0NsYXNzKGgpO24ubGVuZ3RoPjAmJnQobikudG9nZ2xlQ2xhc3MoZCwhaSkuYXR0cigiYXJpYS1leHBhbmRlZCIsaSl9fSxvLl9nZXRUYXJnZXRGcm9tRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgbj1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7cmV0dXJuIG4/dChuKVswXTpudWxsfSxvLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscz1pLmRhdGEobiksbD1yKHt9LGEsaS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBlJiZlKTtpZighcyYmbC50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoZSkmJihsLnRvZ2dsZT0hMSksc3x8KHM9bmV3IG8odGhpcyxsKSxpLmRhdGEobixzKSksInN0cmluZyI9PXR5cGVvZiBlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHNbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtzW2VdKCl9fSl9LGkobyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fV0pLG99KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKGMuQ0xJQ0tfREFUQV9BUEksbS5EQVRBX1RPR0dMRSxmdW5jdGlvbihlKXsiQSI9PT1lLmN1cnJlbnRUYXJnZXQudGFnTmFtZSYmZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBpPXQodGhpcykscj1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodGhpcyk7dChyKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKSxyPWUuZGF0YShuKT8idG9nZ2xlIjppLmRhdGEoKTtfLl9qUXVlcnlJbnRlcmZhY2UuY2FsbChlLHIpfSl9KSx0LmZuW2VdPV8uX2pRdWVyeUludGVyZmFjZSx0LmZuW2VdLkNvbnN0cnVjdG9yPV8sdC5mbltlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZm5bZV09cyxfLl9qUXVlcnlJbnRlcmZhY2V9LF99KGUpLGo9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQsSD1bIkVkZ2UiLCJUcmlkZW50IiwiRmlyZWZveCJdLE09MCxXPTA7VzxILmxlbmd0aDtXKz0xKWlmKGomJm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihIW1ddKT49MCl7TT0xO2JyZWFrfXZhciBVPWomJndpbmRvdy5Qcm9taXNlP2Z1bmN0aW9uKHQpe3ZhciBlPSExO3JldHVybiBmdW5jdGlvbigpe2V8fChlPSEwLHdpbmRvdy5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7ZT0hMSx0KCl9KSl9fTpmdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZT0hMSx0KCl9LE0pKX19O2Z1bmN0aW9uIEIodCl7cmV0dXJuIHQmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT17fS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIEYodCxlKXtpZigxIT09dC5ub2RlVHlwZSlyZXR1cm5bXTt2YXIgbj1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk7cmV0dXJuIGU/bltlXTpufWZ1bmN0aW9uIEsodCl7cmV0dXJuIkhUTUwiPT09dC5ub2RlTmFtZT90OnQucGFyZW50Tm9kZXx8dC5ob3N0fWZ1bmN0aW9uIFYodCl7aWYoIXQpcmV0dXJuIGRvY3VtZW50LmJvZHk7c3dpdGNoKHQubm9kZU5hbWUpe2Nhc2UiSFRNTCI6Y2FzZSJCT0RZIjpyZXR1cm4gdC5vd25lckRvY3VtZW50LmJvZHk7Y2FzZSIjZG9jdW1lbnQiOnJldHVybiB0LmJvZHl9dmFyIGU9Rih0KSxuPWUub3ZlcmZsb3csaT1lLm92ZXJmbG93WCxyPWUub3ZlcmZsb3dZO3JldHVybi8oYXV0b3xzY3JvbGwpLy50ZXN0KG4rcitpKT90OlYoSyh0KSl9ZnVuY3Rpb24gUSh0KXt2YXIgZT10JiZ0Lm9mZnNldFBhcmVudCxuPWUmJmUubm9kZU5hbWU7cmV0dXJuIG4mJiJCT0RZIiE9PW4mJiJIVE1MIiE9PW4/LTEhPT1bIlREIiwiVEFCTEUiXS5pbmRleE9mKGUubm9kZU5hbWUpJiYic3RhdGljIj09PUYoZSwicG9zaXRpb24iKT9RKGUpOmU6dD90Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBZKHQpe3JldHVybiBudWxsIT09dC5wYXJlbnROb2RlP1kodC5wYXJlbnROb2RlKTp0fWZ1bmN0aW9uIEcodCxlKXtpZighKHQmJnQubm9kZVR5cGUmJmUmJmUubm9kZVR5cGUpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIG49dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyxpPW4/dDplLHI9bj9lOnQsbz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO28uc2V0U3RhcnQoaSwwKSxvLnNldEVuZChyLDApO3ZhciBzLGEsbD1vLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO2lmKHQhPT1sJiZlIT09bHx8aS5jb250YWlucyhyKSlyZXR1cm4iQk9EWSI9PT0oYT0ocz1sKS5ub2RlTmFtZSl8fCJIVE1MIiE9PWEmJlEocy5maXJzdEVsZW1lbnRDaGlsZCkhPT1zP1EobCk6bDt2YXIgYz1ZKHQpO3JldHVybiBjLmhvc3Q/RyhjLmhvc3QsZSk6Ryh0LFkoZSkuaG9zdCl9ZnVuY3Rpb24gcSh0KXt2YXIgZT0idG9wIj09PShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InRvcCIpPyJzY3JvbGxUb3AiOiJzY3JvbGxMZWZ0IixuPXQubm9kZU5hbWU7aWYoIkJPRFkiPT09bnx8IkhUTUwiPT09bil7dmFyIGk9dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyZXR1cm4odC5vd25lckRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnR8fGkpW2VdfXJldHVybiB0W2VdfWZ1bmN0aW9uIHoodCxlKXt2YXIgbj0ieCI9PT1lPyJMZWZ0IjoiVG9wIixpPSJMZWZ0Ij09PW4/IlJpZ2h0IjoiQm90dG9tIjtyZXR1cm4gcGFyc2VGbG9hdCh0WyJib3JkZXIiK24rIldpZHRoIl0sMTApK3BhcnNlRmxvYXQodFsiYm9yZGVyIitpKyJXaWR0aCJdLDEwKX12YXIgWD12b2lkIDAsWj1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1YJiYoWD0tMSE9PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIk1TSUUgMTAiKSksWH07ZnVuY3Rpb24gSih0LGUsbixpKXtyZXR1cm4gTWF0aC5tYXgoZVsib2Zmc2V0Iit0XSxlWyJzY3JvbGwiK3RdLG5bImNsaWVudCIrdF0sblsib2Zmc2V0Iit0XSxuWyJzY3JvbGwiK3RdLFooKT9uWyJvZmZzZXQiK3RdK2lbIm1hcmdpbiIrKCJIZWlnaHQiPT09dD8iVG9wIjoiTGVmdCIpXStpWyJtYXJnaW4iKygiSGVpZ2h0Ij09PXQ/IkJvdHRvbSI6IlJpZ2h0IildOjApfWZ1bmN0aW9uICQoKXt2YXIgdD1kb2N1bWVudC5ib2R5LGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49WigpJiZnZXRDb21wdXRlZFN0eWxlKGUpO3JldHVybntoZWlnaHQ6SigiSGVpZ2h0Iix0LGUsbiksd2lkdGg6SigiV2lkdGgiLHQsZSxuKX19dmFyIHR0PWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9LGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIG4mJnQoZS5wcm90b3R5cGUsbiksaSYmdChlLGkpLGV9fSgpLG50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH0saXQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgaSBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGkpJiYodFtpXT1uW2ldKX1yZXR1cm4gdH07ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGl0KHt9LHQse3JpZ2h0OnQubGVmdCt0LndpZHRoLGJvdHRvbTp0LnRvcCt0LmhlaWdodH0pfWZ1bmN0aW9uIG90KHQpe3ZhciBlPXt9O2lmKFooKSl0cnl7ZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBuPXEodCwidG9wIiksaT1xKHQsImxlZnQiKTtlLnRvcCs9bixlLmxlZnQrPWksZS5ib3R0b20rPW4sZS5yaWdodCs9aX1jYXRjaCh0KXt9ZWxzZSBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHI9e2xlZnQ6ZS5sZWZ0LHRvcDplLnRvcCx3aWR0aDplLnJpZ2h0LWUubGVmdCxoZWlnaHQ6ZS5ib3R0b20tZS50b3B9LG89IkhUTUwiPT09dC5ub2RlTmFtZT8kKCk6e30scz1vLndpZHRofHx0LmNsaWVudFdpZHRofHxyLnJpZ2h0LXIubGVmdCxhPW8uaGVpZ2h0fHx0LmNsaWVudEhlaWdodHx8ci5ib3R0b20tci50b3AsbD10Lm9mZnNldFdpZHRoLXMsYz10Lm9mZnNldEhlaWdodC1hO2lmKGx8fGMpe3ZhciBoPUYodCk7bC09eihoLCJ4IiksYy09eihoLCJ5Iiksci53aWR0aC09bCxyLmhlaWdodC09Y31yZXR1cm4gcnQocil9ZnVuY3Rpb24gc3QodCxlKXt2YXIgbj1aKCksaT0iSFRNTCI9PT1lLm5vZGVOYW1lLHI9b3QodCksbz1vdChlKSxzPVYodCksYT1GKGUpLGw9cGFyc2VGbG9hdChhLmJvcmRlclRvcFdpZHRoLDEwKSxjPXBhcnNlRmxvYXQoYS5ib3JkZXJMZWZ0V2lkdGgsMTApLGg9cnQoe3RvcDpyLnRvcC1vLnRvcC1sLGxlZnQ6ci5sZWZ0LW8ubGVmdC1jLHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0fSk7aWYoaC5tYXJnaW5Ub3A9MCxoLm1hcmdpbkxlZnQ9MCwhbiYmaSl7dmFyIGY9cGFyc2VGbG9hdChhLm1hcmdpblRvcCwxMCksdT1wYXJzZUZsb2F0KGEubWFyZ2luTGVmdCwxMCk7aC50b3AtPWwtZixoLmJvdHRvbS09bC1mLGgubGVmdC09Yy11LGgucmlnaHQtPWMtdSxoLm1hcmdpblRvcD1mLGgubWFyZ2luTGVmdD11fXJldHVybihuP2UuY29udGFpbnMocyk6ZT09PXMmJiJCT0RZIiE9PXMubm9kZU5hbWUpJiYoaD1mdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1xKGUsInRvcCIpLHI9cShlLCJsZWZ0Iiksbz1uPy0xOjE7cmV0dXJuIHQudG9wKz1pKm8sdC5ib3R0b20rPWkqbyx0LmxlZnQrPXIqbyx0LnJpZ2h0Kz1yKm8sdH0oaCxlKSksaH1mdW5jdGlvbiBhdCh0LGUsbixpKXt2YXIgcixvLHMsYSxsLGMsaCxmPXt0b3A6MCxsZWZ0OjB9LHU9Ryh0LGUpO2lmKCJ2aWV3cG9ydCI9PT1pKW89KHI9dSkub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscz1zdChyLG8pLGE9TWF0aC5tYXgoby5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCksbD1NYXRoLm1heChvLmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApLGM9cShvKSxoPXEobywibGVmdCIpLGY9cnQoe3RvcDpjLXMudG9wK3MubWFyZ2luVG9wLGxlZnQ6aC1zLmxlZnQrcy5tYXJnaW5MZWZ0LHdpZHRoOmEsaGVpZ2h0Omx9KTtlbHNle3ZhciBkPXZvaWQgMDsic2Nyb2xsUGFyZW50Ij09PWk/IkJPRFkiPT09KGQ9VihLKGUpKSkubm9kZU5hbWUmJihkPXQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOmQ9IndpbmRvdyI9PT1pP3Qub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6aTt2YXIgcD1zdChkLHUpO2lmKCJIVE1MIiE9PWQubm9kZU5hbWV8fGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ub2RlTmFtZTtyZXR1cm4iQk9EWSIhPT1uJiYiSFRNTCIhPT1uJiYoImZpeGVkIj09PUYoZSwicG9zaXRpb24iKXx8dChLKGUpKSl9KHUpKWY9cDtlbHNle3ZhciBnPSQoKSxtPWcuaGVpZ2h0LF89Zy53aWR0aDtmLnRvcCs9cC50b3AtcC5tYXJnaW5Ub3AsZi5ib3R0b209bStwLnRvcCxmLmxlZnQrPXAubGVmdC1wLm1hcmdpbkxlZnQsZi5yaWdodD1fK3AubGVmdH19cmV0dXJuIGYubGVmdCs9bixmLnRvcCs9bixmLnJpZ2h0LT1uLGYuYm90dG9tLT1uLGZ9ZnVuY3Rpb24gbHQodCxlLG4saSxyKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MDtpZigtMT09PXQuaW5kZXhPZigiYXV0byIpKXJldHVybiB0O3ZhciBzPWF0KG4saSxvLHIpLGE9e3RvcDp7d2lkdGg6cy53aWR0aCxoZWlnaHQ6ZS50b3Atcy50b3B9LHJpZ2h0Ont3aWR0aDpzLnJpZ2h0LWUucmlnaHQsaGVpZ2h0OnMuaGVpZ2h0fSxib3R0b206e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuYm90dG9tLWUuYm90dG9tfSxsZWZ0Ont3aWR0aDplLmxlZnQtcy5sZWZ0LGhlaWdodDpzLmhlaWdodH19LGw9T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBpdCh7a2V5OnR9LGFbdF0se2FyZWE6KGU9YVt0XSxlLndpZHRoKmUuaGVpZ2h0KX0pO3ZhciBlfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLmFyZWEtdC5hcmVhfSksYz1sLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLGk9dC5oZWlnaHQ7cmV0dXJuIGU+PW4uY2xpZW50V2lkdGgmJmk+PW4uY2xpZW50SGVpZ2h0fSksaD1jLmxlbmd0aD4wP2NbMF0ua2V5OmxbMF0ua2V5LGY9dC5zcGxpdCgiLSIpWzFdO3JldHVybiBoKyhmPyItIitmOiIiKX1mdW5jdGlvbiBjdCh0LGUsbil7cmV0dXJuIHN0KG4sRyhlLG4pKX1mdW5jdGlvbiBodCh0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQpLG49cGFyc2VGbG9hdChlLm1hcmdpblRvcCkrcGFyc2VGbG9hdChlLm1hcmdpbkJvdHRvbSksaT1wYXJzZUZsb2F0KGUubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChlLm1hcmdpblJpZ2h0KTtyZXR1cm57d2lkdGg6dC5vZmZzZXRXaWR0aCtpLGhlaWdodDp0Lm9mZnNldEhlaWdodCtufX1mdW5jdGlvbiBmdCh0KXt2YXIgZT17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gdC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIHV0KHQsZSxuKXtuPW4uc3BsaXQoIi0iKVswXTt2YXIgaT1odCh0KSxyPXt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0sbz0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihuKSxzPW8/InRvcCI6ImxlZnQiLGE9bz8ibGVmdCI6InRvcCIsbD1vPyJoZWlnaHQiOiJ3aWR0aCIsYz1vPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIHJbc109ZVtzXStlW2xdLzItaVtsXS8yLHJbYV09bj09PWE/ZVthXS1pW2NdOmVbZnQoYSldLHJ9ZnVuY3Rpb24gZHQodCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQ/dC5maW5kKGUpOnQuZmlsdGVyKGUpWzBdfWZ1bmN0aW9uIHB0KHQsZSxuKXtyZXR1cm4odm9pZCAwPT09bj90OnQuc2xpY2UoMCxmdW5jdGlvbih0LGUsbil7aWYoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleClyZXR1cm4gdC5maW5kSW5kZXgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV09PT1ufSk7dmFyIGk9ZHQodCxmdW5jdGlvbih0KXtyZXR1cm4gdFtlXT09PW59KTtyZXR1cm4gdC5pbmRleE9mKGkpfSh0LCJuYW1lIixuKSkpLmZvckVhY2goZnVuY3Rpb24odCl7dC5mdW5jdGlvbiYmY29uc29sZS53YXJuKCJgbW9kaWZpZXIuZnVuY3Rpb25gIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbW9kaWZpZXIuZm5gISIpO3ZhciBuPXQuZnVuY3Rpb258fHQuZm47dC5lbmFibGVkJiZCKG4pJiYoZS5vZmZzZXRzLnBvcHBlcj1ydChlLm9mZnNldHMucG9wcGVyKSxlLm9mZnNldHMucmVmZXJlbmNlPXJ0KGUub2Zmc2V0cy5yZWZlcmVuY2UpLGU9bihlLHQpKX0pLGV9ZnVuY3Rpb24gZ3QodCxlKXtyZXR1cm4gdC5zb21lKGZ1bmN0aW9uKHQpe3ZhciBuPXQubmFtZTtyZXR1cm4gdC5lbmFibGVkJiZuPT09ZX0pfWZ1bmN0aW9uIG10KHQpe2Zvcih2YXIgZT1bITEsIm1zIiwiV2Via2l0IiwiTW96IiwiTyJdLG49dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLGk9MDtpPGUubGVuZ3RoLTE7aSsrKXt2YXIgcj1lW2ldLG89cj8iIityK246dDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGVbb10pcmV0dXJuIG99cmV0dXJuIG51bGx9ZnVuY3Rpb24gX3QodCl7dmFyIGU9dC5vd25lckRvY3VtZW50O3JldHVybiBlP2UuZGVmYXVsdFZpZXc6d2luZG93fWZ1bmN0aW9uIHZ0KHQsZSxuLGkpe24udXBkYXRlQm91bmQ9aSxfdCh0KS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLG4udXBkYXRlQm91bmQse3Bhc3NpdmU6ITB9KTt2YXIgcj1WKHQpO3JldHVybiBmdW5jdGlvbiB0KGUsbixpLHIpe3ZhciBvPSJCT0RZIj09PWUubm9kZU5hbWUscz1vP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzplO3MuYWRkRXZlbnRMaXN0ZW5lcihuLGkse3Bhc3NpdmU6ITB9KSxvfHx0KFYocy5wYXJlbnROb2RlKSxuLGksciksci5wdXNoKHMpfShyLCJzY3JvbGwiLG4udXBkYXRlQm91bmQsbi5zY3JvbGxQYXJlbnRzKSxuLnNjcm9sbEVsZW1lbnQ9cixuLmV2ZW50c0VuYWJsZWQ9ITAsbn1mdW5jdGlvbiBFdCgpe3ZhciB0LGU7dGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkJiYoY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zY2hlZHVsZVVwZGF0ZSksdGhpcy5zdGF0ZT0odD10aGlzLnJlZmVyZW5jZSxlPXRoaXMuc3RhdGUsX3QodCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixlLnVwZGF0ZUJvdW5kKSxlLnNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZS51cGRhdGVCb3VuZCl9KSxlLnVwZGF0ZUJvdW5kPW51bGwsZS5zY3JvbGxQYXJlbnRzPVtdLGUuc2Nyb2xsRWxlbWVudD1udWxsLGUuZXZlbnRzRW5hYmxlZD0hMSxlKSl9ZnVuY3Rpb24geXQodCl7cmV0dXJuIiIhPT10JiYhaXNOYU4ocGFyc2VGbG9hdCh0KSkmJmlzRmluaXRlKHQpfWZ1bmN0aW9uIGJ0KHQsZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT0iIjstMSE9PVsid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5pbmRleE9mKG4pJiZ5dChlW25dKSYmKGk9InB4IiksdC5zdHlsZVtuXT1lW25dK2l9KX1mdW5jdGlvbiBUdCh0LGUsbil7dmFyIGk9ZHQodCxmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09ZX0pLHI9ISFpJiZ0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PW4mJnQuZW5hYmxlZCYmdC5vcmRlcjxpLm9yZGVyfSk7aWYoIXIpe3ZhciBvPSJgIitlKyJgIixzPSJgIituKyJgIjtjb25zb2xlLndhcm4ocysiIG1vZGlmaWVyIGlzIHJlcXVpcmVkIGJ5ICIrbysiIG1vZGlmaWVyIGluIG9yZGVyIHRvIHdvcmssIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBiZWZvcmUgIitvKyIhIil9cmV0dXJuIHJ9dmFyIEN0PVsiYXV0by1zdGFydCIsImF1dG8iLCJhdXRvLWVuZCIsInRvcC1zdGFydCIsInRvcCIsInRvcC1lbmQiLCJyaWdodC1zdGFydCIsInJpZ2h0IiwicmlnaHQtZW5kIiwiYm90dG9tLWVuZCIsImJvdHRvbSIsImJvdHRvbS1zdGFydCIsImxlZnQtZW5kIiwibGVmdCIsImxlZnQtc3RhcnQiXSx3dD1DdC5zbGljZSgzKTtmdW5jdGlvbiBJdCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49d3QuaW5kZXhPZih0KSxpPXd0LnNsaWNlKG4rMSkuY29uY2F0KHd0LnNsaWNlKDAsbikpO3JldHVybiBlP2kucmV2ZXJzZSgpOml9dmFyIEF0PXtGTElQOiJmbGlwIixDTE9DS1dJU0U6ImNsb2Nrd2lzZSIsQ09VTlRFUkNMT0NLV0lTRToiY291bnRlcmNsb2Nrd2lzZSJ9O2Z1bmN0aW9uIER0KHQsZSxuLGkpe3ZhciByPVswLDBdLG89LTEhPT1bInJpZ2h0IiwibGVmdCJdLmluZGV4T2YoaSkscz10LnNwbGl0KC8oXCt8XC0pLykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyaW0oKX0pLGE9cy5pbmRleE9mKGR0KHMsZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10LnNlYXJjaCgvLHxccy8pfSkpO3NbYV0mJi0xPT09c1thXS5pbmRleE9mKCIsIikmJmNvbnNvbGUud2FybigiT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLiIpO3ZhciBsPS9ccyosXHMqfFxzKy8sYz0tMSE9PWE/W3Muc2xpY2UoMCxhKS5jb25jYXQoW3NbYV0uc3BsaXQobClbMF1dKSxbc1thXS5zcGxpdChsKVsxXV0uY29uY2F0KHMuc2xpY2UoYSsxKSldOltzXTtyZXR1cm4oYz1jLm1hcChmdW5jdGlvbih0LGkpe3ZhciByPSgxPT09aT8hbzpvKT8iaGVpZ2h0Ijoid2lkdGgiLHM9ITE7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiI9PT10W3QubGVuZ3RoLTFdJiYtMSE9PVsiKyIsIi0iXS5pbmRleE9mKGUpPyh0W3QubGVuZ3RoLTFdPWUscz0hMCx0KTpzPyh0W3QubGVuZ3RoLTFdKz1lLHM9ITEsdCk6dC5jb25jYXQoZSl9LFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXQubWF0Y2goLygoPzpcLXxcKyk/XGQqXC4/XGQqKSguKikvKSxvPStyWzFdLHM9clsyXTtpZighbylyZXR1cm4gdDtpZigwPT09cy5pbmRleE9mKCIlIikpe3ZhciBhPXZvaWQgMDtzd2l0Y2gocyl7Y2FzZSIlcCI6YT1uO2JyZWFrO2Nhc2UiJSI6Y2FzZSIlciI6ZGVmYXVsdDphPWl9cmV0dXJuIHJ0KGEpW2VdLzEwMCpvfWlmKCJ2aCI9PT1zfHwidnciPT09cylyZXR1cm4oInZoIj09PXM/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApOk1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCkpLzEwMCpvO3JldHVybiBvfSh0LHIsZSxuKX0pfSkpLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24obixpKXt5dChuKSYmKHJbZV0rPW4qKCItIj09PXRbaS0xXT8tMToxKSl9KX0pLHJ9dmFyIFN0PXtwbGFjZW1lbnQ6ImJvdHRvbSIsZXZlbnRzRW5hYmxlZDohMCxyZW1vdmVPbkRlc3Ryb3k6ITEsb25DcmVhdGU6ZnVuY3Rpb24oKXt9LG9uVXBkYXRlOmZ1bmN0aW9uKCl7fSxtb2RpZmllcnM6e3NoaWZ0OntvcmRlcjoxMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPWUuc3BsaXQoIi0iKVsxXTtpZihpKXt2YXIgcj10Lm9mZnNldHMsbz1yLnJlZmVyZW5jZSxzPXIucG9wcGVyLGE9LTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2YobiksbD1hPyJsZWZ0IjoidG9wIixjPWE/IndpZHRoIjoiaGVpZ2h0IixoPXtzdGFydDpudCh7fSxsLG9bbF0pLGVuZDpudCh7fSxsLG9bbF0rb1tjXS1zW2NdKX07dC5vZmZzZXRzLnBvcHBlcj1pdCh7fSxzLGhbaV0pfXJldHVybiB0fX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUub2Zmc2V0LGk9dC5wbGFjZW1lbnQscj10Lm9mZnNldHMsbz1yLnBvcHBlcixzPXIucmVmZXJlbmNlLGE9aS5zcGxpdCgiLSIpWzBdLGw9dm9pZCAwO3JldHVybiBsPXl0KCtuKT9bK24sMF06RHQobixvLHMsYSksImxlZnQiPT09YT8oby50b3ArPWxbMF0sby5sZWZ0LT1sWzFdKToicmlnaHQiPT09YT8oby50b3ArPWxbMF0sby5sZWZ0Kz1sWzFdKToidG9wIj09PWE/KG8ubGVmdCs9bFswXSxvLnRvcC09bFsxXSk6ImJvdHRvbSI9PT1hJiYoby5sZWZ0Kz1sWzBdLG8udG9wKz1sWzFdKSx0LnBvcHBlcj1vLHR9LG9mZnNldDowfSxwcmV2ZW50T3ZlcmZsb3c6e29yZGVyOjMwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ib3VuZGFyaWVzRWxlbWVudHx8USh0Lmluc3RhbmNlLnBvcHBlcik7dC5pbnN0YW5jZS5yZWZlcmVuY2U9PT1uJiYobj1RKG4pKTt2YXIgaT1hdCh0Lmluc3RhbmNlLnBvcHBlcix0Lmluc3RhbmNlLnJlZmVyZW5jZSxlLnBhZGRpbmcsbik7ZS5ib3VuZGFyaWVzPWk7dmFyIHI9ZS5wcmlvcml0eSxvPXQub2Zmc2V0cy5wb3BwZXIscz17cHJpbWFyeTpmdW5jdGlvbih0KXt2YXIgbj1vW3RdO3JldHVybiBvW3RdPGlbdF0mJiFlLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWF4KG9bdF0saVt0XSkpLG50KHt9LHQsbil9LHNlY29uZGFyeTpmdW5jdGlvbih0KXt2YXIgbj0icmlnaHQiPT09dD8ibGVmdCI6InRvcCIscj1vW25dO3JldHVybiBvW3RdPmlbdF0mJiFlLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihyPU1hdGgubWluKG9bbl0saVt0XS0oInJpZ2h0Ij09PXQ/by53aWR0aDpvLmhlaWdodCkpKSxudCh7fSxuLHIpfX07cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0tMSE9PVsibGVmdCIsInRvcCJdLmluZGV4T2YodCk/InByaW1hcnkiOiJzZWNvbmRhcnkiO289aXQoe30sbyxzW2VdKHQpKX0pLHQub2Zmc2V0cy5wb3BwZXI9byx0fSxwcmlvcml0eTpbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoic2Nyb2xsUGFyZW50In0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10Lm9mZnNldHMsbj1lLnBvcHBlcixpPWUucmVmZXJlbmNlLHI9dC5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxvPU1hdGguZmxvb3Iscz0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihyKSxhPXM/InJpZ2h0IjoiYm90dG9tIixsPXM/ImxlZnQiOiJ0b3AiLGM9cz8id2lkdGgiOiJoZWlnaHQiO3JldHVybiBuW2FdPG8oaVtsXSkmJih0Lm9mZnNldHMucG9wcGVyW2xdPW8oaVtsXSktbltjXSksbltsXT5vKGlbYV0pJiYodC5vZmZzZXRzLnBvcHBlcltsXT1vKGlbYV0pKSx0fX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoIVR0KHQuaW5zdGFuY2UubW9kaWZpZXJzLCJhcnJvdyIsImtlZXBUb2dldGhlciIpKXJldHVybiB0O3ZhciBpPWUuZWxlbWVudDtpZigic3RyaW5nIj09dHlwZW9mIGkpe2lmKCEoaT10Lmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGkpKSlyZXR1cm4gdH1lbHNlIGlmKCF0Lmluc3RhbmNlLnBvcHBlci5jb250YWlucyhpKSlyZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksdDt2YXIgcj10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLG89dC5vZmZzZXRzLHM9by5wb3BwZXIsYT1vLnJlZmVyZW5jZSxsPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKHIpLGM9bD8iaGVpZ2h0Ijoid2lkdGgiLGg9bD8iVG9wIjoiTGVmdCIsZj1oLnRvTG93ZXJDYXNlKCksdT1sPyJsZWZ0IjoidG9wIixkPWw/ImJvdHRvbSI6InJpZ2h0IixwPWh0KGkpW2NdO2FbZF0tcDxzW2ZdJiYodC5vZmZzZXRzLnBvcHBlcltmXS09c1tmXS0oYVtkXS1wKSksYVtmXStwPnNbZF0mJih0Lm9mZnNldHMucG9wcGVyW2ZdKz1hW2ZdK3Atc1tkXSksdC5vZmZzZXRzLnBvcHBlcj1ydCh0Lm9mZnNldHMucG9wcGVyKTt2YXIgZz1hW2ZdK2FbY10vMi1wLzIsbT1GKHQuaW5zdGFuY2UucG9wcGVyKSxfPXBhcnNlRmxvYXQobVsibWFyZ2luIitoXSwxMCksdj1wYXJzZUZsb2F0KG1bImJvcmRlciIraCsiV2lkdGgiXSwxMCksRT1nLXQub2Zmc2V0cy5wb3BwZXJbZl0tXy12O3JldHVybiBFPU1hdGgubWF4KE1hdGgubWluKHNbY10tcCxFKSwwKSx0LmFycm93RWxlbWVudD1pLHQub2Zmc2V0cy5hcnJvdz0obnQobj17fSxmLE1hdGgucm91bmQoRSkpLG50KG4sdSwiIiksbiksdH0sZWxlbWVudDoiW3gtYXJyb3ddIn0sZmxpcDp7b3JkZXI6NjAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCxlKXtpZihndCh0Lmluc3RhbmNlLm1vZGlmaWVycywiaW5uZXIiKSlyZXR1cm4gdDtpZih0LmZsaXBwZWQmJnQucGxhY2VtZW50PT09dC5vcmlnaW5hbFBsYWNlbWVudClyZXR1cm4gdDt2YXIgbj1hdCh0Lmluc3RhbmNlLnBvcHBlcix0Lmluc3RhbmNlLnJlZmVyZW5jZSxlLnBhZGRpbmcsZS5ib3VuZGFyaWVzRWxlbWVudCksaT10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9ZnQoaSksbz10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzFdfHwiIixzPVtdO3N3aXRjaChlLmJlaGF2aW9yKXtjYXNlIEF0LkZMSVA6cz1baSxyXTticmVhaztjYXNlIEF0LkNMT0NLV0lTRTpzPUl0KGkpO2JyZWFrO2Nhc2UgQXQuQ09VTlRFUkNMT0NLV0lTRTpzPUl0KGksITApO2JyZWFrO2RlZmF1bHQ6cz1lLmJlaGF2aW9yfXJldHVybiBzLmZvckVhY2goZnVuY3Rpb24oYSxsKXtpZihpIT09YXx8cy5sZW5ndGg9PT1sKzEpcmV0dXJuIHQ7aT10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9ZnQoaSk7dmFyIGMsaD10Lm9mZnNldHMucG9wcGVyLGY9dC5vZmZzZXRzLnJlZmVyZW5jZSx1PU1hdGguZmxvb3IsZD0ibGVmdCI9PT1pJiZ1KGgucmlnaHQpPnUoZi5sZWZ0KXx8InJpZ2h0Ij09PWkmJnUoaC5sZWZ0KTx1KGYucmlnaHQpfHwidG9wIj09PWkmJnUoaC5ib3R0b20pPnUoZi50b3ApfHwiYm90dG9tIj09PWkmJnUoaC50b3ApPHUoZi5ib3R0b20pLHA9dShoLmxlZnQpPHUobi5sZWZ0KSxnPXUoaC5yaWdodCk+dShuLnJpZ2h0KSxtPXUoaC50b3ApPHUobi50b3ApLF89dShoLmJvdHRvbSk+dShuLmJvdHRvbSksdj0ibGVmdCI9PT1pJiZwfHwicmlnaHQiPT09aSYmZ3x8InRvcCI9PT1pJiZtfHwiYm90dG9tIj09PWkmJl8sRT0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihpKSx5PSEhZS5mbGlwVmFyaWF0aW9ucyYmKEUmJiJzdGFydCI9PT1vJiZwfHxFJiYiZW5kIj09PW8mJmd8fCFFJiYic3RhcnQiPT09byYmbXx8IUUmJiJlbmQiPT09byYmXyk7KGR8fHZ8fHkpJiYodC5mbGlwcGVkPSEwLChkfHx2KSYmKGk9c1tsKzFdKSx5JiYobz0iZW5kIj09PShjPW8pPyJzdGFydCI6InN0YXJ0Ij09PWM/ImVuZCI6YyksdC5wbGFjZW1lbnQ9aSsobz8iLSIrbzoiIiksdC5vZmZzZXRzLnBvcHBlcj1pdCh7fSx0Lm9mZnNldHMucG9wcGVyLHV0KHQuaW5zdGFuY2UucG9wcGVyLHQub2Zmc2V0cy5yZWZlcmVuY2UsdC5wbGFjZW1lbnQpKSx0PXB0KHQuaW5zdGFuY2UubW9kaWZpZXJzLHQsImZsaXAiKSl9KSx0fSxiZWhhdmlvcjoiZmxpcCIscGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJ2aWV3cG9ydCJ9LGlubmVyOntvcmRlcjo3MDAsZW5hYmxlZDohMSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPXQub2Zmc2V0cyxyPWkucG9wcGVyLG89aS5yZWZlcmVuY2Uscz0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihuKSxhPS0xPT09WyJ0b3AiLCJsZWZ0Il0uaW5kZXhPZihuKTtyZXR1cm4gcltzPyJsZWZ0IjoidG9wIl09b1tuXS0oYT9yW3M/IndpZHRoIjoiaGVpZ2h0Il06MCksdC5wbGFjZW1lbnQ9ZnQoZSksdC5vZmZzZXRzLnBvcHBlcj1ydChyKSx0fX0saGlkZTp7b3JkZXI6ODAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCl7aWYoIVR0KHQuaW5zdGFuY2UubW9kaWZpZXJzLCJoaWRlIiwicHJldmVudE92ZXJmbG93IikpcmV0dXJuIHQ7dmFyIGU9dC5vZmZzZXRzLnJlZmVyZW5jZSxuPWR0KHQuaW5zdGFuY2UubW9kaWZpZXJzLGZ1bmN0aW9uKHQpe3JldHVybiJwcmV2ZW50T3ZlcmZsb3ciPT09dC5uYW1lfSkuYm91bmRhcmllcztpZihlLmJvdHRvbTxuLnRvcHx8ZS5sZWZ0Pm4ucmlnaHR8fGUudG9wPm4uYm90dG9tfHxlLnJpZ2h0PG4ubGVmdCl7aWYoITA9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSEwLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSIifWVsc2V7aWYoITE9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSExLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSExfXJldHVybiB0fX0sY29tcHV0ZVN0eWxlOntvcmRlcjo4NTAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUueCxpPWUueSxyPXQub2Zmc2V0cy5wb3BwZXIsbz1kdCh0Lmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbih0KXtyZXR1cm4iYXBwbHlTdHlsZSI9PT10Lm5hbWV9KS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09byYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBzPXZvaWQgMCE9PW8/bzplLmdwdUFjY2VsZXJhdGlvbixhPW90KFEodC5pbnN0YW5jZS5wb3BwZXIpKSxsPXtwb3NpdGlvbjpyLnBvc2l0aW9ufSxjPXtsZWZ0Ok1hdGguZmxvb3Ioci5sZWZ0KSx0b3A6TWF0aC5mbG9vcihyLnRvcCksYm90dG9tOk1hdGguZmxvb3Ioci5ib3R0b20pLHJpZ2h0Ok1hdGguZmxvb3Ioci5yaWdodCl9LGg9ImJvdHRvbSI9PT1uPyJ0b3AiOiJib3R0b20iLGY9InJpZ2h0Ij09PWk/ImxlZnQiOiJyaWdodCIsdT1tdCgidHJhbnNmb3JtIiksZD12b2lkIDAscD12b2lkIDA7aWYocD0iYm90dG9tIj09PWg/LWEuaGVpZ2h0K2MuYm90dG9tOmMudG9wLGQ9InJpZ2h0Ij09PWY/LWEud2lkdGgrYy5yaWdodDpjLmxlZnQscyYmdSlsW3VdPSJ0cmFuc2xhdGUzZCgiK2QrInB4LCAiK3ArInB4LCAwKSIsbFtoXT0wLGxbZl09MCxsLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgZz0iYm90dG9tIj09PWg/LTE6MSxtPSJyaWdodCI9PT1mPy0xOjE7bFtoXT1wKmcsbFtmXT1kKm0sbC53aWxsQ2hhbmdlPWgrIiwgIitmfXZhciBfPXsieC1wbGFjZW1lbnQiOnQucGxhY2VtZW50fTtyZXR1cm4gdC5hdHRyaWJ1dGVzPWl0KHt9LF8sdC5hdHRyaWJ1dGVzKSx0LnN0eWxlcz1pdCh7fSxsLHQuc3R5bGVzKSx0LmFycm93U3R5bGVzPWl0KHt9LHQub2Zmc2V0cy5hcnJvdyx0LmFycm93U3R5bGVzKSx0fSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIGJ0KHQuaW5zdGFuY2UucG9wcGVyLHQuc3R5bGVzKSxlPXQuaW5zdGFuY2UucG9wcGVyLG49dC5hdHRyaWJ1dGVzLE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7ITEhPT1uW3RdP2Uuc2V0QXR0cmlidXRlKHQsblt0XSk6ZS5yZW1vdmVBdHRyaWJ1dGUodCl9KSx0LmFycm93RWxlbWVudCYmT2JqZWN0LmtleXModC5hcnJvd1N0eWxlcykubGVuZ3RoJiZidCh0LmFycm93RWxlbWVudCx0LmFycm93U3R5bGVzKSx0fSxvbkxvYWQ6ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz1jdCgwLGUsdCkscz1sdChuLnBsYWNlbWVudCxvLGUsdCxuLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LG4ubW9kaWZpZXJzLmZsaXAucGFkZGluZyk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIscyksYnQoZSx7cG9zaXRpb246ImFic29sdXRlIn0pLG59LGdwdUFjY2VsZXJhdGlvbjp2b2lkIDB9fX0sT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7dmFyIGk9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTt0dCh0aGlzLHQpLHRoaXMuc2NoZWR1bGVVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkudXBkYXRlKX0sdGhpcy51cGRhdGU9VSh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnM9aXQoe30sdC5EZWZhdWx0cyxyKSx0aGlzLnN0YXRlPXtpc0Rlc3Ryb3llZDohMSxpc0NyZWF0ZWQ6ITEsc2Nyb2xsUGFyZW50czpbXX0sdGhpcy5yZWZlcmVuY2U9ZSYmZS5qcXVlcnk/ZVswXTplLHRoaXMucG9wcGVyPW4mJm4uanF1ZXJ5P25bMF06bix0aGlzLm9wdGlvbnMubW9kaWZpZXJzPXt9LE9iamVjdC5rZXlzKGl0KHt9LHQuRGVmYXVsdHMubW9kaWZpZXJzLHIubW9kaWZpZXJzKSkuZm9yRWFjaChmdW5jdGlvbihlKXtpLm9wdGlvbnMubW9kaWZpZXJzW2VdPWl0KHt9LHQuRGVmYXVsdHMubW9kaWZpZXJzW2VdfHx7fSxyLm1vZGlmaWVycz9yLm1vZGlmaWVyc1tlXTp7fSl9KSx0aGlzLm1vZGlmaWVycz1PYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubW9kaWZpZXJzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGl0KHtuYW1lOnR9LGkub3B0aW9ucy5tb2RpZmllcnNbdF0pfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSx0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZW5hYmxlZCYmQih0Lm9uTG9hZCkmJnQub25Mb2FkKGkucmVmZXJlbmNlLGkucG9wcGVyLGkub3B0aW9ucyx0LGkuc3RhdGUpfSksdGhpcy51cGRhdGUoKTt2YXIgbz10aGlzLm9wdGlvbnMuZXZlbnRzRW5hYmxlZDtvJiZ0aGlzLmVuYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkPW99cmV0dXJuIGV0KHQsW3trZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtpZighdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZCl7dmFyIHQ9e2luc3RhbmNlOnRoaXMsc3R5bGVzOnt9LGFycm93U3R5bGVzOnt9LGF0dHJpYnV0ZXM6e30sZmxpcHBlZDohMSxvZmZzZXRzOnt9fTt0Lm9mZnNldHMucmVmZXJlbmNlPWN0KHRoaXMuc3RhdGUsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UpLHQucGxhY2VtZW50PWx0KHRoaXMub3B0aW9ucy5wbGFjZW1lbnQsdC5vZmZzZXRzLnJlZmVyZW5jZSx0aGlzLnBvcHBlcix0aGlzLnJlZmVyZW5jZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpLHQub3JpZ2luYWxQbGFjZW1lbnQ9dC5wbGFjZW1lbnQsdC5vZmZzZXRzLnBvcHBlcj11dCh0aGlzLnBvcHBlcix0Lm9mZnNldHMucmVmZXJlbmNlLHQucGxhY2VtZW50KSx0Lm9mZnNldHMucG9wcGVyLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdD1wdCh0aGlzLm1vZGlmaWVycyx0KSx0aGlzLnN0YXRlLmlzQ3JlYXRlZD90aGlzLm9wdGlvbnMub25VcGRhdGUodCk6KHRoaXMuc3RhdGUuaXNDcmVhdGVkPSEwLHRoaXMub3B0aW9ucy5vbkNyZWF0ZSh0KSl9fS5jYWxsKHRoaXMpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZD0hMCxndCh0aGlzLm1vZGlmaWVycywiYXBwbHlTdHlsZSIpJiYodGhpcy5wb3BwZXIucmVtb3ZlQXR0cmlidXRlKCJ4LXBsYWNlbWVudCIpLHRoaXMucG9wcGVyLnN0eWxlLmxlZnQ9IiIsdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb249IiIsdGhpcy5wb3BwZXIuc3R5bGUudG9wPSIiLHRoaXMucG9wcGVyLnN0eWxlW210KCJ0cmFuc2Zvcm0iKV09IiIpLHRoaXMuZGlzYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5vcHRpb25zLnJlbW92ZU9uRGVzdHJveSYmdGhpcy5wb3BwZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBvcHBlciksdGhpc30uY2FsbCh0aGlzKX19LHtrZXk6ImVuYWJsZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZHx8KHRoaXMuc3RhdGU9dnQodGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLHRoaXMuc3RhdGUsdGhpcy5zY2hlZHVsZVVwZGF0ZSkpfS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFdC5jYWxsKHRoaXMpfX1dKSx0fSgpO090LlV0aWxzPSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6Z2xvYmFsKS5Qb3BwZXJVdGlscyxPdC5wbGFjZW1lbnRzPUN0LE90LkRlZmF1bHRzPVN0O3ZhciBOdD1mdW5jdGlvbih0KXt2YXIgZT0iZHJvcGRvd24iLG49ImJzLmRyb3Bkb3duIixvPSIuIituLHM9dC5mbltlXSxhPW5ldyBSZWdFeHAoIjM4fDQwfDI3IiksbD17SElERToiaGlkZSIrbyxISURERU46ImhpZGRlbiIrbyxTSE9XOiJzaG93IitvLFNIT1dOOiJzaG93biIrbyxDTElDSzoiY2xpY2siK28sQ0xJQ0tfREFUQV9BUEk6ImNsaWNrIitvKyIuZGF0YS1hcGkiLEtFWURPV05fREFUQV9BUEk6ImtleWRvd24iK28rIi5kYXRhLWFwaSIsS0VZVVBfREFUQV9BUEk6ImtleXVwIitvKyIuZGF0YS1hcGkifSxjPSJkaXNhYmxlZCIsaD0ic2hvdyIsZj0iZHJvcHVwIix1PSJkcm9wcmlnaHQiLGQ9ImRyb3BsZWZ0IixwPSJkcm9wZG93bi1tZW51LXJpZ2h0IixnPSJkcm9wZG93bi1tZW51LWxlZnQiLG09InBvc2l0aW9uLXN0YXRpYyIsXz0nW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJyx2PSIuZHJvcGRvd24gZm9ybSIsRT0iLmRyb3Bkb3duLW1lbnUiLHk9Ii5uYXZiYXItbmF2IixiPSIuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpub3QoLmRpc2FibGVkKSIsVD0idG9wLXN0YXJ0IixDPSJ0b3AtZW5kIix3PSJib3R0b20tc3RhcnQiLEk9ImJvdHRvbS1lbmQiLEE9InJpZ2h0LXN0YXJ0IixEPSJsZWZ0LXN0YXJ0IixTPXtvZmZzZXQ6MCxmbGlwOiEwLGJvdW5kYXJ5OiJzY3JvbGxQYXJlbnQifSxPPXtvZmZzZXQ6IihudW1iZXJ8c3RyaW5nfGZ1bmN0aW9uKSIsZmxpcDoiYm9vbGVhbiIsYm91bmRhcnk6IihzdHJpbmd8ZWxlbWVudCkifSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyh0LGUpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9wb3BwZXI9bnVsbCx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKGUpLHRoaXMuX21lbnU9dGhpcy5fZ2V0TWVudUVsZW1lbnQoKSx0aGlzLl9pbk5hdmJhcj10aGlzLl9kZXRlY3ROYXZiYXIoKSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpfXZhciB2PXMucHJvdG90eXBlO3JldHVybiB2LnRvZ2dsZT1mdW5jdGlvbigpe2lmKCF0aGlzLl9lbGVtZW50LmRpc2FibGVkJiYhdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhjKSl7dmFyIGU9cy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCksbj10KHRoaXMuX21lbnUpLmhhc0NsYXNzKGgpO2lmKHMuX2NsZWFyTWVudXMoKSwhbil7dmFyIGk9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0scj10LkV2ZW50KGwuU0hPVyxpKTtpZih0KGUpLnRyaWdnZXIociksIXIuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKCF0aGlzLl9pbk5hdmJhcil7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBPdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAgZHJvcGRvd24gcmVxdWlyZSBQb3BwZXIuanMgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZykiKTt2YXIgbz10aGlzLl9lbGVtZW50O3QoZSkuaGFzQ2xhc3MoZikmJih0KHRoaXMuX21lbnUpLmhhc0NsYXNzKGcpfHx0KHRoaXMuX21lbnUpLmhhc0NsYXNzKHApKSYmKG89ZSksInNjcm9sbFBhcmVudCIhPT10aGlzLl9jb25maWcuYm91bmRhcnkmJnQoZSkuYWRkQ2xhc3MobSksdGhpcy5fcG9wcGVyPW5ldyBPdChvLHRoaXMuX21lbnUsdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKCkpfSJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYwPT09dChlKS5jbG9zZXN0KHkpLmxlbmd0aCYmdCgiYm9keSIpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCx0Lm5vb3ApLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsITApLHQodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoaCksdChlKS50b2dnbGVDbGFzcyhoKS50cmlnZ2VyKHQuRXZlbnQobC5TSE9XTixpKSl9fX19LHYuZGlzcG9zZT1mdW5jdGlvbigpe3QucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LG4pLHQodGhpcy5fZWxlbWVudCkub2ZmKG8pLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9tZW51PW51bGwsbnVsbCE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSx2LnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSx2Ll9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dCh0aGlzLl9lbGVtZW50KS5vbihsLkNMSUNLLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLGUudG9nZ2xlKCl9KX0sdi5fZ2V0Q29uZmlnPWZ1bmN0aW9uKG4pe3JldHVybiBuPXIoe30sdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LHQodGhpcy5fZWxlbWVudCkuZGF0YSgpLG4pLGsudHlwZUNoZWNrQ29uZmlnKGUsbix0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSxufSx2Ll9nZXRNZW51RWxlbWVudD1mdW5jdGlvbigpe2lmKCF0aGlzLl9tZW51KXt2YXIgZT1zLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTt0aGlzLl9tZW51PXQoZSkuZmluZChFKVswXX1yZXR1cm4gdGhpcy5fbWVudX0sdi5fZ2V0UGxhY2VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzLl9lbGVtZW50KS5wYXJlbnQoKSxuPXc7cmV0dXJuIGUuaGFzQ2xhc3MoZik/KG49VCx0KHRoaXMuX21lbnUpLmhhc0NsYXNzKHApJiYobj1DKSk6ZS5oYXNDbGFzcyh1KT9uPUE6ZS5oYXNDbGFzcyhkKT9uPUQ6dCh0aGlzLl9tZW51KS5oYXNDbGFzcyhwKSYmKG49SSksbn0sdi5fZGV0ZWN0TmF2YmFyPWZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5fZWxlbWVudCkuY2xvc2VzdCgiLm5hdmJhciIpLmxlbmd0aD4wfSx2Ll9nZXRQb3BwZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e307cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2NvbmZpZy5vZmZzZXQ/ZS5mbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5vZmZzZXRzPXIoe30sZS5vZmZzZXRzLHQuX2NvbmZpZy5vZmZzZXQoZS5vZmZzZXRzKXx8e30pLGV9OmUub2Zmc2V0PXRoaXMuX2NvbmZpZy5vZmZzZXQse3BsYWNlbWVudDp0aGlzLl9nZXRQbGFjZW1lbnQoKSxtb2RpZmllcnM6e29mZnNldDplLGZsaXA6e2VuYWJsZWQ6dGhpcy5fY29uZmlnLmZsaXB9LHByZXZlbnRPdmVyZmxvdzp7Ym91bmRhcmllc0VsZW1lbnQ6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX19fSxzLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKTtpZihpfHwoaT1uZXcgcyh0aGlzLCJvYmplY3QiPT10eXBlb2YgZT9lOm51bGwpLHQodGhpcykuZGF0YShuLGkpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgaVtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO2lbZV0oKX19KX0scy5fY2xlYXJNZW51cz1mdW5jdGlvbihlKXtpZighZXx8MyE9PWUud2hpY2gmJigia2V5dXAiIT09ZS50eXBlfHw5PT09ZS53aGljaCkpZm9yKHZhciBpPXQubWFrZUFycmF5KHQoXykpLHI9MDtyPGkubGVuZ3RoO3IrKyl7dmFyIG89cy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQoaVtyXSksYT10KGlbcl0pLmRhdGEobiksYz17cmVsYXRlZFRhcmdldDppW3JdfTtpZihhKXt2YXIgZj1hLl9tZW51O2lmKHQobykuaGFzQ2xhc3MoaCkmJiEoZSYmKCJjbGljayI9PT1lLnR5cGUmJi9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSl8fCJrZXl1cCI9PT1lLnR5cGUmJjk9PT1lLndoaWNoKSYmdC5jb250YWlucyhvLGUudGFyZ2V0KSkpe3ZhciB1PXQuRXZlbnQobC5ISURFLGMpO3QobykudHJpZ2dlcih1KSx1LmlzRGVmYXVsdFByZXZlbnRlZCgpfHwoIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnQoImJvZHkiKS5jaGlsZHJlbigpLm9mZigibW91c2VvdmVyIixudWxsLHQubm9vcCksaVtyXS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLHQoZikucmVtb3ZlQ2xhc3MoaCksdChvKS5yZW1vdmVDbGFzcyhoKS50cmlnZ2VyKHQuRXZlbnQobC5ISURERU4sYykpKX19fX0scy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIG4saT1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7cmV0dXJuIGkmJihuPXQoaSlbMF0pLG58fGUucGFyZW50Tm9kZX0scy5fZGF0YUFwaUtleWRvd25IYW5kbGVyPWZ1bmN0aW9uKGUpe2lmKCgvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpPyEoMzI9PT1lLndoaWNofHwyNyE9PWUud2hpY2gmJig0MCE9PWUud2hpY2gmJjM4IT09ZS53aGljaHx8dChlLnRhcmdldCkuY2xvc2VzdChFKS5sZW5ndGgpKTphLnRlc3QoZS53aGljaCkpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksIXRoaXMuZGlzYWJsZWQmJiF0KHRoaXMpLmhhc0NsYXNzKGMpKSl7dmFyIG49cy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcyksaT10KG4pLmhhc0NsYXNzKGgpO2lmKChpfHwyNz09PWUud2hpY2gmJjMyPT09ZS53aGljaCkmJighaXx8MjchPT1lLndoaWNoJiYzMiE9PWUud2hpY2gpKXt2YXIgcj10KG4pLmZpbmQoYikuZ2V0KCk7aWYoMCE9PXIubGVuZ3RoKXt2YXIgbz1yLmluZGV4T2YoZS50YXJnZXQpOzM4PT09ZS53aGljaCYmbz4wJiZvLS0sNDA9PT1lLndoaWNoJiZvPHIubGVuZ3RoLTEmJm8rKyxvPDAmJihvPTApLHJbb10uZm9jdXMoKX19ZWxzZXtpZigyNz09PWUud2hpY2gpe3ZhciBsPXQobikuZmluZChfKVswXTt0KGwpLnRyaWdnZXIoImZvY3VzIil9dCh0aGlzKS50cmlnZ2VyKCJjbGljayIpfX19LGkocyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFN9fSx7a2V5OiJEZWZhdWx0VHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE99fV0pLHN9KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKGwuS0VZRE9XTl9EQVRBX0FQSSxfLE4uX2RhdGFBcGlLZXlkb3duSGFuZGxlcikub24obC5LRVlET1dOX0RBVEFfQVBJLEUsTi5fZGF0YUFwaUtleWRvd25IYW5kbGVyKS5vbihsLkNMSUNLX0RBVEFfQVBJKyIgIitsLktFWVVQX0RBVEFfQVBJLE4uX2NsZWFyTWVudXMpLm9uKGwuQ0xJQ0tfREFUQV9BUEksXyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxOLl9qUXVlcnlJbnRlcmZhY2UuY2FsbCh0KHRoaXMpLCJ0b2dnbGUiKX0pLm9uKGwuQ0xJQ0tfREFUQV9BUEksdixmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSksdC5mbltlXT1OLl9qUXVlcnlJbnRlcmZhY2UsdC5mbltlXS5Db25zdHJ1Y3Rvcj1OLHQuZm5bZV0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuW2VdPXMsTi5falF1ZXJ5SW50ZXJmYWNlfSxOfShlKSxrdD1mdW5jdGlvbih0KXt2YXIgZT0iYnMubW9kYWwiLG49Ii4iK2Usbz10LmZuLm1vZGFsLHM9e2JhY2tkcm9wOiEwLGtleWJvYXJkOiEwLGZvY3VzOiEwLHNob3c6ITB9LGE9e2JhY2tkcm9wOiIoYm9vbGVhbnxzdHJpbmcpIixrZXlib2FyZDoiYm9vbGVhbiIsZm9jdXM6ImJvb2xlYW4iLHNob3c6ImJvb2xlYW4ifSxsPXtISURFOiJoaWRlIituLEhJRERFTjoiaGlkZGVuIituLFNIT1c6InNob3ciK24sU0hPV046InNob3duIituLEZPQ1VTSU46ImZvY3VzaW4iK24sUkVTSVpFOiJyZXNpemUiK24sQ0xJQ0tfRElTTUlTUzoiY2xpY2suZGlzbWlzcyIrbixLRVlET1dOX0RJU01JU1M6ImtleWRvd24uZGlzbWlzcyIrbixNT1VTRVVQX0RJU01JU1M6Im1vdXNldXAuZGlzbWlzcyIrbixNT1VTRURPV05fRElTTUlTUzoibW91c2Vkb3duLmRpc21pc3MiK24sQ0xJQ0tfREFUQV9BUEk6ImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIn0sYz0ibW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUiLGg9Im1vZGFsLWJhY2tkcm9wIixmPSJtb2RhbC1vcGVuIix1PSJmYWRlIixkPSJzaG93IixwPXtESUFMT0c6Ii5tb2RhbC1kaWFsb2ciLERBVEFfVE9HR0xFOidbZGF0YS10b2dnbGU9Im1vZGFsIl0nLERBVEFfRElTTUlTUzonW2RhdGEtZGlzbWlzcz0ibW9kYWwiXScsRklYRURfQ09OVEVOVDoiLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCIsU1RJQ0tZX0NPTlRFTlQ6Ii5zdGlja3ktdG9wIixOQVZCQVJfVE9HR0xFUjoiLm5hdmJhci10b2dnbGVyIn0sZz1mdW5jdGlvbigpe2Z1bmN0aW9uIG8oZSxuKXt0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKG4pLHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl9kaWFsb2c9dChlKS5maW5kKHAuRElBTE9HKVswXSx0aGlzLl9iYWNrZHJvcD1udWxsLHRoaXMuX2lzU2hvd249ITEsdGhpcy5faXNCb2R5T3ZlcmZsb3dpbmc9ITEsdGhpcy5faWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLl9vcmlnaW5hbEJvZHlQYWRkaW5nPTAsdGhpcy5fc2Nyb2xsYmFyV2lkdGg9MH12YXIgZz1vLnByb3RvdHlwZTtyZXR1cm4gZy50b2dnbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzU2hvd24/dGhpcy5oaWRlKCk6dGhpcy5zaG93KHQpfSxnLnNob3c9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZighdGhpcy5faXNUcmFuc2l0aW9uaW5nJiYhdGhpcy5faXNTaG93bil7ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyh1KSYmKHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMCk7dmFyIGk9dC5FdmVudChsLlNIT1cse3JlbGF0ZWRUYXJnZXQ6ZX0pO3QodGhpcy5fZWxlbWVudCkudHJpZ2dlcihpKSx0aGlzLl9pc1Nob3dufHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5faXNTaG93bj0hMCx0aGlzLl9jaGVja1Njcm9sbGJhcigpLHRoaXMuX3NldFNjcm9sbGJhcigpLHRoaXMuX2FkanVzdERpYWxvZygpLHQoZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoZiksdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSx0aGlzLl9zZXRSZXNpemVFdmVudCgpLHQodGhpcy5fZWxlbWVudCkub24obC5DTElDS19ESVNNSVNTLHAuREFUQV9ESVNNSVNTLGZ1bmN0aW9uKHQpe3JldHVybiBuLmhpZGUodCl9KSx0KHRoaXMuX2RpYWxvZykub24obC5NT1VTRURPV05fRElTTUlTUyxmdW5jdGlvbigpe3Qobi5fZWxlbWVudCkub25lKGwuTU9VU0VVUF9ESVNNSVNTLGZ1bmN0aW9uKGUpe3QoZS50YXJnZXQpLmlzKG4uX2VsZW1lbnQpJiYobi5faWdub3JlQmFja2Ryb3BDbGljaz0hMCl9KX0pLHRoaXMuX3Nob3dCYWNrZHJvcChmdW5jdGlvbigpe3JldHVybiBuLl9zaG93RWxlbWVudChlKX0pKX19LGcuaGlkZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzO2lmKGUmJmUucHJldmVudERlZmF1bHQoKSwhdGhpcy5faXNUcmFuc2l0aW9uaW5nJiZ0aGlzLl9pc1Nob3duKXt2YXIgaT10LkV2ZW50KGwuSElERSk7aWYodCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKGkpLHRoaXMuX2lzU2hvd24mJiFpLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt0aGlzLl9pc1Nob3duPSExO3ZhciByPWsuc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJnQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3ModSk7ciYmKHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMCksdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSx0aGlzLl9zZXRSZXNpemVFdmVudCgpLHQoZG9jdW1lbnQpLm9mZihsLkZPQ1VTSU4pLHQodGhpcy5fZWxlbWVudCkucmVtb3ZlQ2xhc3MoZCksdCh0aGlzLl9lbGVtZW50KS5vZmYobC5DTElDS19ESVNNSVNTKSx0KHRoaXMuX2RpYWxvZykub2ZmKGwuTU9VU0VET1dOX0RJU01JU1MpLHI/dCh0aGlzLl9lbGVtZW50KS5vbmUoay5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbih0KXtyZXR1cm4gbi5faGlkZU1vZGFsKHQpfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoMzAwKTp0aGlzLl9oaWRlTW9kYWwoKX19fSxnLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxlKSx0KHdpbmRvdyxkb2N1bWVudCx0aGlzLl9lbGVtZW50LHRoaXMuX2JhY2tkcm9wKS5vZmYobiksdGhpcy5fY29uZmlnPW51bGwsdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuX2RpYWxvZz1udWxsLHRoaXMuX2JhY2tkcm9wPW51bGwsdGhpcy5faXNTaG93bj1udWxsLHRoaXMuX2lzQm9keU92ZXJmbG93aW5nPW51bGwsdGhpcy5faWdub3JlQmFja2Ryb3BDbGljaz1udWxsLHRoaXMuX3Njcm9sbGJhcldpZHRoPW51bGx9LGcuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0RGlhbG9nKCl9LGcuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1yKHt9LHMsdCksay50eXBlQ2hlY2tDb25maWcoIm1vZGFsIix0LGEpLHR9LGcuX3Nob3dFbGVtZW50PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsaT1rLnN1cHBvcnRzVHJhbnNpdGlvbkVuZCgpJiZ0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKHUpO3RoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV8fGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksdGhpcy5fZWxlbWVudC5zY3JvbGxUb3A9MCxpJiZrLnJlZmxvdyh0aGlzLl9lbGVtZW50KSx0KHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKGQpLHRoaXMuX2NvbmZpZy5mb2N1cyYmdGhpcy5fZW5mb3JjZUZvY3VzKCk7dmFyIHI9dC5FdmVudChsLlNIT1dOLHtyZWxhdGVkVGFyZ2V0OmV9KSxvPWZ1bmN0aW9uKCl7bi5fY29uZmlnLmZvY3VzJiZuLl9lbGVtZW50LmZvY3VzKCksbi5faXNUcmFuc2l0aW9uaW5nPSExLHQobi5fZWxlbWVudCkudHJpZ2dlcihyKX07aT90KHRoaXMuX2RpYWxvZykub25lKGsuVFJBTlNJVElPTl9FTkQsbykuZW11bGF0ZVRyYW5zaXRpb25FbmQoMzAwKTpvKCl9LGcuX2VuZm9yY2VGb2N1cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dChkb2N1bWVudCkub2ZmKGwuRk9DVVNJTikub24obC5GT0NVU0lOLGZ1bmN0aW9uKG4pe2RvY3VtZW50IT09bi50YXJnZXQmJmUuX2VsZW1lbnQhPT1uLnRhcmdldCYmMD09PXQoZS5fZWxlbWVudCkuaGFzKG4udGFyZ2V0KS5sZW5ndGgmJmUuX2VsZW1lbnQuZm9jdXMoKX0pfSxnLl9zZXRFc2NhcGVFdmVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5faXNTaG93biYmdGhpcy5fY29uZmlnLmtleWJvYXJkP3QodGhpcy5fZWxlbWVudCkub24obC5LRVlET1dOX0RJU01JU1MsZnVuY3Rpb24odCl7Mjc9PT10LndoaWNoJiYodC5wcmV2ZW50RGVmYXVsdCgpLGUuaGlkZSgpKX0pOnRoaXMuX2lzU2hvd258fHQodGhpcy5fZWxlbWVudCkub2ZmKGwuS0VZRE9XTl9ESVNNSVNTKX0sZy5fc2V0UmVzaXplRXZlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2lzU2hvd24/dCh3aW5kb3cpLm9uKGwuUkVTSVpFLGZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZVVwZGF0ZSh0KX0pOnQod2luZG93KS5vZmYobC5SRVNJWkUpfSxnLl9oaWRlTW9kYWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwhMCksdGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX3Nob3dCYWNrZHJvcChmdW5jdGlvbigpe3QoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoZiksZS5fcmVzZXRBZGp1c3RtZW50cygpLGUuX3Jlc2V0U2Nyb2xsYmFyKCksdChlLl9lbGVtZW50KS50cmlnZ2VyKGwuSElEREVOKX0pfSxnLl9yZW1vdmVCYWNrZHJvcD1mdW5jdGlvbigpe3RoaXMuX2JhY2tkcm9wJiYodCh0aGlzLl9iYWNrZHJvcCkucmVtb3ZlKCksdGhpcy5fYmFja2Ryb3A9bnVsbCl9LGcuX3Nob3dCYWNrZHJvcD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLGk9dCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyh1KT91OiIiO2lmKHRoaXMuX2lzU2hvd24mJnRoaXMuX2NvbmZpZy5iYWNrZHJvcCl7dmFyIHI9ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmaTtpZih0aGlzLl9iYWNrZHJvcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLl9iYWNrZHJvcC5jbGFzc05hbWU9aCxpJiZ0KHRoaXMuX2JhY2tkcm9wKS5hZGRDbGFzcyhpKSx0KHRoaXMuX2JhY2tkcm9wKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KSx0KHRoaXMuX2VsZW1lbnQpLm9uKGwuQ0xJQ0tfRElTTUlTUyxmdW5jdGlvbih0KXtuLl9pZ25vcmVCYWNrZHJvcENsaWNrP24uX2lnbm9yZUJhY2tkcm9wQ2xpY2s9ITE6dC50YXJnZXQ9PT10LmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09PW4uX2NvbmZpZy5iYWNrZHJvcD9uLl9lbGVtZW50LmZvY3VzKCk6bi5oaWRlKCkpfSksciYmay5yZWZsb3codGhpcy5fYmFja2Ryb3ApLHQodGhpcy5fYmFja2Ryb3ApLmFkZENsYXNzKGQpLCFlKXJldHVybjtpZighcilyZXR1cm4gdm9pZCBlKCk7dCh0aGlzLl9iYWNrZHJvcCkub25lKGsuVFJBTlNJVElPTl9FTkQsZSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoMTUwKX1lbHNlIGlmKCF0aGlzLl9pc1Nob3duJiZ0aGlzLl9iYWNrZHJvcCl7dCh0aGlzLl9iYWNrZHJvcCkucmVtb3ZlQ2xhc3MoZCk7dmFyIG89ZnVuY3Rpb24oKXtuLl9yZW1vdmVCYWNrZHJvcCgpLGUmJmUoKX07ay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyh1KT90KHRoaXMuX2JhY2tkcm9wKS5vbmUoay5UUkFOU0lUSU9OX0VORCxvKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxNTApOm8oKX1lbHNlIGUmJmUoKX0sZy5fYWRqdXN0RGlhbG9nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDshdGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcmJnQmJih0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0PXRoaXMuX3Njcm9sbGJhcldpZHRoKyJweCIpLHRoaXMuX2lzQm9keU92ZXJmbG93aW5nJiYhdCYmKHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0PXRoaXMuX3Njcm9sbGJhcldpZHRoKyJweCIpfSxnLl9yZXNldEFkanVzdG1lbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdD0iIix0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodD0iIn0sZy5fY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2lzQm9keU92ZXJmbG93aW5nPXQubGVmdCt0LnJpZ2h0PHdpbmRvdy5pbm5lcldpZHRoLHRoaXMuX3Njcm9sbGJhcldpZHRoPXRoaXMuX2dldFNjcm9sbGJhcldpZHRoKCl9LGcuX3NldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcpe3QocC5GSVhFRF9DT05URU5UKS5lYWNoKGZ1bmN0aW9uKG4saSl7dmFyIHI9dChpKVswXS5zdHlsZS5wYWRkaW5nUmlnaHQsbz10KGkpLmNzcygicGFkZGluZy1yaWdodCIpO3QoaSkuZGF0YSgicGFkZGluZy1yaWdodCIscikuY3NzKCJwYWRkaW5nLXJpZ2h0IixwYXJzZUZsb2F0KG8pK2UuX3Njcm9sbGJhcldpZHRoKyJweCIpfSksdChwLlNUSUNLWV9DT05URU5UKS5lYWNoKGZ1bmN0aW9uKG4saSl7dmFyIHI9dChpKVswXS5zdHlsZS5tYXJnaW5SaWdodCxvPXQoaSkuY3NzKCJtYXJnaW4tcmlnaHQiKTt0KGkpLmRhdGEoIm1hcmdpbi1yaWdodCIscikuY3NzKCJtYXJnaW4tcmlnaHQiLHBhcnNlRmxvYXQobyktZS5fc2Nyb2xsYmFyV2lkdGgrInB4Iil9KSx0KHAuTkFWQkFSX1RPR0dMRVIpLmVhY2goZnVuY3Rpb24obixpKXt2YXIgcj10KGkpWzBdLnN0eWxlLm1hcmdpblJpZ2h0LG89dChpKS5jc3MoIm1hcmdpbi1yaWdodCIpO3QoaSkuZGF0YSgibWFyZ2luLXJpZ2h0IixyKS5jc3MoIm1hcmdpbi1yaWdodCIscGFyc2VGbG9hdChvKStlLl9zY3JvbGxiYXJXaWR0aCsicHgiKX0pO3ZhciBuPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0LGk9dCgiYm9keSIpLmNzcygicGFkZGluZy1yaWdodCIpO3QoImJvZHkiKS5kYXRhKCJwYWRkaW5nLXJpZ2h0IixuKS5jc3MoInBhZGRpbmctcmlnaHQiLHBhcnNlRmxvYXQoaSkrdGhpcy5fc2Nyb2xsYmFyV2lkdGgrInB4Iil9fSxnLl9yZXNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3QocC5GSVhFRF9DT05URU5UKS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIGk9dChuKS5kYXRhKCJwYWRkaW5nLXJpZ2h0Iik7InVuZGVmaW5lZCIhPXR5cGVvZiBpJiZ0KG4pLmNzcygicGFkZGluZy1yaWdodCIsaSkucmVtb3ZlRGF0YSgicGFkZGluZy1yaWdodCIpfSksdChwLlNUSUNLWV9DT05URU5UKyIsICIrcC5OQVZCQVJfVE9HR0xFUikuZWFjaChmdW5jdGlvbihlLG4pe3ZhciBpPXQobikuZGF0YSgibWFyZ2luLXJpZ2h0Iik7InVuZGVmaW5lZCIhPXR5cGVvZiBpJiZ0KG4pLmNzcygibWFyZ2luLXJpZ2h0IixpKS5yZW1vdmVEYXRhKCJtYXJnaW4tcmlnaHQiKX0pO3ZhciBlPXQoImJvZHkiKS5kYXRhKCJwYWRkaW5nLXJpZ2h0Iik7InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZ0KCJib2R5IikuY3NzKCJwYWRkaW5nLXJpZ2h0IixlKS5yZW1vdmVEYXRhKCJwYWRkaW5nLXJpZ2h0Iil9LGcuX2dldFNjcm9sbGJhcldpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9Yyxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgtdC5jbGllbnRXaWR0aDtyZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxlfSxvLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24obixpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHM9dCh0aGlzKS5kYXRhKGUpLGE9cih7fSxvLkRlZmF1bHQsdCh0aGlzKS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBuJiZuKTtpZihzfHwocz1uZXcgbyh0aGlzLGEpLHQodGhpcykuZGF0YShlLHMpKSwic3RyaW5nIj09dHlwZW9mIG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygc1tuXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrbisnIicpO3Nbbl0oaSl9ZWxzZSBhLnNob3cmJnMuc2hvdyhpKX0pfSxpKG8sbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuMC4wIn19LHtrZXk6IkRlZmF1bHQiLGdldDpmdW5jdGlvbigpe3JldHVybiBzfX1dKSxvfSgpO3JldHVybiB0KGRvY3VtZW50KS5vbihsLkNMSUNLX0RBVEFfQVBJLHAuREFUQV9UT0dHTEUsZnVuY3Rpb24obil7dmFyIGksbz10aGlzLHM9ay5nZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpO3MmJihpPXQocylbMF0pO3ZhciBhPXQoaSkuZGF0YShlKT8idG9nZ2xlIjpyKHt9LHQoaSkuZGF0YSgpLHQodGhpcykuZGF0YSgpKTsiQSIhPT10aGlzLnRhZ05hbWUmJiJBUkVBIiE9PXRoaXMudGFnTmFtZXx8bi5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPXQoaSkub25lKGwuU0hPVyxmdW5jdGlvbihlKXtlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxjLm9uZShsLkhJRERFTixmdW5jdGlvbigpe3QobykuaXMoIjp2aXNpYmxlIikmJm8uZm9jdXMoKX0pfSk7Zy5falF1ZXJ5SW50ZXJmYWNlLmNhbGwodChpKSxhLHRoaXMpfSksdC5mbi5tb2RhbD1nLl9qUXVlcnlJbnRlcmZhY2UsdC5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1nLHQuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuLm1vZGFsPW8sZy5falF1ZXJ5SW50ZXJmYWNlfSxnfShlKSxMdD1mdW5jdGlvbih0KXt2YXIgZT0idG9vbHRpcCIsbj0iYnMudG9vbHRpcCIsbz0iLiIrbixzPXQuZm5bZV0sYT1uZXcgUmVnRXhwKCIoXnxcXHMpYnMtdG9vbHRpcFxcUysiLCJnIiksbD17YW5pbWF0aW9uOiJib29sZWFuIix0ZW1wbGF0ZToic3RyaW5nIix0aXRsZToiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSIsdHJpZ2dlcjoic3RyaW5nIixkZWxheToiKG51bWJlcnxvYmplY3QpIixodG1sOiJib29sZWFuIixzZWxlY3RvcjoiKHN0cmluZ3xib29sZWFuKSIscGxhY2VtZW50OiIoc3RyaW5nfGZ1bmN0aW9uKSIsb2Zmc2V0OiIobnVtYmVyfHN0cmluZykiLGNvbnRhaW5lcjoiKHN0cmluZ3xlbGVtZW50fGJvb2xlYW4pIixmYWxsYmFja1BsYWNlbWVudDoiKHN0cmluZ3xhcnJheSkiLGJvdW5kYXJ5OiIoc3RyaW5nfGVsZW1lbnQpIn0sYz17QVVUTzoiYXV0byIsVE9QOiJ0b3AiLFJJR0hUOiJyaWdodCIsQk9UVE9NOiJib3R0b20iLExFRlQ6ImxlZnQifSxoPXthbmltYXRpb246ITAsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwLWlubmVyIj48L2Rpdj48L2Rpdj4nLHRyaWdnZXI6ImhvdmVyIGZvY3VzIix0aXRsZToiIixkZWxheTowLGh0bWw6ITEsc2VsZWN0b3I6ITEscGxhY2VtZW50OiJ0b3AiLG9mZnNldDowLGNvbnRhaW5lcjohMSxmYWxsYmFja1BsYWNlbWVudDoiZmxpcCIsYm91bmRhcnk6InNjcm9sbFBhcmVudCJ9LGY9InNob3ciLHU9Im91dCIsZD17SElERToiaGlkZSIrbyxISURERU46ImhpZGRlbiIrbyxTSE9XOiJzaG93IitvLFNIT1dOOiJzaG93biIrbyxJTlNFUlRFRDoiaW5zZXJ0ZWQiK28sQ0xJQ0s6ImNsaWNrIitvLEZPQ1VTSU46ImZvY3VzaW4iK28sRk9DVVNPVVQ6ImZvY3Vzb3V0IitvLE1PVVNFRU5URVI6Im1vdXNlZW50ZXIiK28sTU9VU0VMRUFWRToibW91c2VsZWF2ZSIrb30scD0iZmFkZSIsZz0ic2hvdyIsbT0iLnRvb2x0aXAtaW5uZXIiLF89Ii5hcnJvdyIsdj0iaG92ZXIiLEU9ImZvY3VzIix5PSJjbGljayIsYj0ibWFudWFsIixUPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyh0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgT3QpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9vdHN0cmFwIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyLmpzIChodHRwczovL3BvcHBlci5qcy5vcmcpIik7dGhpcy5faXNFbmFibGVkPSEwLHRoaXMuX3RpbWVvdXQ9MCx0aGlzLl9ob3ZlclN0YXRlPSIiLHRoaXMuX2FjdGl2ZVRyaWdnZXI9e30sdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5lbGVtZW50PXQsdGhpcy5jb25maWc9dGhpcy5fZ2V0Q29uZmlnKGUpLHRoaXMudGlwPW51bGwsdGhpcy5fc2V0TGlzdGVuZXJzKCl9dmFyIFQ9cy5wcm90b3R5cGU7cmV0dXJuIFQuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5faXNFbmFibGVkPSEwfSxULmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLl9pc0VuYWJsZWQ9ITF9LFQudG9nZ2xlRW5hYmxlZD1mdW5jdGlvbigpe3RoaXMuX2lzRW5hYmxlZD0hdGhpcy5faXNFbmFibGVkfSxULnRvZ2dsZT1mdW5jdGlvbihlKXtpZih0aGlzLl9pc0VuYWJsZWQpaWYoZSl7dmFyIG49dGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSxpPXQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKG4pO2l8fChpPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGUuY3VycmVudFRhcmdldCx0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKSx0KGUuY3VycmVudFRhcmdldCkuZGF0YShuLGkpKSxpLl9hY3RpdmVUcmlnZ2VyLmNsaWNrPSFpLl9hY3RpdmVUcmlnZ2VyLmNsaWNrLGkuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKT9pLl9lbnRlcihudWxsLGkpOmkuX2xlYXZlKG51bGwsaSl9ZWxzZXtpZih0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKS5oYXNDbGFzcyhnKSlyZXR1cm4gdm9pZCB0aGlzLl9sZWF2ZShudWxsLHRoaXMpO3RoaXMuX2VudGVyKG51bGwsdGhpcyl9fSxULmRpc3Bvc2U9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdC5yZW1vdmVEYXRhKHRoaXMuZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKSx0KHRoaXMuZWxlbWVudCkub2ZmKHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKSx0KHRoaXMuZWxlbWVudCkuY2xvc2VzdCgiLm1vZGFsIikub2ZmKCJoaWRlLmJzLm1vZGFsIiksdGhpcy50aXAmJnQodGhpcy50aXApLnJlbW92ZSgpLHRoaXMuX2lzRW5hYmxlZD1udWxsLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9ob3ZlclN0YXRlPW51bGwsdGhpcy5fYWN0aXZlVHJpZ2dlcj1udWxsLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5lbGVtZW50PW51bGwsdGhpcy5jb25maWc9bnVsbCx0aGlzLnRpcD1udWxsfSxULnNob3c9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCJub25lIj09PXQodGhpcy5lbGVtZW50KS5jc3MoImRpc3BsYXkiKSl0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSB1c2Ugc2hvdyBvbiB2aXNpYmxlIGVsZW1lbnRzIik7dmFyIG49dC5FdmVudCh0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LlNIT1cpO2lmKHRoaXMuaXNXaXRoQ29udGVudCgpJiZ0aGlzLl9pc0VuYWJsZWQpe3QodGhpcy5lbGVtZW50KS50cmlnZ2VyKG4pO3ZhciBpPXQuY29udGFpbnModGhpcy5lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuZWxlbWVudCk7aWYobi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8IWkpcmV0dXJuO3ZhciByPXRoaXMuZ2V0VGlwRWxlbWVudCgpLG89ay5nZXRVSUQodGhpcy5jb25zdHJ1Y3Rvci5OQU1FKTtyLnNldEF0dHJpYnV0ZSgiaWQiLG8pLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLG8pLHRoaXMuc2V0Q29udGVudCgpLHRoaXMuY29uZmlnLmFuaW1hdGlvbiYmdChyKS5hZGRDbGFzcyhwKTt2YXIgYT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb25maWcucGxhY2VtZW50P3RoaXMuY29uZmlnLnBsYWNlbWVudC5jYWxsKHRoaXMscix0aGlzLmVsZW1lbnQpOnRoaXMuY29uZmlnLnBsYWNlbWVudCxsPXRoaXMuX2dldEF0dGFjaG1lbnQoYSk7dGhpcy5hZGRBdHRhY2htZW50Q2xhc3MobCk7dmFyIGM9ITE9PT10aGlzLmNvbmZpZy5jb250YWluZXI/ZG9jdW1lbnQuYm9keTp0KHRoaXMuY29uZmlnLmNvbnRhaW5lcik7dChyKS5kYXRhKHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVksdGhpcyksdC5jb250YWlucyh0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy50aXApfHx0KHIpLmFwcGVuZFRvKGMpLHQodGhpcy5lbGVtZW50KS50cmlnZ2VyKHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSU5TRVJURUQpLHRoaXMuX3BvcHBlcj1uZXcgT3QodGhpcy5lbGVtZW50LHIse3BsYWNlbWVudDpsLG1vZGlmaWVyczp7b2Zmc2V0OntvZmZzZXQ6dGhpcy5jb25maWcub2Zmc2V0fSxmbGlwOntiZWhhdmlvcjp0aGlzLmNvbmZpZy5mYWxsYmFja1BsYWNlbWVudH0sYXJyb3c6e2VsZW1lbnQ6X30scHJldmVudE92ZXJmbG93Ontib3VuZGFyaWVzRWxlbWVudDp0aGlzLmNvbmZpZy5ib3VuZGFyeX19LG9uQ3JlYXRlOmZ1bmN0aW9uKHQpe3Qub3JpZ2luYWxQbGFjZW1lbnQhPT10LnBsYWNlbWVudCYmZS5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKHQpfSxvblVwZGF0ZTpmdW5jdGlvbih0KXtlLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UodCl9fSksdChyKS5hZGRDbGFzcyhnKSwib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmdCgiYm9keSIpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCx0Lm5vb3ApO3ZhciBoPWZ1bmN0aW9uKCl7ZS5jb25maWcuYW5pbWF0aW9uJiZlLl9maXhUcmFuc2l0aW9uKCk7dmFyIG49ZS5faG92ZXJTdGF0ZTtlLl9ob3ZlclN0YXRlPW51bGwsdChlLmVsZW1lbnQpLnRyaWdnZXIoZS5jb25zdHJ1Y3Rvci5FdmVudC5TSE9XTiksbj09PXUmJmUuX2xlYXZlKG51bGwsZSl9O2suc3VwcG9ydHNUcmFuc2l0aW9uRW5kKCkmJnQodGhpcy50aXApLmhhc0NsYXNzKHApP3QodGhpcy50aXApLm9uZShrLlRSQU5TSVRJT05fRU5ELGgpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKHMuX1RSQU5TSVRJT05fRFVSQVRJT04pOmgoKX19LFQuaGlkZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLGk9dGhpcy5nZXRUaXBFbGVtZW50KCkscj10LkV2ZW50KHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSElERSksbz1mdW5jdGlvbigpe24uX2hvdmVyU3RhdGUhPT1mJiZpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSxuLl9jbGVhblRpcENsYXNzKCksbi5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIpLHQobi5lbGVtZW50KS50cmlnZ2VyKG4uY29uc3RydWN0b3IuRXZlbnQuSElEREVOKSxudWxsIT09bi5fcG9wcGVyJiZuLl9wb3BwZXIuZGVzdHJveSgpLGUmJmUoKX07dCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIociksci5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHQoaSkucmVtb3ZlQ2xhc3MoZyksIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnQoImJvZHkiKS5jaGlsZHJlbigpLm9mZigibW91c2VvdmVyIixudWxsLHQubm9vcCksdGhpcy5fYWN0aXZlVHJpZ2dlclt5XT0hMSx0aGlzLl9hY3RpdmVUcmlnZ2VyW0VdPSExLHRoaXMuX2FjdGl2ZVRyaWdnZXJbdl09ITEsay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmdCh0aGlzLnRpcCkuaGFzQ2xhc3MocCk/dChpKS5vbmUoay5UUkFOU0lUSU9OX0VORCxvKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxNTApOm8oKSx0aGlzLl9ob3ZlclN0YXRlPSIiKX0sVC51cGRhdGU9ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5fcG9wcGVyJiZ0aGlzLl9wb3BwZXIuc2NoZWR1bGVVcGRhdGUoKX0sVC5pc1dpdGhDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5nZXRUaXRsZSgpKX0sVC5hZGRBdHRhY2htZW50Q2xhc3M9ZnVuY3Rpb24oZSl7dCh0aGlzLmdldFRpcEVsZW1lbnQoKSkuYWRkQ2xhc3MoImJzLXRvb2x0aXAtIitlKX0sVC5nZXRUaXBFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlwPXRoaXMudGlwfHx0KHRoaXMuY29uZmlnLnRlbXBsYXRlKVswXSx0aGlzLnRpcH0sVC5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzLmdldFRpcEVsZW1lbnQoKSk7dGhpcy5zZXRFbGVtZW50Q29udGVudChlLmZpbmQobSksdGhpcy5nZXRUaXRsZSgpKSxlLnJlbW92ZUNsYXNzKHArIiAiK2cpfSxULnNldEVsZW1lbnRDb250ZW50PWZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcy5jb25maWcuaHRtbDsib2JqZWN0Ij09dHlwZW9mIG4mJihuLm5vZGVUeXBlfHxuLmpxdWVyeSk/aT90KG4pLnBhcmVudCgpLmlzKGUpfHxlLmVtcHR5KCkuYXBwZW5kKG4pOmUudGV4dCh0KG4pLnRleHQoKSk6ZVtpPyJodG1sIjoidGV4dCJdKG4pfSxULmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbC10aXRsZSIpO3JldHVybiB0fHwodD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb25maWcudGl0bGU/dGhpcy5jb25maWcudGl0bGUuY2FsbCh0aGlzLmVsZW1lbnQpOnRoaXMuY29uZmlnLnRpdGxlKSx0fSxULl9nZXRBdHRhY2htZW50PWZ1bmN0aW9uKHQpe3JldHVybiBjW3QudG9VcHBlckNhc2UoKV19LFQuX3NldExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5jb25maWcudHJpZ2dlci5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24obil7aWYoImNsaWNrIj09PW4pdChlLmVsZW1lbnQpLm9uKGUuY29uc3RydWN0b3IuRXZlbnQuQ0xJQ0ssZS5jb25maWcuc2VsZWN0b3IsZnVuY3Rpb24odCl7cmV0dXJuIGUudG9nZ2xlKHQpfSk7ZWxzZSBpZihuIT09Yil7dmFyIGk9bj09PXY/ZS5jb25zdHJ1Y3Rvci5FdmVudC5NT1VTRUVOVEVSOmUuY29uc3RydWN0b3IuRXZlbnQuRk9DVVNJTixyPW49PT12P2UuY29uc3RydWN0b3IuRXZlbnQuTU9VU0VMRUFWRTplLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTT1VUO3QoZS5lbGVtZW50KS5vbihpLGUuY29uZmlnLnNlbGVjdG9yLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9lbnRlcih0KX0pLm9uKHIsZS5jb25maWcuc2VsZWN0b3IsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xlYXZlKHQpfSl9dChlLmVsZW1lbnQpLmNsb3Nlc3QoIi5tb2RhbCIpLm9uKCJoaWRlLmJzLm1vZGFsIixmdW5jdGlvbigpe3JldHVybiBlLmhpZGUoKX0pfSksdGhpcy5jb25maWcuc2VsZWN0b3I/dGhpcy5jb25maWc9cih7fSx0aGlzLmNvbmZpZyx7dHJpZ2dlcjoibWFudWFsIixzZWxlY3RvcjoiIn0pOnRoaXMuX2ZpeFRpdGxlKCl9LFQuX2ZpeFRpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9dHlwZW9mIHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtb3JpZ2luYWwtdGl0bGUiKTsodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgidGl0bGUiKXx8InN0cmluZyIhPT10KSYmKHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtb3JpZ2luYWwtdGl0bGUiLHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoInRpdGxlIil8fCIiKSx0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIiIpKX0sVC5fZW50ZXI9ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZOyhuPW58fHQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKGkpKXx8KG49bmV3IHRoaXMuY29uc3RydWN0b3IoZS5jdXJyZW50VGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpLHQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKGksbikpLGUmJihuLl9hY3RpdmVUcmlnZ2VyWyJmb2N1c2luIj09PWUudHlwZT9FOnZdPSEwKSx0KG4uZ2V0VGlwRWxlbWVudCgpKS5oYXNDbGFzcyhnKXx8bi5faG92ZXJTdGF0ZT09PWY/bi5faG92ZXJTdGF0ZT1mOihjbGVhclRpbWVvdXQobi5fdGltZW91dCksbi5faG92ZXJTdGF0ZT1mLG4uY29uZmlnLmRlbGF5JiZuLmNvbmZpZy5kZWxheS5zaG93P24uX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe24uX2hvdmVyU3RhdGU9PT1mJiZuLnNob3coKX0sbi5jb25maWcuZGVsYXkuc2hvdyk6bi5zaG93KCkpfSxULl9sZWF2ZT1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMuY29uc3RydWN0b3IuREFUQV9LRVk7KG49bnx8dChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoaSkpfHwobj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLmN1cnJlbnRUYXJnZXQsdGhpcy5fZ2V0RGVsZWdhdGVDb25maWcoKSksdChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoaSxuKSksZSYmKG4uX2FjdGl2ZVRyaWdnZXJbImZvY3Vzb3V0Ij09PWUudHlwZT9FOnZdPSExKSxuLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCl8fChjbGVhclRpbWVvdXQobi5fdGltZW91dCksbi5faG92ZXJTdGF0ZT11LG4uY29uZmlnLmRlbGF5JiZuLmNvbmZpZy5kZWxheS5oaWRlP24uX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe24uX2hvdmVyU3RhdGU9PT11JiZuLmhpZGUoKX0sbi5jb25maWcuZGVsYXkuaGlkZSk6bi5oaWRlKCkpfSxULl9pc1dpdGhBY3RpdmVUcmlnZ2VyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2FjdGl2ZVRyaWdnZXIpaWYodGhpcy5fYWN0aXZlVHJpZ2dlclt0XSlyZXR1cm4hMDtyZXR1cm4hMX0sVC5fZ2V0Q29uZmlnPWZ1bmN0aW9uKG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Yobj1yKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCx0KHRoaXMuZWxlbWVudCkuZGF0YSgpLG4pKS5kZWxheSYmKG4uZGVsYXk9e3Nob3c6bi5kZWxheSxoaWRlOm4uZGVsYXl9KSwibnVtYmVyIj09dHlwZW9mIG4udGl0bGUmJihuLnRpdGxlPW4udGl0bGUudG9TdHJpbmcoKSksIm51bWJlciI9PXR5cGVvZiBuLmNvbnRlbnQmJihuLmNvbnRlbnQ9bi5jb250ZW50LnRvU3RyaW5nKCkpLGsudHlwZUNoZWNrQ29uZmlnKGUsbix0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSxufSxULl9nZXREZWxlZ2F0ZUNvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXt9O2lmKHRoaXMuY29uZmlnKWZvcih2YXIgZSBpbiB0aGlzLmNvbmZpZyl0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZV0hPT10aGlzLmNvbmZpZ1tlXSYmKHRbZV09dGhpcy5jb25maWdbZV0pO3JldHVybiB0fSxULl9jbGVhblRpcENsYXNzPWZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzLmdldFRpcEVsZW1lbnQoKSksbj1lLmF0dHIoImNsYXNzIikubWF0Y2goYSk7bnVsbCE9PW4mJm4ubGVuZ3RoPjAmJmUucmVtb3ZlQ2xhc3Mobi5qb2luKCIiKSl9LFQuX2hhbmRsZVBvcHBlclBsYWNlbWVudENoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9jbGVhblRpcENsYXNzKCksdGhpcy5hZGRBdHRhY2htZW50Q2xhc3ModGhpcy5fZ2V0QXR0YWNobWVudCh0LnBsYWNlbWVudCkpfSxULl9maXhUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRUaXBFbGVtZW50KCksbj10aGlzLmNvbmZpZy5hbmltYXRpb247bnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIpJiYodChlKS5yZW1vdmVDbGFzcyhwKSx0aGlzLmNvbmZpZy5hbmltYXRpb249ITEsdGhpcy5oaWRlKCksdGhpcy5zaG93KCksdGhpcy5jb25maWcuYW5pbWF0aW9uPW4pfSxzLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKSxyPSJvYmplY3QiPT10eXBlb2YgZSYmZTtpZigoaXx8IS9kaXNwb3NlfGhpZGUvLnRlc3QoZSkpJiYoaXx8KGk9bmV3IHModGhpcyxyKSx0KHRoaXMpLmRhdGEobixpKSksInN0cmluZyI9PXR5cGVvZiBlKSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBpW2VdKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCAiJytlKyciJyk7aVtlXSgpfX0pfSxpKHMsbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuMC4wIn19LHtrZXk6IkRlZmF1bHQiLGdldDpmdW5jdGlvbigpe3JldHVybiBofX0se2tleToiTkFNRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9fSx7a2V5OiJEQVRBX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSx7a2V5OiJFdmVudCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGR9fSx7a2V5OiJFVkVOVF9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBvfX0se2tleToiRGVmYXVsdFR5cGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBsfX1dKSxzfSgpO3JldHVybiB0LmZuW2VdPVQuX2pRdWVyeUludGVyZmFjZSx0LmZuW2VdLkNvbnN0cnVjdG9yPVQsdC5mbltlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZm5bZV09cyxULl9qUXVlcnlJbnRlcmZhY2V9LFR9KGUpLFB0PWZ1bmN0aW9uKHQpe3ZhciBlPSJwb3BvdmVyIixuPSJicy5wb3BvdmVyIixvPSIuIituLHM9dC5mbltlXSxhPW5ldyBSZWdFeHAoIihefFxccylicy1wb3BvdmVyXFxTKyIsImciKSxsPXIoe30sTHQuRGVmYXVsdCx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPjxkaXYgY2xhc3M9InBvcG92ZXItYm9keSI+PC9kaXY+PC9kaXY+J30pLGM9cih7fSxMdC5EZWZhdWx0VHlwZSx7Y29udGVudDoiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSJ9KSxoPSJmYWRlIixmPSJzaG93Iix1PSIucG9wb3Zlci1oZWFkZXIiLGQ9Ii5wb3BvdmVyLWJvZHkiLHA9e0hJREU6ImhpZGUiK28sSElEREVOOiJoaWRkZW4iK28sU0hPVzoic2hvdyIrbyxTSE9XTjoic2hvd24iK28sSU5TRVJURUQ6Imluc2VydGVkIitvLENMSUNLOiJjbGljayIrbyxGT0NVU0lOOiJmb2N1c2luIitvLEZPQ1VTT1VUOiJmb2N1c291dCIrbyxNT1VTRUVOVEVSOiJtb3VzZWVudGVyIitvLE1PVVNFTEVBVkU6Im1vdXNlbGVhdmUiK299LGc9ZnVuY3Rpb24ocil7dmFyIHMsZztmdW5jdGlvbiBtKCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfWc9ciwocz1tKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSkscy5wcm90b3R5cGUuY29uc3RydWN0b3I9cyxzLl9fcHJvdG9fXz1nO3ZhciBfPW0ucHJvdG90eXBlO3JldHVybiBfLmlzV2l0aENvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLl9nZXRDb250ZW50KCl9LF8uYWRkQXR0YWNobWVudENsYXNzPWZ1bmN0aW9uKGUpe3QodGhpcy5nZXRUaXBFbGVtZW50KCkpLmFkZENsYXNzKCJicy1wb3BvdmVyLSIrZSl9LF8uZ2V0VGlwRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpcD10aGlzLnRpcHx8dCh0aGlzLmNvbmZpZy50ZW1wbGF0ZSlbMF0sdGhpcy50aXB9LF8uc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBlPXQodGhpcy5nZXRUaXBFbGVtZW50KCkpO3RoaXMuc2V0RWxlbWVudENvbnRlbnQoZS5maW5kKHUpLHRoaXMuZ2V0VGl0bGUoKSk7dmFyIG49dGhpcy5fZ2V0Q29udGVudCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuJiYobj1uLmNhbGwodGhpcy5lbGVtZW50KSksdGhpcy5zZXRFbGVtZW50Q29udGVudChlLmZpbmQoZCksbiksZS5yZW1vdmVDbGFzcyhoKyIgIitmKX0sXy5fZ2V0Q29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvbnRlbnQiKXx8dGhpcy5jb25maWcuY29udGVudH0sXy5fY2xlYW5UaXBDbGFzcz1mdW5jdGlvbigpe3ZhciBlPXQodGhpcy5nZXRUaXBFbGVtZW50KCkpLG49ZS5hdHRyKCJjbGFzcyIpLm1hdGNoKGEpO251bGwhPT1uJiZuLmxlbmd0aD4wJiZlLnJlbW92ZUNsYXNzKG4uam9pbigiIikpfSxtLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykuZGF0YShuKSxyPSJvYmplY3QiPT10eXBlb2YgZT9lOm51bGw7aWYoKGl8fCEvZGVzdHJveXxoaWRlLy50ZXN0KGUpKSYmKGl8fChpPW5ldyBtKHRoaXMsciksdCh0aGlzKS5kYXRhKG4saSkpLCJzdHJpbmciPT10eXBlb2YgZSkpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgaVtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO2lbZV0oKX19KX0saShtLG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjAuMCJ9fSx7a2V5OiJEZWZhdWx0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbH19LHtrZXk6Ik5BTUUiLGdldDpmdW5jdGlvbigpe3JldHVybiBlfX0se2tleToiREFUQV9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBufX0se2tleToiRXZlbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiBwfX0se2tleToiRVZFTlRfS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb319LHtrZXk6IkRlZmF1bHRUeXBlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY319XSksbX0oTHQpO3JldHVybiB0LmZuW2VdPWcuX2pRdWVyeUludGVyZmFjZSx0LmZuW2VdLkNvbnN0cnVjdG9yPWcsdC5mbltlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZm5bZV09cyxnLl9qUXVlcnlJbnRlcmZhY2V9LGd9KGUpLHh0PWZ1bmN0aW9uKHQpe3ZhciBlPSJzY3JvbGxzcHkiLG49ImJzLnNjcm9sbHNweSIsbz0iLiIrbixzPXQuZm5bZV0sYT17b2Zmc2V0OjEwLG1ldGhvZDoiYXV0byIsdGFyZ2V0OiIifSxsPXtvZmZzZXQ6Im51bWJlciIsbWV0aG9kOiJzdHJpbmciLHRhcmdldDoiKHN0cmluZ3xlbGVtZW50KSJ9LGM9e0FDVElWQVRFOiJhY3RpdmF0ZSIrbyxTQ1JPTEw6InNjcm9sbCIrbyxMT0FEX0RBVEFfQVBJOiJsb2FkIitvKyIuZGF0YS1hcGkifSxoPSJkcm9wZG93bi1pdGVtIixmPSJhY3RpdmUiLHU9e0RBVEFfU1BZOidbZGF0YS1zcHk9InNjcm9sbCJdJyxBQ1RJVkU6Ii5hY3RpdmUiLE5BVl9MSVNUX0dST1VQOiIubmF2LCAubGlzdC1ncm91cCIsTkFWX0xJTktTOiIubmF2LWxpbmsiLE5BVl9JVEVNUzoiLm5hdi1pdGVtIixMSVNUX0lURU1TOiIubGlzdC1ncm91cC1pdGVtIixEUk9QRE9XTjoiLmRyb3Bkb3duIixEUk9QRE9XTl9JVEVNUzoiLmRyb3Bkb3duLWl0ZW0iLERST1BET1dOX1RPR0dMRToiLmRyb3Bkb3duLXRvZ2dsZSJ9LGQ9Im9mZnNldCIscD0icG9zaXRpb24iLGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGUsbil7dmFyIGk9dGhpczt0aGlzLl9lbGVtZW50PWUsdGhpcy5fc2Nyb2xsRWxlbWVudD0iQk9EWSI9PT1lLnRhZ05hbWU/d2luZG93OmUsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhuKSx0aGlzLl9zZWxlY3Rvcj10aGlzLl9jb25maWcudGFyZ2V0KyIgIit1Lk5BVl9MSU5LUysiLCIrdGhpcy5fY29uZmlnLnRhcmdldCsiICIrdS5MSVNUX0lURU1TKyIsIit0aGlzLl9jb25maWcudGFyZ2V0KyIgIit1LkRST1BET1dOX0lURU1TLHRoaXMuX29mZnNldHM9W10sdGhpcy5fdGFyZ2V0cz1bXSx0aGlzLl9hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLl9zY3JvbGxIZWlnaHQ9MCx0KHRoaXMuX3Njcm9sbEVsZW1lbnQpLm9uKGMuU0NST0xMLGZ1bmN0aW9uKHQpe3JldHVybiBpLl9wcm9jZXNzKHQpfSksdGhpcy5yZWZyZXNoKCksdGhpcy5fcHJvY2VzcygpfXZhciBnPXMucHJvdG90eXBlO3JldHVybiBnLnJlZnJlc2g9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dGhpcy5fc2Nyb2xsRWxlbWVudD09PXRoaXMuX3Njcm9sbEVsZW1lbnQud2luZG93P2Q6cCxpPSJhdXRvIj09PXRoaXMuX2NvbmZpZy5tZXRob2Q/bjp0aGlzLl9jb25maWcubWV0aG9kLHI9aT09PXA/dGhpcy5fZ2V0U2Nyb2xsVG9wKCk6MDt0aGlzLl9vZmZzZXRzPVtdLHRoaXMuX3RhcmdldHM9W10sdGhpcy5fc2Nyb2xsSGVpZ2h0PXRoaXMuX2dldFNjcm9sbEhlaWdodCgpLHQubWFrZUFycmF5KHQodGhpcy5fc2VsZWN0b3IpKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG4sbz1rLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7aWYobyYmKG49dChvKVswXSksbil7dmFyIHM9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihzLndpZHRofHxzLmhlaWdodClyZXR1cm5bdChuKVtpXSgpLnRvcCtyLG9dfXJldHVybiBudWxsfSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0WzBdLWVbMF19KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuX29mZnNldHMucHVzaCh0WzBdKSxlLl90YXJnZXRzLnB1c2godFsxXSl9KX0sZy5kaXNwb3NlPWZ1bmN0aW9uKCl7dC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsbiksdCh0aGlzLl9zY3JvbGxFbGVtZW50KS5vZmYobyksdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuX3Njcm9sbEVsZW1lbnQ9bnVsbCx0aGlzLl9jb25maWc9bnVsbCx0aGlzLl9zZWxlY3Rvcj1udWxsLHRoaXMuX29mZnNldHM9bnVsbCx0aGlzLl90YXJnZXRzPW51bGwsdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5fc2Nyb2xsSGVpZ2h0PW51bGx9LGcuX2dldENvbmZpZz1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mKG49cih7fSxhLG4pKS50YXJnZXQpe3ZhciBpPXQobi50YXJnZXQpLmF0dHIoImlkIik7aXx8KGk9ay5nZXRVSUQoZSksdChuLnRhcmdldCkuYXR0cigiaWQiLGkpKSxuLnRhcmdldD0iIyIraX1yZXR1cm4gay50eXBlQ2hlY2tDb25maWcoZSxuLGwpLG59LGcuX2dldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3RoaXMuX3Njcm9sbEVsZW1lbnQucGFnZVlPZmZzZXQ6dGhpcy5fc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3B9LGcuX2dldFNjcm9sbEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodHx8TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCl9LGcuX2dldE9mZnNldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLl9zY3JvbGxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0sZy5fcHJvY2Vzcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFNjcm9sbFRvcCgpK3RoaXMuX2NvbmZpZy5vZmZzZXQsZT10aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSxuPXRoaXMuX2NvbmZpZy5vZmZzZXQrZS10aGlzLl9nZXRPZmZzZXRIZWlnaHQoKTtpZih0aGlzLl9zY3JvbGxIZWlnaHQhPT1lJiZ0aGlzLnJlZnJlc2goKSx0Pj1uKXt2YXIgaT10aGlzLl90YXJnZXRzW3RoaXMuX3RhcmdldHMubGVuZ3RoLTFdO3RoaXMuX2FjdGl2ZVRhcmdldCE9PWkmJnRoaXMuX2FjdGl2YXRlKGkpfWVsc2V7aWYodGhpcy5fYWN0aXZlVGFyZ2V0JiZ0PHRoaXMuX29mZnNldHNbMF0mJnRoaXMuX29mZnNldHNbMF0+MClyZXR1cm4gdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdm9pZCB0aGlzLl9jbGVhcigpO2Zvcih2YXIgcj10aGlzLl9vZmZzZXRzLmxlbmd0aDtyLS07KXt0aGlzLl9hY3RpdmVUYXJnZXQhPT10aGlzLl90YXJnZXRzW3JdJiZ0Pj10aGlzLl9vZmZzZXRzW3JdJiYoInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLl9vZmZzZXRzW3IrMV18fHQ8dGhpcy5fb2Zmc2V0c1tyKzFdKSYmdGhpcy5fYWN0aXZhdGUodGhpcy5fdGFyZ2V0c1tyXSl9fX0sZy5fYWN0aXZhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fYWN0aXZlVGFyZ2V0PWUsdGhpcy5fY2xlYXIoKTt2YXIgbj10aGlzLl9zZWxlY3Rvci5zcGxpdCgiLCIpO249bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQrJ1tkYXRhLXRhcmdldD0iJytlKyciXSwnK3QrJ1tocmVmPSInK2UrJyJdJ30pO3ZhciBpPXQobi5qb2luKCIsIikpO2kuaGFzQ2xhc3MoaCk/KGkuY2xvc2VzdCh1LkRST1BET1dOKS5maW5kKHUuRFJPUERPV05fVE9HR0xFKS5hZGRDbGFzcyhmKSxpLmFkZENsYXNzKGYpKTooaS5hZGRDbGFzcyhmKSxpLnBhcmVudHModS5OQVZfTElTVF9HUk9VUCkucHJldih1Lk5BVl9MSU5LUysiLCAiK3UuTElTVF9JVEVNUykuYWRkQ2xhc3MoZiksaS5wYXJlbnRzKHUuTkFWX0xJU1RfR1JPVVApLnByZXYodS5OQVZfSVRFTVMpLmNoaWxkcmVuKHUuTkFWX0xJTktTKS5hZGRDbGFzcyhmKSksdCh0aGlzLl9zY3JvbGxFbGVtZW50KS50cmlnZ2VyKGMuQUNUSVZBVEUse3JlbGF0ZWRUYXJnZXQ6ZX0pfSxnLl9jbGVhcj1mdW5jdGlvbigpe3QodGhpcy5fc2VsZWN0b3IpLmZpbHRlcih1LkFDVElWRSkucmVtb3ZlQ2xhc3MoZil9LHMuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKS5kYXRhKG4pO2lmKGl8fChpPW5ldyBzKHRoaXMsIm9iamVjdCI9PXR5cGVvZiBlJiZlKSx0KHRoaXMpLmRhdGEobixpKSksInN0cmluZyI9PXR5cGVvZiBlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGlbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtpW2VdKCl9fSl9LGkocyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC4wLjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fV0pLHN9KCk7cmV0dXJuIHQod2luZG93KS5vbihjLkxPQURfREFUQV9BUEksZnVuY3Rpb24oKXtmb3IodmFyIGU9dC5tYWtlQXJyYXkodCh1LkRBVEFfU1BZKSksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT10KGVbbl0pO2cuX2pRdWVyeUludGVyZmFjZS5jYWxsKGksaS5kYXRhKCkpfX0pLHQuZm5bZV09Zy5falF1ZXJ5SW50ZXJmYWNlLHQuZm5bZV0uQ29uc3RydWN0b3I9Zyx0LmZuW2VdLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdC5mbltlXT1zLGcuX2pRdWVyeUludGVyZmFjZX0sZ30oZSksUnQ9ZnVuY3Rpb24odCl7dmFyIGU9Ii5icy50YWIiLG49dC5mbi50YWIscj17SElERToiaGlkZSIrZSxISURERU46ImhpZGRlbiIrZSxTSE9XOiJzaG93IitlLFNIT1dOOiJzaG93biIrZSxDTElDS19EQVRBX0FQSToiY2xpY2suYnMudGFiLmRhdGEtYXBpIn0sbz0iZHJvcGRvd24tbWVudSIscz0iYWN0aXZlIixhPSJkaXNhYmxlZCIsbD0iZmFkZSIsYz0ic2hvdyIsaD0iLmRyb3Bkb3duIixmPSIubmF2LCAubGlzdC1ncm91cCIsdT0iLmFjdGl2ZSIsZD0iPiBsaSA+IC5hY3RpdmUiLHA9J1tkYXRhLXRvZ2dsZT0idGFiIl0sIFtkYXRhLXRvZ2dsZT0icGlsbCJdLCBbZGF0YS10b2dnbGU9Imxpc3QiXScsZz0iLmRyb3Bkb3duLXRvZ2dsZSIsbT0iPiAuZHJvcGRvd24tbWVudSAuYWN0aXZlIixfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt0aGlzLl9lbGVtZW50PXR9dmFyIG49ZS5wcm90b3R5cGU7cmV0dXJuIG4uc2hvdz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoISh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKHMpfHx0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKGEpKSl7dmFyIG4saSxvPXQodGhpcy5fZWxlbWVudCkuY2xvc2VzdChmKVswXSxsPWsuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtpZihvKXt2YXIgYz0iVUwiPT09by5ub2RlTmFtZT9kOnU7aT0oaT10Lm1ha2VBcnJheSh0KG8pLmZpbmQoYykpKVtpLmxlbmd0aC0xXX12YXIgaD10LkV2ZW50KHIuSElERSx7cmVsYXRlZFRhcmdldDp0aGlzLl9lbGVtZW50fSkscD10LkV2ZW50KHIuU0hPVyx7cmVsYXRlZFRhcmdldDppfSk7aWYoaSYmdChpKS50cmlnZ2VyKGgpLHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihwKSwhcC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIWguaXNEZWZhdWx0UHJldmVudGVkKCkpe2wmJihuPXQobClbMF0pLHRoaXMuX2FjdGl2YXRlKHRoaXMuX2VsZW1lbnQsbyk7dmFyIGc9ZnVuY3Rpb24oKXt2YXIgbj10LkV2ZW50KHIuSElEREVOLHtyZWxhdGVkVGFyZ2V0OmUuX2VsZW1lbnR9KSxvPXQuRXZlbnQoci5TSE9XTix7cmVsYXRlZFRhcmdldDppfSk7dChpKS50cmlnZ2VyKG4pLHQoZS5fZWxlbWVudCkudHJpZ2dlcihvKX07bj90aGlzLl9hY3RpdmF0ZShuLG4ucGFyZW50Tm9kZSxnKTpnKCl9fX0sbi5kaXNwb3NlPWZ1bmN0aW9uKCl7dC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsImJzLnRhYiIpLHRoaXMuX2VsZW1lbnQ9bnVsbH0sbi5fYWN0aXZhdGU9ZnVuY3Rpb24oZSxuLGkpe3ZhciByPXRoaXMsbz0oIlVMIj09PW4ubm9kZU5hbWU/dChuKS5maW5kKGQpOnQobikuY2hpbGRyZW4odSkpWzBdLHM9aSYmay5zdXBwb3J0c1RyYW5zaXRpb25FbmQoKSYmbyYmdChvKS5oYXNDbGFzcyhsKSxhPWZ1bmN0aW9uKCl7cmV0dXJuIHIuX3RyYW5zaXRpb25Db21wbGV0ZShlLG8saSl9O28mJnM/dChvKS5vbmUoay5UUkFOU0lUSU9OX0VORCxhKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCgxNTApOmEoKX0sbi5fdHJhbnNpdGlvbkNvbXBsZXRlPWZ1bmN0aW9uKGUsbixpKXtpZihuKXt0KG4pLnJlbW92ZUNsYXNzKGMrIiAiK3MpO3ZhciByPXQobi5wYXJlbnROb2RlKS5maW5kKG0pWzBdO3ImJnQocikucmVtb3ZlQ2xhc3MocyksInRhYiI9PT1uLmdldEF0dHJpYnV0ZSgicm9sZSIpJiZuLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsITEpfWlmKHQoZSkuYWRkQ2xhc3MocyksInRhYiI9PT1lLmdldEF0dHJpYnV0ZSgicm9sZSIpJiZlLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsITApLGsucmVmbG93KGUpLHQoZSkuYWRkQ2xhc3MoYyksZS5wYXJlbnROb2RlJiZ0KGUucGFyZW50Tm9kZSkuaGFzQ2xhc3Mobykpe3ZhciBhPXQoZSkuY2xvc2VzdChoKVswXTthJiZ0KGEpLmZpbmQoZykuYWRkQ2xhc3MocyksZS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCEwKX1pJiZpKCl9LGUuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKSxyPWkuZGF0YSgiYnMudGFiIik7aWYocnx8KHI9bmV3IGUodGhpcyksaS5kYXRhKCJicy50YWIiLHIpKSwic3RyaW5nIj09dHlwZW9mIG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgcltuXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrbisnIicpO3Jbbl0oKX19KX0saShlLG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjAuMCJ9fV0pLGV9KCk7cmV0dXJuIHQoZG9jdW1lbnQpLm9uKHIuQ0xJQ0tfREFUQV9BUEkscCxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksXy5falF1ZXJ5SW50ZXJmYWNlLmNhbGwodCh0aGlzKSwic2hvdyIpfSksdC5mbi50YWI9Xy5falF1ZXJ5SW50ZXJmYWNlLHQuZm4udGFiLkNvbnN0cnVjdG9yPV8sdC5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB0LmZuLnRhYj1uLF8uX2pRdWVyeUludGVyZmFjZX0sX30oZSk7IWZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGpRdWVyeS4galF1ZXJ5IG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIEJvb3RzdHJhcCdzIEphdmFTY3JpcHQuIik7dmFyIGU9dC5mbi5qcXVlcnkuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpO2lmKGVbMF08MiYmZVsxXTw5fHwxPT09ZVswXSYmOT09PWVbMV0mJmVbMl08MXx8ZVswXT49NCl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgYXQgbGVhc3QgalF1ZXJ5IHYxLjkuMSBidXQgbGVzcyB0aGFuIHY0LjAuMCIpfShlKSx0LlV0aWw9ayx0LkFsZXJ0PUwsdC5CdXR0b249UCx0LkNhcm91c2VsPXgsdC5Db2xsYXBzZT1SLHQuRHJvcGRvd249TnQsdC5Nb2RhbD1rdCx0LlBvcG92ZXI9UHQsdC5TY3JvbGxzcHk9eHQsdC5UYWI9UnQsdC5Ub29sdGlwPUx0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1ib290c3RyYXAuYnVuZGxlLm1pbi5qcy5tYXA=\"") - packr.PackJSONBytes("./assets", "bootstrap.min.css", "\"LyohCiAqIEJvb3RzdHJhcCB2NC4wLjAgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbSkKICogQ29weXJpZ2h0IDIwMTEtMjAxOCBUaGUgQm9vdHN0cmFwIEF1dGhvcnMKICogQ29weXJpZ2h0IDIwMTEtMjAxOCBUd2l0dGVyLCBJbmMuCiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpCiAqLzpyb290ey0tYmx1ZTojMDA3YmZmOy0taW5kaWdvOiM2NjEwZjI7LS1wdXJwbGU6IzZmNDJjMTstLXBpbms6I2U4M2U4YzstLXJlZDojZGMzNTQ1Oy0tb3JhbmdlOiNmZDdlMTQ7LS15ZWxsb3c6I2ZmYzEwNzstLWdyZWVuOiMyOGE3NDU7LS10ZWFsOiMyMGM5OTc7LS1jeWFuOiMxN2EyYjg7LS13aGl0ZTojZmZmOy0tZ3JheTojNmM3NTdkOy0tZ3JheS1kYXJrOiMzNDNhNDA7LS1wcmltYXJ5OiMwMDdiZmY7LS1zZWNvbmRhcnk6IzZjNzU3ZDstLXN1Y2Nlc3M6IzI4YTc0NTstLWluZm86IzE3YTJiODstLXdhcm5pbmc6I2ZmYzEwNzstLWRhbmdlcjojZGMzNTQ1Oy0tbGlnaHQ6I2Y4ZjlmYTstLWRhcms6IzM0M2E0MDstLWJyZWFrcG9pbnQteHM6MDstLWJyZWFrcG9pbnQtc206NTc2cHg7LS1icmVha3BvaW50LW1kOjc2OHB4Oy0tYnJlYWtwb2ludC1sZzo5OTJweDstLWJyZWFrcG9pbnQteGw6MTIwMHB4Oy0tZm9udC1mYW1pbHktc2Fucy1zZXJpZjotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90bywiSGVsdmV0aWNhIE5ldWUiLEFyaWFsLHNhbnMtc2VyaWYsIkFwcGxlIENvbG9yIEVtb2ppIiwiU2Vnb2UgVUkgRW1vamkiLCJTZWdvZSBVSSBTeW1ib2wiOy0tZm9udC1mYW1pbHktbW9ub3NwYWNlOlNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcywiTGliZXJhdGlvbiBNb25vIiwiQ291cmllciBOZXciLG1vbm9zcGFjZX0qLDo6YWZ0ZXIsOjpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWx7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjE1Oy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOy1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9QC1tcy12aWV3cG9ydHt3aWR0aDpkZXZpY2Utd2lkdGh9YXJ0aWNsZSxhc2lkZSxkaWFsb2csZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWFpbixuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWJvZHl7bWFyZ2luOjA7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sIkhlbHZldGljYSBOZXVlIixBcmlhbCxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOiMyMTI1Mjk7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQtY29sb3I6I2ZmZn1bdGFiaW5kZXg9Ii0xIl06Zm9jdXN7b3V0bGluZTowIWltcG9ydGFudH1ocntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO292ZXJmbG93OnZpc2libGV9aDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206LjVyZW19cHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxcmVtfWFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0sYWJiclt0aXRsZV17dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO2N1cnNvcjpoZWxwO2JvcmRlci1ib3R0b206MH1hZGRyZXNze21hcmdpbi1ib3R0b206MXJlbTtmb250LXN0eWxlOm5vcm1hbDtsaW5lLWhlaWdodDppbmhlcml0fWRsLG9sLHVse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjFyZW19b2wgb2wsb2wgdWwsdWwgb2wsdWwgdWx7bWFyZ2luLWJvdHRvbTowfWR0e2ZvbnQtd2VpZ2h0OjcwMH1kZHttYXJnaW4tYm90dG9tOi41cmVtO21hcmdpbi1sZWZ0OjB9YmxvY2txdW90ZXttYXJnaW46MCAwIDFyZW19ZGZue2ZvbnQtc3R5bGU6aXRhbGljfWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGRlcn1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1Yntib3R0b206LS4yNWVtfXN1cHt0b3A6LS41ZW19YXtjb2xvcjojMDA3YmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDpvYmplY3RzfWE6aG92ZXJ7Y29sb3I6IzAwNTZiMzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9YTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMsYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXJ7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX1hOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1c3tvdXRsaW5lOjB9Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZTtmb250LXNpemU6MWVtfXByZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxcmVtO292ZXJmbG93OmF1dG87LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcn1maWd1cmV7bWFyZ2luOjAgMCAxcmVtfWltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyLXN0eWxlOm5vbmV9c3ZnOm5vdCg6cm9vdCl7b3ZlcmZsb3c6aGlkZGVufXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX1jYXB0aW9ue3BhZGRpbmctdG9wOi43NXJlbTtwYWRkaW5nLWJvdHRvbTouNzVyZW07Y29sb3I6IzZjNzU3ZDt0ZXh0LWFsaWduOmxlZnQ7Y2FwdGlvbi1zaWRlOmJvdHRvbX10aHt0ZXh0LWFsaWduOmluaGVyaXR9bGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTouNXJlbX1idXR0b257Ym9yZGVyLXJhZGl1czowfWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjFweCBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3J9YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXttYXJnaW46MDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXR9YnV0dG9uLGlucHV0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfVt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdLGJ1dHRvbixodG1sIFt0eXBlPWJ1dHRvbl17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1bdHlwZT1idXR0b25dOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPXJlc2V0XTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1zdWJtaXRdOjotbW96LWZvY3VzLWlubmVyLGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyLXN0eWxlOm5vbmV9aW5wdXRbdHlwZT1jaGVja2JveF0saW5wdXRbdHlwZT1yYWRpb117Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH1pbnB1dFt0eXBlPWRhdGVdLGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLGlucHV0W3R5cGU9bW9udGhdLGlucHV0W3R5cGU9dGltZV17LXdlYmtpdC1hcHBlYXJhbmNlOmxpc3Rib3h9dGV4dGFyZWF7b3ZlcmZsb3c6YXV0bztyZXNpemU6dmVydGljYWx9ZmllbGRzZXR7bWluLXdpZHRoOjA7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowfWxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbi1ib3R0b206LjVyZW07Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7d2hpdGUtc3BhY2U6bm9ybWFsfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfVt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sW3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hde291dGxpbmUtb2Zmc2V0Oi0ycHg7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257Zm9udDppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b259b3V0cHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfXN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW07Y3Vyc29yOnBvaW50ZXJ9dGVtcGxhdGV7ZGlzcGxheTpub25lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmgxLC5oMiwuaDMsLmg0LC5oNSwuaDYsaDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luLWJvdHRvbTouNXJlbTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjI7Y29sb3I6aW5oZXJpdH0uaDEsaDF7Zm9udC1zaXplOjIuNXJlbX0uaDIsaDJ7Zm9udC1zaXplOjJyZW19LmgzLGgze2ZvbnQtc2l6ZToxLjc1cmVtfS5oNCxoNHtmb250LXNpemU6MS41cmVtfS5oNSxoNXtmb250LXNpemU6MS4yNXJlbX0uaDYsaDZ7Zm9udC1zaXplOjFyZW19LmxlYWR7Zm9udC1zaXplOjEuMjVyZW07Zm9udC13ZWlnaHQ6MzAwfS5kaXNwbGF5LTF7Zm9udC1zaXplOjZyZW07Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn0uZGlzcGxheS0ye2ZvbnQtc2l6ZTo1LjVyZW07Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn0uZGlzcGxheS0ze2ZvbnQtc2l6ZTo0LjVyZW07Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn0uZGlzcGxheS00e2ZvbnQtc2l6ZTozLjVyZW07Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1ocnttYXJnaW4tdG9wOjFyZW07bWFyZ2luLWJvdHRvbToxcmVtO2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfS5zbWFsbCxzbWFsbHtmb250LXNpemU6ODAlO2ZvbnQtd2VpZ2h0OjQwMH0ubWFyayxtYXJre3BhZGRpbmc6LjJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9Lmxpc3QtdW5zdHlsZWR7cGFkZGluZy1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfS5saXN0LWlubGluZXtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5lLWl0ZW17ZGlzcGxheTppbmxpbmUtYmxvY2t9Lmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6LjVyZW19LmluaXRpYWxpc217Zm9udC1zaXplOjkwJTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmJsb2NrcXVvdGV7bWFyZ2luLWJvdHRvbToxcmVtO2ZvbnQtc2l6ZToxLjI1cmVtfS5ibG9ja3F1b3RlLWZvb3RlcntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTo4MCU7Y29sb3I6IzZjNzU3ZH0uYmxvY2txdW90ZS1mb290ZXI6OmJlZm9yZXtjb250ZW50OiJcMjAxNCBcMDBBMCJ9LmltZy1mbHVpZHttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uaW1nLXRodW1ibmFpbHtwYWRkaW5nOi4yNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGVlMmU2O2JvcmRlci1yYWRpdXM6LjI1cmVtO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfS5maWd1cmV7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZpZ3VyZS1pbWd7bWFyZ2luLWJvdHRvbTouNXJlbTtsaW5lLWhlaWdodDoxfS5maWd1cmUtY2FwdGlvbntmb250LXNpemU6OTAlO2NvbG9yOiM2Yzc1N2R9Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6U0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlfWNvZGV7Zm9udC1zaXplOjg3LjUlO2NvbG9yOiNlODNlOGM7d29yZC1icmVhazpicmVhay13b3JkfWE+Y29kZXtjb2xvcjppbmhlcml0fWtiZHtwYWRkaW5nOi4ycmVtIC40cmVtO2ZvbnQtc2l6ZTo4Ny41JTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzIxMjUyOTtib3JkZXItcmFkaXVzOi4ycmVtfWtiZCBrYmR7cGFkZGluZzowO2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OjcwMH1wcmV7ZGlzcGxheTpibG9jaztmb250LXNpemU6ODcuNSU7Y29sb3I6IzIxMjUyOX1wcmUgY29kZXtmb250LXNpemU6aW5oZXJpdDtjb2xvcjppbmhlcml0O3dvcmQtYnJlYWs6bm9ybWFsfS5wcmUtc2Nyb2xsYWJsZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXk6c2Nyb2xsfS5jb250YWluZXJ7d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHg7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b31AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NTQwcHh9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY29udGFpbmVye21heC13aWR0aDo3MjBweH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjk2MHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjExNDBweH19LmNvbnRhaW5lci1mbHVpZHt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfS5yb3d7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4fS5uby1ndXR0ZXJze21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9Lm5vLWd1dHRlcnM+LmNvbCwubm8tZ3V0dGVycz5bY2xhc3MqPWNvbC1de3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH0uY29sLC5jb2wtMSwuY29sLTEwLC5jb2wtMTEsLmNvbC0xMiwuY29sLTIsLmNvbC0zLC5jb2wtNCwuY29sLTUsLmNvbC02LC5jb2wtNywuY29sLTgsLmNvbC05LC5jb2wtYXV0bywuY29sLWxnLC5jb2wtbGctMSwuY29sLWxnLTEwLC5jb2wtbGctMTEsLmNvbC1sZy0xMiwuY29sLWxnLTIsLmNvbC1sZy0zLC5jb2wtbGctNCwuY29sLWxnLTUsLmNvbC1sZy02LC5jb2wtbGctNywuY29sLWxnLTgsLmNvbC1sZy05LC5jb2wtbGctYXV0bywuY29sLW1kLC5jb2wtbWQtMSwuY29sLW1kLTEwLC5jb2wtbWQtMTEsLmNvbC1tZC0xMiwuY29sLW1kLTIsLmNvbC1tZC0zLC5jb2wtbWQtNCwuY29sLW1kLTUsLmNvbC1tZC02LC5jb2wtbWQtNywuY29sLW1kLTgsLmNvbC1tZC05LC5jb2wtbWQtYXV0bywuY29sLXNtLC5jb2wtc20tMSwuY29sLXNtLTEwLC5jb2wtc20tMTEsLmNvbC1zbS0xMiwuY29sLXNtLTIsLmNvbC1zbS0zLC5jb2wtc20tNCwuY29sLXNtLTUsLmNvbC1zbS02LC5jb2wtc20tNywuY29sLXNtLTgsLmNvbC1zbS05LC5jb2wtc20tYXV0bywuY29sLXhsLC5jb2wteGwtMSwuY29sLXhsLTEwLC5jb2wteGwtMTEsLmNvbC14bC0xMiwuY29sLXhsLTIsLmNvbC14bC0zLC5jb2wteGwtNCwuY29sLXhsLTUsLmNvbC14bC02LC5jb2wteGwtNywuY29sLXhsLTgsLmNvbC14bC05LC5jb2wteGwtYXV0b3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MXB4O3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweH0uY29sey1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jb2wtYXV0b3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jb2wtMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDguMzMzMzMzJTtmbGV4OjAgMCA4LjMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzJX0uY29sLTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxNi42NjY2NjclO2ZsZXg6MCAwIDE2LjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NyV9LmNvbC0zey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMjUlO2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jb2wtNHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDMzLjMzMzMzMyU7ZmxleDowIDAgMzMuMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzJX0uY29sLTV7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA0MS42NjY2NjclO2ZsZXg6MCAwIDQxLjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NyV9LmNvbC02ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTAlO2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wtN3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDU4LjMzMzMzMyU7ZmxleDowIDAgNTguMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzJX0uY29sLTh7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA2Ni42NjY2NjclO2ZsZXg6MCAwIDY2LjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NyV9LmNvbC05ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNzUlO2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jb2wtMTB7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4My4zMzMzMzMlO2ZsZXg6MCAwIDgzLjMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMyV9LmNvbC0xMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDkxLjY2NjY2NyU7ZmxleDowIDAgOTEuNjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY3JX0uY29sLTEyey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTAwJTtmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci1maXJzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjA7LW1zLWZsZXgtb3JkZXI6LTE7b3JkZXI6LTF9Lm9yZGVyLWxhc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxNDstbXMtZmxleC1vcmRlcjoxMztvcmRlcjoxM30ub3JkZXItMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci0xey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MjstbXMtZmxleC1vcmRlcjoxO29yZGVyOjF9Lm9yZGVyLTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXItM3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci00ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NTstbXMtZmxleC1vcmRlcjo0O29yZGVyOjR9Lm9yZGVyLTV7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXItNnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci03ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6ODstbXMtZmxleC1vcmRlcjo3O29yZGVyOjd9Lm9yZGVyLTh7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXItOXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwOy1tcy1mbGV4LW9yZGVyOjk7b3JkZXI6OX0ub3JkZXItMTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMTstbXMtZmxleC1vcmRlcjoxMDtvcmRlcjoxMH0ub3JkZXItMTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMjstbXMtZmxleC1vcmRlcjoxMTtvcmRlcjoxMX0ub3JkZXItMTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMzstbXMtZmxleC1vcmRlcjoxMjtvcmRlcjoxMn0ub2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMlfS5vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjclfS5vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMyV9Lm9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NyV9Lm9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzJX0ub2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY3JX0ub2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzJX0ub2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NyV9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jb2wtc217LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6MDtmbGV4LWJhc2lzOjA7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4LXBvc2l0aXZlOjE7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNvbC1zbS1hdXRvey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgYXV0bztmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNvbC1zbS0xey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgOC4zMzMzMzMlO2ZsZXg6MCAwIDguMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMlfS5jb2wtc20tMnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDE2LjY2NjY2NyU7ZmxleDowIDAgMTYuNjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY3JX0uY29sLXNtLTN7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAyNSU7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNvbC1zbS00ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMzMuMzMzMzMzJTtmbGV4OjAgMCAzMy4zMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMlfS5jb2wtc20tNXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDQxLjY2NjY2NyU7ZmxleDowIDAgNDEuNjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY3JX0uY29sLXNtLTZ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA1MCU7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNvbC1zbS03ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTguMzMzMzMzJTtmbGV4OjAgMCA1OC4zMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMlfS5jb2wtc20tOHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDY2LjY2NjY2NyU7ZmxleDowIDAgNjYuNjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY3JX0uY29sLXNtLTl7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA3NSU7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNvbC1zbS0xMHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDgzLjMzMzMzMyU7ZmxleDowIDAgODMuMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzJX0uY29sLXNtLTExey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgOTEuNjY2NjY3JTtmbGV4OjAgMCA5MS42NjY2NjclO21heC13aWR0aDo5MS42NjY2NjclfS5jb2wtc20tMTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxMDAlO2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9Lm9yZGVyLXNtLWZpcnN0ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MDstbXMtZmxleC1vcmRlcjotMTtvcmRlcjotMX0ub3JkZXItc20tbGFzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE0Oy1tcy1mbGV4LW9yZGVyOjEzO29yZGVyOjEzfS5vcmRlci1zbS0wey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTstbXMtZmxleC1vcmRlcjowO29yZGVyOjB9Lm9yZGVyLXNtLTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoyOy1tcy1mbGV4LW9yZGVyOjE7b3JkZXI6MX0ub3JkZXItc20tMnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjM7LW1zLWZsZXgtb3JkZXI6MjtvcmRlcjoyfS5vcmRlci1zbS0zey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NDstbXMtZmxleC1vcmRlcjozO29yZGVyOjN9Lm9yZGVyLXNtLTR7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo1Oy1tcy1mbGV4LW9yZGVyOjQ7b3JkZXI6NH0ub3JkZXItc20tNXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjY7LW1zLWZsZXgtb3JkZXI6NTtvcmRlcjo1fS5vcmRlci1zbS02ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NzstbXMtZmxleC1vcmRlcjo2O29yZGVyOjZ9Lm9yZGVyLXNtLTd7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo4Oy1tcy1mbGV4LW9yZGVyOjc7b3JkZXI6N30ub3JkZXItc20tOHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjk7LW1zLWZsZXgtb3JkZXI6ODtvcmRlcjo4fS5vcmRlci1zbS05ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTA7LW1zLWZsZXgtb3JkZXI6OTtvcmRlcjo5fS5vcmRlci1zbS0xMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjExOy1tcy1mbGV4LW9yZGVyOjEwO29yZGVyOjEwfS5vcmRlci1zbS0xMXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEyOy1tcy1mbGV4LW9yZGVyOjExO29yZGVyOjExfS5vcmRlci1zbS0xMnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEzOy1tcy1mbGV4LW9yZGVyOjEyO29yZGVyOjEyfS5vZmZzZXQtc20tMHttYXJnaW4tbGVmdDowfS5vZmZzZXQtc20tMXttYXJnaW4tbGVmdDo4LjMzMzMzMyV9Lm9mZnNldC1zbS0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NyV9Lm9mZnNldC1zbS0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXNtLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzJX0ub2Zmc2V0LXNtLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY3JX0ub2Zmc2V0LXNtLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQtc20tN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMlfS5vZmZzZXQtc20tOHttYXJnaW4tbGVmdDo2Ni42NjY2NjclfS5vZmZzZXQtc20tOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC1zbS0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMlfS5vZmZzZXQtc20tMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb2wtbWR7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6MDtmbGV4LWJhc2lzOjA7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4LXBvc2l0aXZlOjE7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNvbC1tZC1hdXRvey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgYXV0bztmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNvbC1tZC0xey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgOC4zMzMzMzMlO2ZsZXg6MCAwIDguMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMlfS5jb2wtbWQtMnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDE2LjY2NjY2NyU7ZmxleDowIDAgMTYuNjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY3JX0uY29sLW1kLTN7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAyNSU7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNvbC1tZC00ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMzMuMzMzMzMzJTtmbGV4OjAgMCAzMy4zMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMlfS5jb2wtbWQtNXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDQxLjY2NjY2NyU7ZmxleDowIDAgNDEuNjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY3JX0uY29sLW1kLTZ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA1MCU7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNvbC1tZC03ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTguMzMzMzMzJTtmbGV4OjAgMCA1OC4zMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMlfS5jb2wtbWQtOHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDY2LjY2NjY2NyU7ZmxleDowIDAgNjYuNjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY3JX0uY29sLW1kLTl7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA3NSU7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNvbC1tZC0xMHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDgzLjMzMzMzMyU7ZmxleDowIDAgODMuMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzJX0uY29sLW1kLTExey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgOTEuNjY2NjY3JTtmbGV4OjAgMCA5MS42NjY2NjclO21heC13aWR0aDo5MS42NjY2NjclfS5jb2wtbWQtMTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxMDAlO2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9Lm9yZGVyLW1kLWZpcnN0ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MDstbXMtZmxleC1vcmRlcjotMTtvcmRlcjotMX0ub3JkZXItbWQtbGFzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE0Oy1tcy1mbGV4LW9yZGVyOjEzO29yZGVyOjEzfS5vcmRlci1tZC0wey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTstbXMtZmxleC1vcmRlcjowO29yZGVyOjB9Lm9yZGVyLW1kLTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoyOy1tcy1mbGV4LW9yZGVyOjE7b3JkZXI6MX0ub3JkZXItbWQtMnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjM7LW1zLWZsZXgtb3JkZXI6MjtvcmRlcjoyfS5vcmRlci1tZC0zey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NDstbXMtZmxleC1vcmRlcjozO29yZGVyOjN9Lm9yZGVyLW1kLTR7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo1Oy1tcy1mbGV4LW9yZGVyOjQ7b3JkZXI6NH0ub3JkZXItbWQtNXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjY7LW1zLWZsZXgtb3JkZXI6NTtvcmRlcjo1fS5vcmRlci1tZC02ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NzstbXMtZmxleC1vcmRlcjo2O29yZGVyOjZ9Lm9yZGVyLW1kLTd7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo4Oy1tcy1mbGV4LW9yZGVyOjc7b3JkZXI6N30ub3JkZXItbWQtOHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjk7LW1zLWZsZXgtb3JkZXI6ODtvcmRlcjo4fS5vcmRlci1tZC05ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTA7LW1zLWZsZXgtb3JkZXI6OTtvcmRlcjo5fS5vcmRlci1tZC0xMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjExOy1tcy1mbGV4LW9yZGVyOjEwO29yZGVyOjEwfS5vcmRlci1tZC0xMXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEyOy1tcy1mbGV4LW9yZGVyOjExO29yZGVyOjExfS5vcmRlci1tZC0xMnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEzOy1tcy1mbGV4LW9yZGVyOjEyO29yZGVyOjEyfS5vZmZzZXQtbWQtMHttYXJnaW4tbGVmdDowfS5vZmZzZXQtbWQtMXttYXJnaW4tbGVmdDo4LjMzMzMzMyV9Lm9mZnNldC1tZC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NyV9Lm9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzJX0ub2Zmc2V0LW1kLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY3JX0ub2Zmc2V0LW1kLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQtbWQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMlfS5vZmZzZXQtbWQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjclfS5vZmZzZXQtbWQtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC1tZC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMlfS5vZmZzZXQtbWQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jb2wtbGd7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6MDtmbGV4LWJhc2lzOjA7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4LXBvc2l0aXZlOjE7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNvbC1sZy1hdXRvey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgYXV0bztmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNvbC1sZy0xey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgOC4zMzMzMzMlO2ZsZXg6MCAwIDguMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMlfS5jb2wtbGctMnstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDE2LjY2NjY2NyU7ZmxleDowIDAgMTYuNjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY3JX0uY29sLWxnLTN7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAyNSU7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNvbC1sZy00ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMzMuMzMzMzMzJTtmbGV4OjAgMCAzMy4zMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMlfS5jb2wtbGctNXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDQxLjY2NjY2NyU7ZmxleDowIDAgNDEuNjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY3JX0uY29sLWxnLTZ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA1MCU7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNvbC1sZy03ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTguMzMzMzMzJTtmbGV4OjAgMCA1OC4zMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMlfS5jb2wtbGctOHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDY2LjY2NjY2NyU7ZmxleDowIDAgNjYuNjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY3JX0uY29sLWxnLTl7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA3NSU7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNvbC1sZy0xMHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDgzLjMzMzMzMyU7ZmxleDowIDAgODMuMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzJX0uY29sLWxnLTExey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgOTEuNjY2NjY3JTtmbGV4OjAgMCA5MS42NjY2NjclO21heC13aWR0aDo5MS42NjY2NjclfS5jb2wtbGctMTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxMDAlO2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9Lm9yZGVyLWxnLWZpcnN0ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MDstbXMtZmxleC1vcmRlcjotMTtvcmRlcjotMX0ub3JkZXItbGctbGFzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE0Oy1tcy1mbGV4LW9yZGVyOjEzO29yZGVyOjEzfS5vcmRlci1sZy0wey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTstbXMtZmxleC1vcmRlcjowO29yZGVyOjB9Lm9yZGVyLWxnLTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoyOy1tcy1mbGV4LW9yZGVyOjE7b3JkZXI6MX0ub3JkZXItbGctMnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjM7LW1zLWZsZXgtb3JkZXI6MjtvcmRlcjoyfS5vcmRlci1sZy0zey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NDstbXMtZmxleC1vcmRlcjozO29yZGVyOjN9Lm9yZGVyLWxnLTR7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo1Oy1tcy1mbGV4LW9yZGVyOjQ7b3JkZXI6NH0ub3JkZXItbGctNXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjY7LW1zLWZsZXgtb3JkZXI6NTtvcmRlcjo1fS5vcmRlci1sZy02ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NzstbXMtZmxleC1vcmRlcjo2O29yZGVyOjZ9Lm9yZGVyLWxnLTd7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo4Oy1tcy1mbGV4LW9yZGVyOjc7b3JkZXI6N30ub3JkZXItbGctOHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjk7LW1zLWZsZXgtb3JkZXI6ODtvcmRlcjo4fS5vcmRlci1sZy05ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MTA7LW1zLWZsZXgtb3JkZXI6OTtvcmRlcjo5fS5vcmRlci1sZy0xMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjExOy1tcy1mbGV4LW9yZGVyOjEwO29yZGVyOjEwfS5vcmRlci1sZy0xMXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEyOy1tcy1mbGV4LW9yZGVyOjExO29yZGVyOjExfS5vcmRlci1sZy0xMnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEzOy1tcy1mbGV4LW9yZGVyOjEyO29yZGVyOjEyfS5vZmZzZXQtbGctMHttYXJnaW4tbGVmdDowfS5vZmZzZXQtbGctMXttYXJnaW4tbGVmdDo4LjMzMzMzMyV9Lm9mZnNldC1sZy0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NyV9Lm9mZnNldC1sZy0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzJX0ub2Zmc2V0LWxnLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY3JX0ub2Zmc2V0LWxnLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQtbGctN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMlfS5vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NjclfS5vZmZzZXQtbGctOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC1sZy0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMlfS5vZmZzZXQtbGctMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY29sLXhsey1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jb2wteGwtYXV0b3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jb2wteGwtMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDguMzMzMzMzJTtmbGV4OjAgMCA4LjMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzJX0uY29sLXhsLTJ7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCAxNi42NjY2NjclO2ZsZXg6MCAwIDE2LjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NyV9LmNvbC14bC0zey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMjUlO2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jb2wteGwtNHstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDMzLjMzMzMzMyU7ZmxleDowIDAgMzMuMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzJX0uY29sLXhsLTV7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA0MS42NjY2NjclO2ZsZXg6MCAwIDQxLjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NyV9LmNvbC14bC02ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNTAlO2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wteGwtN3std2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDU4LjMzMzMzMyU7ZmxleDowIDAgNTguMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzJX0uY29sLXhsLTh7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA2Ni42NjY2NjclO2ZsZXg6MCAwIDY2LjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NyV9LmNvbC14bC05ey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNzUlO2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jb2wteGwtMTB7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4OjAgMCA4My4zMzMzMzMlO2ZsZXg6MCAwIDgzLjMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMyV9LmNvbC14bC0xMXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDkxLjY2NjY2NyU7ZmxleDowIDAgOTEuNjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY3JX0uY29sLXhsLTEyey13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMTAwJTtmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci14bC1maXJzdHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjA7LW1zLWZsZXgtb3JkZXI6LTE7b3JkZXI6LTF9Lm9yZGVyLXhsLWxhc3R7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxNDstbXMtZmxleC1vcmRlcjoxMztvcmRlcjoxM30ub3JkZXIteGwtMHstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjE7LW1zLWZsZXgtb3JkZXI6MDtvcmRlcjowfS5vcmRlci14bC0xey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6MjstbXMtZmxleC1vcmRlcjoxO29yZGVyOjF9Lm9yZGVyLXhsLTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDozOy1tcy1mbGV4LW9yZGVyOjI7b3JkZXI6Mn0ub3JkZXIteGwtM3std2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjQ7LW1zLWZsZXgtb3JkZXI6MztvcmRlcjozfS5vcmRlci14bC00ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6NTstbXMtZmxleC1vcmRlcjo0O29yZGVyOjR9Lm9yZGVyLXhsLTV7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo2Oy1tcy1mbGV4LW9yZGVyOjU7b3JkZXI6NX0ub3JkZXIteGwtNnstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjc7LW1zLWZsZXgtb3JkZXI6NjtvcmRlcjo2fS5vcmRlci14bC03ey13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6ODstbXMtZmxleC1vcmRlcjo3O29yZGVyOjd9Lm9yZGVyLXhsLTh7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDo5Oy1tcy1mbGV4LW9yZGVyOjg7b3JkZXI6OH0ub3JkZXIteGwtOXstd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOjEwOy1tcy1mbGV4LW9yZGVyOjk7b3JkZXI6OX0ub3JkZXIteGwtMTB7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMTstbXMtZmxleC1vcmRlcjoxMDtvcmRlcjoxMH0ub3JkZXIteGwtMTF7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMjstbXMtZmxleC1vcmRlcjoxMTtvcmRlcjoxMX0ub3JkZXIteGwtMTJ7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDoxMzstbXMtZmxleC1vcmRlcjoxMjtvcmRlcjoxMn0ub2Zmc2V0LXhsLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LXhsLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMlfS5vZmZzZXQteGwtMnttYXJnaW4tbGVmdDoxNi42NjY2NjclfS5vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC14bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMyV9Lm9mZnNldC14bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NyV9Lm9mZnNldC14bC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LXhsLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzJX0ub2Zmc2V0LXhsLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY3JX0ub2Zmc2V0LXhsLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQteGwtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzJX0ub2Zmc2V0LXhsLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NyV9fS50YWJsZXt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MXJlbTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS50YWJsZSB0ZCwudGFibGUgdGh7cGFkZGluZzouNzVyZW07dmVydGljYWwtYWxpZ246dG9wO2JvcmRlci10b3A6MXB4IHNvbGlkICNkZWUyZTZ9LnRhYmxlIHRoZWFkIHRoe3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZGVlMmU2fS50YWJsZSB0Ym9keSt0Ym9keXtib3JkZXItdG9wOjJweCBzb2xpZCAjZGVlMmU2fS50YWJsZSAudGFibGV7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50YWJsZS1zbSB0ZCwudGFibGUtc20gdGh7cGFkZGluZzouM3JlbX0udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjFweCBzb2xpZCAjZGVlMmU2fS50YWJsZS1ib3JkZXJlZCB0ZCwudGFibGUtYm9yZGVyZWQgdGh7Ym9yZGVyOjFweCBzb2xpZCAjZGVlMmU2fS50YWJsZS1ib3JkZXJlZCB0aGVhZCB0ZCwudGFibGUtYm9yZGVyZWQgdGhlYWQgdGh7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHh9LnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA1KX0udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNzUpfS50YWJsZS1wcmltYXJ5LC50YWJsZS1wcmltYXJ5PnRkLC50YWJsZS1wcmltYXJ5PnRoe2JhY2tncm91bmQtY29sb3I6I2I4ZGFmZn0udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojOWZjZGZmfS50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojOWZjZGZmfS50YWJsZS1zZWNvbmRhcnksLnRhYmxlLXNlY29uZGFyeT50ZCwudGFibGUtc2Vjb25kYXJ5PnRoe2JhY2tncm91bmQtY29sb3I6I2Q2ZDhkYn0udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjOGNiY2Z9LnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXI+dGQsLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojYzhjYmNmfS50YWJsZS1zdWNjZXNzLC50YWJsZS1zdWNjZXNzPnRkLC50YWJsZS1zdWNjZXNzPnRoe2JhY2tncm91bmQtY29sb3I6I2MzZTZjYn0udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYjFkZmJifS50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojYjFkZmJifS50YWJsZS1pbmZvLC50YWJsZS1pbmZvPnRkLC50YWJsZS1pbmZvPnRoe2JhY2tncm91bmQtY29sb3I6I2JlZTVlYn0udGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYWJkZGU1fS50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojYWJkZGU1fS50YWJsZS13YXJuaW5nLC50YWJsZS13YXJuaW5nPnRkLC50YWJsZS13YXJuaW5nPnRoe2JhY2tncm91bmQtY29sb3I6I2ZmZWViYX0udGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZlOGExfS50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZmZlOGExfS50YWJsZS1kYW5nZXIsLnRhYmxlLWRhbmdlcj50ZCwudGFibGUtZGFuZ2VyPnRoe2JhY2tncm91bmQtY29sb3I6I2Y1YzZjYn0udGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMWIwYjd9LnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXI+dGQsLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZjFiMGI3fS50YWJsZS1saWdodCwudGFibGUtbGlnaHQ+dGQsLnRhYmxlLWxpZ2h0PnRoe2JhY2tncm91bmQtY29sb3I6I2ZkZmRmZX0udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VjZWNmNn0udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyPnRkLC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZWNlY2Y2fS50YWJsZS1kYXJrLC50YWJsZS1kYXJrPnRkLC50YWJsZS1kYXJrPnRoe2JhY2tncm91bmQtY29sb3I6I2M2YzhjYX0udGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYjliYmJlfS50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3Zlcj50ZCwudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojYjliYmJlfS50YWJsZS1hY3RpdmUsLnRhYmxlLWFjdGl2ZT50ZCwudGFibGUtYWN0aXZlPnRoe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDc1KX0udGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA3NSl9LnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXI+dGQsLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNzUpfS50YWJsZSAudGhlYWQtZGFyayB0aHtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzIxMjUyOTtib3JkZXItY29sb3I6IzMyMzgzZX0udGFibGUgLnRoZWFkLWxpZ2h0IHRoe2NvbG9yOiM0OTUwNTc7YmFja2dyb3VuZC1jb2xvcjojZTllY2VmO2JvcmRlci1jb2xvcjojZGVlMmU2fS50YWJsZS1kYXJre2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjEyNTI5fS50YWJsZS1kYXJrIHRkLC50YWJsZS1kYXJrIHRoLC50YWJsZS1kYXJrIHRoZWFkIHRoe2JvcmRlci1jb2xvcjojMzIzODNlfS50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfS50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjA1KX0udGFibGUtZGFyay50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjA3NSl9QG1lZGlhIChtYXgtd2lkdGg6NTc1Ljk4cHgpey50YWJsZS1yZXNwb25zaXZlLXNte2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7LW1zLW92ZXJmbG93LXN0eWxlOi1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcn0udGFibGUtcmVzcG9uc2l2ZS1zbT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS1tZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXJ9LnRhYmxlLXJlc3BvbnNpdmUtbWQ+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfX1AbWVkaWEgKG1heC13aWR0aDo5OTEuOThweCl7LnRhYmxlLXJlc3BvbnNpdmUtbGd7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO292ZXJmbG93LXg6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyfS50YWJsZS1yZXNwb25zaXZlLWxnPi50YWJsZS1ib3JkZXJlZHtib3JkZXI6MH19QG1lZGlhIChtYXgtd2lkdGg6MTE5OS45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS14bHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXJ9LnRhYmxlLXJlc3BvbnNpdmUteGw+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfX0udGFibGUtcmVzcG9uc2l2ZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXJ9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfS5mb3JtLWNvbnRyb2x7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3BhZGRpbmc6LjM3NXJlbSAuNzVyZW07Zm9udC1zaXplOjFyZW07bGluZS1oZWlnaHQ6MS41O2NvbG9yOiM0OTUwNTc7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6MXB4IHNvbGlkICNjZWQ0ZGE7Ym9yZGVyLXJhZGl1czouMjVyZW07dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXR9LmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5mb3JtLWNvbnRyb2w6Zm9jdXN7Y29sb3I6IzQ5NTA1NztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiM4MGJkZmY7b3V0bGluZTowO2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgwLDEyMywyNTUsLjI1KX0uZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM2Yzc1N2Q7b3BhY2l0eToxfS5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6IzZjNzU3ZDtvcGFjaXR5OjF9LmZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6IzZjNzU3ZDtvcGFjaXR5OjF9LmZvcm0tY29udHJvbDo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM2Yzc1N2Q7b3BhY2l0eToxfS5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVye2NvbG9yOiM2Yzc1N2Q7b3BhY2l0eToxfS5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQsLmZvcm0tY29udHJvbFtyZWFkb25seV17YmFja2dyb3VuZC1jb2xvcjojZTllY2VmO29wYWNpdHk6MX1zZWxlY3QuZm9ybS1jb250cm9sOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKXtoZWlnaHQ6Y2FsYygyLjI1cmVtICsgMnB4KX1zZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzOjotbXMtdmFsdWV7Y29sb3I6IzQ5NTA1NztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmZvcm0tY29udHJvbC1maWxlLC5mb3JtLWNvbnRyb2wtcmFuZ2V7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5jb2wtZm9ybS1sYWJlbHtwYWRkaW5nLXRvcDpjYWxjKC4zNzVyZW0gKyAxcHgpO3BhZGRpbmctYm90dG9tOmNhbGMoLjM3NXJlbSArIDFweCk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNX0uY29sLWZvcm0tbGFiZWwtbGd7cGFkZGluZy10b3A6Y2FsYyguNXJlbSArIDFweCk7cGFkZGluZy1ib3R0b206Y2FsYyguNXJlbSArIDFweCk7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS41fS5jb2wtZm9ybS1sYWJlbC1zbXtwYWRkaW5nLXRvcDpjYWxjKC4yNXJlbSArIDFweCk7cGFkZGluZy1ib3R0b206Y2FsYyguMjVyZW0gKyAxcHgpO2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNX0uZm9ybS1jb250cm9sLXBsYWludGV4dHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZy10b3A6LjM3NXJlbTtwYWRkaW5nLWJvdHRvbTouMzc1cmVtO21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDoxLjU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6c29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjFweCAwfS5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZywuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFwcGVuZD4uZm9ybS1jb250cm9sLXBsYWludGV4dC5idG4sLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1hcHBlbmQ+LmZvcm0tY29udHJvbC1wbGFpbnRleHQuaW5wdXQtZ3JvdXAtdGV4dCwuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLXByZXBlbmQ+LmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uZm9ybS1jb250cm9sLXBsYWludGV4dC5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wsLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hcHBlbmQ+LmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmlucHV0LWdyb3VwLXRleHQsLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1wcmVwZW5kPi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmJ0biwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLXByZXBlbmQ+LmZvcm0tY29udHJvbC1wbGFpbnRleHQuaW5wdXQtZ3JvdXAtdGV4dHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9LmZvcm0tY29udHJvbC1zbSwuaW5wdXQtZ3JvdXAtc20+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFwcGVuZD4uYnRuLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uYnRuLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uaW5wdXQtZ3JvdXAtdGV4dHtwYWRkaW5nOi4yNXJlbSAuNXJlbTtmb250LXNpemU6Ljg3NXJlbTtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czouMnJlbX0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFwcGVuZD5zZWxlY3QuYnRuOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFwcGVuZD5zZWxlY3QuaW5wdXQtZ3JvdXAtdGV4dDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1wcmVwZW5kPnNlbGVjdC5idG46bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtcHJlcGVuZD5zZWxlY3QuaW5wdXQtZ3JvdXAtdGV4dDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksLmlucHV0LWdyb3VwLXNtPnNlbGVjdC5mb3JtLWNvbnRyb2w6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLHNlbGVjdC5mb3JtLWNvbnRyb2wtc206bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pe2hlaWdodDpjYWxjKDEuODEyNXJlbSArIDJweCl9LmZvcm0tY29udHJvbC1sZywuaW5wdXQtZ3JvdXAtbGc+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFwcGVuZD4uYnRuLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uYnRuLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtcHJlcGVuZD4uaW5wdXQtZ3JvdXAtdGV4dHtwYWRkaW5nOi41cmVtIDFyZW07Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6LjNyZW19LmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1hcHBlbmQ+c2VsZWN0LmJ0bjpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1hcHBlbmQ+c2VsZWN0LmlucHV0LWdyb3VwLXRleHQ6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtcHJlcGVuZD5zZWxlY3QuYnRuOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLXByZXBlbmQ+c2VsZWN0LmlucHV0LWdyb3VwLXRleHQ6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLC5pbnB1dC1ncm91cC1sZz5zZWxlY3QuZm9ybS1jb250cm9sOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSxzZWxlY3QuZm9ybS1jb250cm9sLWxnOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKXtoZWlnaHQ6Y2FsYygyLjg3NXJlbSArIDJweCl9LmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbToxcmVtfS5mb3JtLXRleHR7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOi4yNXJlbX0uZm9ybS1yb3d7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7bWFyZ2luLXJpZ2h0Oi01cHg7bWFyZ2luLWxlZnQ6LTVweH0uZm9ybS1yb3c+LmNvbCwuZm9ybS1yb3c+W2NsYXNzKj1jb2wtXXtwYWRkaW5nLXJpZ2h0OjVweDtwYWRkaW5nLWxlZnQ6NXB4fS5mb3JtLWNoZWNre3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7cGFkZGluZy1sZWZ0OjEuMjVyZW19LmZvcm0tY2hlY2staW5wdXR7cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLXRvcDouM3JlbTttYXJnaW4tbGVmdDotMS4yNXJlbX0uZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZH4uZm9ybS1jaGVjay1sYWJlbHtjb2xvcjojNmM3NTdkfS5mb3JtLWNoZWNrLWxhYmVse21hcmdpbi1ib3R0b206MH0uZm9ybS1jaGVjay1pbmxpbmV7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tcmlnaHQ6Ljc1cmVtfS5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dHtwb3NpdGlvbjpzdGF0aWM7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDouMzEyNXJlbTttYXJnaW4tbGVmdDowfS52YWxpZC1mZWVkYmFja3tkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOi4yNXJlbTtmb250LXNpemU6ODAlO2NvbG9yOiMyOGE3NDV9LnZhbGlkLXRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7ei1pbmRleDo1O2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOi41cmVtO21hcmdpbi10b3A6LjFyZW07Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSg0MCwxNjcsNjksLjgpO2JvcmRlci1yYWRpdXM6LjJyZW19LmN1c3RvbS1zZWxlY3QuaXMtdmFsaWQsLmZvcm0tY29udHJvbC5pcy12YWxpZCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlke2JvcmRlci1jb2xvcjojMjhhNzQ1fS5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzLC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1c3tib3JkZXItY29sb3I6IzI4YTc0NTtib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoNDAsMTY3LDY5LC4yNSl9LmN1c3RvbS1zZWxlY3QuaXMtdmFsaWR+LnZhbGlkLWZlZWRiYWNrLC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkfi52YWxpZC10b29sdGlwLC5mb3JtLWNvbnRyb2wuaXMtdmFsaWR+LnZhbGlkLWZlZWRiYWNrLC5mb3JtLWNvbnRyb2wuaXMtdmFsaWR+LnZhbGlkLXRvb2x0aXAsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWR+LnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkfi52YWxpZC10b29sdGlwLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWR+LnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWR+LnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30uZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZH4uZm9ybS1jaGVjay1sYWJlbCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZH4uZm9ybS1jaGVjay1sYWJlbHtjb2xvcjojMjhhNzQ1fS5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkfi52YWxpZC1mZWVkYmFjaywuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZH4udmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZH4udmFsaWQtZmVlZGJhY2ssLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWR+LnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30uY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWR+LmN1c3RvbS1jb250cm9sLWxhYmVsLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWx7Y29sb3I6IzI4YTc0NX0uY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzcxZGQ4YX0uY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWR+LnZhbGlkLWZlZWRiYWNrLC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZH4udmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWR+LnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZH4udmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZDpjaGVja2Vkfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpjaGVja2Vkfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzM0Y2U1N30uY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXN+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkOmZvY3Vzfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JveC1zaGFkb3c6MCAwIDAgMXB4ICNmZmYsMCAwIDAgLjJyZW0gcmdiYSg0MCwxNjcsNjksLjI1KX0uY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWR+LmN1c3RvbS1maWxlLWxhYmVsLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZH4uY3VzdG9tLWZpbGUtbGFiZWx7Ym9yZGVyLWNvbG9yOiMyOGE3NDV9LmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkfi5jdXN0b20tZmlsZS1sYWJlbDo6YmVmb3JlLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZH4uY3VzdG9tLWZpbGUtbGFiZWw6OmJlZm9yZXtib3JkZXItY29sb3I6aW5oZXJpdH0uY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWR+LnZhbGlkLWZlZWRiYWNrLC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZH4udmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWR+LnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZH4udmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZDpmb2N1c34uY3VzdG9tLWZpbGUtbGFiZWwsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3Vzfi5jdXN0b20tZmlsZS1sYWJlbHtib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoNDAsMTY3LDY5LC4yNSl9LmludmFsaWQtZmVlZGJhY2t7ZGlzcGxheTpub25lO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDouMjVyZW07Zm9udC1zaXplOjgwJTtjb2xvcjojZGMzNTQ1fS5pbnZhbGlkLXRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7ei1pbmRleDo1O2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOi41cmVtO21hcmdpbi10b3A6LjFyZW07Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjAsNTMsNjksLjgpO2JvcmRlci1yYWRpdXM6LjJyZW19LmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCwuZm9ybS1jb250cm9sLmlzLWludmFsaWQsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWR7Ym9yZGVyLWNvbG9yOiNkYzM1NDV9LmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZDpmb2N1cywuZm9ybS1jb250cm9sLmlzLWludmFsaWQ6Zm9jdXMsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNkYzM1NDU7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDIyMCw1Myw2OSwuMjUpfS5jdXN0b20tc2VsZWN0LmlzLWludmFsaWR+LmludmFsaWQtZmVlZGJhY2ssLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZH4uaW52YWxpZC10b29sdGlwLC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZH4uaW52YWxpZC1mZWVkYmFjaywuZm9ybS1jb250cm9sLmlzLWludmFsaWR+LmludmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkfi5pbnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWR+LmludmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWR+LmludmFsaWQtZmVlZGJhY2ssLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkfi5pbnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30uZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkfi5mb3JtLWNoZWNrLWxhYmVsLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWR+LmZvcm0tY2hlY2stbGFiZWx7Y29sb3I6I2RjMzU0NX0uZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkfi5pbnZhbGlkLWZlZWRiYWNrLC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWR+LmludmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkfi5pbnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWR+LmludmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkfi5jdXN0b20tY29udHJvbC1sYWJlbCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWx7Y29sb3I6I2RjMzU0NX0uY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZmEyYTl9LmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWR+LmludmFsaWQtZmVlZGJhY2ssLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWR+LmludmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZH4uaW52YWxpZC1mZWVkYmFjaywud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZH4uaW52YWxpZC10b29sdGlwe2Rpc3BsYXk6YmxvY2t9LmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZDpjaGVja2Vkfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2U0NjA2ZH0uY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpmb2N1c34uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZDpmb2N1c34uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtib3gtc2hhZG93OjAgMCAwIDFweCAjZmZmLDAgMCAwIC4ycmVtIHJnYmEoMjIwLDUzLDY5LC4yNSl9LmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWR+LmN1c3RvbS1maWxlLWxhYmVsLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkfi5jdXN0b20tZmlsZS1sYWJlbHtib3JkZXItY29sb3I6I2RjMzU0NX0uY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZH4uY3VzdG9tLWZpbGUtbGFiZWw6OmJlZm9yZSwud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZH4uY3VzdG9tLWZpbGUtbGFiZWw6OmJlZm9yZXtib3JkZXItY29sb3I6aW5oZXJpdH0uY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZH4uaW52YWxpZC1mZWVkYmFjaywuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZH4uaW52YWxpZC10b29sdGlwLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkfi5pbnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkfi5pbnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30uY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1c34uY3VzdG9tLWZpbGUtbGFiZWwsLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQ6Zm9jdXN+LmN1c3RvbS1maWxlLWxhYmVse2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgyMjAsNTMsNjksLjI1KX0uZm9ybS1pbmxpbmV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWZsb3c6cm93IHdyYXA7ZmxleC1mbG93OnJvdyB3cmFwOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5mb3JtLWlubGluZSAuZm9ybS1jaGVja3t3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuZm9ybS1pbmxpbmUgbGFiZWx7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi1ib3R0b206MH0uZm9ybS1pbmxpbmUgLmZvcm0tZ3JvdXB7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWZsb3c6cm93IHdyYXA7ZmxleC1mbG93OnJvdyB3cmFwOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MH0uZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDphdXRvO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbC1wbGFpbnRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZvcm0taW5saW5lIC5pbnB1dC1ncm91cHt3aWR0aDphdXRvfS5mb3JtLWlubGluZSAuZm9ybS1jaGVja3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6YXV0bztwYWRkaW5nLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2staW5wdXR7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDouMjVyZW07bWFyZ2luLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjB9fS5idG57ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6NDAwO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7cGFkZGluZzouMzc1cmVtIC43NXJlbTtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czouMjVyZW07dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXR9LmJ0bjpmb2N1cywuYnRuOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5idG4uZm9jdXMsLmJ0bjpmb2N1c3tvdXRsaW5lOjA7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDAsMTIzLDI1NSwuMjUpfS5idG4uZGlzYWJsZWQsLmJ0bjpkaXNhYmxlZHtvcGFjaXR5Oi42NX0uYnRuOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS5idG46bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG46bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZle2JhY2tncm91bmQtaW1hZ2U6bm9uZX1hLmJ0bi5kaXNhYmxlZCxmaWVsZHNldDpkaXNhYmxlZCBhLmJ0bntwb2ludGVyLWV2ZW50czpub25lfS5idG4tcHJpbWFyeXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwN2JmZjtib3JkZXItY29sb3I6IzAwN2JmZn0uYnRuLXByaW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDY5ZDk7Ym9yZGVyLWNvbG9yOiMwMDYyY2N9LmJ0bi1wcmltYXJ5LmZvY3VzLC5idG4tcHJpbWFyeTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMCwxMjMsMjU1LC41KX0uYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi1wcmltYXJ5OmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmO2JvcmRlci1jb2xvcjojMDA3YmZmfS5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDA2MmNjO2JvcmRlci1jb2xvcjojMDA1Y2JmfS5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgwLDEyMywyNTUsLjUpfS5idG4tc2Vjb25kYXJ5e2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNmM3NTdkO2JvcmRlci1jb2xvcjojNmM3NTdkfS5idG4tc2Vjb25kYXJ5OmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNWE2MjY4O2JvcmRlci1jb2xvcjojNTQ1YjYyfS5idG4tc2Vjb25kYXJ5LmZvY3VzLC5idG4tc2Vjb25kYXJ5OmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgxMDgsMTE3LDEyNSwuNSl9LmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM2Yzc1N2Q7Ym9yZGVyLWNvbG9yOiM2Yzc1N2R9LmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM1NDViNjI7Ym9yZGVyLWNvbG9yOiM0ZTU1NWJ9LmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDEwOCwxMTcsMTI1LC41KX0uYnRuLXN1Y2Nlc3N7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyOGE3NDU7Ym9yZGVyLWNvbG9yOiMyOGE3NDV9LmJ0bi1zdWNjZXNzOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjE4ODM4O2JvcmRlci1jb2xvcjojMWU3ZTM0fS5idG4tc3VjY2Vzcy5mb2N1cywuYnRuLXN1Y2Nlc3M6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDQwLDE2Nyw2OSwuNSl9LmJ0bi1zdWNjZXNzLmRpc2FibGVkLC5idG4tc3VjY2VzczpkaXNhYmxlZHtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzI4YTc0NTtib3JkZXItY29sb3I6IzI4YTc0NX0uYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLnNob3c+LmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzFlN2UzNDtib3JkZXItY29sb3I6IzFjNzQzMH0uYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoNDAsMTY3LDY5LC41KX0uYnRuLWluZm97Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxN2EyYjg7Ym9yZGVyLWNvbG9yOiMxN2EyYjh9LmJ0bi1pbmZvOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMTM4NDk2O2JvcmRlci1jb2xvcjojMTE3YThifS5idG4taW5mby5mb2N1cywuYnRuLWluZm86Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDIzLDE2MiwxODQsLjUpfS5idG4taW5mby5kaXNhYmxlZCwuYnRuLWluZm86ZGlzYWJsZWR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxN2EyYjg7Ym9yZGVyLWNvbG9yOiMxN2EyYjh9LmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5zaG93Pi5idG4taW5mby5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxMTdhOGI7Ym9yZGVyLWNvbG9yOiMxMDcwN2Z9LmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5zaG93Pi5idG4taW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDIzLDE2MiwxODQsLjUpfS5idG4td2FybmluZ3tjb2xvcjojMjEyNTI5O2JhY2tncm91bmQtY29sb3I6I2ZmYzEwNztib3JkZXItY29sb3I6I2ZmYzEwN30uYnRuLXdhcm5pbmc6aG92ZXJ7Y29sb3I6IzIxMjUyOTtiYWNrZ3JvdW5kLWNvbG9yOiNlMGE4MDA7Ym9yZGVyLWNvbG9yOiNkMzllMDB9LmJ0bi13YXJuaW5nLmZvY3VzLC5idG4td2FybmluZzpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMjU1LDE5Myw3LC41KX0uYnRuLXdhcm5pbmcuZGlzYWJsZWQsLmJ0bi13YXJuaW5nOmRpc2FibGVke2NvbG9yOiMyMTI1Mjk7YmFja2dyb3VuZC1jb2xvcjojZmZjMTA3O2JvcmRlci1jb2xvcjojZmZjMTA3fS5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiMyMTI1Mjk7YmFja2dyb3VuZC1jb2xvcjojZDM5ZTAwO2JvcmRlci1jb2xvcjojYzY5NTAwfS5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgyNTUsMTkzLDcsLjUpfS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZGMzNTQ1O2JvcmRlci1jb2xvcjojZGMzNTQ1fS5idG4tZGFuZ2VyOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzgyMzMzO2JvcmRlci1jb2xvcjojYmQyMTMwfS5idG4tZGFuZ2VyLmZvY3VzLC5idG4tZGFuZ2VyOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgyMjAsNTMsNjksLjUpfS5idG4tZGFuZ2VyLmRpc2FibGVkLC5idG4tZGFuZ2VyOmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZGMzNTQ1O2JvcmRlci1jb2xvcjojZGMzNTQ1fS5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLnNob3c+LmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYmQyMTMwO2JvcmRlci1jb2xvcjojYjIxZjJkfS5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgyMjAsNTMsNjksLjUpfS5idG4tbGlnaHR7Y29sb3I6IzIxMjUyOTtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY5ZmE7Ym9yZGVyLWNvbG9yOiNmOGY5ZmF9LmJ0bi1saWdodDpob3Zlcntjb2xvcjojMjEyNTI5O2JhY2tncm91bmQtY29sb3I6I2UyZTZlYTtib3JkZXItY29sb3I6I2RhZTBlNX0uYnRuLWxpZ2h0LmZvY3VzLC5idG4tbGlnaHQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDI0OCwyNDksMjUwLC41KX0uYnRuLWxpZ2h0LmRpc2FibGVkLC5idG4tbGlnaHQ6ZGlzYWJsZWR7Y29sb3I6IzIxMjUyOTtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY5ZmE7Ym9yZGVyLWNvbG9yOiNmOGY5ZmF9LmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLnNob3c+LmJ0bi1saWdodC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzIxMjUyOTtiYWNrZ3JvdW5kLWNvbG9yOiNkYWUwZTU7Ym9yZGVyLWNvbG9yOiNkM2Q5ZGZ9LmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1saWdodC5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDI0OCwyNDksMjUwLC41KX0uYnRuLWRhcmt7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzNDNhNDA7Ym9yZGVyLWNvbG9yOiMzNDNhNDB9LmJ0bi1kYXJrOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjMyNzJiO2JvcmRlci1jb2xvcjojMWQyMTI0fS5idG4tZGFyay5mb2N1cywuYnRuLWRhcms6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDUyLDU4LDY0LC41KX0uYnRuLWRhcmsuZGlzYWJsZWQsLmJ0bi1kYXJrOmRpc2FibGVke2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwO2JvcmRlci1jb2xvcjojMzQzYTQwfS5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMWQyMTI0O2JvcmRlci1jb2xvcjojMTcxYTFkfS5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSg1Miw1OCw2NCwuNSl9LmJ0bi1vdXRsaW5lLXByaW1hcnl7Y29sb3I6IzAwN2JmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzAwN2JmZn0uYnRuLW91dGxpbmUtcHJpbWFyeTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwN2JmZjtib3JkZXItY29sb3I6IzAwN2JmZn0uYnRuLW91dGxpbmUtcHJpbWFyeS5mb2N1cywuYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMCwxMjMsMjU1LC41KX0uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZHtjb2xvcjojMDA3YmZmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDdiZmY7Ym9yZGVyLWNvbG9yOiMwMDdiZmZ9LmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDAsMTIzLDI1NSwuNSl9LmJ0bi1vdXRsaW5lLXNlY29uZGFyeXtjb2xvcjojNmM3NTdkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojNmM3NTdkfS5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM2Yzc1N2Q7Ym9yZGVyLWNvbG9yOiM2Yzc1N2R9LmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1cywuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgxMDgsMTE3LDEyNSwuNSl9LmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVke2NvbG9yOiM2Yzc1N2Q7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzZjNzU3ZDtib3JkZXItY29sb3I6IzZjNzU3ZH0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMTA4LDExNywxMjUsLjUpfS5idG4tb3V0bGluZS1zdWNjZXNze2NvbG9yOiMyOGE3NDU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMyOGE3NDV9LmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyOGE3NDU7Ym9yZGVyLWNvbG9yOiMyOGE3NDV9LmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDQwLDE2Nyw2OSwuNSl9LmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJsZWR7Y29sb3I6IzI4YTc0NTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLnNob3c+LmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjhhNzQ1O2JvcmRlci1jb2xvcjojMjhhNzQ1fS5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSg0MCwxNjcsNjksLjUpfS5idG4tb3V0bGluZS1pbmZve2NvbG9yOiMxN2EyYjg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMxN2EyYjh9LmJ0bi1vdXRsaW5lLWluZm86aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxN2EyYjg7Ym9yZGVyLWNvbG9yOiMxN2EyYjh9LmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMsLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDIzLDE2MiwxODQsLjUpfS5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkLC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVke2NvbG9yOiMxN2EyYjg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLC5zaG93Pi5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzE3YTJiODtib3JkZXItY29sb3I6IzE3YTJiOH0uYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLC5zaG93Pi5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMjMsMTYyLDE4NCwuNSl9LmJ0bi1vdXRsaW5lLXdhcm5pbmd7Y29sb3I6I2ZmYzEwNztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6I2ZmYzEwN30uYnRuLW91dGxpbmUtd2FybmluZzpob3Zlcntjb2xvcjojMjEyNTI5O2JhY2tncm91bmQtY29sb3I6I2ZmYzEwNztib3JkZXItY29sb3I6I2ZmYzEwN30uYnRuLW91dGxpbmUtd2FybmluZy5mb2N1cywuYnRuLW91dGxpbmUtd2FybmluZzpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMjU1LDE5Myw3LC41KX0uYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwuYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZHtjb2xvcjojZmZjMTA3O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzIxMjUyOTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmMxMDc7Ym9yZGVyLWNvbG9yOiNmZmMxMDd9LmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDI1NSwxOTMsNywuNSl9LmJ0bi1vdXRsaW5lLWRhbmdlcntjb2xvcjojZGMzNTQ1O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojZGMzNTQ1fS5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkYzM1NDU7Ym9yZGVyLWNvbG9yOiNkYzM1NDV9LmJ0bi1vdXRsaW5lLWRhbmdlci5mb2N1cywuYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgyMjAsNTMsNjksLjUpfS5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZHtjb2xvcjojZGMzNTQ1O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLnNob3c+LmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkYzM1NDU7Ym9yZGVyLWNvbG9yOiNkYzM1NDV9LmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDIyMCw1Myw2OSwuNSl9LmJ0bi1vdXRsaW5lLWxpZ2h0e2NvbG9yOiNmOGY5ZmE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiNmOGY5ZmF9LmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVye2NvbG9yOiMyMTI1Mjk7YmFja2dyb3VuZC1jb2xvcjojZjhmOWZhO2JvcmRlci1jb2xvcjojZjhmOWZhfS5idG4tb3V0bGluZS1saWdodC5mb2N1cywuYnRuLW91dGxpbmUtbGlnaHQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDI0OCwyNDksMjUwLC41KX0uYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVke2NvbG9yOiNmOGY5ZmE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsLnNob3c+LmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojMjEyNTI5O2JhY2tncm91bmQtY29sb3I6I2Y4ZjlmYTtib3JkZXItY29sb3I6I2Y4ZjlmYX0uYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsLnNob3c+LmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMjQ4LDI0OSwyNTAsLjUpfS5idG4tb3V0bGluZS1kYXJre2NvbG9yOiMzNDNhNDA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMzNDNhNDB9LmJ0bi1vdXRsaW5lLWRhcms6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzNDNhNDA7Ym9yZGVyLWNvbG9yOiMzNDNhNDB9LmJ0bi1vdXRsaW5lLWRhcmsuZm9jdXMsLmJ0bi1vdXRsaW5lLWRhcms6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDUyLDU4LDY0LC41KX0uYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwuYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZHtjb2xvcjojMzQzYTQwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLC5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwuc2hvdz4uYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzNDNhNDA7Ym9yZGVyLWNvbG9yOiMzNDNhNDB9LmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLC5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywuc2hvdz4uYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDUyLDU4LDY0LC41KX0uYnRuLWxpbmt7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMwMDdiZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLWxpbms6aG92ZXJ7Y29sb3I6IzAwNTZiMzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tbGluay5mb2N1cywuYnRuLWxpbms6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzpub25lfS5idG4tbGluay5kaXNhYmxlZCwuYnRuLWxpbms6ZGlzYWJsZWR7Y29sb3I6IzZjNzU3ZH0uYnRuLWdyb3VwLWxnPi5idG4sLmJ0bi1sZ3twYWRkaW5nOi41cmVtIDFyZW07Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6LjNyZW19LmJ0bi1ncm91cC1zbT4uYnRuLC5idG4tc217cGFkZGluZzouMjVyZW0gLjVyZW07Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6LjJyZW19LmJ0bi1ibG9ja3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmJ0bi1ibG9jaysuYnRuLWJsb2Nre21hcmdpbi10b3A6LjVyZW19aW5wdXRbdHlwZT1idXR0b25dLmJ0bi1ibG9jayxpbnB1dFt0eXBlPXJlc2V0XS5idG4tYmxvY2ssaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1ibG9ja3t3aWR0aDoxMDAlfS5mYWRle29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXJ9LmZhZGUuc2hvd3tvcGFjaXR5OjF9LmNvbGxhcHNle2Rpc3BsYXk6bm9uZX0uY29sbGFwc2Uuc2hvd3tkaXNwbGF5OmJsb2NrfXRyLmNvbGxhcHNlLnNob3d7ZGlzcGxheTp0YWJsZS1yb3d9dGJvZHkuY29sbGFwc2Uuc2hvd3tkaXNwbGF5OnRhYmxlLXJvdy1ncm91cH0uY29sbGFwc2luZ3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjpoZWlnaHQgLjM1cyBlYXNlfS5kcm9wZG93biwuZHJvcHVwe3Bvc2l0aW9uOnJlbGF0aXZlfS5kcm9wZG93bi10b2dnbGU6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLWxlZnQ6LjI1NWVtO3ZlcnRpY2FsLWFsaWduOi4yNTVlbTtjb250ZW50OiIiO2JvcmRlci10b3A6LjNlbSBzb2xpZDtib3JkZXItcmlnaHQ6LjNlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjA7Ym9yZGVyLWxlZnQ6LjNlbSBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlcnttYXJnaW4tbGVmdDowfS5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDt6LWluZGV4OjEwMDA7ZGlzcGxheTpub25lO2Zsb2F0OmxlZnQ7bWluLXdpZHRoOjEwcmVtO3BhZGRpbmc6LjVyZW0gMDttYXJnaW46LjEyNXJlbSAwIDA7Zm9udC1zaXplOjFyZW07Y29sb3I6IzIxMjUyOTt0ZXh0LWFsaWduOmxlZnQ7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7Ym9yZGVyLXJhZGl1czouMjVyZW19LmRyb3B1cCAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouMTI1cmVtfS5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tbGVmdDouMjU1ZW07dmVydGljYWwtYWxpZ246LjI1NWVtO2NvbnRlbnQ6IiI7Ym9yZGVyLXRvcDowO2JvcmRlci1yaWdodDouM2VtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjNlbSBzb2xpZDtib3JkZXItbGVmdDouM2VtIHNvbGlkIHRyYW5zcGFyZW50fS5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXJ7bWFyZ2luLWxlZnQ6MH0uZHJvcHJpZ2h0IC5kcm9wZG93bi1tZW51e21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDouMTI1cmVtfS5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tbGVmdDouMjU1ZW07dmVydGljYWwtYWxpZ246LjI1NWVtO2NvbnRlbnQ6IiI7Ym9yZGVyLXRvcDouM2VtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjNlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDouM2VtIHNvbGlkfS5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXJ7bWFyZ2luLWxlZnQ6MH0uZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVye3ZlcnRpY2FsLWFsaWduOjB9LmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51e21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6LjEyNXJlbX0uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tbGVmdDouMjU1ZW07dmVydGljYWwtYWxpZ246LjI1NWVtO2NvbnRlbnQ6IiJ9LmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVye2Rpc3BsYXk6bm9uZX0uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXJpZ2h0Oi4yNTVlbTt2ZXJ0aWNhbC1hbGlnbjouMjU1ZW07Y29udGVudDoiIjtib3JkZXItdG9wOi4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0Oi4zZW0gc29saWQ7Ym9yZGVyLWJvdHRvbTouM2VtIHNvbGlkIHRyYW5zcGFyZW50fS5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlcnttYXJnaW4tbGVmdDowfS5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjpiZWZvcmV7dmVydGljYWwtYWxpZ246MH0uZHJvcGRvd24tZGl2aWRlcntoZWlnaHQ6MDttYXJnaW46LjVyZW0gMDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXRvcDoxcHggc29saWQgI2U5ZWNlZn0uZHJvcGRvd24taXRlbXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzouMjVyZW0gMS41cmVtO2NsZWFyOmJvdGg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMyMTI1Mjk7dGV4dC1hbGlnbjppbmhlcml0O3doaXRlLXNwYWNlOm5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5kcm9wZG93bi1pdGVtOmZvY3VzLC5kcm9wZG93bi1pdGVtOmhvdmVye2NvbG9yOiMxNjE4MWI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjhmOWZhfS5kcm9wZG93bi1pdGVtLmFjdGl2ZSwuZHJvcGRvd24taXRlbTphY3RpdmV7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDdiZmZ9LmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWR7Y29sb3I6IzZjNzU3ZDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5kcm9wZG93bi1tZW51LnNob3d7ZGlzcGxheTpibG9ja30uZHJvcGRvd24taGVhZGVye2Rpc3BsYXk6YmxvY2s7cGFkZGluZzouNXJlbSAxLjVyZW07bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTouODc1cmVtO2NvbG9yOiM2Yzc1N2Q7d2hpdGUtc3BhY2U6bm93cmFwfS5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4sLmJ0bi1ncm91cD4uYnRue3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDEgYXV0bztmbGV4OjAgMSBhdXRvfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpob3ZlciwuYnRuLWdyb3VwPi5idG46aG92ZXJ7ei1pbmRleDoxfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi5hY3RpdmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmFjdGl2ZSwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46Zm9jdXMsLmJ0bi1ncm91cD4uYnRuLmFjdGl2ZSwuYnRuLWdyb3VwPi5idG46YWN0aXZlLC5idG4tZ3JvdXA+LmJ0bjpmb2N1c3t6LWluZGV4OjF9LmJ0bi1ncm91cCAuYnRuKy5idG4sLmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAsLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4sLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuKy5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuKy5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwKy5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwKy5idG4tZ3JvdXB7bWFyZ2luLWxlZnQ6LTFweH0uYnRuLXRvb2xiYXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXB7d2lkdGg6YXV0b30uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKT4uYnRuLC5idG4tZ3JvdXA+LmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmJ0bi1ncm91cD4uYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG4sLmJ0bi1ncm91cD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmRyb3Bkb3duLXRvZ2dsZS1zcGxpdHtwYWRkaW5nLXJpZ2h0Oi41NjI1cmVtO3BhZGRpbmctbGVmdDouNTYyNXJlbX0uZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlcnttYXJnaW4tbGVmdDowfS5idG4tZ3JvdXAtc20+LmJ0bisuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LC5idG4tc20rLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdHtwYWRkaW5nLXJpZ2h0Oi4zNzVyZW07cGFkZGluZy1sZWZ0Oi4zNzVyZW19LmJ0bi1ncm91cC1sZz4uYnRuKy5kcm9wZG93bi10b2dnbGUtc3BsaXQsLmJ0bi1sZysuZHJvcGRvd24tdG9nZ2xlLXNwbGl0e3BhZGRpbmctcmlnaHQ6Ljc1cmVtO3BhZGRpbmctbGVmdDouNzVyZW19LmJ0bi1ncm91cC12ZXJ0aWNhbHstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjstd2Via2l0LWJveC1hbGlnbjpzdGFydDstbXMtZmxleC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cHt3aWR0aDoxMDAlfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bisuYnRuLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bisuYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cCsuYnRuLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cCsuYnRuLWdyb3Vwe21hcmdpbi10b3A6LTFweDttYXJnaW4tbGVmdDowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpPi5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwLXRvZ2dsZT4uYnRuLC5idG4tZ3JvdXAtdG9nZ2xlPi5idG4tZ3JvdXA+LmJ0bnttYXJnaW4tYm90dG9tOjB9LmJ0bi1ncm91cC10b2dnbGU+LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XSwuYnRuLWdyb3VwLXRvZ2dsZT4uYnRuIGlucHV0W3R5cGU9cmFkaW9dLC5idG4tZ3JvdXAtdG9nZ2xlPi5idG4tZ3JvdXA+LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XSwuYnRuLWdyb3VwLXRvZ2dsZT4uYnRuLWdyb3VwPi5idG4gaW5wdXRbdHlwZT1yYWRpb117cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDAsMCwwLDApO3BvaW50ZXItZXZlbnRzOm5vbmV9LmlucHV0LWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwOy13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2g7LW1zLWZsZXgtYWxpZ246c3RyZXRjaDthbGlnbi1pdGVtczpzdHJldGNoO3dpZHRoOjEwMCV9LmlucHV0LWdyb3VwPi5jdXN0b20tZmlsZSwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1zZWxlY3QsLmlucHV0LWdyb3VwPi5mb3JtLWNvbnRyb2x7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87d2lkdGg6MSU7bWFyZ2luLWJvdHRvbTowfS5pbnB1dC1ncm91cD4uY3VzdG9tLWZpbGU6Zm9jdXMsLmlucHV0LWdyb3VwPi5jdXN0b20tc2VsZWN0OmZvY3VzLC5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sOmZvY3Vze3otaW5kZXg6M30uaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlKy5jdXN0b20tZmlsZSwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlKy5jdXN0b20tc2VsZWN0LC5pbnB1dC1ncm91cD4uY3VzdG9tLWZpbGUrLmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1zZWxlY3QrLmN1c3RvbS1maWxlLC5pbnB1dC1ncm91cD4uY3VzdG9tLXNlbGVjdCsuY3VzdG9tLXNlbGVjdCwuaW5wdXQtZ3JvdXA+LmN1c3RvbS1zZWxlY3QrLmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbCsuY3VzdG9tLWZpbGUsLmlucHV0LWdyb3VwPi5mb3JtLWNvbnRyb2wrLmN1c3RvbS1zZWxlY3QsLmlucHV0LWdyb3VwPi5mb3JtLWNvbnRyb2wrLmZvcm0tY29udHJvbHttYXJnaW4tbGVmdDotMXB4fS5pbnB1dC1ncm91cD4uY3VzdG9tLXNlbGVjdDpub3QoOmxhc3QtY2hpbGQpLC5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5pbnB1dC1ncm91cD4uY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSwuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5pbnB1dC1ncm91cD4uY3VzdG9tLWZpbGV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uaW5wdXQtZ3JvdXA+LmN1c3RvbS1maWxlOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsLC5pbnB1dC1ncm91cD4uY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWw6OmJlZm9yZXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmlucHV0LWdyb3VwPi5jdXN0b20tZmlsZTpub3QoOmZpcnN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsLmlucHV0LWdyb3VwPi5jdXN0b20tZmlsZTpub3QoOmZpcnN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWw6OmJlZm9yZXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5pbnB1dC1ncm91cC1hcHBlbmQsLmlucHV0LWdyb3VwLXByZXBlbmR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4sLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0bntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuKy5idG4sLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuKy5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQrLmJ0biwuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0Ky5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4rLmJ0biwuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuKy5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0Ky5idG4sLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQrLmlucHV0LWdyb3VwLXRleHR7bWFyZ2luLWxlZnQ6LTFweH0uaW5wdXQtZ3JvdXAtcHJlcGVuZHttYXJnaW4tcmlnaHQ6LTFweH0uaW5wdXQtZ3JvdXAtYXBwZW5ke21hcmdpbi1sZWZ0Oi0xcHh9LmlucHV0LWdyb3VwLXRleHR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOi4zNzVyZW0gLjc1cmVtO21hcmdpbi1ib3R0b206MDtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOiM0OTUwNTc7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2JhY2tncm91bmQtY29sb3I6I2U5ZWNlZjtib3JkZXI6MXB4IHNvbGlkICNjZWQ0ZGE7Ym9yZGVyLXJhZGl1czouMjVyZW19LmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT1jaGVja2JveF0sLmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT1yYWRpb117bWFyZ2luLXRvcDowfS5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQ+LmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwuaW5wdXQtZ3JvdXA+LmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkPi5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCksLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKT4uYnRuLC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCk+LmlucHV0LWdyb3VwLXRleHQsLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1wcmVwZW5kPi5idG4sLmlucHV0LWdyb3VwPi5pbnB1dC1ncm91cC1wcmVwZW5kPi5pbnB1dC1ncm91cC10ZXh0e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uaW5wdXQtZ3JvdXA+LmlucHV0LWdyb3VwLWFwcGVuZD4uYnRuLC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtYXBwZW5kPi5pbnB1dC1ncm91cC10ZXh0LC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLC5pbnB1dC1ncm91cD4uaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZD4uaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmZpcnN0LWNoaWxkKSwuaW5wdXQtZ3JvdXA+LmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCk+LmJ0biwuaW5wdXQtZ3JvdXA+LmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCk+LmlucHV0LWdyb3VwLXRleHR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uY3VzdG9tLWNvbnRyb2x7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjEuNXJlbTtwYWRkaW5nLWxlZnQ6MS41cmVtfS5jdXN0b20tY29udHJvbC1pbmxpbmV7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleDttYXJnaW4tcmlnaHQ6MXJlbX0uY3VzdG9tLWNvbnRyb2wtaW5wdXR7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMTtvcGFjaXR5OjB9LmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDdiZmZ9LmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3Vzfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JveC1zaGFkb3c6MCAwIDAgMXB4ICNmZmYsMCAwIDAgLjJyZW0gcmdiYSgwLDEyMywyNTUsLjI1KX0uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6YWN0aXZlfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYjNkN2ZmfS5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWx7Y29sb3I6IzZjNzU3ZH0uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZTllY2VmfS5jdXN0b20tY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjB9LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi4yNXJlbTtsZWZ0OjA7ZGlzcGxheTpibG9jazt3aWR0aDoxcmVtO2hlaWdodDoxcmVtO3BvaW50ZXItZXZlbnRzOm5vbmU7Y29udGVudDoiIjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZGVlMmU2fS5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOi4yNXJlbTtsZWZ0OjA7ZGlzcGxheTpibG9jazt3aWR0aDoxcmVtO2hlaWdodDoxcmVtO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6NTAlIDUwJX0uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JvcmRlci1yYWRpdXM6LjI1cmVtfS5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmfS5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRSIpfS5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGV+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmfS5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGV+LmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA0JyUzRSUzQ3BhdGggc3Ryb2tlPSclMjNmZmYnIGQ9J00wIDJoNCcvJTNFJTNDL3N2ZyUzRSIpfS5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTIzLDI1NSwuNSl9LmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZX4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwxMjMsMjU1LC41KX0uY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3Jle2JvcmRlci1yYWRpdXM6NTAlfS5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmfS5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNFJTNDL3N2ZyUzRSIpfS5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTIzLDI1NSwuNSl9LmN1c3RvbS1zZWxlY3R7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6Y2FsYygyLjI1cmVtICsgMnB4KTtwYWRkaW5nOi4zNzVyZW0gMS43NXJlbSAuMzc1cmVtIC43NXJlbTtsaW5lLWhlaWdodDoxLjU7Y29sb3I6IzQ5NTA1Nzt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7YmFja2dyb3VuZDojZmZmIHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA1JyUzRSUzQ3BhdGggZmlsbD0nJTIzMzQzYTQwJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM0UlM0Mvc3ZnJTNFIikgbm8tcmVwZWF0IHJpZ2h0IC43NXJlbSBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjhweCAxMHB4O2JvcmRlcjoxcHggc29saWQgI2NlZDRkYTtib3JkZXItcmFkaXVzOi4yNXJlbTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LmN1c3RvbS1zZWxlY3Q6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM4MGJkZmY7b3V0bGluZTowO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDVweCByZ2JhKDEyOCwxODksMjU1LC41KX0uY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVle2NvbG9yOiM0OTUwNTc7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwuY3VzdG9tLXNlbGVjdFtzaXplXTpub3QoW3NpemU9IjEiXSl7aGVpZ2h0OmF1dG87cGFkZGluZy1yaWdodDouNzVyZW07YmFja2dyb3VuZC1pbWFnZTpub25lfS5jdXN0b20tc2VsZWN0OmRpc2FibGVke2NvbG9yOiM2Yzc1N2Q7YmFja2dyb3VuZC1jb2xvcjojZTllY2VmfS5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5ke29wYWNpdHk6MH0uY3VzdG9tLXNlbGVjdC1zbXtoZWlnaHQ6Y2FsYygxLjgxMjVyZW0gKyAycHgpO3BhZGRpbmctdG9wOi4zNzVyZW07cGFkZGluZy1ib3R0b206LjM3NXJlbTtmb250LXNpemU6NzUlfS5jdXN0b20tc2VsZWN0LWxne2hlaWdodDpjYWxjKDIuODc1cmVtICsgMnB4KTtwYWRkaW5nLXRvcDouMzc1cmVtO3BhZGRpbmctYm90dG9tOi4zNzVyZW07Zm9udC1zaXplOjEyNSV9LmN1c3RvbS1maWxle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OmNhbGMoMi4yNXJlbSArIDJweCk7bWFyZ2luLWJvdHRvbTowfS5jdXN0b20tZmlsZS1pbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7d2lkdGg6MTAwJTtoZWlnaHQ6Y2FsYygyLjI1cmVtICsgMnB4KTttYXJnaW46MDtvcGFjaXR5OjB9LmN1c3RvbS1maWxlLWlucHV0OmZvY3Vzfi5jdXN0b20tZmlsZS1jb250cm9se2JvcmRlci1jb2xvcjojODBiZGZmO2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgwLDEyMywyNTUsLjI1KX0uY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXN+LmN1c3RvbS1maWxlLWNvbnRyb2w6OmJlZm9yZXtib3JkZXItY29sb3I6IzgwYmRmZn0uY3VzdG9tLWZpbGUtaW5wdXQ6bGFuZyhlbil+LmN1c3RvbS1maWxlLWxhYmVsOjphZnRlcntjb250ZW50OiJCcm93c2UifS5jdXN0b20tZmlsZS1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2xlZnQ6MDt6LWluZGV4OjE7aGVpZ2h0OmNhbGMoMi4yNXJlbSArIDJweCk7cGFkZGluZzouMzc1cmVtIC43NXJlbTtsaW5lLWhlaWdodDoxLjU7Y29sb3I6IzQ5NTA1NztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2VkNGRhO2JvcmRlci1yYWRpdXM6LjI1cmVtfS5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDt6LWluZGV4OjM7ZGlzcGxheTpibG9jaztoZWlnaHQ6Y2FsYyhjYWxjKDIuMjVyZW0gKyAycHgpIC0gMXB4ICogMik7cGFkZGluZzouMzc1cmVtIC43NXJlbTtsaW5lLWhlaWdodDoxLjU7Y29sb3I6IzQ5NTA1Nztjb250ZW50OiJCcm93c2UiO2JhY2tncm91bmQtY29sb3I6I2U5ZWNlZjtib3JkZXItbGVmdDoxcHggc29saWQgI2NlZDRkYTtib3JkZXItcmFkaXVzOjAgLjI1cmVtIC4yNXJlbSAwfS5uYXZ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWJvdHRvbTowO2xpc3Qtc3R5bGU6bm9uZX0ubmF2LWxpbmt7ZGlzcGxheTpibG9jaztwYWRkaW5nOi41cmVtIDFyZW19Lm5hdi1saW5rOmZvY3VzLC5uYXYtbGluazpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2LWxpbmsuZGlzYWJsZWR7Y29sb3I6IzZjNzU3ZH0ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RlZTJlNn0ubmF2LXRhYnMgLm5hdi1pdGVte21hcmdpbi1ib3R0b206LTFweH0ubmF2LXRhYnMgLm5hdi1saW5re2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMjVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjI1cmVtfS5uYXYtdGFicyAubmF2LWxpbms6Zm9jdXMsLm5hdi10YWJzIC5uYXYtbGluazpob3Zlcntib3JkZXItY29sb3I6I2U5ZWNlZiAjZTllY2VmICNkZWUyZTZ9Lm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZHtjb2xvcjojNmM3NTdkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5uYXYtdGFicyAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmssLm5hdi10YWJzIC5uYXYtbGluay5hY3RpdmV7Y29sb3I6IzQ5NTA1NztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNkZWUyZTYgI2RlZTJlNiAjZmZmfS5uYXYtdGFicyAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOi0xcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lm5hdi1waWxscyAubmF2LWxpbmt7Ym9yZGVyLXJhZGl1czouMjVyZW19Lm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLC5uYXYtcGlsbHMgLnNob3c+Lm5hdi1saW5re2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmfS5uYXYtZmlsbCAubmF2LWl0ZW17LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87dGV4dC1hbGlnbjpjZW50ZXJ9Lm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtey1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7ZmxleC1iYXNpczowOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO3RleHQtYWxpZ246Y2VudGVyfS50YWItY29udGVudD4udGFiLXBhbmV7ZGlzcGxheTpub25lfS50YWItY29udGVudD4uYWN0aXZle2Rpc3BsYXk6YmxvY2t9Lm5hdmJhcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6LjVyZW0gMXJlbX0ubmF2YmFyPi5jb250YWluZXIsLm5hdmJhcj4uY29udGFpbmVyLWZsdWlke2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6anVzdGlmeTstbXMtZmxleC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lm5hdmJhci1icmFuZHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDouMzEyNXJlbTtwYWRkaW5nLWJvdHRvbTouMzEyNXJlbTttYXJnaW4tcmlnaHQ6MXJlbTtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDppbmhlcml0O3doaXRlLXNwYWNlOm5vd3JhcH0ubmF2YmFyLWJyYW5kOmZvY3VzLC5uYXZiYXItYnJhbmQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm5hdmJhci1uYXZ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5uYXZiYXItbmF2IC5uYXYtbGlua3twYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9Lm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246c3RhdGljO2Zsb2F0Om5vbmV9Lm5hdmJhci10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5uYXZiYXItY29sbGFwc2V7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6MTAwJTtmbGV4LWJhc2lzOjEwMCU7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4LXBvc2l0aXZlOjE7ZmxleC1ncm93OjE7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9Lm5hdmJhci10b2dnbGVye3BhZGRpbmc6LjI1cmVtIC43NXJlbTtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOi4yNXJlbX0ubmF2YmFyLXRvZ2dsZXI6Zm9jdXMsLm5hdmJhci10b2dnbGVyOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn0ubmF2YmFyLXRvZ2dsZXItaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxLjVlbTtoZWlnaHQ6MS41ZW07dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZDpuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfUBtZWRpYSAobWF4LXdpZHRoOjU3NS45OHB4KXsubmF2YmFyLWV4cGFuZC1zbT4uY29udGFpbmVyLC5uYXZiYXItZXhwYW5kLXNtPi5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7Lm5hdmJhci1leHBhbmQtc217LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyBub3dyYXA7ZmxleC1mbG93OnJvdyBub3dyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHR7cmlnaHQ6MDtsZWZ0OmF1dG99Lm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6LjVyZW07cGFkZGluZy1sZWZ0Oi41cmVtfS5uYXZiYXItZXhwYW5kLXNtPi5jb250YWluZXIsLm5hdmJhci1leHBhbmQtc20+LmNvbnRhaW5lci1mbHVpZHstbXMtZmxleC13cmFwOm5vd3JhcDtmbGV4LXdyYXA6bm93cmFwfS5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudDstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2ZsZXgtYmFzaXM6YXV0b30ubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXJ7ZGlzcGxheTpub25lfS5uYXZiYXItZXhwYW5kLXNtIC5kcm9wdXAgLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCV9fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KXsubmF2YmFyLWV4cGFuZC1tZD4uY29udGFpbmVyLC5uYXZiYXItZXhwYW5kLW1kPi5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1leHBhbmQtbWR7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyBub3dyYXA7ZmxleC1mbG93OnJvdyBub3dyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHR7cmlnaHQ6MDtsZWZ0OmF1dG99Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6LjVyZW07cGFkZGluZy1sZWZ0Oi41cmVtfS5uYXZiYXItZXhwYW5kLW1kPi5jb250YWluZXIsLm5hdmJhci1leHBhbmQtbWQ+LmNvbnRhaW5lci1mbHVpZHstbXMtZmxleC13cmFwOm5vd3JhcDtmbGV4LXdyYXA6bm93cmFwfS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudDstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2ZsZXgtYmFzaXM6YXV0b30ubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLXRvZ2dsZXJ7ZGlzcGxheTpub25lfS5uYXZiYXItZXhwYW5kLW1kIC5kcm9wdXAgLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCV9fUBtZWRpYSAobWF4LXdpZHRoOjk5MS45OHB4KXsubmF2YmFyLWV4cGFuZC1sZz4uY29udGFpbmVyLC5uYXZiYXItZXhwYW5kLWxnPi5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7Lm5hdmJhci1leHBhbmQtbGd7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyBub3dyYXA7ZmxleC1mbG93OnJvdyBub3dyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHR7cmlnaHQ6MDtsZWZ0OmF1dG99Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6LjVyZW07cGFkZGluZy1sZWZ0Oi41cmVtfS5uYXZiYXItZXhwYW5kLWxnPi5jb250YWluZXIsLm5hdmJhci1leHBhbmQtbGc+LmNvbnRhaW5lci1mbHVpZHstbXMtZmxleC13cmFwOm5vd3JhcDtmbGV4LXdyYXA6bm93cmFwfS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudDstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2ZsZXgtYmFzaXM6YXV0b30ubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLXRvZ2dsZXJ7ZGlzcGxheTpub25lfS5uYXZiYXItZXhwYW5kLWxnIC5kcm9wdXAgLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCV9fUBtZWRpYSAobWF4LXdpZHRoOjExOTkuOThweCl7Lm5hdmJhci1leHBhbmQteGw+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZC14bD4uY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsubmF2YmFyLWV4cGFuZC14bHstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWZsb3c6cm93IG5vd3JhcDtmbGV4LWZsb3c6cm93IG5vd3JhcDstd2Via2l0LWJveC1wYWNrOnN0YXJ0Oy1tcy1mbGV4LXBhY2s6c3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXZ7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvd30ubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0ubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudS1yaWdodHtyaWdodDowO2xlZnQ6YXV0b30ubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmt7cGFkZGluZy1yaWdodDouNXJlbTtwYWRkaW5nLWxlZnQ6LjVyZW19Lm5hdmJhci1leHBhbmQteGw+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZC14bD4uY29udGFpbmVyLWZsdWlkey1tcy1mbGV4LXdyYXA6bm93cmFwO2ZsZXgtd3JhcDpub3dyYXB9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5Oi13ZWJraXQtYm94IWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94IWltcG9ydGFudDtkaXNwbGF5OmZsZXghaW1wb3J0YW50Oy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87ZmxleC1iYXNpczphdXRvfS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQteGwgLmRyb3B1cCAuZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MTAwJX19Lm5hdmJhci1leHBhbmR7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyBub3dyYXA7ZmxleC1mbG93OnJvdyBub3dyYXA7LXdlYmtpdC1ib3gtcGFjazpzdGFydDstbXMtZmxleC1wYWNrOnN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kPi5jb250YWluZXIsLm5hdmJhci1leHBhbmQ+LmNvbnRhaW5lci1mbHVpZHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXZ7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvd30ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudS1yaWdodHtyaWdodDowO2xlZnQ6YXV0b30ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmt7cGFkZGluZy1yaWdodDouNXJlbTtwYWRkaW5nLWxlZnQ6LjVyZW19Lm5hdmJhci1leHBhbmQ+LmNvbnRhaW5lciwubmF2YmFyLWV4cGFuZD4uY29udGFpbmVyLWZsdWlkey1tcy1mbGV4LXdyYXA6bm93cmFwO2ZsZXgtd3JhcDpub3dyYXB9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5Oi13ZWJraXQtYm94IWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94IWltcG9ydGFudDtkaXNwbGF5OmZsZXghaW1wb3J0YW50Oy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87ZmxleC1iYXNpczphdXRvfS5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQgLmRyb3B1cCAuZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MTAwJX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmR7Y29sb3I6cmdiYSgwLDAsMCwuOSl9Lm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmZvY3VzLC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpob3Zlcntjb2xvcjpyZ2JhKDAsMCwwLC45KX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGlua3tjb2xvcjpyZ2JhKDAsMCwwLC41KX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cywubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3Zlcntjb2xvcjpyZ2JhKDAsMCwwLC43KX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4zKX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5hY3RpdmU+Lm5hdi1saW5rLC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSwubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLnNob3c+Lm5hdi1saW5re2NvbG9yOnJnYmEoMCwwLDAsLjkpfS5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVye2NvbG9yOnJnYmEoMCwwLDAsLjUpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlci1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgwLCAwLCAwLCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRSIpfS5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0e2NvbG9yOnJnYmEoMCwwLDAsLjUpfS5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGF7Y29sb3I6cmdiYSgwLDAsMCwuOSl9Lm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpmb2N1cywubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmhvdmVye2NvbG9yOnJnYmEoMCwwLDAsLjkpfS5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5ke2NvbG9yOiNmZmZ9Lm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6Zm9jdXMsLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXJ7Y29sb3I6I2ZmZn0ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5re2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMsLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluazpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43NSl9Lm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yNSl9Lm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5hY3RpdmU+Lm5hdi1saW5rLC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlLC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3c+Lm5hdi1saW5re2NvbG9yOiNmZmZ9Lm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KTtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRSIpfS5uYXZiYXItZGFyayAubmF2YmFyLXRleHR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Lm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhe2NvbG9yOiNmZmZ9Lm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzLC5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3Zlcntjb2xvcjojZmZmfS5jYXJke3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjA7d29yZC13cmFwOmJyZWFrLXdvcmQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY2xpcDpib3JkZXItYm94O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTI1KTtib3JkZXItcmFkaXVzOi4yNXJlbX0uY2FyZD5ocnttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDowfS5jYXJkPi5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMjVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjI1cmVtfS5jYXJkPi5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4yNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4yNXJlbX0uY2FyZC1ib2R5ey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDEgYXV0bztmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MS4yNXJlbX0uY2FyZC10aXRsZXttYXJnaW4tYm90dG9tOi43NXJlbX0uY2FyZC1zdWJ0aXRsZXttYXJnaW4tdG9wOi0uMzc1cmVtO21hcmdpbi1ib3R0b206MH0uY2FyZC10ZXh0Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLWxpbms6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNhcmQtbGluaysuY2FyZC1saW5re21hcmdpbi1sZWZ0OjEuMjVyZW19LmNhcmQtaGVhZGVye3BhZGRpbmc6Ljc1cmVtIDEuMjVyZW07bWFyZ2luLWJvdHRvbTowO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDMpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyNSl9LmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6Y2FsYyguMjVyZW0gLSAxcHgpIGNhbGMoLjI1cmVtIC0gMXB4KSAwIDB9LmNhcmQtaGVhZGVyKy5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDowfS5jYXJkLWZvb3RlcntwYWRkaW5nOi43NXJlbSAxLjI1cmVtO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDMpO2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyNSl9LmNhcmQtZm9vdGVyOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowIDAgY2FsYyguMjVyZW0gLSAxcHgpIGNhbGMoLjI1cmVtIC0gMXB4KX0uY2FyZC1oZWFkZXItdGFic3ttYXJnaW4tcmlnaHQ6LS42MjVyZW07bWFyZ2luLWJvdHRvbTotLjc1cmVtO21hcmdpbi1sZWZ0Oi0uNjI1cmVtO2JvcmRlci1ib3R0b206MH0uY2FyZC1oZWFkZXItcGlsbHN7bWFyZ2luLXJpZ2h0Oi0uNjI1cmVtO21hcmdpbi1sZWZ0Oi0uNjI1cmVtfS5jYXJkLWltZy1vdmVybGF5e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3BhZGRpbmc6MS4yNXJlbX0uY2FyZC1pbWd7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOmNhbGMoLjI1cmVtIC0gMXB4KX0uY2FyZC1pbWctdG9we3dpZHRoOjEwMCU7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKC4yNXJlbSAtIDFweCk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyguMjVyZW0gLSAxcHgpfS5jYXJkLWltZy1ib3R0b217d2lkdGg6MTAwJTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKC4yNXJlbSAtIDFweCk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKC4yNXJlbSAtIDFweCl9LmNhcmQtZGVja3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jYXJkLWRlY2sgLmNhcmR7bWFyZ2luLWJvdHRvbToxNXB4fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2FyZC1kZWNrey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZmxvdzpyb3cgd3JhcDtmbGV4LWZsb3c6cm93IHdyYXA7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4fS5jYXJkLWRlY2sgLmNhcmR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIDAlO2ZsZXg6MSAwIDAlOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uO21hcmdpbi1yaWdodDoxNXB4O21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDoxNXB4fX0uY2FyZC1ncm91cHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jYXJkLWdyb3VwPi5jYXJke21hcmdpbi1ib3R0b206MTVweH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNhcmQtZ3JvdXB7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OnJvdyB3cmFwO2ZsZXgtZmxvdzpyb3cgd3JhcH0uY2FyZC1ncm91cD4uY2FyZHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIDAlO2ZsZXg6MSAwIDAlO21hcmdpbi1ib3R0b206MH0uY2FyZC1ncm91cD4uY2FyZCsuY2FyZHttYXJnaW4tbGVmdDowO2JvcmRlci1sZWZ0OjB9LmNhcmQtZ3JvdXA+LmNhcmQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5jYXJkLWdyb3VwPi5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWhlYWRlciwuY2FyZC1ncm91cD4uY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1pbWctdG9we2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmNhcmQtZ3JvdXA+LmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtZm9vdGVyLC5jYXJkLWdyb3VwPi5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b217Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpsYXN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmNhcmQtZ3JvdXA+LmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1oZWFkZXIsLmNhcmQtZ3JvdXA+LmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctdG9we2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWZvb3RlciwuY2FyZC1ncm91cD4uY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b217Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5jYXJkLWdyb3VwPi5jYXJkOm9ubHktY2hpbGR7Ym9yZGVyLXJhZGl1czouMjVyZW19LmNhcmQtZ3JvdXA+LmNhcmQ6b25seS1jaGlsZCAuY2FyZC1oZWFkZXIsLmNhcmQtZ3JvdXA+LmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9we2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjI1cmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4yNXJlbX0uY2FyZC1ncm91cD4uY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWZvb3RlciwuY2FyZC1ncm91cD4uY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b217Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjI1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjI1cmVtfS5jYXJkLWdyb3VwPi5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmNhcmQtZ3JvdXA+LmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWZvb3RlciwuY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaGVhZGVyLC5jYXJkLWdyb3VwPi5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tLC5jYXJkLWdyb3VwPi5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctdG9we2JvcmRlci1yYWRpdXM6MH19LmNhcmQtY29sdW1ucyAuY2FyZHttYXJnaW4tYm90dG9tOi43NXJlbX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNhcmQtY29sdW1uc3std2Via2l0LWNvbHVtbi1jb3VudDozOy1tb3otY29sdW1uLWNvdW50OjM7Y29sdW1uLWNvdW50OjM7LXdlYmtpdC1jb2x1bW4tZ2FwOjEuMjVyZW07LW1vei1jb2x1bW4tZ2FwOjEuMjVyZW07Y29sdW1uLWdhcDoxLjI1cmVtfS5jYXJkLWNvbHVtbnMgLmNhcmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX19LmJyZWFkY3J1bWJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7cGFkZGluZzouNzVyZW0gMXJlbTttYXJnaW4tYm90dG9tOjFyZW07bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2U5ZWNlZjtib3JkZXItcmFkaXVzOi4yNXJlbX0uYnJlYWRjcnVtYi1pdGVtKy5icmVhZGNydW1iLWl0ZW06OmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXJpZ2h0Oi41cmVtO3BhZGRpbmctbGVmdDouNXJlbTtjb2xvcjojNmM3NTdkO2NvbnRlbnQ6Ii8ifS5icmVhZGNydW1iLWl0ZW0rLmJyZWFkY3J1bWItaXRlbTpob3Zlcjo6YmVmb3Jle3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmJyZWFkY3J1bWItaXRlbSsuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmJyZWFkY3J1bWItaXRlbS5hY3RpdmV7Y29sb3I6IzZjNzU3ZH0ucGFnaW5hdGlvbntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOi4yNXJlbX0ucGFnZS1saW5re3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzouNXJlbSAuNzVyZW07bWFyZ2luLWxlZnQ6LTFweDtsaW5lLWhlaWdodDoxLjI1O2NvbG9yOiMwMDdiZmY7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RlZTJlNn0ucGFnZS1saW5rOmhvdmVye2NvbG9yOiMwMDU2YjM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZTllY2VmO2JvcmRlci1jb2xvcjojZGVlMmU2fS5wYWdlLWxpbms6Zm9jdXN7ei1pbmRleDoyO291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMCwxMjMsMjU1LC4yNSl9LnBhZ2UtbGluazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn0ucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmt7bWFyZ2luLWxlZnQ6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4yNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4yNXJlbX0ucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGlua3tib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMjVyZW07Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjI1cmVtfS5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmt7ei1pbmRleDoxO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmO2JvcmRlci1jb2xvcjojMDA3YmZmfS5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGlua3tjb2xvcjojNmM3NTdkO3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmF1dG87YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZGVlMmU2fS5wYWdpbmF0aW9uLWxnIC5wYWdlLWxpbmt7cGFkZGluZzouNzVyZW0gMS41cmVtO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNX0ucGFnaW5hdGlvbi1sZyAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmt7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouM3JlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4zcmVtfS5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5re2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4zcmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4zcmVtfS5wYWdpbmF0aW9uLXNtIC5wYWdlLWxpbmt7cGFkZGluZzouMjVyZW0gLjVyZW07Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS41fS5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGlua3tib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4ycmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjJyZW19LnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmt7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjJyZW07Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjJyZW19LmJhZGdle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6LjI1ZW0gLjRlbTtmb250LXNpemU6NzUlO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtib3JkZXItcmFkaXVzOi4yNXJlbX0uYmFkZ2U6ZW1wdHl7ZGlzcGxheTpub25lfS5idG4gLmJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMXB4fS5iYWRnZS1waWxse3BhZGRpbmctcmlnaHQ6LjZlbTtwYWRkaW5nLWxlZnQ6LjZlbTtib3JkZXItcmFkaXVzOjEwcmVtfS5iYWRnZS1wcmltYXJ5e2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDA3YmZmfS5iYWRnZS1wcmltYXJ5W2hyZWZdOmZvY3VzLC5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMDA2MmNjfS5iYWRnZS1zZWNvbmRhcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM2Yzc1N2R9LmJhZGdlLXNlY29uZGFyeVtocmVmXTpmb2N1cywuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojNTQ1YjYyfS5iYWRnZS1zdWNjZXNze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjhhNzQ1fS5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzLC5iYWRnZS1zdWNjZXNzW2hyZWZdOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMWU3ZTM0fS5iYWRnZS1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMTdhMmI4fS5iYWRnZS1pbmZvW2hyZWZdOmZvY3VzLC5iYWRnZS1pbmZvW2hyZWZdOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMTE3YThifS5iYWRnZS13YXJuaW5ne2NvbG9yOiMyMTI1Mjk7YmFja2dyb3VuZC1jb2xvcjojZmZjMTA3fS5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3VzLC5iYWRnZS13YXJuaW5nW2hyZWZdOmhvdmVye2NvbG9yOiMyMTI1Mjk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZDM5ZTAwfS5iYWRnZS1kYW5nZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkYzM1NDV9LmJhZGdlLWRhbmdlcltocmVmXTpmb2N1cywuYmFkZ2UtZGFuZ2VyW2hyZWZdOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojYmQyMTMwfS5iYWRnZS1saWdodHtjb2xvcjojMjEyNTI5O2JhY2tncm91bmQtY29sb3I6I2Y4ZjlmYX0uYmFkZ2UtbGlnaHRbaHJlZl06Zm9jdXMsLmJhZGdlLWxpZ2h0W2hyZWZdOmhvdmVye2NvbG9yOiMyMTI1Mjk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZGFlMGU1fS5iYWRnZS1kYXJre2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwfS5iYWRnZS1kYXJrW2hyZWZdOmZvY3VzLC5iYWRnZS1kYXJrW2hyZWZdOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMWQyMTI0fS5qdW1ib3Ryb257cGFkZGluZzoycmVtIDFyZW07bWFyZ2luLWJvdHRvbToycmVtO2JhY2tncm91bmQtY29sb3I6I2U5ZWNlZjtib3JkZXItcmFkaXVzOi4zcmVtfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuanVtYm90cm9ue3BhZGRpbmc6NHJlbSAycmVtfX0uanVtYm90cm9uLWZsdWlke3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MDtib3JkZXItcmFkaXVzOjB9LmFsZXJ0e3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6Ljc1cmVtIDEuMjVyZW07bWFyZ2luLWJvdHRvbToxcmVtO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czouMjVyZW19LmFsZXJ0LWhlYWRpbmd7Y29sb3I6aW5oZXJpdH0uYWxlcnQtbGlua3tmb250LXdlaWdodDo3MDB9LmFsZXJ0LWRpc21pc3NpYmxle3BhZGRpbmctcmlnaHQ6NHJlbX0uYWxlcnQtZGlzbWlzc2libGUgLmNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7cGFkZGluZzouNzVyZW0gMS4yNXJlbTtjb2xvcjppbmhlcml0fS5hbGVydC1wcmltYXJ5e2NvbG9yOiMwMDQwODU7YmFja2dyb3VuZC1jb2xvcjojY2NlNWZmO2JvcmRlci1jb2xvcjojYjhkYWZmfS5hbGVydC1wcmltYXJ5IGhye2JvcmRlci10b3AtY29sb3I6IzlmY2RmZn0uYWxlcnQtcHJpbWFyeSAuYWxlcnQtbGlua3tjb2xvcjojMDAyNzUyfS5hbGVydC1zZWNvbmRhcnl7Y29sb3I6IzM4M2Q0MTtiYWNrZ3JvdW5kLWNvbG9yOiNlMmUzZTU7Ym9yZGVyLWNvbG9yOiNkNmQ4ZGJ9LmFsZXJ0LXNlY29uZGFyeSBocntib3JkZXItdG9wLWNvbG9yOiNjOGNiY2Z9LmFsZXJ0LXNlY29uZGFyeSAuYWxlcnQtbGlua3tjb2xvcjojMjAyMzI2fS5hbGVydC1zdWNjZXNze2NvbG9yOiMxNTU3MjQ7YmFja2dyb3VuZC1jb2xvcjojZDRlZGRhO2JvcmRlci1jb2xvcjojYzNlNmNifS5hbGVydC1zdWNjZXNzIGhye2JvcmRlci10b3AtY29sb3I6I2IxZGZiYn0uYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGlua3tjb2xvcjojMGIyZTEzfS5hbGVydC1pbmZve2NvbG9yOiMwYzU0NjA7YmFja2dyb3VuZC1jb2xvcjojZDFlY2YxO2JvcmRlci1jb2xvcjojYmVlNWVifS5hbGVydC1pbmZvIGhye2JvcmRlci10b3AtY29sb3I6I2FiZGRlNX0uYWxlcnQtaW5mbyAuYWxlcnQtbGlua3tjb2xvcjojMDYyYzMzfS5hbGVydC13YXJuaW5ne2NvbG9yOiM4NTY0MDQ7YmFja2dyb3VuZC1jb2xvcjojZmZmM2NkO2JvcmRlci1jb2xvcjojZmZlZWJhfS5hbGVydC13YXJuaW5nIGhye2JvcmRlci10b3AtY29sb3I6I2ZmZThhMX0uYWxlcnQtd2FybmluZyAuYWxlcnQtbGlua3tjb2xvcjojNTMzZjAzfS5hbGVydC1kYW5nZXJ7Y29sb3I6IzcyMWMyNDtiYWNrZ3JvdW5kLWNvbG9yOiNmOGQ3ZGE7Ym9yZGVyLWNvbG9yOiNmNWM2Y2J9LmFsZXJ0LWRhbmdlciBocntib3JkZXItdG9wLWNvbG9yOiNmMWIwYjd9LmFsZXJ0LWRhbmdlciAuYWxlcnQtbGlua3tjb2xvcjojNDkxMjE3fS5hbGVydC1saWdodHtjb2xvcjojODE4MTgyO2JhY2tncm91bmQtY29sb3I6I2ZlZmVmZTtib3JkZXItY29sb3I6I2ZkZmRmZX0uYWxlcnQtbGlnaHQgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojZWNlY2Y2fS5hbGVydC1saWdodCAuYWxlcnQtbGlua3tjb2xvcjojNjg2ODY4fS5hbGVydC1kYXJre2NvbG9yOiMxYjFlMjE7YmFja2dyb3VuZC1jb2xvcjojZDZkOGQ5O2JvcmRlci1jb2xvcjojYzZjOGNhfS5hbGVydC1kYXJrIGhye2JvcmRlci10b3AtY29sb3I6I2I5YmJiZX0uYWxlcnQtZGFyayAuYWxlcnQtbGlua3tjb2xvcjojMDQwNTA1fUAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246MXJlbSAwfXRve2JhY2tncm91bmQtcG9zaXRpb246MCAwfX1Aa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjoxcmVtIDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9fS5wcm9ncmVzc3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxcmVtO292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6Ljc1cmVtO2JhY2tncm91bmQtY29sb3I6I2U5ZWNlZjtib3JkZXItcmFkaXVzOi4yNXJlbX0ucHJvZ3Jlc3MtYmFye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IzAwN2JmZjt0cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlfS5wcm9ncmVzcy1iYXItc3RyaXBlZHtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1zaXplOjFyZW0gMXJlbX0ucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkey13ZWJraXQtYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlfS5tZWRpYXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lm1lZGlhLWJvZHl7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxfS5saXN0LWdyb3Vwe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWJvdHRvbTowfS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9ue3dpZHRoOjEwMCU7Y29sb3I6IzQ5NTA1Nzt0ZXh0LWFsaWduOmluaGVyaXR9Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXJ7Y29sb3I6IzQ5NTA1Nzt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY5ZmF9Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246YWN0aXZle2NvbG9yOiMyMTI1Mjk7YmFja2dyb3VuZC1jb2xvcjojZTllY2VmfS5saXN0LWdyb3VwLWl0ZW17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nOi43NXJlbSAxLjI1cmVtO21hcmdpbi1ib3R0b206LTFweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMjUpfS5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMjVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjI1cmVtfS5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjI1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjI1cmVtfS5saXN0LWdyb3VwLWl0ZW06Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbTpob3Zlcnt6LWluZGV4OjE7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwubGlzdC1ncm91cC1pdGVtOmRpc2FibGVke2NvbG9yOiM2Yzc1N2Q7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle3otaW5kZXg6Mjtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwN2JmZjtib3JkZXItY29sb3I6IzAwN2JmZn0ubGlzdC1ncm91cC1mbHVzaCAubGlzdC1ncm91cC1pdGVte2JvcmRlci1yaWdodDowO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJhZGl1czowfS5saXN0LWdyb3VwLWZsdXNoOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDowfS5saXN0LWdyb3VwLWZsdXNoOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MH0ubGlzdC1ncm91cC1pdGVtLXByaW1hcnl7Y29sb3I6IzAwNDA4NTtiYWNrZ3JvdW5kLWNvbG9yOiNiOGRhZmZ9Lmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXJ7Y29sb3I6IzAwNDA4NTtiYWNrZ3JvdW5kLWNvbG9yOiM5ZmNkZmZ9Lmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDA0MDg1O2JvcmRlci1jb2xvcjojMDA0MDg1fS5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5e2NvbG9yOiMzODNkNDE7YmFja2dyb3VuZC1jb2xvcjojZDZkOGRifS5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3Zlcntjb2xvcjojMzgzZDQxO2JhY2tncm91bmQtY29sb3I6I2M4Y2JjZn0ubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzM4M2Q0MTtib3JkZXItY29sb3I6IzM4M2Q0MX0ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3N7Y29sb3I6IzE1NTcyNDtiYWNrZ3JvdW5kLWNvbG9yOiNjM2U2Y2J9Lmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXJ7Y29sb3I6IzE1NTcyNDtiYWNrZ3JvdW5kLWNvbG9yOiNiMWRmYmJ9Lmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMTU1NzI0O2JvcmRlci1jb2xvcjojMTU1NzI0fS5saXN0LWdyb3VwLWl0ZW0taW5mb3tjb2xvcjojMGM1NDYwO2JhY2tncm91bmQtY29sb3I6I2JlZTVlYn0ubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cywubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3Zlcntjb2xvcjojMGM1NDYwO2JhY2tncm91bmQtY29sb3I6I2FiZGRlNX0ubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwYzU0NjA7Ym9yZGVyLWNvbG9yOiMwYzU0NjB9Lmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5ne2NvbG9yOiM4NTY0MDQ7YmFja2dyb3VuZC1jb2xvcjojZmZlZWJhfS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzLC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVye2NvbG9yOiM4NTY0MDQ7YmFja2dyb3VuZC1jb2xvcjojZmZlOGExfS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6Izg1NjQwNDtib3JkZXItY29sb3I6Izg1NjQwNH0ubGlzdC1ncm91cC1pdGVtLWRhbmdlcntjb2xvcjojNzIxYzI0O2JhY2tncm91bmQtY29sb3I6I2Y1YzZjYn0ubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzLC5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXJ7Y29sb3I6IzcyMWMyNDtiYWNrZ3JvdW5kLWNvbG9yOiNmMWIwYjd9Lmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM3MjFjMjQ7Ym9yZGVyLWNvbG9yOiM3MjFjMjR9Lmxpc3QtZ3JvdXAtaXRlbS1saWdodHtjb2xvcjojODE4MTgyO2JhY2tncm91bmQtY29sb3I6I2ZkZmRmZX0ubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVye2NvbG9yOiM4MTgxODI7YmFja2dyb3VuZC1jb2xvcjojZWNlY2Y2fS5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM4MTgxODI7Ym9yZGVyLWNvbG9yOiM4MTgxODJ9Lmxpc3QtZ3JvdXAtaXRlbS1kYXJre2NvbG9yOiMxYjFlMjE7YmFja2dyb3VuZC1jb2xvcjojYzZjOGNhfS5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzLC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVye2NvbG9yOiMxYjFlMjE7YmFja2dyb3VuZC1jb2xvcjojYjliYmJlfS5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzFiMWUyMTtib3JkZXItY29sb3I6IzFiMWUyMX0uY2xvc2V7ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjEuNXJlbTtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjojMDAwO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi41fS5jbG9zZTpmb2N1cywuY2xvc2U6aG92ZXJ7Y29sb3I6IzAwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtvcGFjaXR5Oi43NX0uY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9YnV0dG9uLmNsb3Nle3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tb2RhbC1vcGVue292ZXJmbG93OmhpZGRlbn0ubW9kYWx7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxMDUwO2Rpc3BsYXk6bm9uZTtvdmVyZmxvdzpoaWRkZW47b3V0bGluZTowfS5tb2RhbC1vcGVuIC5tb2RhbHtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG99Lm1vZGFsLWRpYWxvZ3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDphdXRvO21hcmdpbjouNXJlbTtwb2ludGVyLWV2ZW50czpub25lfS5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2d7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlLW91dCwtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yNSUpfS5tb2RhbC5zaG93IC5tb2RhbC1kaWFsb2d7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfS5tb2RhbC1kaWFsb2ctY2VudGVyZWR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OmNhbGMoMTAwJSAtICguNXJlbSAqIDIpKX0ubW9kYWwtY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCU7cG9pbnRlci1ldmVudHM6YXV0bztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMik7Ym9yZGVyLXJhZGl1czouM3JlbTtvdXRsaW5lOjB9Lm1vZGFsLWJhY2tkcm9we3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTA0MDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1vZGFsLWJhY2tkcm9wLmZhZGV7b3BhY2l0eTowfS5tb2RhbC1iYWNrZHJvcC5zaG93e29wYWNpdHk6LjV9Lm1vZGFsLWhlYWRlcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjFyZW07Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U5ZWNlZjtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4zcmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4zcmVtfS5tb2RhbC1oZWFkZXIgLmNsb3Nle3BhZGRpbmc6MXJlbTttYXJnaW46LTFyZW0gLTFyZW0gLTFyZW0gYXV0b30ubW9kYWwtdGl0bGV7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OjEuNX0ubW9kYWwtYm9keXtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bztwYWRkaW5nOjFyZW19Lm1vZGFsLWZvb3RlcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjFyZW07Ym9yZGVyLXRvcDoxcHggc29saWQgI2U5ZWNlZn0ubW9kYWwtZm9vdGVyPjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDouMjVyZW19Lm1vZGFsLWZvb3Rlcj46bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6LjI1cmVtfS5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTk5OTlweDt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OnNjcm9sbH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7Lm1vZGFsLWRpYWxvZ3ttYXgtd2lkdGg6NTAwcHg7bWFyZ2luOjEuNzVyZW0gYXV0b30ubW9kYWwtZGlhbG9nLWNlbnRlcmVke21pbi1oZWlnaHQ6Y2FsYygxMDAlIC0gKDEuNzVyZW0gKiAyKSl9Lm1vZGFsLXNte21heC13aWR0aDozMDBweH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5tb2RhbC1sZ3ttYXgtd2lkdGg6ODAwcHh9fS50b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3MDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzpub25lO3RleHQtdHJhbnNmb3JtOm5vbmU7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO2xpbmUtYnJlYWs6YXV0bztmb250LXNpemU6Ljg3NXJlbTt3b3JkLXdyYXA6YnJlYWstd29yZDtvcGFjaXR5OjB9LnRvb2x0aXAuc2hvd3tvcGFjaXR5Oi45fS50b29sdGlwIC5hcnJvd3twb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOi44cmVtO2hlaWdodDouNHJlbX0udG9vbHRpcCAuYXJyb3c6OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWR9LmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49dG9wXSwuYnMtdG9vbHRpcC10b3B7cGFkZGluZzouNHJlbSAwfS5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePXRvcF0gLmFycm93LC5icy10b29sdGlwLXRvcCAuYXJyb3d7Ym90dG9tOjB9LmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49dG9wXSAuYXJyb3c6OmJlZm9yZSwuYnMtdG9vbHRpcC10b3AgLmFycm93OjpiZWZvcmV7dG9wOjA7Ym9yZGVyLXdpZHRoOi40cmVtIC40cmVtIDA7Ym9yZGVyLXRvcC1jb2xvcjojMDAwfS5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePXJpZ2h0XSwuYnMtdG9vbHRpcC1yaWdodHtwYWRkaW5nOjAgLjRyZW19LmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49cmlnaHRdIC5hcnJvdywuYnMtdG9vbHRpcC1yaWdodCAuYXJyb3d7bGVmdDowO3dpZHRoOi40cmVtO2hlaWdodDouOHJlbX0uYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1yaWdodF0gLmFycm93OjpiZWZvcmUsLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93OjpiZWZvcmV7cmlnaHQ6MDtib3JkZXItd2lkdGg6LjRyZW0gLjRyZW0gLjRyZW0gMDtib3JkZXItcmlnaHQtY29sb3I6IzAwMH0uYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1ib3R0b21dLC5icy10b29sdGlwLWJvdHRvbXtwYWRkaW5nOi40cmVtIDB9LmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49Ym90dG9tXSAuYXJyb3csLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvd3t0b3A6MH0uYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5hcnJvdzo6YmVmb3JlLC5icy10b29sdGlwLWJvdHRvbSAuYXJyb3c6OmJlZm9yZXtib3R0b206MDtib3JkZXItd2lkdGg6MCAuNHJlbSAuNHJlbTtib3JkZXItYm90dG9tLWNvbG9yOiMwMDB9LmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49bGVmdF0sLmJzLXRvb2x0aXAtbGVmdHtwYWRkaW5nOjAgLjRyZW19LmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49bGVmdF0gLmFycm93LC5icy10b29sdGlwLWxlZnQgLmFycm93e3JpZ2h0OjA7d2lkdGg6LjRyZW07aGVpZ2h0Oi44cmVtfS5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePWxlZnRdIC5hcnJvdzo6YmVmb3JlLC5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmV7bGVmdDowO2JvcmRlci13aWR0aDouNHJlbSAwIC40cmVtIC40cmVtO2JvcmRlci1sZWZ0LWNvbG9yOiMwMDB9LnRvb2x0aXAtaW5uZXJ7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6LjI1cmVtIC41cmVtO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6LjI1cmVtfS5wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwNjA7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6Mjc2cHg7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sIkhlbHZldGljYSBOZXVlIixBcmlhbCxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41O3RleHQtYWxpZ246bGVmdDt0ZXh0LWFsaWduOnN0YXJ0O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93Om5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZTtsZXR0ZXItc3BhY2luZzpub3JtYWw7d29yZC1icmVhazpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3aGl0ZS1zcGFjZTpub3JtYWw7bGluZS1icmVhazphdXRvO2ZvbnQtc2l6ZTouODc1cmVtO3dvcmQtd3JhcDpicmVhay13b3JkO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmFkaXVzOi4zcmVtfS5wb3BvdmVyIC5hcnJvd3twb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjFyZW07aGVpZ2h0Oi41cmVtO21hcmdpbjowIC4zcmVtfS5wb3BvdmVyIC5hcnJvdzo6YWZ0ZXIsLnBvcG92ZXIgLmFycm93OjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztjb250ZW50OiIiO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWR9LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49dG9wXSwuYnMtcG9wb3Zlci10b3B7bWFyZ2luLWJvdHRvbTouNXJlbX0uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj10b3BdIC5hcnJvdywuYnMtcG9wb3Zlci10b3AgLmFycm93e2JvdHRvbTpjYWxjKCguNXJlbSArIDFweCkgKiAtMSl9LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49dG9wXSAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePXRvcF0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3Jle2JvcmRlci13aWR0aDouNXJlbSAuNXJlbSAwfS5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePXRvcF0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3Jle2JvdHRvbTowO2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMjUpfS5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePXRvcF0gLmFycm93OjphZnRlciwuYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlcntib3R0b206MXB4O2JvcmRlci10b3AtY29sb3I6I2ZmZn0uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1yaWdodF0sLmJzLXBvcG92ZXItcmlnaHR7bWFyZ2luLWxlZnQ6LjVyZW19LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49cmlnaHRdIC5hcnJvdywuYnMtcG9wb3Zlci1yaWdodCAuYXJyb3d7bGVmdDpjYWxjKCguNXJlbSArIDFweCkgKiAtMSk7d2lkdGg6LjVyZW07aGVpZ2h0OjFyZW07bWFyZ2luOi4zcmVtIDB9LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49cmlnaHRdIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49cmlnaHRdIC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmV7Ym9yZGVyLXdpZHRoOi41cmVtIC41cmVtIC41cmVtIDB9LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49cmlnaHRdIC5hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3Jle2xlZnQ6MDtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMjUpfS5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePXJpZ2h0XSAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXJ7bGVmdDoxcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmZ9LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49Ym90dG9tXSwuYnMtcG9wb3Zlci1ib3R0b217bWFyZ2luLXRvcDouNXJlbX0uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5hcnJvdywuYnMtcG9wb3Zlci1ib3R0b20gLmFycm93e3RvcDpjYWxjKCguNXJlbSArIDFweCkgKiAtMSl9LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49Ym90dG9tXSAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePWJvdHRvbV0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3Jle2JvcmRlci13aWR0aDowIC41cmVtIC41cmVtIC41cmVtfS5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePWJvdHRvbV0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3Jle3RvcDowO2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMjUpfS5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePWJvdHRvbV0gLmFycm93OjphZnRlciwuYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjphZnRlcnt0b3A6MXB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLC5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjUwJTtkaXNwbGF5OmJsb2NrO3dpZHRoOjFyZW07bWFyZ2luLWxlZnQ6LS41cmVtO2NvbnRlbnQ6IiI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Y3ZjdmN30uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1sZWZ0XSwuYnMtcG9wb3Zlci1sZWZ0e21hcmdpbi1yaWdodDouNXJlbX0uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1sZWZ0XSAuYXJyb3csLmJzLXBvcG92ZXItbGVmdCAuYXJyb3d7cmlnaHQ6Y2FsYygoLjVyZW0gKyAxcHgpICogLTEpO3dpZHRoOi41cmVtO2hlaWdodDoxcmVtO21hcmdpbjouM3JlbSAwfS5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePWxlZnRdIC5hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49bGVmdF0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWxlZnQgLmFycm93OjpiZWZvcmV7Ym9yZGVyLXdpZHRoOi41cmVtIDAgLjVyZW0gLjVyZW19LmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49bGVmdF0gLmFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZXtyaWdodDowO2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjI1KX0uYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1sZWZ0XSAuYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlcntyaWdodDoxcHg7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZn0ucG9wb3Zlci1oZWFkZXJ7cGFkZGluZzouNXJlbSAuNzVyZW07bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxcmVtO2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKC4zcmVtIC0gMXB4KTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czpjYWxjKC4zcmVtIC0gMXB4KX0ucG9wb3Zlci1oZWFkZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5wb3BvdmVyLWJvZHl7cGFkZGluZzouNXJlbSAuNzVyZW07Y29sb3I6IzIxMjUyOX0uY2Fyb3VzZWx7cG9zaXRpb246cmVsYXRpdmV9LmNhcm91c2VsLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5jYXJvdXNlbC1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2U7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2U7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2UsLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2U7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LXBlcnNwZWN0aXZlOjEwMDBweDtwZXJzcGVjdGl2ZToxMDAwcHh9LmNhcm91c2VsLWl0ZW0tbmV4dCwuY2Fyb3VzZWwtaXRlbS1wcmV2LC5jYXJvdXNlbC1pdGVtLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfS5jYXJvdXNlbC1pdGVtLW5leHQsLmNhcm91c2VsLWl0ZW0tcHJldntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0uY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX1Ac3VwcG9ydHMgKCgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCkpey5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19LmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0LC5jYXJvdXNlbC1pdGVtLW5leHR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX1Ac3VwcG9ydHMgKCgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCkpey5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCwuY2Fyb3VzZWwtaXRlbS1uZXh0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApfX0uYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwuY2Fyb3VzZWwtaXRlbS1wcmV2ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX1Ac3VwcG9ydHMgKCgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCkpey5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LC5jYXJvdXNlbC1pdGVtLXByZXZ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKX19LmNhcm91c2VsLWNvbnRyb2wtbmV4dCwuY2Fyb3VzZWwtY29udHJvbC1wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxNSU7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtvcGFjaXR5Oi41fS5jYXJvdXNlbC1jb250cm9sLW5leHQ6Zm9jdXMsLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpob3ZlciwuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLC5jYXJvdXNlbC1jb250cm9sLXByZXY6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtvdXRsaW5lOjA7b3BhY2l0eTouOX0uY2Fyb3VzZWwtY29udHJvbC1wcmV2e2xlZnQ6MH0uY2Fyb3VzZWwtY29udHJvbC1uZXh0e3JpZ2h0OjB9LmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uLC5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41eicvJTNFJTNDL3N2ZyUzRSIpfS5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNMi43NSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFIil9LmNhcm91c2VsLWluZGljYXRvcnN7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MTBweDtsZWZ0OjA7ei1pbmRleDoxNTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZy1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjE1JTttYXJnaW4tbGVmdDoxNSU7bGlzdC1zdHlsZTpub25lfS5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpe3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDEgYXV0bztmbGV4OjAgMSBhdXRvO3dpZHRoOjMwcHg7aGVpZ2h0OjNweDttYXJnaW4tcmlnaHQ6M3B4O21hcmdpbi1sZWZ0OjNweDt0ZXh0LWluZGVudDotOTk5cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaTo6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTBweDtsZWZ0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTBweDtjb250ZW50OiIifS5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTEwcHg7bGVmdDowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwcHg7Y29udGVudDoiIn0uY2Fyb3VzZWwtaW5kaWNhdG9ycyAuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2ZmZn0uY2Fyb3VzZWwtY2FwdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxNSU7Ym90dG9tOjIwcHg7bGVmdDoxNSU7ei1pbmRleDoxMDtwYWRkaW5nLXRvcDoyMHB4O3BhZGRpbmctYm90dG9tOjIwcHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcn0uYWxpZ24tYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi10b3B7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0uYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnR9LmFsaWduLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b20haW1wb3J0YW50fS5hbGlnbi10ZXh0LWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbSFpbXBvcnRhbnR9LmFsaWduLXRleHQtdG9we3ZlcnRpY2FsLWFsaWduOnRleHQtdG9wIWltcG9ydGFudH0uYmctcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDdiZmYhaW1wb3J0YW50fWEuYmctcHJpbWFyeTpmb2N1cyxhLmJnLXByaW1hcnk6aG92ZXIsYnV0dG9uLmJnLXByaW1hcnk6Zm9jdXMsYnV0dG9uLmJnLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA2MmNjIWltcG9ydGFudH0uYmctc2Vjb25kYXJ5e2JhY2tncm91bmQtY29sb3I6IzZjNzU3ZCFpbXBvcnRhbnR9YS5iZy1zZWNvbmRhcnk6Zm9jdXMsYS5iZy1zZWNvbmRhcnk6aG92ZXIsYnV0dG9uLmJnLXNlY29uZGFyeTpmb2N1cyxidXR0b24uYmctc2Vjb25kYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzU0NWI2MiFpbXBvcnRhbnR9LmJnLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojMjhhNzQ1IWltcG9ydGFudH1hLmJnLXN1Y2Nlc3M6Zm9jdXMsYS5iZy1zdWNjZXNzOmhvdmVyLGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzLGJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzFlN2UzNCFpbXBvcnRhbnR9LmJnLWluZm97YmFja2dyb3VuZC1jb2xvcjojMTdhMmI4IWltcG9ydGFudH1hLmJnLWluZm86Zm9jdXMsYS5iZy1pbmZvOmhvdmVyLGJ1dHRvbi5iZy1pbmZvOmZvY3VzLGJ1dHRvbi5iZy1pbmZvOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzExN2E4YiFpbXBvcnRhbnR9LmJnLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmZjMTA3IWltcG9ydGFudH1hLmJnLXdhcm5pbmc6Zm9jdXMsYS5iZy13YXJuaW5nOmhvdmVyLGJ1dHRvbi5iZy13YXJuaW5nOmZvY3VzLGJ1dHRvbi5iZy13YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2QzOWUwMCFpbXBvcnRhbnR9LmJnLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNkYzM1NDUhaW1wb3J0YW50fWEuYmctZGFuZ2VyOmZvY3VzLGEuYmctZGFuZ2VyOmhvdmVyLGJ1dHRvbi5iZy1kYW5nZXI6Zm9jdXMsYnV0dG9uLmJnLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNiZDIxMzAhaW1wb3J0YW50fS5iZy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY5ZmEhaW1wb3J0YW50fWEuYmctbGlnaHQ6Zm9jdXMsYS5iZy1saWdodDpob3ZlcixidXR0b24uYmctbGlnaHQ6Zm9jdXMsYnV0dG9uLmJnLWxpZ2h0OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2RhZTBlNSFpbXBvcnRhbnR9LmJnLWRhcmt7YmFja2dyb3VuZC1jb2xvcjojMzQzYTQwIWltcG9ydGFudH1hLmJnLWRhcms6Zm9jdXMsYS5iZy1kYXJrOmhvdmVyLGJ1dHRvbi5iZy1kYXJrOmZvY3VzLGJ1dHRvbi5iZy1kYXJrOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzFkMjEyNCFpbXBvcnRhbnR9LmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnR9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS5ib3JkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZGVlMmU2IWltcG9ydGFudH0uYm9yZGVyLXRvcHtib3JkZXItdG9wOjFweCBzb2xpZCAjZGVlMmU2IWltcG9ydGFudH0uYm9yZGVyLXJpZ2h0e2JvcmRlci1yaWdodDoxcHggc29saWQgI2RlZTJlNiFpbXBvcnRhbnR9LmJvcmRlci1ib3R0b217Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RlZTJlNiFpbXBvcnRhbnR9LmJvcmRlci1sZWZ0e2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGVlMmU2IWltcG9ydGFudH0uYm9yZGVyLTB7Ym9yZGVyOjAhaW1wb3J0YW50fS5ib3JkZXItdG9wLTB7Ym9yZGVyLXRvcDowIWltcG9ydGFudH0uYm9yZGVyLXJpZ2h0LTB7Ym9yZGVyLXJpZ2h0OjAhaW1wb3J0YW50fS5ib3JkZXItYm90dG9tLTB7Ym9yZGVyLWJvdHRvbTowIWltcG9ydGFudH0uYm9yZGVyLWxlZnQtMHtib3JkZXItbGVmdDowIWltcG9ydGFudH0uYm9yZGVyLXByaW1hcnl7Ym9yZGVyLWNvbG9yOiMwMDdiZmYhaW1wb3J0YW50fS5ib3JkZXItc2Vjb25kYXJ5e2JvcmRlci1jb2xvcjojNmM3NTdkIWltcG9ydGFudH0uYm9yZGVyLXN1Y2Nlc3N7Ym9yZGVyLWNvbG9yOiMyOGE3NDUhaW1wb3J0YW50fS5ib3JkZXItaW5mb3tib3JkZXItY29sb3I6IzE3YTJiOCFpbXBvcnRhbnR9LmJvcmRlci13YXJuaW5ne2JvcmRlci1jb2xvcjojZmZjMTA3IWltcG9ydGFudH0uYm9yZGVyLWRhbmdlcntib3JkZXItY29sb3I6I2RjMzU0NSFpbXBvcnRhbnR9LmJvcmRlci1saWdodHtib3JkZXItY29sb3I6I2Y4ZjlmYSFpbXBvcnRhbnR9LmJvcmRlci1kYXJre2JvcmRlci1jb2xvcjojMzQzYTQwIWltcG9ydGFudH0uYm9yZGVyLXdoaXRle2JvcmRlci1jb2xvcjojZmZmIWltcG9ydGFudH0ucm91bmRlZHtib3JkZXItcmFkaXVzOi4yNXJlbSFpbXBvcnRhbnR9LnJvdW5kZWQtdG9we2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjI1cmVtIWltcG9ydGFudDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMjVyZW0haW1wb3J0YW50fS5yb3VuZGVkLXJpZ2h0e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4yNXJlbSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjI1cmVtIWltcG9ydGFudH0ucm91bmRlZC1ib3R0b217Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjI1cmVtIWltcG9ydGFudDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4yNXJlbSFpbXBvcnRhbnR9LnJvdW5kZWQtbGVmdHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4yNXJlbSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMjVyZW0haW1wb3J0YW50fS5yb3VuZGVkLWNpcmNsZXtib3JkZXItcmFkaXVzOjUwJSFpbXBvcnRhbnR9LnJvdW5kZWQtMHtib3JkZXItcmFkaXVzOjAhaW1wb3J0YW50fS5jbGVhcmZpeDo6YWZ0ZXJ7ZGlzcGxheTpibG9jaztjbGVhcjpib3RoO2NvbnRlbnQ6IiJ9LmQtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC10YWJsZS1yb3d7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fS5kLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3ghaW1wb3J0YW50O2Rpc3BsYXk6LW1zLWZsZXhib3ghaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQtaW5saW5lLWZsZXh7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3ghaW1wb3J0YW50O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94IWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmQtc20tbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtc20taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1zbS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1zbS10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC1zbS10YWJsZS1yb3d7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fS5kLXNtLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1zbS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3ghaW1wb3J0YW50O2Rpc3BsYXk6LW1zLWZsZXhib3ghaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQtc20taW5saW5lLWZsZXh7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3ghaW1wb3J0YW50O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94IWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5kLW1kLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC1tZC1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtbWQtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQtbWQtdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtbWQtdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH0uZC1tZC10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQtbWQtZmxleHtkaXNwbGF5Oi13ZWJraXQtYm94IWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94IWltcG9ydGFudDtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLW1kLWlubGluZS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94IWltcG9ydGFudDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuZC1sZy1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtbGctaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1sZy1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLWxnLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLWxnLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLWxnLXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9LmQtbGctdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLWxnLWZsZXh7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1sZy1pbmxpbmUtZmxleHtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3ghaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5kLXhsLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC14bC1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLXhsLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQteGwtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQteGwtdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQteGwtdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH0uZC14bC10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQteGwtZmxleHtkaXNwbGF5Oi13ZWJraXQtYm94IWltcG9ydGFudDtkaXNwbGF5Oi1tcy1mbGV4Ym94IWltcG9ydGFudDtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLXhsLWlubGluZS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94IWltcG9ydGFudDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9fUBtZWRpYSBwcmludHsuZC1wcmludC1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtcHJpbnQtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1wcmludC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLXByaW50LWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLXByaW50LXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLXByaW50LXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9LmQtcHJpbnQtdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLXByaW50LWZsZXh7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtZmxleGJveCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1wcmludC1pbmxpbmUtZmxleHtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveCFpbXBvcnRhbnQ7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3ghaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fX0uZW1iZWQtcmVzcG9uc2l2ZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzowO292ZXJmbG93OmhpZGRlbn0uZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7Y29udGVudDoiIn0uZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLC5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW97cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOjB9LmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZXtwYWRkaW5nLXRvcDo0Mi44NTcxNDMlfS5lbWJlZC1yZXNwb25zaXZlLTE2Ynk5OjpiZWZvcmV7cGFkZGluZy10b3A6NTYuMjUlfS5lbWJlZC1yZXNwb25zaXZlLTRieTM6OmJlZm9yZXtwYWRkaW5nLXRvcDo3NSV9LmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3Jle3BhZGRpbmctdG9wOjEwMCV9LmZsZXgtcm93ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5mbGV4LWNvbHVtbnstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWwhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmZsZXgtcm93LXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uZmxleC1jb2x1bW4tcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uZmxleC13cmFwey1tcy1mbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5mbGV4LW5vd3JhcHstbXMtZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmZsZXgtd3JhcC1yZXZlcnNley1tcy1mbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXN0YXJ0ey13ZWJraXQtYm94LXBhY2s6c3RhcnQhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6c3RhcnQhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWVuZHstd2Via2l0LWJveC1wYWNrOmVuZCFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazplbmQhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1jZW50ZXJ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXIhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6Y2VudGVyIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWJldHdlZW57LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5IWltcG9ydGFudDstbXMtZmxleC1wYWNrOmp1c3RpZnkhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWFyb3VuZHstbXMtZmxleC1wYWNrOmRpc3RyaWJ1dGUhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1zdGFydHstd2Via2l0LWJveC1hbGlnbjpzdGFydCFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1lbmR7LXdlYmtpdC1ib3gtYWxpZ246ZW5kIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjplbmQhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24taXRlbXMtY2VudGVyey13ZWJraXQtYm94LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246Y2VudGVyIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1iYXNlbGluZXstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc3RyZXRjaHstd2Via2l0LWJveC1hbGlnbjpzdHJldGNoIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdHJldGNoIWltcG9ydGFudDthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zdGFydHstbXMtZmxleC1saW5lLXBhY2s6c3RhcnQhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtZW5key1tcy1mbGV4LWxpbmUtcGFjazplbmQhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LWNlbnRlcnstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyIWltcG9ydGFudDthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtYmV0d2VlbnstbXMtZmxleC1saW5lLXBhY2s6anVzdGlmeSFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1hcm91bmR7LW1zLWZsZXgtbGluZS1wYWNrOmRpc3RyaWJ1dGUhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zdHJldGNoey1tcy1mbGV4LWxpbmUtcGFjazpzdHJldGNoIWltcG9ydGFudDthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5hbGlnbi1zZWxmLWF1dG97LW1zLWZsZXgtaXRlbS1hbGlnbjphdXRvIWltcG9ydGFudDthbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLXN0YXJ0ey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RhcnQhaW1wb3J0YW50O2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtZW5key1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kIWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24tc2VsZi1jZW50ZXJ7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tc2VsZi1iYXNlbGluZXstbXMtZmxleC1pdGVtLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zdHJldGNoey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RyZXRjaCFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmZsZXgtc20tcm93ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5mbGV4LXNtLWNvbHVtbnstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWwhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmZsZXgtc20tcm93LXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uZmxleC1zbS1jb2x1bW4tcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uZmxleC1zbS13cmFwey1tcy1mbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5mbGV4LXNtLW5vd3JhcHstbXMtZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmZsZXgtc20td3JhcC1yZXZlcnNley1tcy1mbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0ey13ZWJraXQtYm94LXBhY2s6c3RhcnQhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6c3RhcnQhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLWVuZHstd2Via2l0LWJveC1wYWNrOmVuZCFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazplbmQhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1zbS1jZW50ZXJ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXIhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6Y2VudGVyIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLWJldHdlZW57LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5IWltcG9ydGFudDstbXMtZmxleC1wYWNrOmp1c3RpZnkhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZHstbXMtZmxleC1wYWNrOmRpc3RyaWJ1dGUhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1zbS1zdGFydHstd2Via2l0LWJveC1hbGlnbjpzdGFydCFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1zbS1lbmR7LXdlYmtpdC1ib3gtYWxpZ246ZW5kIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjplbmQhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc20tY2VudGVyey13ZWJraXQtYm94LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246Y2VudGVyIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1zbS1iYXNlbGluZXstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uYWxpZ24taXRlbXMtc20tc3RyZXRjaHstd2Via2l0LWJveC1hbGlnbjpzdHJldGNoIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdHJldGNoIWltcG9ydGFudDthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1zdGFydHstbXMtZmxleC1saW5lLXBhY2s6c3RhcnQhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tZW5key1tcy1mbGV4LWxpbmUtcGFjazplbmQhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXNtLWNlbnRlcnstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyIWltcG9ydGFudDthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbnstbXMtZmxleC1saW5lLXBhY2s6anVzdGlmeSFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1hcm91bmR7LW1zLWZsZXgtbGluZS1wYWNrOmRpc3RyaWJ1dGUhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1zdHJldGNoey1tcy1mbGV4LWxpbmUtcGFjazpzdHJldGNoIWltcG9ydGFudDthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5hbGlnbi1zZWxmLXNtLWF1dG97LW1zLWZsZXgtaXRlbS1hbGlnbjphdXRvIWltcG9ydGFudDthbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLXNtLXN0YXJ0ey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RhcnQhaW1wb3J0YW50O2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc20tZW5key1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kIWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zbS1jZW50ZXJ7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zbS1iYXNlbGluZXstbXMtZmxleC1pdGVtLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uYWxpZ24tc2VsZi1zbS1zdHJldGNoey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RyZXRjaCFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mbGV4LW1kLXJvd3std2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uZmxleC1tZC1jb2x1bW57LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5mbGV4LW1kLXJvdy1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgtbWQtY29sdW1uLXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgtbWQtd3JhcHstbXMtZmxleC13cmFwOndyYXAhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uZmxleC1tZC1ub3dyYXB7LW1zLWZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50O2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5mbGV4LW1kLXdyYXAtcmV2ZXJzZXstbXMtZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1zdGFydHstd2Via2l0LWJveC1wYWNrOnN0YXJ0IWltcG9ydGFudDstbXMtZmxleC1wYWNrOnN0YXJ0IWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1lbmR7LXdlYmtpdC1ib3gtcGFjazplbmQhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6ZW5kIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyey13ZWJraXQtYm94LXBhY2s6Y2VudGVyIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmNlbnRlciFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVuey13ZWJraXQtYm94LXBhY2s6anVzdGlmeSFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpqdXN0aWZ5IWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1hcm91bmR7LW1zLWZsZXgtcGFjazpkaXN0cmlidXRlIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24taXRlbXMtbWQtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOnN0YXJ0IWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24taXRlbXMtbWQtZW5key13ZWJraXQtYm94LWFsaWduOmVuZCFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246ZW5kIWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLWNlbnRlcnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24taXRlbXMtbWQtYmFzZWxpbmV7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLXN0cmV0Y2h7LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaCFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RyZXRjaCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtc3RhcnR7LW1zLWZsZXgtbGluZS1wYWNrOnN0YXJ0IWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LW1kLWVuZHstbXMtZmxleC1saW5lLXBhY2s6ZW5kIWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1tZC1jZW50ZXJ7LW1zLWZsZXgtbGluZS1wYWNrOmNlbnRlciFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LW1kLWJldHdlZW57LW1zLWZsZXgtbGluZS1wYWNrOmp1c3RpZnkhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtYXJvdW5key1tcy1mbGV4LWxpbmUtcGFjazpkaXN0cmlidXRlIWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtc3RyZXRjaHstbXMtZmxleC1saW5lLXBhY2s6c3RyZXRjaCFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uYWxpZ24tc2VsZi1tZC1hdXRvey1tcy1mbGV4LWl0ZW0tYWxpZ246YXV0byFpbXBvcnRhbnQ7YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uYWxpZ24tc2VsZi1tZC1zdGFydHstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0IWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLW1kLWVuZHstbXMtZmxleC1pdGVtLWFsaWduOmVuZCFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtY2VudGVyey1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyIWltcG9ydGFudDthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtYmFzZWxpbmV7LW1zLWZsZXgtaXRlbS1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtc3RyZXRjaHstbXMtZmxleC1pdGVtLWFsaWduOnN0cmV0Y2ghaW1wb3J0YW50O2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuZmxleC1sZy1yb3d7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWwhaW1wb3J0YW50Oy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWwhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmZsZXgtbGctY29sdW1uey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uZmxleC1sZy1yb3ctcmV2ZXJzZXstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2UhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LWxnLWNvbHVtbi1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2UhaW1wb3J0YW50Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LWxnLXdyYXB7LW1zLWZsZXgtd3JhcDp3cmFwIWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmZsZXgtbGctbm93cmFwey1tcy1mbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudDtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uZmxleC1sZy13cmFwLXJldmVyc2V7LW1zLWZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnR7LXdlYmtpdC1ib3gtcGFjazpzdGFydCFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpzdGFydCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctZW5key13ZWJraXQtYm94LXBhY2s6ZW5kIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmVuZCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWxnLWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlciFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpjZW50ZXIhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2Vlbnstd2Via2l0LWJveC1wYWNrOmp1c3RpZnkhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6anVzdGlmeSFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctYXJvdW5key1tcy1mbGV4LXBhY2s6ZGlzdHJpYnV0ZSFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWxnLXN0YXJ0ey13ZWJraXQtYm94LWFsaWduOnN0YXJ0IWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpzdGFydCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWxnLWVuZHstd2Via2l0LWJveC1hbGlnbjplbmQhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmVuZCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1sZy1jZW50ZXJ7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5ley13ZWJraXQtYm94LWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDstbXMtZmxleC1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1sZy1zdHJldGNoey13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2ghaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOnN0cmV0Y2ghaW1wb3J0YW50O2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LWxnLXN0YXJ0ey1tcy1mbGV4LWxpbmUtcGFjazpzdGFydCFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1lbmR7LW1zLWZsZXgtbGluZS1wYWNrOmVuZCFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbGctY2VudGVyey1tcy1mbGV4LWxpbmUtcGFjazpjZW50ZXIhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1iZXR3ZWVuey1tcy1mbGV4LWxpbmUtcGFjazpqdXN0aWZ5IWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5hbGlnbi1jb250ZW50LWxnLWFyb3VuZHstbXMtZmxleC1saW5lLXBhY2s6ZGlzdHJpYnV0ZSFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LWxnLXN0cmV0Y2h7LW1zLWZsZXgtbGluZS1wYWNrOnN0cmV0Y2ghaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctYXV0b3stbXMtZmxleC1pdGVtLWFsaWduOmF1dG8haW1wb3J0YW50O2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctc3RhcnR7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdGFydCFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tc2VsZi1sZy1lbmR7LW1zLWZsZXgtaXRlbS1hbGlnbjplbmQhaW1wb3J0YW50O2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLWNlbnRlcnstbXMtZmxleC1pdGVtLWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLWJhc2VsaW5ley1tcy1mbGV4LWl0ZW0tYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50O2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLXN0cmV0Y2h7LW1zLWZsZXgtaXRlbS1hbGlnbjpzdHJldGNoIWltcG9ydGFudDthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5mbGV4LXhsLXJvd3std2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbCFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uZmxleC14bC1jb2x1bW57LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsIWltcG9ydGFudDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5mbGV4LXhsLXJvdy1yZXZlcnNley13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgteGwtY29sdW1uLXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsIWltcG9ydGFudDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZSFpbXBvcnRhbnQ7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgteGwtd3JhcHstbXMtZmxleC13cmFwOndyYXAhaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uZmxleC14bC1ub3dyYXB7LW1zLWZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50O2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5mbGV4LXhsLXdyYXAtcmV2ZXJzZXstbXMtZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1zdGFydHstd2Via2l0LWJveC1wYWNrOnN0YXJ0IWltcG9ydGFudDstbXMtZmxleC1wYWNrOnN0YXJ0IWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1lbmR7LXdlYmtpdC1ib3gtcGFjazplbmQhaW1wb3J0YW50Oy1tcy1mbGV4LXBhY2s6ZW5kIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyey13ZWJraXQtYm94LXBhY2s6Y2VudGVyIWltcG9ydGFudDstbXMtZmxleC1wYWNrOmNlbnRlciFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1iZXR3ZWVuey13ZWJraXQtYm94LXBhY2s6anVzdGlmeSFpbXBvcnRhbnQ7LW1zLWZsZXgtcGFjazpqdXN0aWZ5IWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1hcm91bmR7LW1zLWZsZXgtcGFjazpkaXN0cmlidXRlIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24taXRlbXMteGwtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOnN0YXJ0IWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24taXRlbXMteGwtZW5key13ZWJraXQtYm94LWFsaWduOmVuZCFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246ZW5kIWltcG9ydGFudDthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXhsLWNlbnRlcnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24taXRlbXMteGwtYmFzZWxpbmV7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50Oy1tcy1mbGV4LWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXhsLXN0cmV0Y2h7LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaCFpbXBvcnRhbnQ7LW1zLWZsZXgtYWxpZ246c3RyZXRjaCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtc3RhcnR7LW1zLWZsZXgtbGluZS1wYWNrOnN0YXJ0IWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLWVuZHstbXMtZmxleC1saW5lLXBhY2s6ZW5kIWltcG9ydGFudDthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC14bC1jZW50ZXJ7LW1zLWZsZXgtbGluZS1wYWNrOmNlbnRlciFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLWJldHdlZW57LW1zLWZsZXgtbGluZS1wYWNrOmp1c3RpZnkhaW1wb3J0YW50O2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtYXJvdW5key1tcy1mbGV4LWxpbmUtcGFjazpkaXN0cmlidXRlIWltcG9ydGFudDthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaHstbXMtZmxleC1saW5lLXBhY2s6c3RyZXRjaCFpbXBvcnRhbnQ7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uYWxpZ24tc2VsZi14bC1hdXRvey1tcy1mbGV4LWl0ZW0tYWxpZ246YXV0byFpbXBvcnRhbnQ7YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uYWxpZ24tc2VsZi14bC1zdGFydHstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0IWltcG9ydGFudDthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXhsLWVuZHstbXMtZmxleC1pdGVtLWFsaWduOmVuZCFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLXNlbGYteGwtY2VudGVyey1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyIWltcG9ydGFudDthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYteGwtYmFzZWxpbmV7LW1zLWZsZXgtaXRlbS1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnQ7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLXNlbGYteGwtc3RyZXRjaHstbXMtZmxleC1pdGVtLWFsaWduOnN0cmV0Y2ghaW1wb3J0YW50O2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9fS5mbG9hdC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5mbG9hdC1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmZsb2F0LW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5mbG9hdC1zbS1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5mbG9hdC1zbS1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmZsb2F0LXNtLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuZmxvYXQtbWQtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uZmxvYXQtbWQtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5mbG9hdC1tZC1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmZsb2F0LWxnLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmZsb2F0LWxnLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uZmxvYXQtbGctbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuZmxvYXQteGwtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uZmxvYXQteGwtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5mbG9hdC14bC1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX0ucG9zaXRpb24tc3RhdGlje3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnR9LnBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudH0ucG9zaXRpb24tYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50fS5wb3NpdGlvbi1maXhlZHtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnR9LnBvc2l0aW9uLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreSFpbXBvcnRhbnQ7cG9zaXRpb246c3RpY2t5IWltcG9ydGFudH0uZml4ZWQtdG9we3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7bGVmdDowO3otaW5kZXg6MTAzMH0uZml4ZWQtYm90dG9te3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTAzMH1Ac3VwcG9ydHMgKChwb3NpdGlvbjotd2Via2l0LXN0aWNreSkgb3IgKHBvc2l0aW9uOnN0aWNreSkpey5zdGlja3ktdG9we3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMjB9fS5zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4O3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsMCwwLDApO3doaXRlLXNwYWNlOm5vd3JhcDstd2Via2l0LWNsaXAtcGF0aDppbnNldCg1MCUpO2NsaXAtcGF0aDppbnNldCg1MCUpO2JvcmRlcjowfS5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsLnNyLW9ubHktZm9jdXNhYmxlOmZvY3Vze3Bvc2l0aW9uOnN0YXRpYzt3aWR0aDphdXRvO2hlaWdodDphdXRvO292ZXJmbG93OnZpc2libGU7Y2xpcDphdXRvO3doaXRlLXNwYWNlOm5vcm1hbDstd2Via2l0LWNsaXAtcGF0aDpub25lO2NsaXAtcGF0aDpub25lfS53LTI1e3dpZHRoOjI1JSFpbXBvcnRhbnR9LnctNTB7d2lkdGg6NTAlIWltcG9ydGFudH0udy03NXt3aWR0aDo3NSUhaW1wb3J0YW50fS53LTEwMHt3aWR0aDoxMDAlIWltcG9ydGFudH0uaC0yNXtoZWlnaHQ6MjUlIWltcG9ydGFudH0uaC01MHtoZWlnaHQ6NTAlIWltcG9ydGFudH0uaC03NXtoZWlnaHQ6NzUlIWltcG9ydGFudH0uaC0xMDB7aGVpZ2h0OjEwMCUhaW1wb3J0YW50fS5tdy0xMDB7bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50fS5taC0xMDB7bWF4LWhlaWdodDoxMDAlIWltcG9ydGFudH0ubS0we21hcmdpbjowIWltcG9ydGFudH0ubXQtMCwubXktMHttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5tci0wLC5teC0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWItMCwubXktMHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tbC0wLC5teC0we21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS5tLTF7bWFyZ2luOi4yNXJlbSFpbXBvcnRhbnR9Lm10LTEsLm15LTF7bWFyZ2luLXRvcDouMjVyZW0haW1wb3J0YW50fS5tci0xLC5teC0xe21hcmdpbi1yaWdodDouMjVyZW0haW1wb3J0YW50fS5tYi0xLC5teS0xe21hcmdpbi1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ubWwtMSwubXgtMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tLTJ7bWFyZ2luOi41cmVtIWltcG9ydGFudH0ubXQtMiwubXktMnttYXJnaW4tdG9wOi41cmVtIWltcG9ydGFudH0ubXItMiwubXgtMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5tYi0yLC5teS0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tbC0yLC5teC0ye21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubS0ze21hcmdpbjoxcmVtIWltcG9ydGFudH0ubXQtMywubXktM3ttYXJnaW4tdG9wOjFyZW0haW1wb3J0YW50fS5tci0zLC5teC0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWItMywubXktM3ttYXJnaW4tYm90dG9tOjFyZW0haW1wb3J0YW50fS5tbC0zLC5teC0ze21hcmdpbi1sZWZ0OjFyZW0haW1wb3J0YW50fS5tLTR7bWFyZ2luOjEuNXJlbSFpbXBvcnRhbnR9Lm10LTQsLm15LTR7bWFyZ2luLXRvcDoxLjVyZW0haW1wb3J0YW50fS5tci00LC5teC00e21hcmdpbi1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5tYi00LC5teS00e21hcmdpbi1ib3R0b206MS41cmVtIWltcG9ydGFudH0ubWwtNCwubXgtNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tLTV7bWFyZ2luOjNyZW0haW1wb3J0YW50fS5tdC01LC5teS01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnR9Lm1yLTUsLm14LTV7bWFyZ2luLXJpZ2h0OjNyZW0haW1wb3J0YW50fS5tYi01LC5teS01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1sLTUsLm14LTV7bWFyZ2luLWxlZnQ6M3JlbSFpbXBvcnRhbnR9LnAtMHtwYWRkaW5nOjAhaW1wb3J0YW50fS5wdC0wLC5weS0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50fS5wci0wLC5weC0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBiLTAsLnB5LTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBsLTAsLnB4LTB7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fS5wLTF7cGFkZGluZzouMjVyZW0haW1wb3J0YW50fS5wdC0xLC5weS0xe3BhZGRpbmctdG9wOi4yNXJlbSFpbXBvcnRhbnR9LnByLTEsLnB4LTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50fS5wYi0xLC5weS0xe3BhZGRpbmctYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9LnBsLTEsLnB4LTF7cGFkZGluZy1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9LnAtMntwYWRkaW5nOi41cmVtIWltcG9ydGFudH0ucHQtMiwucHktMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnR9LnByLTIsLnB4LTJ7cGFkZGluZy1yaWdodDouNXJlbSFpbXBvcnRhbnR9LnBiLTIsLnB5LTJ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5wbC0yLC5weC0ye3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnAtM3twYWRkaW5nOjFyZW0haW1wb3J0YW50fS5wdC0zLC5weS0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50fS5wci0zLC5weC0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBiLTMsLnB5LTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBsLTMsLnB4LTN7cGFkZGluZy1sZWZ0OjFyZW0haW1wb3J0YW50fS5wLTR7cGFkZGluZzoxLjVyZW0haW1wb3J0YW50fS5wdC00LC5weS00e3BhZGRpbmctdG9wOjEuNXJlbSFpbXBvcnRhbnR9LnByLTQsLnB4LTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5wYi00LC5weS00e3BhZGRpbmctYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9LnBsLTQsLnB4LTR7cGFkZGluZy1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9LnAtNXtwYWRkaW5nOjNyZW0haW1wb3J0YW50fS5wdC01LC5weS01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50fS5wci01LC5weC01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnR9LnBiLTUsLnB5LTV7cGFkZGluZy1ib3R0b206M3JlbSFpbXBvcnRhbnR9LnBsLTUsLnB4LTV7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5tLWF1dG97bWFyZ2luOmF1dG8haW1wb3J0YW50fS5tdC1hdXRvLC5teS1hdXRve21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9Lm1yLWF1dG8sLm14LWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi1hdXRvLC5teS1hdXRve21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm1sLWF1dG8sLm14LWF1dG97bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5tLXNtLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tdC1zbS0wLC5teS1zbS0we21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm1yLXNtLTAsLm14LXNtLTB7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fS5tYi1zbS0wLC5teS1zbS0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1sLXNtLTAsLm14LXNtLTB7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm0tc20tMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubXQtc20tMSwubXktc20tMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm1yLXNtLTEsLm14LXNtLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9Lm1iLXNtLTEsLm15LXNtLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tbC1zbS0xLC5teC1zbS0xe21hcmdpbi1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9Lm0tc20tMnttYXJnaW46LjVyZW0haW1wb3J0YW50fS5tdC1zbS0yLC5teS1zbS0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50fS5tci1zbS0yLC5teC1zbS0ye21hcmdpbi1yaWdodDouNXJlbSFpbXBvcnRhbnR9Lm1iLXNtLTIsLm15LXNtLTJ7bWFyZ2luLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9Lm1sLXNtLTIsLm14LXNtLTJ7bWFyZ2luLWxlZnQ6LjVyZW0haW1wb3J0YW50fS5tLXNtLTN7bWFyZ2luOjFyZW0haW1wb3J0YW50fS5tdC1zbS0zLC5teS1zbS0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnR9Lm1yLXNtLTMsLm14LXNtLTN7bWFyZ2luLXJpZ2h0OjFyZW0haW1wb3J0YW50fS5tYi1zbS0zLC5teS1zbS0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1sLXNtLTMsLm14LXNtLTN7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm0tc20tNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubXQtc20tNCwubXktc20tNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm1yLXNtLTQsLm14LXNtLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9Lm1iLXNtLTQsLm15LXNtLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tbC1zbS00LC5teC1zbS00e21hcmdpbi1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9Lm0tc20tNXttYXJnaW46M3JlbSFpbXBvcnRhbnR9Lm10LXNtLTUsLm15LXNtLTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXItc20tNSwubXgtc20tNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1iLXNtLTUsLm15LXNtLTV7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubWwtc20tNSwubXgtc20tNXttYXJnaW4tbGVmdDozcmVtIWltcG9ydGFudH0ucC1zbS0we3BhZGRpbmc6MCFpbXBvcnRhbnR9LnB0LXNtLTAsLnB5LXNtLTB7cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9LnByLXNtLTAsLnB4LXNtLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH0ucGItc20tMCwucHktc20tMHtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH0ucGwtc20tMCwucHgtc20tMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnAtc20tMXtwYWRkaW5nOi4yNXJlbSFpbXBvcnRhbnR9LnB0LXNtLTEsLnB5LXNtLTF7cGFkZGluZy10b3A6LjI1cmVtIWltcG9ydGFudH0ucHItc20tMSwucHgtc20tMXtwYWRkaW5nLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9LnBiLXNtLTEsLnB5LXNtLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGwtc20tMSwucHgtc20tMXtwYWRkaW5nLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ucC1zbS0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wdC1zbS0yLC5weS1zbS0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHItc20tMiwucHgtc20tMntwYWRkaW5nLXJpZ2h0Oi41cmVtIWltcG9ydGFudH0ucGItc20tMiwucHktc20tMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBsLXNtLTIsLnB4LXNtLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucC1zbS0ze3BhZGRpbmc6MXJlbSFpbXBvcnRhbnR9LnB0LXNtLTMsLnB5LXNtLTN7cGFkZGluZy10b3A6MXJlbSFpbXBvcnRhbnR9LnByLXNtLTMsLnB4LXNtLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudH0ucGItc20tMywucHktc20tM3twYWRkaW5nLWJvdHRvbToxcmVtIWltcG9ydGFudH0ucGwtc20tMywucHgtc20tM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnAtc20tNHtwYWRkaW5nOjEuNXJlbSFpbXBvcnRhbnR9LnB0LXNtLTQsLnB5LXNtLTR7cGFkZGluZy10b3A6MS41cmVtIWltcG9ydGFudH0ucHItc20tNCwucHgtc20tNHtwYWRkaW5nLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9LnBiLXNtLTQsLnB5LXNtLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGwtc20tNCwucHgtc20tNHtwYWRkaW5nLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ucC1zbS01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB0LXNtLTUsLnB5LXNtLTV7cGFkZGluZy10b3A6M3JlbSFpbXBvcnRhbnR9LnByLXNtLTUsLnB4LXNtLTV7cGFkZGluZy1yaWdodDozcmVtIWltcG9ydGFudH0ucGItc20tNSwucHktc20tNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucGwtc20tNSwucHgtc20tNXtwYWRkaW5nLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm0tc20tYXV0b3ttYXJnaW46YXV0byFpbXBvcnRhbnR9Lm10LXNtLWF1dG8sLm15LXNtLWF1dG97bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH0ubXItc20tYXV0bywubXgtc20tYXV0b3ttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9Lm1iLXNtLWF1dG8sLm15LXNtLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubWwtc20tYXV0bywubXgtc20tYXV0b3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5tLW1kLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tdC1tZC0wLC5teS1tZC0we21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm1yLW1kLTAsLm14LW1kLTB7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fS5tYi1tZC0wLC5teS1tZC0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1sLW1kLTAsLm14LW1kLTB7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm0tbWQtMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubXQtbWQtMSwubXktbWQtMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm1yLW1kLTEsLm14LW1kLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9Lm1iLW1kLTEsLm15LW1kLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tbC1tZC0xLC5teC1tZC0xe21hcmdpbi1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9Lm0tbWQtMnttYXJnaW46LjVyZW0haW1wb3J0YW50fS5tdC1tZC0yLC5teS1tZC0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50fS5tci1tZC0yLC5teC1tZC0ye21hcmdpbi1yaWdodDouNXJlbSFpbXBvcnRhbnR9Lm1iLW1kLTIsLm15LW1kLTJ7bWFyZ2luLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9Lm1sLW1kLTIsLm14LW1kLTJ7bWFyZ2luLWxlZnQ6LjVyZW0haW1wb3J0YW50fS5tLW1kLTN7bWFyZ2luOjFyZW0haW1wb3J0YW50fS5tdC1tZC0zLC5teS1tZC0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnR9Lm1yLW1kLTMsLm14LW1kLTN7bWFyZ2luLXJpZ2h0OjFyZW0haW1wb3J0YW50fS5tYi1tZC0zLC5teS1tZC0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1sLW1kLTMsLm14LW1kLTN7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm0tbWQtNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubXQtbWQtNCwubXktbWQtNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm1yLW1kLTQsLm14LW1kLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9Lm1iLW1kLTQsLm15LW1kLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tbC1tZC00LC5teC1tZC00e21hcmdpbi1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9Lm0tbWQtNXttYXJnaW46M3JlbSFpbXBvcnRhbnR9Lm10LW1kLTUsLm15LW1kLTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXItbWQtNSwubXgtbWQtNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1iLW1kLTUsLm15LW1kLTV7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubWwtbWQtNSwubXgtbWQtNXttYXJnaW4tbGVmdDozcmVtIWltcG9ydGFudH0ucC1tZC0we3BhZGRpbmc6MCFpbXBvcnRhbnR9LnB0LW1kLTAsLnB5LW1kLTB7cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9LnByLW1kLTAsLnB4LW1kLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH0ucGItbWQtMCwucHktbWQtMHtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH0ucGwtbWQtMCwucHgtbWQtMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnAtbWQtMXtwYWRkaW5nOi4yNXJlbSFpbXBvcnRhbnR9LnB0LW1kLTEsLnB5LW1kLTF7cGFkZGluZy10b3A6LjI1cmVtIWltcG9ydGFudH0ucHItbWQtMSwucHgtbWQtMXtwYWRkaW5nLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9LnBiLW1kLTEsLnB5LW1kLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGwtbWQtMSwucHgtbWQtMXtwYWRkaW5nLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ucC1tZC0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wdC1tZC0yLC5weS1tZC0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHItbWQtMiwucHgtbWQtMntwYWRkaW5nLXJpZ2h0Oi41cmVtIWltcG9ydGFudH0ucGItbWQtMiwucHktbWQtMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBsLW1kLTIsLnB4LW1kLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucC1tZC0ze3BhZGRpbmc6MXJlbSFpbXBvcnRhbnR9LnB0LW1kLTMsLnB5LW1kLTN7cGFkZGluZy10b3A6MXJlbSFpbXBvcnRhbnR9LnByLW1kLTMsLnB4LW1kLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudH0ucGItbWQtMywucHktbWQtM3twYWRkaW5nLWJvdHRvbToxcmVtIWltcG9ydGFudH0ucGwtbWQtMywucHgtbWQtM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnAtbWQtNHtwYWRkaW5nOjEuNXJlbSFpbXBvcnRhbnR9LnB0LW1kLTQsLnB5LW1kLTR7cGFkZGluZy10b3A6MS41cmVtIWltcG9ydGFudH0ucHItbWQtNCwucHgtbWQtNHtwYWRkaW5nLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9LnBiLW1kLTQsLnB5LW1kLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGwtbWQtNCwucHgtbWQtNHtwYWRkaW5nLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ucC1tZC01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB0LW1kLTUsLnB5LW1kLTV7cGFkZGluZy10b3A6M3JlbSFpbXBvcnRhbnR9LnByLW1kLTUsLnB4LW1kLTV7cGFkZGluZy1yaWdodDozcmVtIWltcG9ydGFudH0ucGItbWQtNSwucHktbWQtNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucGwtbWQtNSwucHgtbWQtNXtwYWRkaW5nLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm0tbWQtYXV0b3ttYXJnaW46YXV0byFpbXBvcnRhbnR9Lm10LW1kLWF1dG8sLm15LW1kLWF1dG97bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH0ubXItbWQtYXV0bywubXgtbWQtYXV0b3ttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9Lm1iLW1kLWF1dG8sLm15LW1kLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubWwtbWQtYXV0bywubXgtbWQtYXV0b3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5tLWxnLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tdC1sZy0wLC5teS1sZy0we21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm1yLWxnLTAsLm14LWxnLTB7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fS5tYi1sZy0wLC5teS1sZy0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1sLWxnLTAsLm14LWxnLTB7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm0tbGctMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubXQtbGctMSwubXktbGctMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm1yLWxnLTEsLm14LWxnLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9Lm1iLWxnLTEsLm15LWxnLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tbC1sZy0xLC5teC1sZy0xe21hcmdpbi1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9Lm0tbGctMnttYXJnaW46LjVyZW0haW1wb3J0YW50fS5tdC1sZy0yLC5teS1sZy0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50fS5tci1sZy0yLC5teC1sZy0ye21hcmdpbi1yaWdodDouNXJlbSFpbXBvcnRhbnR9Lm1iLWxnLTIsLm15LWxnLTJ7bWFyZ2luLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9Lm1sLWxnLTIsLm14LWxnLTJ7bWFyZ2luLWxlZnQ6LjVyZW0haW1wb3J0YW50fS5tLWxnLTN7bWFyZ2luOjFyZW0haW1wb3J0YW50fS5tdC1sZy0zLC5teS1sZy0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnR9Lm1yLWxnLTMsLm14LWxnLTN7bWFyZ2luLXJpZ2h0OjFyZW0haW1wb3J0YW50fS5tYi1sZy0zLC5teS1sZy0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1sLWxnLTMsLm14LWxnLTN7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm0tbGctNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubXQtbGctNCwubXktbGctNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm1yLWxnLTQsLm14LWxnLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9Lm1iLWxnLTQsLm15LWxnLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tbC1sZy00LC5teC1sZy00e21hcmdpbi1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9Lm0tbGctNXttYXJnaW46M3JlbSFpbXBvcnRhbnR9Lm10LWxnLTUsLm15LWxnLTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXItbGctNSwubXgtbGctNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1iLWxnLTUsLm15LWxnLTV7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubWwtbGctNSwubXgtbGctNXttYXJnaW4tbGVmdDozcmVtIWltcG9ydGFudH0ucC1sZy0we3BhZGRpbmc6MCFpbXBvcnRhbnR9LnB0LWxnLTAsLnB5LWxnLTB7cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9LnByLWxnLTAsLnB4LWxnLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH0ucGItbGctMCwucHktbGctMHtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH0ucGwtbGctMCwucHgtbGctMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnAtbGctMXtwYWRkaW5nOi4yNXJlbSFpbXBvcnRhbnR9LnB0LWxnLTEsLnB5LWxnLTF7cGFkZGluZy10b3A6LjI1cmVtIWltcG9ydGFudH0ucHItbGctMSwucHgtbGctMXtwYWRkaW5nLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9LnBiLWxnLTEsLnB5LWxnLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGwtbGctMSwucHgtbGctMXtwYWRkaW5nLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ucC1sZy0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wdC1sZy0yLC5weS1sZy0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHItbGctMiwucHgtbGctMntwYWRkaW5nLXJpZ2h0Oi41cmVtIWltcG9ydGFudH0ucGItbGctMiwucHktbGctMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBsLWxnLTIsLnB4LWxnLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucC1sZy0ze3BhZGRpbmc6MXJlbSFpbXBvcnRhbnR9LnB0LWxnLTMsLnB5LWxnLTN7cGFkZGluZy10b3A6MXJlbSFpbXBvcnRhbnR9LnByLWxnLTMsLnB4LWxnLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudH0ucGItbGctMywucHktbGctM3twYWRkaW5nLWJvdHRvbToxcmVtIWltcG9ydGFudH0ucGwtbGctMywucHgtbGctM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnAtbGctNHtwYWRkaW5nOjEuNXJlbSFpbXBvcnRhbnR9LnB0LWxnLTQsLnB5LWxnLTR7cGFkZGluZy10b3A6MS41cmVtIWltcG9ydGFudH0ucHItbGctNCwucHgtbGctNHtwYWRkaW5nLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9LnBiLWxnLTQsLnB5LWxnLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGwtbGctNCwucHgtbGctNHtwYWRkaW5nLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ucC1sZy01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB0LWxnLTUsLnB5LWxnLTV7cGFkZGluZy10b3A6M3JlbSFpbXBvcnRhbnR9LnByLWxnLTUsLnB4LWxnLTV7cGFkZGluZy1yaWdodDozcmVtIWltcG9ydGFudH0ucGItbGctNSwucHktbGctNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucGwtbGctNSwucHgtbGctNXtwYWRkaW5nLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm0tbGctYXV0b3ttYXJnaW46YXV0byFpbXBvcnRhbnR9Lm10LWxnLWF1dG8sLm15LWxnLWF1dG97bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH0ubXItbGctYXV0bywubXgtbGctYXV0b3ttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9Lm1iLWxnLWF1dG8sLm15LWxnLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubWwtbGctYXV0bywubXgtbGctYXV0b3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsubS14bC0we21hcmdpbjowIWltcG9ydGFudH0ubXQteGwtMCwubXkteGwtMHttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5tci14bC0wLC5teC14bC0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWIteGwtMCwubXkteGwtMHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tbC14bC0wLC5teC14bC0we21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS5tLXhsLTF7bWFyZ2luOi4yNXJlbSFpbXBvcnRhbnR9Lm10LXhsLTEsLm15LXhsLTF7bWFyZ2luLXRvcDouMjVyZW0haW1wb3J0YW50fS5tci14bC0xLC5teC14bC0xe21hcmdpbi1yaWdodDouMjVyZW0haW1wb3J0YW50fS5tYi14bC0xLC5teS14bC0xe21hcmdpbi1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ubWwteGwtMSwubXgteGwtMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tLXhsLTJ7bWFyZ2luOi41cmVtIWltcG9ydGFudH0ubXQteGwtMiwubXkteGwtMnttYXJnaW4tdG9wOi41cmVtIWltcG9ydGFudH0ubXIteGwtMiwubXgteGwtMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5tYi14bC0yLC5teS14bC0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tbC14bC0yLC5teC14bC0ye21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubS14bC0ze21hcmdpbjoxcmVtIWltcG9ydGFudH0ubXQteGwtMywubXkteGwtM3ttYXJnaW4tdG9wOjFyZW0haW1wb3J0YW50fS5tci14bC0zLC5teC14bC0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWIteGwtMywubXkteGwtM3ttYXJnaW4tYm90dG9tOjFyZW0haW1wb3J0YW50fS5tbC14bC0zLC5teC14bC0ze21hcmdpbi1sZWZ0OjFyZW0haW1wb3J0YW50fS5tLXhsLTR7bWFyZ2luOjEuNXJlbSFpbXBvcnRhbnR9Lm10LXhsLTQsLm15LXhsLTR7bWFyZ2luLXRvcDoxLjVyZW0haW1wb3J0YW50fS5tci14bC00LC5teC14bC00e21hcmdpbi1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5tYi14bC00LC5teS14bC00e21hcmdpbi1ib3R0b206MS41cmVtIWltcG9ydGFudH0ubWwteGwtNCwubXgteGwtNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tLXhsLTV7bWFyZ2luOjNyZW0haW1wb3J0YW50fS5tdC14bC01LC5teS14bC01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnR9Lm1yLXhsLTUsLm14LXhsLTV7bWFyZ2luLXJpZ2h0OjNyZW0haW1wb3J0YW50fS5tYi14bC01LC5teS14bC01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1sLXhsLTUsLm14LXhsLTV7bWFyZ2luLWxlZnQ6M3JlbSFpbXBvcnRhbnR9LnAteGwtMHtwYWRkaW5nOjAhaW1wb3J0YW50fS5wdC14bC0wLC5weS14bC0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50fS5wci14bC0wLC5weC14bC0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBiLXhsLTAsLnB5LXhsLTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBsLXhsLTAsLnB4LXhsLTB7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fS5wLXhsLTF7cGFkZGluZzouMjVyZW0haW1wb3J0YW50fS5wdC14bC0xLC5weS14bC0xe3BhZGRpbmctdG9wOi4yNXJlbSFpbXBvcnRhbnR9LnByLXhsLTEsLnB4LXhsLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50fS5wYi14bC0xLC5weS14bC0xe3BhZGRpbmctYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9LnBsLXhsLTEsLnB4LXhsLTF7cGFkZGluZy1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9LnAteGwtMntwYWRkaW5nOi41cmVtIWltcG9ydGFudH0ucHQteGwtMiwucHkteGwtMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnR9LnByLXhsLTIsLnB4LXhsLTJ7cGFkZGluZy1yaWdodDouNXJlbSFpbXBvcnRhbnR9LnBiLXhsLTIsLnB5LXhsLTJ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5wbC14bC0yLC5weC14bC0ye3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnAteGwtM3twYWRkaW5nOjFyZW0haW1wb3J0YW50fS5wdC14bC0zLC5weS14bC0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50fS5wci14bC0zLC5weC14bC0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBiLXhsLTMsLnB5LXhsLTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBsLXhsLTMsLnB4LXhsLTN7cGFkZGluZy1sZWZ0OjFyZW0haW1wb3J0YW50fS5wLXhsLTR7cGFkZGluZzoxLjVyZW0haW1wb3J0YW50fS5wdC14bC00LC5weS14bC00e3BhZGRpbmctdG9wOjEuNXJlbSFpbXBvcnRhbnR9LnByLXhsLTQsLnB4LXhsLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5wYi14bC00LC5weS14bC00e3BhZGRpbmctYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9LnBsLXhsLTQsLnB4LXhsLTR7cGFkZGluZy1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9LnAteGwtNXtwYWRkaW5nOjNyZW0haW1wb3J0YW50fS5wdC14bC01LC5weS14bC01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50fS5wci14bC01LC5weC14bC01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnR9LnBiLXhsLTUsLnB5LXhsLTV7cGFkZGluZy1ib3R0b206M3JlbSFpbXBvcnRhbnR9LnBsLXhsLTUsLnB4LXhsLTV7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5tLXhsLWF1dG97bWFyZ2luOmF1dG8haW1wb3J0YW50fS5tdC14bC1hdXRvLC5teS14bC1hdXRve21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9Lm1yLXhsLWF1dG8sLm14LXhsLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi14bC1hdXRvLC5teS14bC1hdXRve21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm1sLXhsLWF1dG8sLm14LXhsLWF1dG97bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9fS50ZXh0LWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH0udGV4dC1ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwIWltcG9ydGFudH0udGV4dC10cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey50ZXh0LXNtLWxlZnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0udGV4dC1zbS1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1zbS1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LnRleHQtbWQtbGVmdHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LW1kLXJpZ2h0e3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fS50ZXh0LW1kLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsudGV4dC1sZy1sZWZ0e3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnRleHQtbGctcmlnaHR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnRleHQtbGctY2VudGVye3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudGV4dC14bC1sZWZ0e3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnRleHQteGwtcmlnaHR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnRleHQteGwtY2VudGVye3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19LnRleHQtbG93ZXJjYXNle3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZSFpbXBvcnRhbnR9LnRleHQtdXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSFpbXBvcnRhbnR9LnRleHQtY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplIWltcG9ydGFudH0uZm9udC13ZWlnaHQtbGlnaHR7Zm9udC13ZWlnaHQ6MzAwIWltcG9ydGFudH0uZm9udC13ZWlnaHQtbm9ybWFse2ZvbnQtd2VpZ2h0OjQwMCFpbXBvcnRhbnR9LmZvbnQtd2VpZ2h0LWJvbGR7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudH0uZm9udC1pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMhaW1wb3J0YW50fS50ZXh0LXdoaXRle2NvbG9yOiNmZmYhaW1wb3J0YW50fS50ZXh0LXByaW1hcnl7Y29sb3I6IzAwN2JmZiFpbXBvcnRhbnR9YS50ZXh0LXByaW1hcnk6Zm9jdXMsYS50ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6IzAwNjJjYyFpbXBvcnRhbnR9LnRleHQtc2Vjb25kYXJ5e2NvbG9yOiM2Yzc1N2QhaW1wb3J0YW50fWEudGV4dC1zZWNvbmRhcnk6Zm9jdXMsYS50ZXh0LXNlY29uZGFyeTpob3Zlcntjb2xvcjojNTQ1YjYyIWltcG9ydGFudH0udGV4dC1zdWNjZXNze2NvbG9yOiMyOGE3NDUhaW1wb3J0YW50fWEudGV4dC1zdWNjZXNzOmZvY3VzLGEudGV4dC1zdWNjZXNzOmhvdmVye2NvbG9yOiMxZTdlMzQhaW1wb3J0YW50fS50ZXh0LWluZm97Y29sb3I6IzE3YTJiOCFpbXBvcnRhbnR9YS50ZXh0LWluZm86Zm9jdXMsYS50ZXh0LWluZm86aG92ZXJ7Y29sb3I6IzExN2E4YiFpbXBvcnRhbnR9LnRleHQtd2FybmluZ3tjb2xvcjojZmZjMTA3IWltcG9ydGFudH1hLnRleHQtd2FybmluZzpmb2N1cyxhLnRleHQtd2FybmluZzpob3Zlcntjb2xvcjojZDM5ZTAwIWltcG9ydGFudH0udGV4dC1kYW5nZXJ7Y29sb3I6I2RjMzU0NSFpbXBvcnRhbnR9YS50ZXh0LWRhbmdlcjpmb2N1cyxhLnRleHQtZGFuZ2VyOmhvdmVye2NvbG9yOiNiZDIxMzAhaW1wb3J0YW50fS50ZXh0LWxpZ2h0e2NvbG9yOiNmOGY5ZmEhaW1wb3J0YW50fWEudGV4dC1saWdodDpmb2N1cyxhLnRleHQtbGlnaHQ6aG92ZXJ7Y29sb3I6I2RhZTBlNSFpbXBvcnRhbnR9LnRleHQtZGFya3tjb2xvcjojMzQzYTQwIWltcG9ydGFudH1hLnRleHQtZGFyazpmb2N1cyxhLnRleHQtZGFyazpob3Zlcntjb2xvcjojMWQyMTI0IWltcG9ydGFudH0udGV4dC1tdXRlZHtjb2xvcjojNmM3NTdkIWltcG9ydGFudH0udGV4dC1oaWRle2ZvbnQ6MC8wIGE7Y29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnR9LmludmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnR9QG1lZGlhIHByaW50eyosOjphZnRlciw6OmJlZm9yZXt0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fWE6bm90KC5idG4pe3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YWJiclt0aXRsZV06OmFmdGVye2NvbnRlbnQ6IiAoIiBhdHRyKHRpdGxlKSAiKSJ9cHJle3doaXRlLXNwYWNlOnByZS13cmFwIWltcG9ydGFudH1ibG9ja3F1b3RlLHByZXtib3JkZXI6MXB4IHNvbGlkICM5OTk7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9dGhlYWR7ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9aW1nLHRye3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfWgyLGgzLHB7b3JwaGFuczozO3dpZG93czozfWgyLGgze3BhZ2UtYnJlYWstYWZ0ZXI6YXZvaWR9QHBhZ2V7c2l6ZTphM31ib2R5e21pbi13aWR0aDo5OTJweCFpbXBvcnRhbnR9LmNvbnRhaW5lcnttaW4td2lkdGg6OTkycHghaW1wb3J0YW50fS5uYXZiYXJ7ZGlzcGxheTpub25lfS5iYWRnZXtib3JkZXI6MXB4IHNvbGlkICMwMDB9LnRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZSFpbXBvcnRhbnR9LnRhYmxlIHRkLC50YWJsZSB0aHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYhaW1wb3J0YW50fS50YWJsZS1ib3JkZXJlZCB0ZCwudGFibGUtYm9yZGVyZWQgdGh7Ym9yZGVyOjFweCBzb2xpZCAjZGRkIWltcG9ydGFudH19Ci8qIyBzb3VyY2VNYXBwaW5nVVJMPWJvb3RzdHJhcC5taW4uY3NzLm1hcCAqLw==\"") -}