File Manager
(()=>{var __webpack_modules__={741:function(__unused_webpack_module,exports){eval('/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function (t, e) {\n true ? e(exports) : 0;\n}(this, function (t) {\n "use strict";\n\n function l(t) {\n for (var e, i, n = 1, o = arguments.length; n < o; n++) for (e in i = arguments[n]) t[e] = i[e];\n return t;\n }\n var R = Object.create || function (t) {\n return N.prototype = t, new N();\n };\n function N() {}\n function a(t, e) {\n var i,\n n = Array.prototype.slice;\n return t.bind ? t.bind.apply(t, n.call(arguments, 1)) : (i = n.call(arguments, 2), function () {\n return t.apply(e, i.length ? i.concat(n.call(arguments)) : arguments);\n });\n }\n var D = 0;\n function h(t) {\n return "_leaflet_id" in t || (t._leaflet_id = ++D), t._leaflet_id;\n }\n function j(t, e, i) {\n var n,\n o,\n s = function () {\n n = !1, o && (r.apply(i, o), o = !1);\n },\n r = function () {\n n ? o = arguments : (t.apply(i, arguments), setTimeout(s, e), n = !0);\n };\n return r;\n }\n function H(t, e, i) {\n var n = e[1],\n e = e[0],\n o = n - e;\n return t === n && i ? t : ((t - e) % o + o) % o + e;\n }\n function u() {\n return !1;\n }\n function i(t, e) {\n return !1 === e ? t : (e = Math.pow(10, void 0 === e ? 6 : e), Math.round(t * e) / e);\n }\n function W(t) {\n return t.trim ? t.trim() : t.replace(/^\\s+|\\s+$/g, "");\n }\n function F(t) {\n return W(t).split(/\\s+/);\n }\n function c(t, e) {\n for (var i in Object.prototype.hasOwnProperty.call(t, "options") || (t.options = t.options ? R(t.options) : {}), e) t.options[i] = e[i];\n return t.options;\n }\n function U(t, e, i) {\n var n,\n o = [];\n for (n in t) o.push(encodeURIComponent(i ? n.toUpperCase() : n) + "=" + encodeURIComponent(t[n]));\n return (e && -1 !== e.indexOf("?") ? "&" : "?") + o.join("&");\n }\n var V = /\\{ *([\\w_ -]+) *\\}/g;\n function q(t, i) {\n return t.replace(V, function (t, e) {\n e = i[e];\n if (void 0 === e) throw new Error("No value provided for variable " + t);\n return e = "function" == typeof e ? e(i) : e;\n });\n }\n var d = Array.isArray || function (t) {\n return "[object Array]" === Object.prototype.toString.call(t);\n };\n function G(t, e) {\n for (var i = 0; i < t.length; i++) if (t[i] === e) return i;\n return -1;\n }\n var K = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";\n function Y(t) {\n return window["webkit" + t] || window["moz" + t] || window["ms" + t];\n }\n var X = 0;\n function J(t) {\n var e = +new Date(),\n i = Math.max(0, 16 - (e - X));\n return X = e + i, window.setTimeout(t, i);\n }\n var $ = window.requestAnimationFrame || Y("RequestAnimationFrame") || J,\n Q = window.cancelAnimationFrame || Y("CancelAnimationFrame") || Y("CancelRequestAnimationFrame") || function (t) {\n window.clearTimeout(t);\n };\n function x(t, e, i) {\n if (!i || $ !== J) return $.call(window, a(t, e));\n t.call(e);\n }\n function r(t) {\n t && Q.call(window, t);\n }\n var tt = {\n __proto__: null,\n extend: l,\n create: R,\n bind: a,\n get lastId() {\n return D;\n },\n stamp: h,\n throttle: j,\n wrapNum: H,\n falseFn: u,\n formatNum: i,\n trim: W,\n splitWords: F,\n setOptions: c,\n getParamString: U,\n template: q,\n isArray: d,\n indexOf: G,\n emptyImageUrl: K,\n requestFn: $,\n cancelFn: Q,\n requestAnimFrame: x,\n cancelAnimFrame: r\n };\n function et() {}\n et.extend = function (t) {\n function e() {\n c(this), this.initialize && this.initialize.apply(this, arguments), this.callInitHooks();\n }\n var i,\n n = e.__super__ = this.prototype,\n o = R(n);\n for (i in (o.constructor = e).prototype = o, this) Object.prototype.hasOwnProperty.call(this, i) && "prototype" !== i && "__super__" !== i && (e[i] = this[i]);\n if (t.statics && l(e, t.statics), t.includes) {\n var s = t.includes;\n if ("undefined" != typeof L && L && L.Mixin) {\n s = d(s) ? s : [s];\n for (var r = 0; r < s.length; r++) s[r] === L.Mixin.Events && console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.", new Error().stack);\n }\n l.apply(null, [o].concat(t.includes));\n }\n return l(o, t), delete o.statics, delete o.includes, o.options && (o.options = n.options ? R(n.options) : {}, l(o.options, t.options)), o._initHooks = [], o.callInitHooks = function () {\n if (!this._initHooksCalled) {\n n.callInitHooks && n.callInitHooks.call(this), this._initHooksCalled = !0;\n for (var t = 0, e = o._initHooks.length; t < e; t++) o._initHooks[t].call(this);\n }\n }, e;\n }, et.include = function (t) {\n var e = this.prototype.options;\n return l(this.prototype, t), t.options && (this.prototype.options = e, this.mergeOptions(t.options)), this;\n }, et.mergeOptions = function (t) {\n return l(this.prototype.options, t), this;\n }, et.addInitHook = function (t) {\n var e = Array.prototype.slice.call(arguments, 1),\n i = "function" == typeof t ? t : function () {\n this[t].apply(this, e);\n };\n return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(i), this;\n };\n var e = {\n on: function (t, e, i) {\n if ("object" == typeof t) for (var n in t) this._on(n, t[n], e);else for (var o = 0, s = (t = F(t)).length; o < s; o++) this._on(t[o], e, i);\n return this;\n },\n off: function (t, e, i) {\n if (arguments.length) {\n if ("object" == typeof t) for (var n in t) this._off(n, t[n], e);else {\n t = F(t);\n for (var o = 1 === arguments.length, s = 0, r = t.length; s < r; s++) o ? this._off(t[s]) : this._off(t[s], e, i);\n }\n } else delete this._events;\n return this;\n },\n _on: function (t, e, i, n) {\n "function" != typeof e ? console.warn("wrong listener type: " + typeof e) : !1 === this._listens(t, e, i) && (e = {\n fn: e,\n ctx: i = i === this ? void 0 : i\n }, n && (e.once = !0), this._events = this._events || {}, this._events[t] = this._events[t] || [], this._events[t].push(e));\n },\n _off: function (t, e, i) {\n var n, o, s;\n if (this._events && (n = this._events[t])) if (1 === arguments.length) {\n if (this._firingCount) for (o = 0, s = n.length; o < s; o++) n[o].fn = u;\n delete this._events[t];\n } else "function" != typeof e ? console.warn("wrong listener type: " + typeof e) : !1 !== (e = this._listens(t, e, i)) && (i = n[e], this._firingCount && (i.fn = u, this._events[t] = n = n.slice()), n.splice(e, 1));\n },\n fire: function (t, e, i) {\n if (this.listens(t, i)) {\n var n = l({}, e, {\n type: t,\n target: this,\n sourceTarget: e && e.sourceTarget || this\n });\n if (this._events) {\n var o = this._events[t];\n if (o) {\n this._firingCount = this._firingCount + 1 || 1;\n for (var s = 0, r = o.length; s < r; s++) {\n var a = o[s],\n h = a.fn;\n a.once && this.off(t, h, a.ctx), h.call(a.ctx || this, n);\n }\n this._firingCount--;\n }\n }\n i && this._propagateEvent(n);\n }\n return this;\n },\n listens: function (t, e, i, n) {\n "string" != typeof t && console.warn(\'"string" type argument expected\');\n var o = e,\n s = ("function" != typeof e && (n = !!e, i = o = void 0), this._events && this._events[t]);\n if (s && s.length && !1 !== this._listens(t, o, i)) return !0;\n if (n) for (var r in this._eventParents) if (this._eventParents[r].listens(t, e, i, n)) return !0;\n return !1;\n },\n _listens: function (t, e, i) {\n if (this._events) {\n var n = this._events[t] || [];\n if (!e) return !!n.length;\n i === this && (i = void 0);\n for (var o = 0, s = n.length; o < s; o++) if (n[o].fn === e && n[o].ctx === i) return o;\n }\n return !1;\n },\n once: function (t, e, i) {\n if ("object" == typeof t) for (var n in t) this._on(n, t[n], e, !0);else for (var o = 0, s = (t = F(t)).length; o < s; o++) this._on(t[o], e, i, !0);\n return this;\n },\n addEventParent: function (t) {\n return this._eventParents = this._eventParents || {}, this._eventParents[h(t)] = t, this;\n },\n removeEventParent: function (t) {\n return this._eventParents && delete this._eventParents[h(t)], this;\n },\n _propagateEvent: function (t) {\n for (var e in this._eventParents) this._eventParents[e].fire(t.type, l({\n layer: t.target,\n propagatedFrom: t.target\n }, t), !0);\n }\n },\n it = (e.addEventListener = e.on, e.removeEventListener = e.clearAllEventListeners = e.off, e.addOneTimeEventListener = e.once, e.fireEvent = e.fire, e.hasEventListeners = e.listens, et.extend(e));\n function p(t, e, i) {\n this.x = i ? Math.round(t) : t, this.y = i ? Math.round(e) : e;\n }\n var nt = Math.trunc || function (t) {\n return 0 < t ? Math.floor(t) : Math.ceil(t);\n };\n function m(t, e, i) {\n return t instanceof p ? t : d(t) ? new p(t[0], t[1]) : null == t ? t : "object" == typeof t && "x" in t && "y" in t ? new p(t.x, t.y) : new p(t, e, i);\n }\n function f(t, e) {\n if (t) for (var i = e ? [t, e] : t, n = 0, o = i.length; n < o; n++) this.extend(i[n]);\n }\n function _(t, e) {\n return !t || t instanceof f ? t : new f(t, e);\n }\n function s(t, e) {\n if (t) for (var i = e ? [t, e] : t, n = 0, o = i.length; n < o; n++) this.extend(i[n]);\n }\n function g(t, e) {\n return t instanceof s ? t : new s(t, e);\n }\n function v(t, e, i) {\n if (isNaN(t) || isNaN(e)) throw new Error("Invalid LatLng object: (" + t + ", " + e + ")");\n this.lat = +t, this.lng = +e, void 0 !== i && (this.alt = +i);\n }\n function w(t, e, i) {\n return t instanceof v ? t : d(t) && "object" != typeof t[0] ? 3 === t.length ? new v(t[0], t[1], t[2]) : 2 === t.length ? new v(t[0], t[1]) : null : null == t ? t : "object" == typeof t && "lat" in t ? new v(t.lat, "lng" in t ? t.lng : t.lon, t.alt) : void 0 === e ? null : new v(t, e, i);\n }\n p.prototype = {\n clone: function () {\n return new p(this.x, this.y);\n },\n add: function (t) {\n return this.clone()._add(m(t));\n },\n _add: function (t) {\n return this.x += t.x, this.y += t.y, this;\n },\n subtract: function (t) {\n return this.clone()._subtract(m(t));\n },\n _subtract: function (t) {\n return this.x -= t.x, this.y -= t.y, this;\n },\n divideBy: function (t) {\n return this.clone()._divideBy(t);\n },\n _divideBy: function (t) {\n return this.x /= t, this.y /= t, this;\n },\n multiplyBy: function (t) {\n return this.clone()._multiplyBy(t);\n },\n _multiplyBy: function (t) {\n return this.x *= t, this.y *= t, this;\n },\n scaleBy: function (t) {\n return new p(this.x * t.x, this.y * t.y);\n },\n unscaleBy: function (t) {\n return new p(this.x / t.x, this.y / t.y);\n },\n round: function () {\n return this.clone()._round();\n },\n _round: function () {\n return this.x = Math.round(this.x), this.y = Math.round(this.y), this;\n },\n floor: function () {\n return this.clone()._floor();\n },\n _floor: function () {\n return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this;\n },\n ceil: function () {\n return this.clone()._ceil();\n },\n _ceil: function () {\n return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this;\n },\n trunc: function () {\n return this.clone()._trunc();\n },\n _trunc: function () {\n return this.x = nt(this.x), this.y = nt(this.y), this;\n },\n distanceTo: function (t) {\n var e = (t = m(t)).x - this.x,\n t = t.y - this.y;\n return Math.sqrt(e * e + t * t);\n },\n equals: function (t) {\n return (t = m(t)).x === this.x && t.y === this.y;\n },\n contains: function (t) {\n return t = m(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y);\n },\n toString: function () {\n return "Point(" + i(this.x) + ", " + i(this.y) + ")";\n }\n }, f.prototype = {\n extend: function (t) {\n var e, i;\n if (t) {\n if (t instanceof p || "number" == typeof t[0] || "x" in t) e = i = m(t);else if (e = (t = _(t)).min, i = t.max, !e || !i) return this;\n this.min || this.max ? (this.min.x = Math.min(e.x, this.min.x), this.max.x = Math.max(i.x, this.max.x), this.min.y = Math.min(e.y, this.min.y), this.max.y = Math.max(i.y, this.max.y)) : (this.min = e.clone(), this.max = i.clone());\n }\n return this;\n },\n getCenter: function (t) {\n return m((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t);\n },\n getBottomLeft: function () {\n return m(this.min.x, this.max.y);\n },\n getTopRight: function () {\n return m(this.max.x, this.min.y);\n },\n getTopLeft: function () {\n return this.min;\n },\n getBottomRight: function () {\n return this.max;\n },\n getSize: function () {\n return this.max.subtract(this.min);\n },\n contains: function (t) {\n var e, i;\n return (t = ("number" == typeof t[0] || t instanceof p ? m : _)(t)) instanceof f ? (e = t.min, i = t.max) : e = i = t, e.x >= this.min.x && i.x <= this.max.x && e.y >= this.min.y && i.y <= this.max.y;\n },\n intersects: function (t) {\n t = _(t);\n var e = this.min,\n i = this.max,\n n = t.min,\n t = t.max,\n o = t.x >= e.x && n.x <= i.x,\n t = t.y >= e.y && n.y <= i.y;\n return o && t;\n },\n overlaps: function (t) {\n t = _(t);\n var e = this.min,\n i = this.max,\n n = t.min,\n t = t.max,\n o = t.x > e.x && n.x < i.x,\n t = t.y > e.y && n.y < i.y;\n return o && t;\n },\n isValid: function () {\n return !(!this.min || !this.max);\n },\n pad: function (t) {\n var e = this.min,\n i = this.max,\n n = Math.abs(e.x - i.x) * t,\n t = Math.abs(e.y - i.y) * t;\n return _(m(e.x - n, e.y - t), m(i.x + n, i.y + t));\n },\n equals: function (t) {\n return !!t && (t = _(t), this.min.equals(t.getTopLeft()) && this.max.equals(t.getBottomRight()));\n }\n }, s.prototype = {\n extend: function (t) {\n var e,\n i,\n n = this._southWest,\n o = this._northEast;\n if (t instanceof v) i = e = t;else {\n if (!(t instanceof s)) return t ? this.extend(w(t) || g(t)) : this;\n if (e = t._southWest, i = t._northEast, !e || !i) return this;\n }\n return n || o ? (n.lat = Math.min(e.lat, n.lat), n.lng = Math.min(e.lng, n.lng), o.lat = Math.max(i.lat, o.lat), o.lng = Math.max(i.lng, o.lng)) : (this._southWest = new v(e.lat, e.lng), this._northEast = new v(i.lat, i.lng)), this;\n },\n pad: function (t) {\n var e = this._southWest,\n i = this._northEast,\n n = Math.abs(e.lat - i.lat) * t,\n t = Math.abs(e.lng - i.lng) * t;\n return new s(new v(e.lat - n, e.lng - t), new v(i.lat + n, i.lng + t));\n },\n getCenter: function () {\n return new v((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this._northEast.lng) / 2);\n },\n getSouthWest: function () {\n return this._southWest;\n },\n getNorthEast: function () {\n return this._northEast;\n },\n getNorthWest: function () {\n return new v(this.getNorth(), this.getWest());\n },\n getSouthEast: function () {\n return new v(this.getSouth(), this.getEast());\n },\n getWest: function () {\n return this._southWest.lng;\n },\n getSouth: function () {\n return this._southWest.lat;\n },\n getEast: function () {\n return this._northEast.lng;\n },\n getNorth: function () {\n return this._northEast.lat;\n },\n contains: function (t) {\n t = ("number" == typeof t[0] || t instanceof v || "lat" in t ? w : g)(t);\n var e,\n i,\n n = this._southWest,\n o = this._northEast;\n return t instanceof s ? (e = t.getSouthWest(), i = t.getNorthEast()) : e = i = t, e.lat >= n.lat && i.lat <= o.lat && e.lng >= n.lng && i.lng <= o.lng;\n },\n intersects: function (t) {\n t = g(t);\n var e = this._southWest,\n i = this._northEast,\n n = t.getSouthWest(),\n t = t.getNorthEast(),\n o = t.lat >= e.lat && n.lat <= i.lat,\n t = t.lng >= e.lng && n.lng <= i.lng;\n return o && t;\n },\n overlaps: function (t) {\n t = g(t);\n var e = this._southWest,\n i = this._northEast,\n n = t.getSouthWest(),\n t = t.getNorthEast(),\n o = t.lat > e.lat && n.lat < i.lat,\n t = t.lng > e.lng && n.lng < i.lng;\n return o && t;\n },\n toBBoxString: function () {\n return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",");\n },\n equals: function (t, e) {\n return !!t && (t = g(t), this._southWest.equals(t.getSouthWest(), e) && this._northEast.equals(t.getNorthEast(), e));\n },\n isValid: function () {\n return !(!this._southWest || !this._northEast);\n }\n };\n var ot = {\n latLngToPoint: function (t, e) {\n t = this.projection.project(t), e = this.scale(e);\n return this.transformation._transform(t, e);\n },\n pointToLatLng: function (t, e) {\n e = this.scale(e), t = this.transformation.untransform(t, e);\n return this.projection.unproject(t);\n },\n project: function (t) {\n return this.projection.project(t);\n },\n unproject: function (t) {\n return this.projection.unproject(t);\n },\n scale: function (t) {\n return 256 * Math.pow(2, t);\n },\n zoom: function (t) {\n return Math.log(t / 256) / Math.LN2;\n },\n getProjectedBounds: function (t) {\n var e;\n return this.infinite ? null : (e = this.projection.bounds, t = this.scale(t), new f(this.transformation.transform(e.min, t), this.transformation.transform(e.max, t)));\n },\n infinite: !(v.prototype = {\n equals: function (t, e) {\n return !!t && (t = w(t), Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng)) <= (void 0 === e ? 1e-9 : e));\n },\n toString: function (t) {\n return "LatLng(" + i(this.lat, t) + ", " + i(this.lng, t) + ")";\n },\n distanceTo: function (t) {\n return st.distance(this, w(t));\n },\n wrap: function () {\n return st.wrapLatLng(this);\n },\n toBounds: function (t) {\n var t = 180 * t / 40075017,\n e = t / Math.cos(Math.PI / 180 * this.lat);\n return g([this.lat - t, this.lng - e], [this.lat + t, this.lng + e]);\n },\n clone: function () {\n return new v(this.lat, this.lng, this.alt);\n }\n }),\n wrapLatLng: function (t) {\n var e = this.wrapLng ? H(t.lng, this.wrapLng, !0) : t.lng;\n return new v(this.wrapLat ? H(t.lat, this.wrapLat, !0) : t.lat, e, t.alt);\n },\n wrapLatLngBounds: function (t) {\n var e = t.getCenter(),\n i = this.wrapLatLng(e),\n n = e.lat - i.lat,\n e = e.lng - i.lng;\n return 0 == n && 0 == e ? t : (i = t.getSouthWest(), t = t.getNorthEast(), new s(new v(i.lat - n, i.lng - e), new v(t.lat - n, t.lng - e)));\n }\n },\n st = l({}, ot, {\n wrapLng: [-180, 180],\n R: 6371e3,\n distance: function (t, e) {\n var i = Math.PI / 180,\n n = t.lat * i,\n o = e.lat * i,\n s = Math.sin((e.lat - t.lat) * i / 2),\n e = Math.sin((e.lng - t.lng) * i / 2),\n t = s * s + Math.cos(n) * Math.cos(o) * e * e,\n i = 2 * Math.atan2(Math.sqrt(t), Math.sqrt(1 - t));\n return this.R * i;\n }\n }),\n rt = 6378137,\n rt = {\n R: rt,\n MAX_LATITUDE: 85.0511287798,\n project: function (t) {\n var e = Math.PI / 180,\n i = this.MAX_LATITUDE,\n i = Math.max(Math.min(i, t.lat), -i),\n i = Math.sin(i * e);\n return new p(this.R * t.lng * e, this.R * Math.log((1 + i) / (1 - i)) / 2);\n },\n unproject: function (t) {\n var e = 180 / Math.PI;\n return new v((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * e, t.x * e / this.R);\n },\n bounds: new f([-(rt = rt * Math.PI), -rt], [rt, rt])\n };\n function at(t, e, i, n) {\n d(t) ? (this._a = t[0], this._b = t[1], this._c = t[2], this._d = t[3]) : (this._a = t, this._b = e, this._c = i, this._d = n);\n }\n function ht(t, e, i, n) {\n return new at(t, e, i, n);\n }\n at.prototype = {\n transform: function (t, e) {\n return this._transform(t.clone(), e);\n },\n _transform: function (t, e) {\n return t.x = (e = e || 1) * (this._a * t.x + this._b), t.y = e * (this._c * t.y + this._d), t;\n },\n untransform: function (t, e) {\n return new p((t.x / (e = e || 1) - this._b) / this._a, (t.y / e - this._d) / this._c);\n }\n };\n var lt = l({}, st, {\n code: "EPSG:3857",\n projection: rt,\n transformation: ht(lt = .5 / (Math.PI * rt.R), .5, -lt, .5)\n }),\n ut = l({}, lt, {\n code: "EPSG:900913"\n });\n function ct(t) {\n return document.createElementNS("http://www.w3.org/2000/svg", t);\n }\n function dt(t, e) {\n for (var i, n, o, s, r = "", a = 0, h = t.length; a < h; a++) {\n for (i = 0, n = (o = t[a]).length; i < n; i++) r += (i ? "L" : "M") + (s = o[i]).x + " " + s.y;\n r += e ? b.svg ? "z" : "x" : "";\n }\n return r || "M0 0";\n }\n var _t = document.documentElement.style,\n pt = "ActiveXObject" in window,\n mt = pt && !document.addEventListener,\n n = "msLaunchUri" in navigator && !("documentMode" in document),\n ft = y("webkit"),\n gt = y("android"),\n vt = y("android 2") || y("android 3"),\n yt = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10),\n yt = gt && y("Google") && yt < 537 && !("AudioNode" in window),\n xt = !!window.opera,\n wt = !n && y("chrome"),\n bt = y("gecko") && !ft && !xt && !pt,\n Pt = !wt && y("safari"),\n Lt = y("phantom"),\n o = "OTransition" in _t,\n Tt = 0 === navigator.platform.indexOf("Win"),\n Mt = pt && "transition" in _t,\n zt = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix() && !vt,\n _t = "MozPerspective" in _t,\n Ct = !window.L_DISABLE_3D && (Mt || zt || _t) && !o && !Lt,\n Zt = "undefined" != typeof orientation || y("mobile"),\n St = Zt && ft,\n Et = Zt && zt,\n kt = !window.PointerEvent && window.MSPointerEvent,\n Ot = !(!window.PointerEvent && !kt),\n At = "ontouchstart" in window || !!window.TouchEvent,\n Bt = !window.L_NO_TOUCH && (At || Ot),\n It = Zt && xt,\n Rt = Zt && bt,\n Nt = 1 < (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI),\n Dt = function () {\n var t = !1;\n try {\n var e = Object.defineProperty({}, "passive", {\n get: function () {\n t = !0;\n }\n });\n window.addEventListener("testPassiveEventSupport", u, e), window.removeEventListener("testPassiveEventSupport", u, e);\n } catch (t) {}\n return t;\n }(),\n jt = !!document.createElement("canvas").getContext,\n Ht = !(!document.createElementNS || !ct("svg").createSVGRect),\n Wt = !!Ht && ((Wt = document.createElement("div")).innerHTML = "<svg/>", "http://www.w3.org/2000/svg" === (Wt.firstChild && Wt.firstChild.namespaceURI));\n function y(t) {\n return 0 <= navigator.userAgent.toLowerCase().indexOf(t);\n }\n var b = {\n ie: pt,\n ielt9: mt,\n edge: n,\n webkit: ft,\n android: gt,\n android23: vt,\n androidStock: yt,\n opera: xt,\n chrome: wt,\n gecko: bt,\n safari: Pt,\n phantom: Lt,\n opera12: o,\n win: Tt,\n ie3d: Mt,\n webkit3d: zt,\n gecko3d: _t,\n any3d: Ct,\n mobile: Zt,\n mobileWebkit: St,\n mobileWebkit3d: Et,\n msPointer: kt,\n pointer: Ot,\n touch: Bt,\n touchNative: At,\n mobileOpera: It,\n mobileGecko: Rt,\n retina: Nt,\n passiveEvents: Dt,\n canvas: jt,\n svg: Ht,\n vml: !Ht && function () {\n try {\n var t = document.createElement("div"),\n e = (t.innerHTML = \'<v:shape adj="1"/>\', t.firstChild);\n return e.style.behavior = "url(#default#VML)", e && "object" == typeof e.adj;\n } catch (t) {\n return !1;\n }\n }(),\n inlineSvg: Wt,\n mac: 0 === navigator.platform.indexOf("Mac"),\n linux: 0 === navigator.platform.indexOf("Linux")\n },\n Ft = b.msPointer ? "MSPointerDown" : "pointerdown",\n Ut = b.msPointer ? "MSPointerMove" : "pointermove",\n Vt = b.msPointer ? "MSPointerUp" : "pointerup",\n qt = b.msPointer ? "MSPointerCancel" : "pointercancel",\n Gt = {\n touchstart: Ft,\n touchmove: Ut,\n touchend: Vt,\n touchcancel: qt\n },\n Kt = {\n touchstart: function (t, e) {\n e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH && O(e);\n ee(t, e);\n },\n touchmove: ee,\n touchend: ee,\n touchcancel: ee\n },\n Yt = {},\n Xt = !1;\n function Jt(t, e, i) {\n return "touchstart" !== e || Xt || (document.addEventListener(Ft, $t, !0), document.addEventListener(Ut, Qt, !0), document.addEventListener(Vt, te, !0), document.addEventListener(qt, te, !0), Xt = !0), Kt[e] ? (i = Kt[e].bind(this, i), t.addEventListener(Gt[e], i, !1), i) : (console.warn("wrong event specified:", e), u);\n }\n function $t(t) {\n Yt[t.pointerId] = t;\n }\n function Qt(t) {\n Yt[t.pointerId] && (Yt[t.pointerId] = t);\n }\n function te(t) {\n delete Yt[t.pointerId];\n }\n function ee(t, e) {\n if (e.pointerType !== (e.MSPOINTER_TYPE_MOUSE || "mouse")) {\n for (var i in e.touches = [], Yt) e.touches.push(Yt[i]);\n e.changedTouches = [e], t(e);\n }\n }\n var ie = 200;\n function ne(t, i) {\n t.addEventListener("dblclick", i);\n var n,\n o = 0;\n function e(t) {\n var e;\n 1 !== t.detail ? n = t.detail : "mouse" === t.pointerType || t.sourceCapabilities && !t.sourceCapabilities.firesTouchEvents || (e = Ne(t)).some(function (t) {\n return t instanceof HTMLLabelElement && t.attributes.for;\n }) && !e.some(function (t) {\n return t instanceof HTMLInputElement || t instanceof HTMLSelectElement;\n }) || ((e = Date.now()) - o <= ie ? 2 === ++n && i(function (t) {\n var e,\n i,\n n = {};\n for (i in t) e = t[i], n[i] = e && e.bind ? e.bind(t) : e;\n return (t = n).type = "dblclick", n.detail = 2, n.isTrusted = !1, n._simulated = !0, n;\n }(t)) : n = 1, o = e);\n }\n return t.addEventListener("click", e), {\n dblclick: i,\n simDblclick: e\n };\n }\n var oe,\n se,\n re,\n ae,\n he,\n le,\n ue = we(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]),\n ce = we(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),\n de = "webkitTransition" === ce || "OTransition" === ce ? ce + "End" : "transitionend";\n function _e(t) {\n return "string" == typeof t ? document.getElementById(t) : t;\n }\n function pe(t, e) {\n var i = t.style[e] || t.currentStyle && t.currentStyle[e];\n return "auto" === (i = i && "auto" !== i || !document.defaultView ? i : (t = document.defaultView.getComputedStyle(t, null)) ? t[e] : null) ? null : i;\n }\n function P(t, e, i) {\n t = document.createElement(t);\n return t.className = e || "", i && i.appendChild(t), t;\n }\n function T(t) {\n var e = t.parentNode;\n e && e.removeChild(t);\n }\n function me(t) {\n for (; t.firstChild;) t.removeChild(t.firstChild);\n }\n function fe(t) {\n var e = t.parentNode;\n e && e.lastChild !== t && e.appendChild(t);\n }\n function ge(t) {\n var e = t.parentNode;\n e && e.firstChild !== t && e.insertBefore(t, e.firstChild);\n }\n function ve(t, e) {\n return void 0 !== t.classList ? t.classList.contains(e) : 0 < (t = xe(t)).length && new RegExp("(^|\\\\s)" + e + "(\\\\s|$)").test(t);\n }\n function M(t, e) {\n var i;\n if (void 0 !== t.classList) for (var n = F(e), o = 0, s = n.length; o < s; o++) t.classList.add(n[o]);else ve(t, e) || ye(t, ((i = xe(t)) ? i + " " : "") + e);\n }\n function z(t, e) {\n void 0 !== t.classList ? t.classList.remove(e) : ye(t, W((" " + xe(t) + " ").replace(" " + e + " ", " ")));\n }\n function ye(t, e) {\n void 0 === t.className.baseVal ? t.className = e : t.className.baseVal = e;\n }\n function xe(t) {\n return void 0 === (t = t.correspondingElement ? t.correspondingElement : t).className.baseVal ? t.className : t.className.baseVal;\n }\n function C(t, e) {\n if ("opacity" in t.style) t.style.opacity = e;else if ("filter" in t.style) {\n var i = !1,\n n = "DXImageTransform.Microsoft.Alpha";\n try {\n i = t.filters.item(n);\n } catch (t) {\n if (1 === e) return;\n }\n e = Math.round(100 * e), i ? (i.Enabled = 100 !== e, i.Opacity = e) : t.style.filter += " progid:" + n + "(opacity=" + e + ")";\n }\n }\n function we(t) {\n for (var e = document.documentElement.style, i = 0; i < t.length; i++) if (t[i] in e) return t[i];\n return !1;\n }\n function be(t, e, i) {\n e = e || new p(0, 0);\n t.style[ue] = (b.ie3d ? "translate(" + e.x + "px," + e.y + "px)" : "translate3d(" + e.x + "px," + e.y + "px,0)") + (i ? " scale(" + i + ")" : "");\n }\n function Z(t, e) {\n t._leaflet_pos = e, b.any3d ? be(t, e) : (t.style.left = e.x + "px", t.style.top = e.y + "px");\n }\n function Pe(t) {\n return t._leaflet_pos || new p(0, 0);\n }\n function Le() {\n S(window, "dragstart", O);\n }\n function Te() {\n k(window, "dragstart", O);\n }\n function Me(t) {\n for (; -1 === t.tabIndex;) t = t.parentNode;\n t.style && (ze(), le = (he = t).style.outlineStyle, t.style.outlineStyle = "none", S(window, "keydown", ze));\n }\n function ze() {\n he && (he.style.outlineStyle = le, le = he = void 0, k(window, "keydown", ze));\n }\n function Ce(t) {\n for (; !((t = t.parentNode).offsetWidth && t.offsetHeight || t === document.body););\n return t;\n }\n function Ze(t) {\n var e = t.getBoundingClientRect();\n return {\n x: e.width / t.offsetWidth || 1,\n y: e.height / t.offsetHeight || 1,\n boundingClientRect: e\n };\n }\n ae = "onselectstart" in document ? (re = function () {\n S(window, "selectstart", O);\n }, function () {\n k(window, "selectstart", O);\n }) : (se = we(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]), re = function () {\n var t;\n se && (t = document.documentElement.style, oe = t[se], t[se] = "none");\n }, function () {\n se && (document.documentElement.style[se] = oe, oe = void 0);\n });\n pt = {\n __proto__: null,\n TRANSFORM: ue,\n TRANSITION: ce,\n TRANSITION_END: de,\n get: _e,\n getStyle: pe,\n create: P,\n remove: T,\n empty: me,\n toFront: fe,\n toBack: ge,\n hasClass: ve,\n addClass: M,\n removeClass: z,\n setClass: ye,\n getClass: xe,\n setOpacity: C,\n testProp: we,\n setTransform: be,\n setPosition: Z,\n getPosition: Pe,\n get disableTextSelection() {\n return re;\n },\n get enableTextSelection() {\n return ae;\n },\n disableImageDrag: Le,\n enableImageDrag: Te,\n preventOutline: Me,\n restoreOutline: ze,\n getSizedParentNode: Ce,\n getScale: Ze\n };\n function S(t, e, i, n) {\n if (e && "object" == typeof e) for (var o in e) ke(t, o, e[o], i);else for (var s = 0, r = (e = F(e)).length; s < r; s++) ke(t, e[s], i, n);\n return this;\n }\n var E = "_leaflet_events";\n function k(t, e, i, n) {\n if (1 === arguments.length) Se(t), delete t[E];else if (e && "object" == typeof e) for (var o in e) Oe(t, o, e[o], i);else if (e = F(e), 2 === arguments.length) Se(t, function (t) {\n return -1 !== G(e, t);\n });else for (var s = 0, r = e.length; s < r; s++) Oe(t, e[s], i, n);\n return this;\n }\n function Se(t, e) {\n for (var i in t[E]) {\n var n = i.split(/\\d/)[0];\n e && !e(n) || Oe(t, n, null, null, i);\n }\n }\n var Ee = {\n mouseenter: "mouseover",\n mouseleave: "mouseout",\n wheel: !("onwheel" in window) && "mousewheel"\n };\n function ke(e, t, i, n) {\n var o,\n s,\n r = t + h(i) + (n ? "_" + h(n) : "");\n e[E] && e[E][r] || (s = o = function (t) {\n return i.call(n || e, t || window.event);\n }, !b.touchNative && b.pointer && 0 === t.indexOf("touch") ? o = Jt(e, t, o) : b.touch && "dblclick" === t ? o = ne(e, o) : "addEventListener" in e ? "touchstart" === t || "touchmove" === t || "wheel" === t || "mousewheel" === t ? e.addEventListener(Ee[t] || t, o, !!b.passiveEvents && {\n passive: !1\n }) : "mouseenter" === t || "mouseleave" === t ? e.addEventListener(Ee[t], o = function (t) {\n t = t || window.event, We(e, t) && s(t);\n }, !1) : e.addEventListener(t, s, !1) : e.attachEvent("on" + t, o), e[E] = e[E] || {}, e[E][r] = o);\n }\n function Oe(t, e, i, n, o) {\n o = o || e + h(i) + (n ? "_" + h(n) : "");\n var s,\n r,\n i = t[E] && t[E][o];\n i && (!b.touchNative && b.pointer && 0 === e.indexOf("touch") ? (n = t, r = i, Gt[s = e] ? n.removeEventListener(Gt[s], r, !1) : console.warn("wrong event specified:", s)) : b.touch && "dblclick" === e ? (n = i, (r = t).removeEventListener("dblclick", n.dblclick), r.removeEventListener("click", n.simDblclick)) : "removeEventListener" in t ? t.removeEventListener(Ee[e] || e, i, !1) : t.detachEvent("on" + e, i), t[E][o] = null);\n }\n function Ae(t) {\n return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t.cancelBubble = !0, this;\n }\n function Be(t) {\n return ke(t, "wheel", Ae), this;\n }\n function Ie(t) {\n return S(t, "mousedown touchstart dblclick contextmenu", Ae), t._leaflet_disable_click = !0, this;\n }\n function O(t) {\n return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this;\n }\n function Re(t) {\n return O(t), Ae(t), this;\n }\n function Ne(t) {\n if (t.composedPath) return t.composedPath();\n for (var e = [], i = t.target; i;) e.push(i), i = i.parentNode;\n return e;\n }\n function De(t, e) {\n var i, n;\n return e ? (n = (i = Ze(e)).boundingClientRect, new p((t.clientX - n.left) / i.x - e.clientLeft, (t.clientY - n.top) / i.y - e.clientTop)) : new p(t.clientX, t.clientY);\n }\n var je = b.linux && b.chrome ? window.devicePixelRatio : b.mac ? 3 * window.devicePixelRatio : 0 < window.devicePixelRatio ? 2 * window.devicePixelRatio : 1;\n function He(t) {\n return b.edge ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / je : t.deltaY && 1 === t.deltaMode ? 20 * -t.deltaY : t.deltaY && 2 === t.deltaMode ? 60 * -t.deltaY : t.deltaX || t.deltaZ ? 0 : t.wheelDelta ? (t.wheelDeltaY || t.wheelDelta) / 2 : t.detail && Math.abs(t.detail) < 32765 ? 20 * -t.detail : t.detail ? t.detail / -32765 * 60 : 0;\n }\n function We(t, e) {\n var i = e.relatedTarget;\n if (!i) return !0;\n try {\n for (; i && i !== t;) i = i.parentNode;\n } catch (t) {\n return !1;\n }\n return i !== t;\n }\n var mt = {\n __proto__: null,\n on: S,\n off: k,\n stopPropagation: Ae,\n disableScrollPropagation: Be,\n disableClickPropagation: Ie,\n preventDefault: O,\n stop: Re,\n getPropagationPath: Ne,\n getMousePosition: De,\n getWheelDelta: He,\n isExternalTarget: We,\n addListener: S,\n removeListener: k\n },\n Fe = it.extend({\n run: function (t, e, i, n) {\n this.stop(), this._el = t, this._inProgress = !0, this._duration = i || .25, this._easeOutPower = 1 / Math.max(n || .5, .2), this._startPos = Pe(t), this._offset = e.subtract(this._startPos), this._startTime = +new Date(), this.fire("start"), this._animate();\n },\n stop: function () {\n this._inProgress && (this._step(!0), this._complete());\n },\n _animate: function () {\n this._animId = x(this._animate, this), this._step();\n },\n _step: function (t) {\n var e = +new Date() - this._startTime,\n i = 1e3 * this._duration;\n e < i ? this._runFrame(this._easeOut(e / i), t) : (this._runFrame(1), this._complete());\n },\n _runFrame: function (t, e) {\n t = this._startPos.add(this._offset.multiplyBy(t));\n e && t._round(), Z(this._el, t), this.fire("step");\n },\n _complete: function () {\n r(this._animId), this._inProgress = !1, this.fire("end");\n },\n _easeOut: function (t) {\n return 1 - Math.pow(1 - t, this._easeOutPower);\n }\n }),\n A = it.extend({\n options: {\n crs: lt,\n center: void 0,\n zoom: void 0,\n minZoom: void 0,\n maxZoom: void 0,\n layers: [],\n maxBounds: void 0,\n renderer: void 0,\n zoomAnimation: !0,\n zoomAnimationThreshold: 4,\n fadeAnimation: !0,\n markerZoomAnimation: !0,\n transform3DLimit: 8388608,\n zoomSnap: 1,\n zoomDelta: 1,\n trackResize: !0\n },\n initialize: function (t, e) {\n e = c(this, e), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this._sizeChanged = !0, this._initContainer(t), this._initLayout(), this._onResize = a(this._onResize, this), this._initEvents(), e.maxBounds && this.setMaxBounds(e.maxBounds), void 0 !== e.zoom && (this._zoom = this._limitZoom(e.zoom)), e.center && void 0 !== e.zoom && this.setView(w(e.center), e.zoom, {\n reset: !0\n }), this.callInitHooks(), this._zoomAnimated = ce && b.any3d && !b.mobileOpera && this.options.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), S(this._proxy, de, this._catchTransitionEnd, this)), this._addLayers(this.options.layers);\n },\n setView: function (t, e, i) {\n if ((e = void 0 === e ? this._zoom : this._limitZoom(e), t = this._limitCenter(w(t), e, this.options.maxBounds), i = i || {}, this._stop(), this._loaded && !i.reset && !0 !== i) && (void 0 !== i.animate && (i.zoom = l({\n animate: i.animate\n }, i.zoom), i.pan = l({\n animate: i.animate,\n duration: i.duration\n }, i.pan)), this._zoom !== e ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, i.zoom) : this._tryAnimatedPan(t, i.pan))) return clearTimeout(this._sizeTimer), this;\n return this._resetView(t, e, i.pan && i.pan.noMoveStart), this;\n },\n setZoom: function (t, e) {\n return this._loaded ? this.setView(this.getCenter(), t, {\n zoom: e\n }) : (this._zoom = t, this);\n },\n zoomIn: function (t, e) {\n return t = t || (b.any3d ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t, e);\n },\n zoomOut: function (t, e) {\n return t = t || (b.any3d ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t, e);\n },\n setZoomAround: function (t, e, i) {\n var n = this.getZoomScale(e),\n o = this.getSize().divideBy(2),\n t = (t instanceof p ? t : this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1 - 1 / n),\n n = this.containerPointToLatLng(o.add(t));\n return this.setView(n, e, {\n zoom: i\n });\n },\n _getBoundsCenterZoom: function (t, e) {\n e = e || {}, t = t.getBounds ? t.getBounds() : g(t);\n var i = m(e.paddingTopLeft || e.padding || [0, 0]),\n n = m(e.paddingBottomRight || e.padding || [0, 0]),\n o = this.getBoundsZoom(t, !1, i.add(n));\n return (o = "number" == typeof e.maxZoom ? Math.min(e.maxZoom, o) : o) === 1 / 0 ? {\n center: t.getCenter(),\n zoom: o\n } : (e = n.subtract(i).divideBy(2), n = this.project(t.getSouthWest(), o), i = this.project(t.getNorthEast(), o), {\n center: this.unproject(n.add(i).divideBy(2).add(e), o),\n zoom: o\n });\n },\n fitBounds: function (t, e) {\n if ((t = g(t)).isValid()) return t = this._getBoundsCenterZoom(t, e), this.setView(t.center, t.zoom, e);\n throw new Error("Bounds are not valid.");\n },\n fitWorld: function (t) {\n return this.fitBounds([[-90, -180], [90, 180]], t);\n },\n panTo: function (t, e) {\n return this.setView(t, this._zoom, {\n pan: e\n });\n },\n panBy: function (t, e) {\n var i;\n return e = e || {}, (t = m(t).round()).x || t.y ? (!0 === e.animate || this.getSize().contains(t) ? (this._panAnim || (this._panAnim = new Fe(), this._panAnim.on({\n step: this._onPanTransitionStep,\n end: this._onPanTransitionEnd\n }, this)), e.noMoveStart || this.fire("movestart"), !1 !== e.animate ? (M(this._mapPane, "leaflet-pan-anim"), i = this._getMapPanePos().subtract(t).round(), this._panAnim.run(this._mapPane, i, e.duration || .25, e.easeLinearity)) : (this._rawPanBy(t), this.fire("move").fire("moveend"))) : this._resetView(this.unproject(this.project(this.getCenter()).add(t)), this.getZoom()), this) : this.fire("moveend");\n },\n flyTo: function (n, o, t) {\n if (!1 === (t = t || {}).animate || !b.any3d) return this.setView(n, o, t);\n this._stop();\n var s = this.project(this.getCenter()),\n r = this.project(n),\n e = this.getSize(),\n a = this._zoom,\n h = (n = w(n), o = void 0 === o ? a : o, Math.max(e.x, e.y)),\n i = h * this.getZoomScale(a, o),\n l = r.distanceTo(s) || 1,\n u = 1.42,\n c = u * u;\n function d(t) {\n t = (i * i - h * h + (t ? -1 : 1) * c * c * l * l) / (2 * (t ? i : h) * c * l), t = Math.sqrt(t * t + 1) - t;\n return t < 1e-9 ? -18 : Math.log(t);\n }\n function _(t) {\n return (Math.exp(t) - Math.exp(-t)) / 2;\n }\n function p(t) {\n return (Math.exp(t) + Math.exp(-t)) / 2;\n }\n var m = d(0);\n function f(t) {\n return h * (p(m) * (_(t = m + u * t) / p(t)) - _(m)) / c;\n }\n var g = Date.now(),\n v = (d(1) - m) / u,\n y = t.duration ? 1e3 * t.duration : 1e3 * v * .8;\n return this._moveStart(!0, t.noMoveStart), function t() {\n var e = (Date.now() - g) / y,\n i = (1 - Math.pow(1 - e, 1.5)) * v;\n e <= 1 ? (this._flyToFrame = x(t, this), this._move(this.unproject(s.add(r.subtract(s).multiplyBy(f(i) / l)), a), this.getScaleZoom(h / (e = i, h * (p(m) / p(m + u * e))), a), {\n flyTo: !0\n })) : this._move(n, o)._moveEnd(!0);\n }.call(this), this;\n },\n flyToBounds: function (t, e) {\n t = this._getBoundsCenterZoom(t, e);\n return this.flyTo(t.center, t.zoom, e);\n },\n setMaxBounds: function (t) {\n return t = g(t), this.listens("moveend", this._panInsideMaxBounds) && this.off("moveend", this._panInsideMaxBounds), t.isValid() ? (this.options.maxBounds = t, this._loaded && this._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this.options.maxBounds = null, this);\n },\n setMinZoom: function (t) {\n var e = this.options.minZoom;\n return this.options.minZoom = t, this._loaded && e !== t && (this.fire("zoomlevelschange"), this.getZoom() < this.options.minZoom) ? this.setZoom(t) : this;\n },\n setMaxZoom: function (t) {\n var e = this.options.maxZoom;\n return this.options.maxZoom = t, this._loaded && e !== t && (this.fire("zoomlevelschange"), this.getZoom() > this.options.maxZoom) ? this.setZoom(t) : this;\n },\n panInsideBounds: function (t, e) {\n this._enforcingBounds = !0;\n var i = this.getCenter(),\n t = this._limitCenter(i, this._zoom, g(t));\n return i.equals(t) || this.panTo(t, e), this._enforcingBounds = !1, this;\n },\n panInside: function (t, e) {\n var i = m((e = e || {}).paddingTopLeft || e.padding || [0, 0]),\n n = m(e.paddingBottomRight || e.padding || [0, 0]),\n o = this.project(this.getCenter()),\n t = this.project(t),\n s = this.getPixelBounds(),\n i = _([s.min.add(i), s.max.subtract(n)]),\n s = i.getSize();\n return i.contains(t) || (this._enforcingBounds = !0, n = t.subtract(i.getCenter()), i = i.extend(t).getSize().subtract(s), o.x += n.x < 0 ? -i.x : i.x, o.y += n.y < 0 ? -i.y : i.y, this.panTo(this.unproject(o), e), this._enforcingBounds = !1), this;\n },\n invalidateSize: function (t) {\n if (!this._loaded) return this;\n t = l({\n animate: !1,\n pan: !0\n }, !0 === t ? {\n animate: !0\n } : t);\n var e = this.getSize(),\n i = (this._sizeChanged = !0, this._lastCenter = null, this.getSize()),\n n = e.divideBy(2).round(),\n o = i.divideBy(2).round(),\n n = n.subtract(o);\n return n.x || n.y ? (t.animate && t.pan ? this.panBy(n) : (t.pan && this._rawPanBy(n), this.fire("move"), t.debounceMoveend ? (clearTimeout(this._sizeTimer), this._sizeTimer = setTimeout(a(this.fire, this, "moveend"), 200)) : this.fire("moveend")), this.fire("resize", {\n oldSize: e,\n newSize: i\n })) : this;\n },\n stop: function () {\n return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire("viewreset"), this._stop();\n },\n locate: function (t) {\n var e, i;\n return t = this._locateOptions = l({\n timeout: 1e4,\n watch: !1\n }, t), "geolocation" in navigator ? (e = a(this._handleGeolocationResponse, this), i = a(this._handleGeolocationError, this), t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(e, i, t) : navigator.geolocation.getCurrentPosition(e, i, t)) : this._handleGeolocationError({\n code: 0,\n message: "Geolocation not supported."\n }), this;\n },\n stopLocate: function () {\n return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions.setView = !1), this;\n },\n _handleGeolocationError: function (t) {\n var e;\n this._container._leaflet_id && (e = t.code, t = t.message || (1 === e ? "permission denied" : 2 === e ? "position unavailable" : "timeout"), this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire("locationerror", {\n code: e,\n message: "Geolocation error: " + t + "."\n }));\n },\n _handleGeolocationResponse: function (t) {\n if (this._container._leaflet_id) {\n var e,\n i,\n n = new v(t.coords.latitude, t.coords.longitude),\n o = n.toBounds(2 * t.coords.accuracy),\n s = this._locateOptions,\n r = (s.setView && (e = this.getBoundsZoom(o), this.setView(n, s.maxZoom ? Math.min(e, s.maxZoom) : e)), {\n latlng: n,\n bounds: o,\n timestamp: t.timestamp\n });\n for (i in t.coords) "number" == typeof t.coords[i] && (r[i] = t.coords[i]);\n this.fire("locationfound", r);\n }\n },\n addHandler: function (t, e) {\n return e && (e = this[t] = new e(this), this._handlers.push(e), this.options[t] && e.enable()), this;\n },\n remove: function () {\n if (this._initEvents(!0), this.options.maxBounds && this.off("moveend", this._panInsideMaxBounds), this._containerId !== this._container._leaflet_id) throw new Error("Map container is being reused by another instance");\n try {\n delete this._container._leaflet_id, delete this._containerId;\n } catch (t) {\n this._container._leaflet_id = void 0, this._containerId = void 0;\n }\n for (var t in void 0 !== this._locationWatchId && this.stopLocate(), this._stop(), T(this._mapPane), this._clearControlPos && this._clearControlPos(), this._resizeRequest && (r(this._resizeRequest), this._resizeRequest = null), this._clearHandlers(), this._loaded && this.fire("unload"), this._layers) this._layers[t].remove();\n for (t in this._panes) T(this._panes[t]);\n return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer, this;\n },\n createPane: function (t, e) {\n e = P("div", "leaflet-pane" + (t ? " leaflet-" + t.replace("Pane", "") + "-pane" : ""), e || this._mapPane);\n return t && (this._panes[t] = e), e;\n },\n getCenter: function () {\n return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter.clone() : this.layerPointToLatLng(this._getCenterLayerPoint());\n },\n getZoom: function () {\n return this._zoom;\n },\n getBounds: function () {\n var t = this.getPixelBounds();\n return new s(this.unproject(t.getBottomLeft()), this.unproject(t.getTopRight()));\n },\n getMinZoom: function () {\n return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom;\n },\n getMaxZoom: function () {\n return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZoom ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom;\n },\n getBoundsZoom: function (t, e, i) {\n t = g(t), i = m(i || [0, 0]);\n var n = this.getZoom() || 0,\n o = this.getMinZoom(),\n s = this.getMaxZoom(),\n r = t.getNorthWest(),\n t = t.getSouthEast(),\n i = this.getSize().subtract(i),\n t = _(this.project(t, n), this.project(r, n)).getSize(),\n r = b.any3d ? this.options.zoomSnap : 1,\n a = i.x / t.x,\n i = i.y / t.y,\n t = e ? Math.max(a, i) : Math.min(a, i),\n n = this.getScaleZoom(t, n);\n return r && (n = Math.round(n / (r / 100)) * (r / 100), n = e ? Math.ceil(n / r) * r : Math.floor(n / r) * r), Math.max(o, Math.min(s, n));\n },\n getSize: function () {\n return this._size && !this._sizeChanged || (this._size = new p(this._container.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = !1), this._size.clone();\n },\n getPixelBounds: function (t, e) {\n t = this._getTopLeftPoint(t, e);\n return new f(t, t.add(this.getSize()));\n },\n getPixelOrigin: function () {\n return this._checkIfLoaded(), this._pixelOrigin;\n },\n getPixelWorldBounds: function (t) {\n return this.options.crs.getProjectedBounds(void 0 === t ? this.getZoom() : t);\n },\n getPane: function (t) {\n return "string" == typeof t ? this._panes[t] : t;\n },\n getPanes: function () {\n return this._panes;\n },\n getContainer: function () {\n return this._container;\n },\n getZoomScale: function (t, e) {\n var i = this.options.crs;\n return e = void 0 === e ? this._zoom : e, i.scale(t) / i.scale(e);\n },\n getScaleZoom: function (t, e) {\n var i = this.options.crs,\n t = (e = void 0 === e ? this._zoom : e, i.zoom(t * i.scale(e)));\n return isNaN(t) ? 1 / 0 : t;\n },\n project: function (t, e) {\n return e = void 0 === e ? this._zoom : e, this.options.crs.latLngToPoint(w(t), e);\n },\n unproject: function (t, e) {\n return e = void 0 === e ? this._zoom : e, this.options.crs.pointToLatLng(m(t), e);\n },\n layerPointToLatLng: function (t) {\n t = m(t).add(this.getPixelOrigin());\n return this.unproject(t);\n },\n latLngToLayerPoint: function (t) {\n return this.project(w(t))._round()._subtract(this.getPixelOrigin());\n },\n wrapLatLng: function (t) {\n return this.options.crs.wrapLatLng(w(t));\n },\n wrapLatLngBounds: function (t) {\n return this.options.crs.wrapLatLngBounds(g(t));\n },\n distance: function (t, e) {\n return this.options.crs.distance(w(t), w(e));\n },\n containerPointToLayerPoint: function (t) {\n return m(t).subtract(this._getMapPanePos());\n },\n layerPointToContainerPoint: function (t) {\n return m(t).add(this._getMapPanePos());\n },\n containerPointToLatLng: function (t) {\n t = this.containerPointToLayerPoint(m(t));\n return this.layerPointToLatLng(t);\n },\n latLngToContainerPoint: function (t) {\n return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)));\n },\n mouseEventToContainerPoint: function (t) {\n return De(t, this._container);\n },\n mouseEventToLayerPoint: function (t) {\n return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t));\n },\n mouseEventToLatLng: function (t) {\n return this.layerPointToLatLng(this.mouseEventToLayerPoint(t));\n },\n _initContainer: function (t) {\n t = this._container = _e(t);\n if (!t) throw new Error("Map container not found.");\n if (t._leaflet_id) throw new Error("Map container is already initialized.");\n S(t, "scroll", this._onScroll, this), this._containerId = h(t);\n },\n _initLayout: function () {\n var t = this._container,\n e = (this._fadeAnimated = this.options.fadeAnimation && b.any3d, M(t, "leaflet-container" + (b.touch ? " leaflet-touch" : "") + (b.retina ? " leaflet-retina" : "") + (b.ielt9 ? " leaflet-oldie" : "") + (b.safari ? " leaflet-safari" : "") + (this._fadeAnimated ? " leaflet-fade-anim" : "")), pe(t, "position"));\n "absolute" !== e && "relative" !== e && "fixed" !== e && "sticky" !== e && (t.style.position = "relative"), this._initPanes(), this._initControlPos && this._initControlPos();\n },\n _initPanes: function () {\n var t = this._panes = {};\n this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), Z(this._mapPane, new p(0, 0)), this.createPane("tilePane"), this.createPane("overlayPane"), this.createPane("shadowPane"), this.createPane("markerPane"), this.createPane("tooltipPane"), this.createPane("popupPane"), this.options.markerZoomAnimation || (M(t.markerPane, "leaflet-zoom-hide"), M(t.shadowPane, "leaflet-zoom-hide"));\n },\n _resetView: function (t, e, i) {\n Z(this._mapPane, new p(0, 0));\n var n = !this._loaded,\n o = (this._loaded = !0, e = this._limitZoom(e), this.fire("viewprereset"), this._zoom !== e);\n this._moveStart(o, i)._move(t, e)._moveEnd(o), this.fire("viewreset"), n && this.fire("load");\n },\n _moveStart: function (t, e) {\n return t && this.fire("zoomstart"), e || this.fire("movestart"), this;\n },\n _move: function (t, e, i, n) {\n void 0 === e && (e = this._zoom);\n var o = this._zoom !== e;\n return this._zoom = e, this._lastCenter = t, this._pixelOrigin = this._getNewPixelOrigin(t), n ? i && i.pinch && this.fire("zoom", i) : ((o || i && i.pinch) && this.fire("zoom", i), this.fire("move", i)), this;\n },\n _moveEnd: function (t) {\n return t && this.fire("zoomend"), this.fire("moveend");\n },\n _stop: function () {\n return r(this._flyToFrame), this._panAnim && this._panAnim.stop(), this;\n },\n _rawPanBy: function (t) {\n Z(this._mapPane, this._getMapPanePos().subtract(t));\n },\n _getZoomSpan: function () {\n return this.getMaxZoom() - this.getMinZoom();\n },\n _panInsideMaxBounds: function () {\n this._enforcingBounds || this.panInsideBounds(this.options.maxBounds);\n },\n _checkIfLoaded: function () {\n if (!this._loaded) throw new Error("Set map center and zoom first.");\n },\n _initEvents: function (t) {\n this._targets = {};\n var e = t ? k : S;\n e((this._targets[h(this._container)] = this)._container, "click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup", this._handleDOMEvent, this), this.options.trackResize && e(window, "resize", this._onResize, this), b.any3d && this.options.transform3DLimit && (t ? this.off : this.on).call(this, "moveend", this._onMoveEnd);\n },\n _onResize: function () {\n r(this._resizeRequest), this._resizeRequest = x(function () {\n this.invalidateSize({\n debounceMoveend: !0\n });\n }, this);\n },\n _onScroll: function () {\n this._container.scrollTop = 0, this._container.scrollLeft = 0;\n },\n _onMoveEnd: function () {\n var t = this._getMapPanePos();\n Math.max(Math.abs(t.x), Math.abs(t.y)) >= this.options.transform3DLimit && this._resetView(this.getCenter(), this.getZoom());\n },\n _findEventTargets: function (t, e) {\n for (var i, n = [], o = "mouseout" === e || "mouseover" === e, s = t.target || t.srcElement, r = !1; s;) {\n if ((i = this._targets[h(s)]) && ("click" === e || "preclick" === e) && this._draggableMoved(i)) {\n r = !0;\n break;\n }\n if (i && i.listens(e, !0)) {\n if (o && !We(s, t)) break;\n if (n.push(i), o) break;\n }\n if (s === this._container) break;\n s = s.parentNode;\n }\n return n = n.length || r || o || !this.listens(e, !0) ? n : [this];\n },\n _isClickDisabled: function (t) {\n for (; t && t !== this._container;) {\n if (t._leaflet_disable_click) return !0;\n t = t.parentNode;\n }\n },\n _handleDOMEvent: function (t) {\n var e,\n i = t.target || t.srcElement;\n !this._loaded || i._leaflet_disable_events || "click" === t.type && this._isClickDisabled(i) || ("mousedown" === (e = t.type) && Me(i), this._fireDOMEvent(t, e));\n },\n _mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"],\n _fireDOMEvent: function (t, e, i) {\n "click" === t.type && ((a = l({}, t)).type = "preclick", this._fireDOMEvent(a, a.type, i));\n var n = this._findEventTargets(t, e);\n if (i) {\n for (var o = [], s = 0; s < i.length; s++) i[s].listens(e, !0) && o.push(i[s]);\n n = o.concat(n);\n }\n if (n.length) {\n "contextmenu" === e && O(t);\n var r,\n a = n[0],\n h = {\n originalEvent: t\n };\n for ("keypress" !== t.type && "keydown" !== t.type && "keyup" !== t.type && (r = a.getLatLng && (!a._radius || a._radius <= 10), h.containerPoint = r ? this.latLngToContainerPoint(a.getLatLng()) : this.mouseEventToContainerPoint(t), h.layerPoint = this.containerPointToLayerPoint(h.containerPoint), h.latlng = r ? a.getLatLng() : this.layerPointToLatLng(h.layerPoint)), s = 0; s < n.length; s++) if (n[s].fire(e, h, !0), h.originalEvent._stopped || !1 === n[s].options.bubblingMouseEvents && -1 !== G(this._mouseEvents, e)) return;\n }\n },\n _draggableMoved: function (t) {\n return (t = t.dragging && t.dragging.enabled() ? t : this).dragging && t.dragging.moved() || this.boxZoom && this.boxZoom.moved();\n },\n _clearHandlers: function () {\n for (var t = 0, e = this._handlers.length; t < e; t++) this._handlers[t].disable();\n },\n whenReady: function (t, e) {\n return this._loaded ? t.call(e || this, {\n target: this\n }) : this.on("load", t, e), this;\n },\n _getMapPanePos: function () {\n return Pe(this._mapPane) || new p(0, 0);\n },\n _moved: function () {\n var t = this._getMapPanePos();\n return t && !t.equals([0, 0]);\n },\n _getTopLeftPoint: function (t, e) {\n return (t && void 0 !== e ? this._getNewPixelOrigin(t, e) : this.getPixelOrigin()).subtract(this._getMapPanePos());\n },\n _getNewPixelOrigin: function (t, e) {\n var i = this.getSize()._divideBy(2);\n return this.project(t, e)._subtract(i)._add(this._getMapPanePos())._round();\n },\n _latLngToNewLayerPoint: function (t, e, i) {\n i = this._getNewPixelOrigin(i, e);\n return this.project(t, e)._subtract(i);\n },\n _latLngBoundsToNewLayerBounds: function (t, e, i) {\n i = this._getNewPixelOrigin(i, e);\n return _([this.project(t.getSouthWest(), e)._subtract(i), this.project(t.getNorthWest(), e)._subtract(i), this.project(t.getSouthEast(), e)._subtract(i), this.project(t.getNorthEast(), e)._subtract(i)]);\n },\n _getCenterLayerPoint: function () {\n return this.containerPointToLayerPoint(this.getSize()._divideBy(2));\n },\n _getCenterOffset: function (t) {\n return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint());\n },\n _limitCenter: function (t, e, i) {\n var n, o;\n return !i || (n = this.project(t, e), o = this.getSize().divideBy(2), o = new f(n.subtract(o), n.add(o)), o = this._getBoundsOffset(o, i, e), Math.abs(o.x) <= 1 && Math.abs(o.y) <= 1) ? t : this.unproject(n.add(o), e);\n },\n _limitOffset: function (t, e) {\n var i;\n return e ? (i = new f((i = this.getPixelBounds()).min.add(t), i.max.add(t)), t.add(this._getBoundsOffset(i, e))) : t;\n },\n _getBoundsOffset: function (t, e, i) {\n e = _(this.project(e.getNorthEast(), i), this.project(e.getSouthWest(), i)), i = e.min.subtract(t.min), e = e.max.subtract(t.max);\n return new p(this._rebound(i.x, -e.x), this._rebound(i.y, -e.y));\n },\n _rebound: function (t, e) {\n return 0 < t + e ? Math.round(t - e) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(e));\n },\n _limitZoom: function (t) {\n var e = this.getMinZoom(),\n i = this.getMaxZoom(),\n n = b.any3d ? this.options.zoomSnap : 1;\n return n && (t = Math.round(t / n) * n), Math.max(e, Math.min(i, t));\n },\n _onPanTransitionStep: function () {\n this.fire("move");\n },\n _onPanTransitionEnd: function () {\n z(this._mapPane, "leaflet-pan-anim"), this.fire("moveend");\n },\n _tryAnimatedPan: function (t, e) {\n t = this._getCenterOffset(t)._trunc();\n return !(!0 !== (e && e.animate) && !this.getSize().contains(t)) && (this.panBy(t, e), !0);\n },\n _createAnimProxy: function () {\n var t = this._proxy = P("div", "leaflet-proxy leaflet-zoom-animated");\n this._panes.mapPane.appendChild(t), this.on("zoomanim", function (t) {\n var e = ue,\n i = this._proxy.style[e];\n be(this._proxy, this.project(t.center, t.zoom), this.getZoomScale(t.zoom, 1)), i === this._proxy.style[e] && this._animatingZoom && this._onZoomTransitionEnd();\n }, this), this.on("load moveend", this._animMoveEnd, this), this._on("unload", this._destroyAnimProxy, this);\n },\n _destroyAnimProxy: function () {\n T(this._proxy), this.off("load moveend", this._animMoveEnd, this), delete this._proxy;\n },\n _animMoveEnd: function () {\n var t = this.getCenter(),\n e = this.getZoom();\n be(this._proxy, this.project(t, e), this.getZoomScale(e, 1));\n },\n _catchTransitionEnd: function (t) {\n this._animatingZoom && 0 <= t.propertyName.indexOf("transform") && this._onZoomTransitionEnd();\n },\n _nothingToAnimate: function () {\n return !this._container.getElementsByClassName("leaflet-zoom-animated").length;\n },\n _tryAnimatedZoom: function (t, e, i) {\n if (!this._animatingZoom) {\n if (i = i || {}, !this._zoomAnimated || !1 === i.animate || this._nothingToAnimate() || Math.abs(e - this._zoom) > this.options.zoomAnimationThreshold) return !1;\n var n = this.getZoomScale(e),\n n = this._getCenterOffset(t)._divideBy(1 - 1 / n);\n if (!0 !== i.animate && !this.getSize().contains(n)) return !1;\n x(function () {\n this._moveStart(!0, i.noMoveStart || !1)._animateZoom(t, e, !0);\n }, this);\n }\n return !0;\n },\n _animateZoom: function (t, e, i, n) {\n this._mapPane && (i && (this._animatingZoom = !0, this._animateToCenter = t, this._animateToZoom = e, M(this._mapPane, "leaflet-zoom-anim")), this.fire("zoomanim", {\n center: t,\n zoom: e,\n noUpdate: n\n }), this._tempFireZoomEvent || (this._tempFireZoomEvent = this._zoom !== this._animateToZoom), this._move(this._animateToCenter, this._animateToZoom, void 0, !0), setTimeout(a(this._onZoomTransitionEnd, this), 250));\n },\n _onZoomTransitionEnd: function () {\n this._animatingZoom && (this._mapPane && z(this._mapPane, "leaflet-zoom-anim"), this._animatingZoom = !1, this._move(this._animateToCenter, this._animateToZoom, void 0, !0), this._tempFireZoomEvent && this.fire("zoom"), delete this._tempFireZoomEvent, this.fire("move"), this._moveEnd(!0));\n }\n });\n function Ue(t) {\n return new B(t);\n }\n var B = et.extend({\n options: {\n position: "topright"\n },\n initialize: function (t) {\n c(this, t);\n },\n getPosition: function () {\n return this.options.position;\n },\n setPosition: function (t) {\n var e = this._map;\n return e && e.removeControl(this), this.options.position = t, e && e.addControl(this), this;\n },\n getContainer: function () {\n return this._container;\n },\n addTo: function (t) {\n this.remove(), this._map = t;\n var e = this._container = this.onAdd(t),\n i = this.getPosition(),\n t = t._controlCorners[i];\n return M(e, "leaflet-control"), -1 !== i.indexOf("bottom") ? t.insertBefore(e, t.firstChild) : t.appendChild(e), this._map.on("unload", this.remove, this), this;\n },\n remove: function () {\n return this._map && (T(this._container), this.onRemove && this.onRemove(this._map), this._map.off("unload", this.remove, this), this._map = null), this;\n },\n _refocusOnMap: function (t) {\n this._map && t && 0 < t.screenX && 0 < t.screenY && this._map.getContainer().focus();\n }\n }),\n Ve = (A.include({\n addControl: function (t) {\n return t.addTo(this), this;\n },\n removeControl: function (t) {\n return t.remove(), this;\n },\n _initControlPos: function () {\n var i = this._controlCorners = {},\n n = "leaflet-",\n o = this._controlContainer = P("div", n + "control-container", this._container);\n function t(t, e) {\n i[t + e] = P("div", n + t + " " + n + e, o);\n }\n t("top", "left"), t("top", "right"), t("bottom", "left"), t("bottom", "right");\n },\n _clearControlPos: function () {\n for (var t in this._controlCorners) T(this._controlCorners[t]);\n T(this._controlContainer), delete this._controlCorners, delete this._controlContainer;\n }\n }), B.extend({\n options: {\n collapsed: !0,\n position: "topright",\n autoZIndex: !0,\n hideSingleBase: !1,\n sortLayers: !1,\n sortFunction: function (t, e, i, n) {\n return i < n ? -1 : n < i ? 1 : 0;\n }\n },\n initialize: function (t, e, i) {\n for (var n in c(this, i), this._layerControlInputs = [], this._layers = [], this._lastZIndex = 0, this._handlingClick = !1, this._preventClick = !1, t) this._addLayer(t[n], n);\n for (n in e) this._addLayer(e[n], n, !0);\n },\n onAdd: function (t) {\n this._initLayout(), this._update(), (this._map = t).on("zoomend", this._checkDisabledLayers, this);\n for (var e = 0; e < this._layers.length; e++) this._layers[e].layer.on("add remove", this._onLayerChange, this);\n return this._container;\n },\n addTo: function (t) {\n return B.prototype.addTo.call(this, t), this._expandIfNotCollapsed();\n },\n onRemove: function () {\n this._map.off("zoomend", this._checkDisabledLayers, this);\n for (var t = 0; t < this._layers.length; t++) this._layers[t].layer.off("add remove", this._onLayerChange, this);\n },\n addBaseLayer: function (t, e) {\n return this._addLayer(t, e), this._map ? this._update() : this;\n },\n addOverlay: function (t, e) {\n return this._addLayer(t, e, !0), this._map ? this._update() : this;\n },\n removeLayer: function (t) {\n t.off("add remove", this._onLayerChange, this);\n t = this._getLayer(h(t));\n return t && this._layers.splice(this._layers.indexOf(t), 1), this._map ? this._update() : this;\n },\n expand: function () {\n M(this._container, "leaflet-control-layers-expanded"), this._section.style.height = null;\n var t = this._map.getSize().y - (this._container.offsetTop + 50);\n return t < this._section.clientHeight ? (M(this._section, "leaflet-control-layers-scrollbar"), this._section.style.height = t + "px") : z(this._section, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(), this;\n },\n collapse: function () {\n return z(this._container, "leaflet-control-layers-expanded"), this;\n },\n _initLayout: function () {\n var t = "leaflet-control-layers",\n e = this._container = P("div", t),\n i = this.options.collapsed,\n n = (e.setAttribute("aria-haspopup", !0), Ie(e), Be(e), this._section = P("section", t + "-list")),\n o = (i && (this._map.on("click", this.collapse, this), S(e, {\n mouseenter: this._expandSafely,\n mouseleave: this.collapse\n }, this)), this._layersLink = P("a", t + "-toggle", e));\n o.href = "#", o.title = "Layers", o.setAttribute("role", "button"), S(o, {\n keydown: function (t) {\n 13 === t.keyCode && this._expandSafely();\n },\n click: function (t) {\n O(t), this._expandSafely();\n }\n }, this), i || this.expand(), this._baseLayersList = P("div", t + "-base", n), this._separator = P("div", t + "-separator", n), this._overlaysList = P("div", t + "-overlays", n), e.appendChild(n);\n },\n _getLayer: function (t) {\n for (var e = 0; e < this._layers.length; e++) if (this._layers[e] && h(this._layers[e].layer) === t) return this._layers[e];\n },\n _addLayer: function (t, e, i) {\n this._map && t.on("add remove", this._onLayerChange, this), this._layers.push({\n layer: t,\n name: e,\n overlay: i\n }), this.options.sortLayers && this._layers.sort(a(function (t, e) {\n return this.options.sortFunction(t.layer, e.layer, t.name, e.name);\n }, this)), this.options.autoZIndex && t.setZIndex && (this._lastZIndex++, t.setZIndex(this._lastZIndex)), this._expandIfNotCollapsed();\n },\n _update: function () {\n if (this._container) {\n me(this._baseLayersList), me(this._overlaysList), this._layerControlInputs = [];\n for (var t, e, i, n = 0, o = 0; o < this._layers.length; o++) i = this._layers[o], this._addItem(i), e = e || i.overlay, t = t || !i.overlay, n += i.overlay ? 0 : 1;\n this.options.hideSingleBase && (this._baseLayersList.style.display = (t = t && 1 < n) ? "" : "none"), this._separator.style.display = e && t ? "" : "none";\n }\n return this;\n },\n _onLayerChange: function (t) {\n this._handlingClick || this._update();\n var e = this._getLayer(h(t.target)),\n t = e.overlay ? "add" === t.type ? "overlayadd" : "overlayremove" : "add" === t.type ? "baselayerchange" : null;\n t && this._map.fire(t, e);\n },\n _createRadioElement: function (t, e) {\n t = \'<input type="radio" class="leaflet-control-layers-selector" name="\' + t + \'"\' + (e ? \' checked="checked"\' : "") + "/>", e = document.createElement("div");\n return e.innerHTML = t, e.firstChild;\n },\n _addItem: function (t) {\n var e,\n i = document.createElement("label"),\n n = this._map.hasLayer(t.layer),\n n = (t.overlay ? ((e = document.createElement("input")).type = "checkbox", e.className = "leaflet-control-layers-selector", e.defaultChecked = n) : e = this._createRadioElement("leaflet-base-layers_" + h(this), n), this._layerControlInputs.push(e), e.layerId = h(t.layer), S(e, "click", this._onInputClick, this), document.createElement("span")),\n o = (n.innerHTML = " " + t.name, document.createElement("span"));\n return i.appendChild(o), o.appendChild(e), o.appendChild(n), (t.overlay ? this._overlaysList : this._baseLayersList).appendChild(i), this._checkDisabledLayers(), i;\n },\n _onInputClick: function () {\n if (!this._preventClick) {\n var t,\n e,\n i = this._layerControlInputs,\n n = [],\n o = [];\n this._handlingClick = !0;\n for (var s = i.length - 1; 0 <= s; s--) t = i[s], e = this._getLayer(t.layerId).layer, t.checked ? n.push(e) : t.checked || o.push(e);\n for (s = 0; s < o.length; s++) this._map.hasLayer(o[s]) && this._map.removeLayer(o[s]);\n for (s = 0; s < n.length; s++) this._map.hasLayer(n[s]) || this._map.addLayer(n[s]);\n this._handlingClick = !1, this._refocusOnMap();\n }\n },\n _checkDisabledLayers: function () {\n for (var t, e, i = this._layerControlInputs, n = this._map.getZoom(), o = i.length - 1; 0 <= o; o--) t = i[o], e = this._getLayer(t.layerId).layer, t.disabled = void 0 !== e.options.minZoom && n < e.options.minZoom || void 0 !== e.options.maxZoom && n > e.options.maxZoom;\n },\n _expandIfNotCollapsed: function () {\n return this._map && !this.options.collapsed && this.expand(), this;\n },\n _expandSafely: function () {\n var t = this._section,\n e = (this._preventClick = !0, S(t, "click", O), this.expand(), this);\n setTimeout(function () {\n k(t, "click", O), e._preventClick = !1;\n });\n }\n })),\n qe = B.extend({\n options: {\n position: "topleft",\n zoomInText: \'<span aria-hidden="true">+</span>\',\n zoomInTitle: "Zoom in",\n zoomOutText: \'<span aria-hidden="true">−</span>\',\n zoomOutTitle: "Zoom out"\n },\n onAdd: function (t) {\n var e = "leaflet-control-zoom",\n i = P("div", e + " leaflet-bar"),\n n = this.options;\n return this._zoomInButton = this._createButton(n.zoomInText, n.zoomInTitle, e + "-in", i, this._zoomIn), this._zoomOutButton = this._createButton(n.zoomOutText, n.zoomOutTitle, e + "-out", i, this._zoomOut), this._updateDisabled(), t.on("zoomend zoomlevelschange", this._updateDisabled, this), i;\n },\n onRemove: function (t) {\n t.off("zoomend zoomlevelschange", this._updateDisabled, this);\n },\n disable: function () {\n return this._disabled = !0, this._updateDisabled(), this;\n },\n enable: function () {\n return this._disabled = !1, this._updateDisabled(), this;\n },\n _zoomIn: function (t) {\n !this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map.options.zoomDelta * (t.shiftKey ? 3 : 1));\n },\n _zoomOut: function (t) {\n !this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map.options.zoomDelta * (t.shiftKey ? 3 : 1));\n },\n _createButton: function (t, e, i, n, o) {\n i = P("a", i, n);\n return i.innerHTML = t, i.href = "#", i.title = e, i.setAttribute("role", "button"), i.setAttribute("aria-label", e), Ie(i), S(i, "click", Re), S(i, "click", o, this), S(i, "click", this._refocusOnMap, this), i;\n },\n _updateDisabled: function () {\n var t = this._map,\n e = "leaflet-disabled";\n z(this._zoomInButton, e), z(this._zoomOutButton, e), this._zoomInButton.setAttribute("aria-disabled", "false"), this._zoomOutButton.setAttribute("aria-disabled", "false"), !this._disabled && t._zoom !== t.getMinZoom() || (M(this._zoomOutButton, e), this._zoomOutButton.setAttribute("aria-disabled", "true")), !this._disabled && t._zoom !== t.getMaxZoom() || (M(this._zoomInButton, e), this._zoomInButton.setAttribute("aria-disabled", "true"));\n }\n }),\n Ge = (A.mergeOptions({\n zoomControl: !0\n }), A.addInitHook(function () {\n this.options.zoomControl && (this.zoomControl = new qe(), this.addControl(this.zoomControl));\n }), B.extend({\n options: {\n position: "bottomleft",\n maxWidth: 100,\n metric: !0,\n imperial: !0\n },\n onAdd: function (t) {\n var e = "leaflet-control-scale",\n i = P("div", e),\n n = this.options;\n return this._addScales(n, e + "-line", i), t.on(n.updateWhenIdle ? "moveend" : "move", this._update, this), t.whenReady(this._update, this), i;\n },\n onRemove: function (t) {\n t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this);\n },\n _addScales: function (t, e, i) {\n t.metric && (this._mScale = P("div", e, i)), t.imperial && (this._iScale = P("div", e, i));\n },\n _update: function () {\n var t = this._map,\n e = t.getSize().y / 2,\n t = t.distance(t.containerPointToLatLng([0, e]), t.containerPointToLatLng([this.options.maxWidth, e]));\n this._updateScales(t);\n },\n _updateScales: function (t) {\n this.options.metric && t && this._updateMetric(t), this.options.imperial && t && this._updateImperial(t);\n },\n _updateMetric: function (t) {\n var e = this._getRoundNum(t);\n this._updateScale(this._mScale, e < 1e3 ? e + " m" : e / 1e3 + " km", e / t);\n },\n _updateImperial: function (t) {\n var e,\n i,\n t = 3.2808399 * t;\n 5280 < t ? (i = this._getRoundNum(e = t / 5280), this._updateScale(this._iScale, i + " mi", i / e)) : (i = this._getRoundNum(t), this._updateScale(this._iScale, i + " ft", i / t));\n },\n _updateScale: function (t, e, i) {\n t.style.width = Math.round(this.options.maxWidth * i) + "px", t.innerHTML = e;\n },\n _getRoundNum: function (t) {\n var e = Math.pow(10, (Math.floor(t) + "").length - 1),\n t = t / e;\n return e * (t = 10 <= t ? 10 : 5 <= t ? 5 : 3 <= t ? 3 : 2 <= t ? 2 : 1);\n }\n })),\n Ke = B.extend({\n options: {\n position: "bottomright",\n prefix: \'<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">\' + (b.inlineSvg ? \'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg> \' : "") + "Leaflet</a>"\n },\n initialize: function (t) {\n c(this, t), this._attributions = {};\n },\n onAdd: function (t) {\n for (var e in (t.attributionControl = this)._container = P("div", "leaflet-control-attribution"), Ie(this._container), t._layers) t._layers[e].getAttribution && this.addAttribution(t._layers[e].getAttribution());\n return this._update(), t.on("layeradd", this._addAttribution, this), this._container;\n },\n onRemove: function (t) {\n t.off("layeradd", this._addAttribution, this);\n },\n _addAttribution: function (t) {\n t.layer.getAttribution && (this.addAttribution(t.layer.getAttribution()), t.layer.once("remove", function () {\n this.removeAttribution(t.layer.getAttribution());\n }, this));\n },\n setPrefix: function (t) {\n return this.options.prefix = t, this._update(), this;\n },\n addAttribution: function (t) {\n return t && (this._attributions[t] || (this._attributions[t] = 0), this._attributions[t]++, this._update()), this;\n },\n removeAttribution: function (t) {\n return t && this._attributions[t] && (this._attributions[t]--, this._update()), this;\n },\n _update: function () {\n if (this._map) {\n var t,\n e = [];\n for (t in this._attributions) this._attributions[t] && e.push(t);\n var i = [];\n this.options.prefix && i.push(this.options.prefix), e.length && i.push(e.join(", ")), this._container.innerHTML = i.join(\' <span aria-hidden="true">|</span> \');\n }\n }\n }),\n n = (A.mergeOptions({\n attributionControl: !0\n }), A.addInitHook(function () {\n this.options.attributionControl && new Ke().addTo(this);\n }), B.Layers = Ve, B.Zoom = qe, B.Scale = Ge, B.Attribution = Ke, Ue.layers = function (t, e, i) {\n return new Ve(t, e, i);\n }, Ue.zoom = function (t) {\n return new qe(t);\n }, Ue.scale = function (t) {\n return new Ge(t);\n }, Ue.attribution = function (t) {\n return new Ke(t);\n }, et.extend({\n initialize: function (t) {\n this._map = t;\n },\n enable: function () {\n return this._enabled || (this._enabled = !0, this.addHooks()), this;\n },\n disable: function () {\n return this._enabled && (this._enabled = !1, this.removeHooks()), this;\n },\n enabled: function () {\n return !!this._enabled;\n }\n })),\n ft = (n.addTo = function (t, e) {\n return t.addHandler(e, this), this;\n }, {\n Events: e\n }),\n Ye = b.touch ? "touchstart mousedown" : "mousedown",\n Xe = it.extend({\n options: {\n clickTolerance: 3\n },\n initialize: function (t, e, i, n) {\n c(this, n), this._element = t, this._dragStartTarget = e || t, this._preventOutline = i;\n },\n enable: function () {\n this._enabled || (S(this._dragStartTarget, Ye, this._onDown, this), this._enabled = !0);\n },\n disable: function () {\n this._enabled && (Xe._dragging === this && this.finishDrag(!0), k(this._dragStartTarget, Ye, this._onDown, this), this._enabled = !1, this._moved = !1);\n },\n _onDown: function (t) {\n var e, i;\n this._enabled && (this._moved = !1, ve(this._element, "leaflet-zoom-anim") || (t.touches && 1 !== t.touches.length ? Xe._dragging === this && this.finishDrag() : Xe._dragging || t.shiftKey || 1 !== t.which && 1 !== t.button && !t.touches || ((Xe._dragging = this)._preventOutline && Me(this._element), Le(), re(), this._moving || (this.fire("down"), i = t.touches ? t.touches[0] : t, e = Ce(this._element), this._startPoint = new p(i.clientX, i.clientY), this._startPos = Pe(this._element), this._parentScale = Ze(e), i = "mousedown" === t.type, S(document, i ? "mousemove" : "touchmove", this._onMove, this), S(document, i ? "mouseup" : "touchend touchcancel", this._onUp, this)))));\n },\n _onMove: function (t) {\n var e;\n this._enabled && (t.touches && 1 < t.touches.length ? this._moved = !0 : !(e = new p((e = t.touches && 1 === t.touches.length ? t.touches[0] : t).clientX, e.clientY)._subtract(this._startPoint)).x && !e.y || Math.abs(e.x) + Math.abs(e.y) < this.options.clickTolerance || (e.x /= this._parentScale.x, e.y /= this._parentScale.y, O(t), this._moved || (this.fire("dragstart"), this._moved = !0, M(document.body, "leaflet-dragging"), this._lastTarget = t.target || t.srcElement, window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance && (this._lastTarget = this._lastTarget.correspondingUseElement), M(this._lastTarget, "leaflet-drag-target")), this._newPos = this._startPos.add(e), this._moving = !0, this._lastEvent = t, this._updatePosition()));\n },\n _updatePosition: function () {\n var t = {\n originalEvent: this._lastEvent\n };\n this.fire("predrag", t), Z(this._element, this._newPos), this.fire("drag", t);\n },\n _onUp: function () {\n this._enabled && this.finishDrag();\n },\n finishDrag: function (t) {\n z(document.body, "leaflet-dragging"), this._lastTarget && (z(this._lastTarget, "leaflet-drag-target"), this._lastTarget = null), k(document, "mousemove touchmove", this._onMove, this), k(document, "mouseup touchend touchcancel", this._onUp, this), Te(), ae();\n var e = this._moved && this._moving;\n this._moving = !1, Xe._dragging = !1, e && this.fire("dragend", {\n noInertia: t,\n distance: this._newPos.distanceTo(this._startPos)\n });\n }\n });\n function Je(t, e, i) {\n for (var n, o, s, r, a, h, l, u = [1, 4, 2, 8], c = 0, d = t.length; c < d; c++) t[c]._code = si(t[c], e);\n for (s = 0; s < 4; s++) {\n for (h = u[s], n = [], c = 0, o = (d = t.length) - 1; c < d; o = c++) r = t[c], a = t[o], r._code & h ? a._code & h || ((l = oi(a, r, h, e, i))._code = si(l, e), n.push(l)) : (a._code & h && ((l = oi(a, r, h, e, i))._code = si(l, e), n.push(l)), n.push(r));\n t = n;\n }\n return t;\n }\n function $e(t, e) {\n var i, n, o, s, r, a, h;\n if (!t || 0 === t.length) throw new Error("latlngs not passed");\n I(t) || (console.warn("latlngs are not flat! Only the first ring will be used"), t = t[0]);\n for (var l = w([0, 0]), u = g(t), c = (u.getNorthWest().distanceTo(u.getSouthWest()) * u.getNorthEast().distanceTo(u.getNorthWest()) < 1700 && (l = Qe(t)), t.length), d = [], _ = 0; _ < c; _++) {\n var p = w(t[_]);\n d.push(e.project(w([p.lat - l.lat, p.lng - l.lng])));\n }\n for (_ = r = a = h = 0, i = c - 1; _ < c; i = _++) n = d[_], o = d[i], s = n.y * o.x - o.y * n.x, a += (n.x + o.x) * s, h += (n.y + o.y) * s, r += 3 * s;\n u = 0 === r ? d[0] : [a / r, h / r], u = e.unproject(m(u));\n return w([u.lat + l.lat, u.lng + l.lng]);\n }\n function Qe(t) {\n for (var e = 0, i = 0, n = 0, o = 0; o < t.length; o++) {\n var s = w(t[o]);\n e += s.lat, i += s.lng, n++;\n }\n return w([e / n, i / n]);\n }\n var ti,\n gt = {\n __proto__: null,\n clipPolygon: Je,\n polygonCenter: $e,\n centroid: Qe\n };\n function ei(t, e) {\n if (e && t.length) {\n var i = t = function (t, e) {\n for (var i = [t[0]], n = 1, o = 0, s = t.length; n < s; n++) (function (t, e) {\n var i = e.x - t.x,\n e = e.y - t.y;\n return i * i + e * e;\n })(t[n], t[o]) > e && (i.push(t[n]), o = n);\n o < s - 1 && i.push(t[s - 1]);\n return i;\n }(t, e = e * e),\n n = i.length,\n o = new (typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(n);\n o[0] = o[n - 1] = 1, function t(e, i, n, o, s) {\n var r,\n a,\n h,\n l = 0;\n for (a = o + 1; a <= s - 1; a++) h = ri(e[a], e[o], e[s], !0), l < h && (r = a, l = h);\n n < l && (i[r] = 1, t(e, i, n, o, r), t(e, i, n, r, s));\n }(i, o, e, 0, n - 1);\n var s,\n r = [];\n for (s = 0; s < n; s++) o[s] && r.push(i[s]);\n return r;\n }\n return t.slice();\n }\n function ii(t, e, i) {\n return Math.sqrt(ri(t, e, i, !0));\n }\n function ni(t, e, i, n, o) {\n var s,\n r,\n a,\n h = n ? ti : si(t, i),\n l = si(e, i);\n for (ti = l;;) {\n if (!(h | l)) return [t, e];\n if (h & l) return !1;\n a = si(r = oi(t, e, s = h || l, i, o), i), s === h ? (t = r, h = a) : (e = r, l = a);\n }\n }\n function oi(t, e, i, n, o) {\n var s,\n r,\n a = e.x - t.x,\n e = e.y - t.y,\n h = n.min,\n n = n.max;\n return 8 & i ? (s = t.x + a * (n.y - t.y) / e, r = n.y) : 4 & i ? (s = t.x + a * (h.y - t.y) / e, r = h.y) : 2 & i ? (s = n.x, r = t.y + e * (n.x - t.x) / a) : 1 & i && (s = h.x, r = t.y + e * (h.x - t.x) / a), new p(s, r, o);\n }\n function si(t, e) {\n var i = 0;\n return t.x < e.min.x ? i |= 1 : t.x > e.max.x && (i |= 2), t.y < e.min.y ? i |= 4 : t.y > e.max.y && (i |= 8), i;\n }\n function ri(t, e, i, n) {\n var o = e.x,\n e = e.y,\n s = i.x - o,\n r = i.y - e,\n a = s * s + r * r;\n return 0 < a && (1 < (a = ((t.x - o) * s + (t.y - e) * r) / a) ? (o = i.x, e = i.y) : 0 < a && (o += s * a, e += r * a)), s = t.x - o, r = t.y - e, n ? s * s + r * r : new p(o, e);\n }\n function I(t) {\n return !d(t[0]) || "object" != typeof t[0][0] && void 0 !== t[0][0];\n }\n function ai(t) {\n return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), I(t);\n }\n function hi(t, e) {\n var i, n, o, s, r, a;\n if (!t || 0 === t.length) throw new Error("latlngs not passed");\n I(t) || (console.warn("latlngs are not flat! Only the first ring will be used"), t = t[0]);\n for (var h = w([0, 0]), l = g(t), u = (l.getNorthWest().distanceTo(l.getSouthWest()) * l.getNorthEast().distanceTo(l.getNorthWest()) < 1700 && (h = Qe(t)), t.length), c = [], d = 0; d < u; d++) {\n var _ = w(t[d]);\n c.push(e.project(w([_.lat - h.lat, _.lng - h.lng])));\n }\n for (i = d = 0; d < u - 1; d++) i += c[d].distanceTo(c[d + 1]) / 2;\n if (0 === i) a = c[0];else for (n = d = 0; d < u - 1; d++) if (o = c[d], s = c[d + 1], i < (n += r = o.distanceTo(s))) {\n a = [s.x - (r = (n - i) / r) * (s.x - o.x), s.y - r * (s.y - o.y)];\n break;\n }\n l = e.unproject(m(a));\n return w([l.lat + h.lat, l.lng + h.lng]);\n }\n var vt = {\n __proto__: null,\n simplify: ei,\n pointToSegmentDistance: ii,\n closestPointOnSegment: function (t, e, i) {\n return ri(t, e, i);\n },\n clipSegment: ni,\n _getEdgeIntersection: oi,\n _getBitCode: si,\n _sqClosestPointOnSegment: ri,\n isFlat: I,\n _flat: ai,\n polylineCenter: hi\n },\n yt = {\n project: function (t) {\n return new p(t.lng, t.lat);\n },\n unproject: function (t) {\n return new v(t.y, t.x);\n },\n bounds: new f([-180, -90], [180, 90])\n },\n xt = {\n R: 6378137,\n R_MINOR: 6356752.314245179,\n bounds: new f([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\n project: function (t) {\n var e = Math.PI / 180,\n i = this.R,\n n = t.lat * e,\n o = this.R_MINOR / i,\n o = Math.sqrt(1 - o * o),\n s = o * Math.sin(n),\n s = Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - s) / (1 + s), o / 2),\n n = -i * Math.log(Math.max(s, 1e-10));\n return new p(t.lng * e * i, n);\n },\n unproject: function (t) {\n for (var e, i = 180 / Math.PI, n = this.R, o = this.R_MINOR / n, s = Math.sqrt(1 - o * o), r = Math.exp(-t.y / n), a = Math.PI / 2 - 2 * Math.atan(r), h = 0, l = .1; h < 15 && 1e-7 < Math.abs(l); h++) e = s * Math.sin(a), e = Math.pow((1 - e) / (1 + e), s / 2), a += l = Math.PI / 2 - 2 * Math.atan(r * e) - a;\n return new v(a * i, t.x * i / n);\n }\n },\n wt = {\n __proto__: null,\n LonLat: yt,\n Mercator: xt,\n SphericalMercator: rt\n },\n Pt = l({}, st, {\n code: "EPSG:3395",\n projection: xt,\n transformation: ht(bt = .5 / (Math.PI * xt.R), .5, -bt, .5)\n }),\n li = l({}, st, {\n code: "EPSG:4326",\n projection: yt,\n transformation: ht(1 / 180, 1, -1 / 180, .5)\n }),\n Lt = l({}, ot, {\n projection: yt,\n transformation: ht(1, 0, -1, 0),\n scale: function (t) {\n return Math.pow(2, t);\n },\n zoom: function (t) {\n return Math.log(t) / Math.LN2;\n },\n distance: function (t, e) {\n var i = e.lng - t.lng,\n e = e.lat - t.lat;\n return Math.sqrt(i * i + e * e);\n },\n infinite: !0\n }),\n o = (ot.Earth = st, ot.EPSG3395 = Pt, ot.EPSG3857 = lt, ot.EPSG900913 = ut, ot.EPSG4326 = li, ot.Simple = Lt, it.extend({\n options: {\n pane: "overlayPane",\n attribution: null,\n bubblingMouseEvents: !0\n },\n addTo: function (t) {\n return t.addLayer(this), this;\n },\n remove: function () {\n return this.removeFrom(this._map || this._mapToAdd);\n },\n removeFrom: function (t) {\n return t && t.removeLayer(this), this;\n },\n getPane: function (t) {\n return this._map.getPane(t ? this.options[t] || t : this.options.pane);\n },\n addInteractiveTarget: function (t) {\n return this._map._targets[h(t)] = this;\n },\n removeInteractiveTarget: function (t) {\n return delete this._map._targets[h(t)], this;\n },\n getAttribution: function () {\n return this.options.attribution;\n },\n _layerAdd: function (t) {\n var e,\n i = t.target;\n i.hasLayer(this) && (this._map = i, this._zoomAnimated = i._zoomAnimated, this.getEvents && (e = this.getEvents(), i.on(e, this), this.once("remove", function () {\n i.off(e, this);\n }, this)), this.onAdd(i), this.fire("add"), i.fire("layeradd", {\n layer: this\n }));\n }\n })),\n ui = (A.include({\n addLayer: function (t) {\n var e;\n if (t._layerAdd) return e = h(t), this._layers[e] || ((this._layers[e] = t)._mapToAdd = this, t.beforeAdd && t.beforeAdd(this), this.whenReady(t._layerAdd, t)), this;\n throw new Error("The provided object is not a Layer.");\n },\n removeLayer: function (t) {\n var e = h(t);\n return this._layers[e] && (this._loaded && t.onRemove(this), delete this._layers[e], this._loaded && (this.fire("layerremove", {\n layer: t\n }), t.fire("remove")), t._map = t._mapToAdd = null), this;\n },\n hasLayer: function (t) {\n return h(t) in this._layers;\n },\n eachLayer: function (t, e) {\n for (var i in this._layers) t.call(e, this._layers[i]);\n return this;\n },\n _addLayers: function (t) {\n for (var e = 0, i = (t = t ? d(t) ? t : [t] : []).length; e < i; e++) this.addLayer(t[e]);\n },\n _addZoomLimit: function (t) {\n isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[h(t)] = t, this._updateZoomLevels());\n },\n _removeZoomLimit: function (t) {\n t = h(t);\n this._zoomBoundLayers[t] && (delete this._zoomBoundLayers[t], this._updateZoomLevels());\n },\n _updateZoomLevels: function () {\n var t,\n e = 1 / 0,\n i = -1 / 0,\n n = this._getZoomSpan();\n for (t in this._zoomBoundLayers) var o = this._zoomBoundLayers[t].options, e = void 0 === o.minZoom ? e : Math.min(e, o.minZoom), i = void 0 === o.maxZoom ? i : Math.max(i, o.maxZoom);\n this._layersMaxZoom = i === -1 / 0 ? void 0 : i, this._layersMinZoom = e === 1 / 0 ? void 0 : e, n !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom && this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom);\n }\n }), o.extend({\n initialize: function (t, e) {\n var i, n;\n if (c(this, e), this._layers = {}, t) for (i = 0, n = t.length; i < n; i++) this.addLayer(t[i]);\n },\n addLayer: function (t) {\n var e = this.getLayerId(t);\n return this._layers[e] = t, this._map && this._map.addLayer(t), this;\n },\n removeLayer: function (t) {\n t = t in this._layers ? t : this.getLayerId(t);\n return this._map && this._layers[t] && this._map.removeLayer(this._layers[t]), delete this._layers[t], this;\n },\n hasLayer: function (t) {\n return ("number" == typeof t ? t : this.getLayerId(t)) in this._layers;\n },\n clearLayers: function () {\n return this.eachLayer(this.removeLayer, this);\n },\n invoke: function (t) {\n var e,\n i,\n n = Array.prototype.slice.call(arguments, 1);\n for (e in this._layers) (i = this._layers[e])[t] && i[t].apply(i, n);\n return this;\n },\n onAdd: function (t) {\n this.eachLayer(t.addLayer, t);\n },\n onRemove: function (t) {\n this.eachLayer(t.removeLayer, t);\n },\n eachLayer: function (t, e) {\n for (var i in this._layers) t.call(e, this._layers[i]);\n return this;\n },\n getLayer: function (t) {\n return this._layers[t];\n },\n getLayers: function () {\n var t = [];\n return this.eachLayer(t.push, t), t;\n },\n setZIndex: function (t) {\n return this.invoke("setZIndex", t);\n },\n getLayerId: h\n })),\n ci = ui.extend({\n addLayer: function (t) {\n return this.hasLayer(t) ? this : (t.addEventParent(this), ui.prototype.addLayer.call(this, t), this.fire("layeradd", {\n layer: t\n }));\n },\n removeLayer: function (t) {\n return this.hasLayer(t) ? ((t = t in this._layers ? this._layers[t] : t).removeEventParent(this), ui.prototype.removeLayer.call(this, t), this.fire("layerremove", {\n layer: t\n })) : this;\n },\n setStyle: function (t) {\n return this.invoke("setStyle", t);\n },\n bringToFront: function () {\n return this.invoke("bringToFront");\n },\n bringToBack: function () {\n return this.invoke("bringToBack");\n },\n getBounds: function () {\n var t,\n e = new s();\n for (t in this._layers) {\n var i = this._layers[t];\n e.extend(i.getBounds ? i.getBounds() : i.getLatLng());\n }\n return e;\n }\n }),\n di = et.extend({\n options: {\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n crossOrigin: !1\n },\n initialize: function (t) {\n c(this, t);\n },\n createIcon: function (t) {\n return this._createIcon("icon", t);\n },\n createShadow: function (t) {\n return this._createIcon("shadow", t);\n },\n _createIcon: function (t, e) {\n var i = this._getIconUrl(t);\n if (i) return i = this._createImg(i, e && "IMG" === e.tagName ? e : null), this._setIconStyles(i, t), !this.options.crossOrigin && "" !== this.options.crossOrigin || (i.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), i;\n if ("icon" === t) throw new Error("iconUrl not set in Icon options (see the docs).");\n return null;\n },\n _setIconStyles: function (t, e) {\n var i = this.options,\n n = i[e + "Size"],\n n = m(n = "number" == typeof n ? [n, n] : n),\n o = m("shadow" === e && i.shadowAnchor || i.iconAnchor || n && n.divideBy(2, !0));\n t.className = "leaflet-marker-" + e + " " + (i.className || ""), o && (t.style.marginLeft = -o.x + "px", t.style.marginTop = -o.y + "px"), n && (t.style.width = n.x + "px", t.style.height = n.y + "px");\n },\n _createImg: function (t, e) {\n return (e = e || document.createElement("img")).src = t, e;\n },\n _getIconUrl: function (t) {\n return b.retina && this.options[t + "RetinaUrl"] || this.options[t + "Url"];\n }\n });\n var _i = di.extend({\n options: {\n iconUrl: "marker-icon.png",\n iconRetinaUrl: "marker-icon-2x.png",\n shadowUrl: "marker-shadow.png",\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n tooltipAnchor: [16, -28],\n shadowSize: [41, 41]\n },\n _getIconUrl: function (t) {\n return "string" != typeof _i.imagePath && (_i.imagePath = this._detectIconPath()), (this.options.imagePath || _i.imagePath) + di.prototype._getIconUrl.call(this, t);\n },\n _stripUrl: function (t) {\n function e(t, e, i) {\n return (e = e.exec(t)) && e[i];\n }\n return (t = e(t, /^url\\(([\'"])?(.+)\\1\\)$/, 2)) && e(t, /^(.*)marker-icon\\.png$/, 1);\n },\n _detectIconPath: function () {\n var t = P("div", "leaflet-default-icon-path", document.body),\n e = pe(t, "background-image") || pe(t, "backgroundImage");\n return document.body.removeChild(t), (e = this._stripUrl(e)) ? e : (t = document.querySelector(\'link[href$="leaflet.css"]\')) ? t.href.substring(0, t.href.length - "leaflet.css".length - 1) : "";\n }\n }),\n pi = n.extend({\n initialize: function (t) {\n this._marker = t;\n },\n addHooks: function () {\n var t = this._marker._icon;\n this._draggable || (this._draggable = new Xe(t, t, !0)), this._draggable.on({\n dragstart: this._onDragStart,\n predrag: this._onPreDrag,\n drag: this._onDrag,\n dragend: this._onDragEnd\n }, this).enable(), M(t, "leaflet-marker-draggable");\n },\n removeHooks: function () {\n this._draggable.off({\n dragstart: this._onDragStart,\n predrag: this._onPreDrag,\n drag: this._onDrag,\n dragend: this._onDragEnd\n }, this).disable(), this._marker._icon && z(this._marker._icon, "leaflet-marker-draggable");\n },\n moved: function () {\n return this._draggable && this._draggable._moved;\n },\n _adjustPan: function (t) {\n var e = this._marker,\n i = e._map,\n n = this._marker.options.autoPanSpeed,\n o = this._marker.options.autoPanPadding,\n s = Pe(e._icon),\n r = i.getPixelBounds(),\n a = i.getPixelOrigin(),\n a = _(r.min._subtract(a).add(o), r.max._subtract(a).subtract(o));\n a.contains(s) || (o = m((Math.max(a.max.x, s.x) - a.max.x) / (r.max.x - a.max.x) - (Math.min(a.min.x, s.x) - a.min.x) / (r.min.x - a.min.x), (Math.max(a.max.y, s.y) - a.max.y) / (r.max.y - a.max.y) - (Math.min(a.min.y, s.y) - a.min.y) / (r.min.y - a.min.y)).multiplyBy(n), i.panBy(o, {\n animate: !1\n }), this._draggable._newPos._add(o), this._draggable._startPos._add(o), Z(e._icon, this._draggable._newPos), this._onDrag(t), this._panRequest = x(this._adjustPan.bind(this, t)));\n },\n _onDragStart: function () {\n this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup && this._marker.closePopup(), this._marker.fire("movestart").fire("dragstart");\n },\n _onPreDrag: function (t) {\n this._marker.options.autoPan && (r(this._panRequest), this._panRequest = x(this._adjustPan.bind(this, t)));\n },\n _onDrag: function (t) {\n var e = this._marker,\n i = e._shadow,\n n = Pe(e._icon),\n o = e._map.layerPointToLatLng(n);\n i && Z(i, n), e._latlng = o, t.latlng = o, t.oldLatLng = this._oldLatLng, e.fire("move", t).fire("drag", t);\n },\n _onDragEnd: function (t) {\n r(this._panRequest), delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t);\n }\n }),\n mi = o.extend({\n options: {\n icon: new _i(),\n interactive: !0,\n keyboard: !0,\n title: "",\n alt: "Marker",\n zIndexOffset: 0,\n opacity: 1,\n riseOnHover: !1,\n riseOffset: 250,\n pane: "markerPane",\n shadowPane: "shadowPane",\n bubblingMouseEvents: !1,\n autoPanOnFocus: !0,\n draggable: !1,\n autoPan: !1,\n autoPanPadding: [50, 50],\n autoPanSpeed: 10\n },\n initialize: function (t, e) {\n c(this, e), this._latlng = w(t);\n },\n onAdd: function (t) {\n this._zoomAnimated = this._zoomAnimated && t.options.markerZoomAnimation, this._zoomAnimated && t.on("zoomanim", this._animateZoom, this), this._initIcon(), this.update();\n },\n onRemove: function (t) {\n this.dragging && this.dragging.enabled() && (this.options.draggable = !0, this.dragging.removeHooks()), delete this.dragging, this._zoomAnimated && t.off("zoomanim", this._animateZoom, this), this._removeIcon(), this._removeShadow();\n },\n getEvents: function () {\n return {\n zoom: this.update,\n viewreset: this.update\n };\n },\n getLatLng: function () {\n return this._latlng;\n },\n setLatLng: function (t) {\n var e = this._latlng;\n return this._latlng = w(t), this.update(), this.fire("move", {\n oldLatLng: e,\n latlng: this._latlng\n });\n },\n setZIndexOffset: function (t) {\n return this.options.zIndexOffset = t, this.update();\n },\n getIcon: function () {\n return this.options.icon;\n },\n setIcon: function (t) {\n return this.options.icon = t, this._map && (this._initIcon(), this.update()), this._popup && this.bindPopup(this._popup, this._popup.options), this;\n },\n getElement: function () {\n return this._icon;\n },\n update: function () {\n var t;\n return this._icon && this._map && (t = this._map.latLngToLayerPoint(this._latlng).round(), this._setPos(t)), this;\n },\n _initIcon: function () {\n var t = this.options,\n e = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"),\n i = t.icon.createIcon(this._icon),\n n = !1,\n i = (i !== this._icon && (this._icon && this._removeIcon(), n = !0, t.title && (i.title = t.title), "IMG" === i.tagName && (i.alt = t.alt || "")), M(i, e), t.keyboard && (i.tabIndex = "0", i.setAttribute("role", "button")), this._icon = i, t.riseOnHover && this.on({\n mouseover: this._bringToFront,\n mouseout: this._resetZIndex\n }), this.options.autoPanOnFocus && S(i, "focus", this._panOnFocus, this), t.icon.createShadow(this._shadow)),\n o = !1;\n i !== this._shadow && (this._removeShadow(), o = !0), i && (M(i, e), i.alt = ""), this._shadow = i, t.opacity < 1 && this._updateOpacity(), n && this.getPane().appendChild(this._icon), this._initInteraction(), i && o && this.getPane(t.shadowPane).appendChild(this._shadow);\n },\n _removeIcon: function () {\n this.options.riseOnHover && this.off({\n mouseover: this._bringToFront,\n mouseout: this._resetZIndex\n }), this.options.autoPanOnFocus && k(this._icon, "focus", this._panOnFocus, this), T(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null;\n },\n _removeShadow: function () {\n this._shadow && T(this._shadow), this._shadow = null;\n },\n _setPos: function (t) {\n this._icon && Z(this._icon, t), this._shadow && Z(this._shadow, t), this._zIndex = t.y + this.options.zIndexOffset, this._resetZIndex();\n },\n _updateZIndex: function (t) {\n this._icon && (this._icon.style.zIndex = this._zIndex + t);\n },\n _animateZoom: function (t) {\n t = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round();\n this._setPos(t);\n },\n _initInteraction: function () {\n var t;\n this.options.interactive && (M(this._icon, "leaflet-interactive"), this.addInteractiveTarget(this._icon), pi && (t = this.options.draggable, this.dragging && (t = this.dragging.enabled(), this.dragging.disable()), this.dragging = new pi(this), t && this.dragging.enable()));\n },\n setOpacity: function (t) {\n return this.options.opacity = t, this._map && this._updateOpacity(), this;\n },\n _updateOpacity: function () {\n var t = this.options.opacity;\n this._icon && C(this._icon, t), this._shadow && C(this._shadow, t);\n },\n _bringToFront: function () {\n this._updateZIndex(this.options.riseOffset);\n },\n _resetZIndex: function () {\n this._updateZIndex(0);\n },\n _panOnFocus: function () {\n var t,\n e,\n i = this._map;\n i && (t = (e = this.options.icon.options).iconSize ? m(e.iconSize) : m(0, 0), e = e.iconAnchor ? m(e.iconAnchor) : m(0, 0), i.panInside(this._latlng, {\n paddingTopLeft: e,\n paddingBottomRight: t.subtract(e)\n }));\n },\n _getPopupAnchor: function () {\n return this.options.icon.options.popupAnchor;\n },\n _getTooltipAnchor: function () {\n return this.options.icon.options.tooltipAnchor;\n }\n });\n var fi = o.extend({\n options: {\n stroke: !0,\n color: "#3388ff",\n weight: 3,\n opacity: 1,\n lineCap: "round",\n lineJoin: "round",\n dashArray: null,\n dashOffset: null,\n fill: !1,\n fillColor: null,\n fillOpacity: .2,\n fillRule: "evenodd",\n interactive: !0,\n bubblingMouseEvents: !0\n },\n beforeAdd: function (t) {\n this._renderer = t.getRenderer(this);\n },\n onAdd: function () {\n this._renderer._initPath(this), this._reset(), this._renderer._addPath(this);\n },\n onRemove: function () {\n this._renderer._removePath(this);\n },\n redraw: function () {\n return this._map && this._renderer._updatePath(this), this;\n },\n setStyle: function (t) {\n return c(this, t), this._renderer && (this._renderer._updateStyle(this), this.options.stroke && t && Object.prototype.hasOwnProperty.call(t, "weight") && this._updateBounds()), this;\n },\n bringToFront: function () {\n return this._renderer && this._renderer._bringToFront(this), this;\n },\n bringToBack: function () {\n return this._renderer && this._renderer._bringToBack(this), this;\n },\n getElement: function () {\n return this._path;\n },\n _reset: function () {\n this._project(), this._update();\n },\n _clickTolerance: function () {\n return (this.options.stroke ? this.options.weight / 2 : 0) + (this._renderer.options.tolerance || 0);\n }\n }),\n gi = fi.extend({\n options: {\n fill: !0,\n radius: 10\n },\n initialize: function (t, e) {\n c(this, e), this._latlng = w(t), this._radius = this.options.radius;\n },\n setLatLng: function (t) {\n var e = this._latlng;\n return this._latlng = w(t), this.redraw(), this.fire("move", {\n oldLatLng: e,\n latlng: this._latlng\n });\n },\n getLatLng: function () {\n return this._latlng;\n },\n setRadius: function (t) {\n return this.options.radius = this._radius = t, this.redraw();\n },\n getRadius: function () {\n return this._radius;\n },\n setStyle: function (t) {\n var e = t && t.radius || this._radius;\n return fi.prototype.setStyle.call(this, t), this.setRadius(e), this;\n },\n _project: function () {\n this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds();\n },\n _updateBounds: function () {\n var t = this._radius,\n e = this._radiusY || t,\n i = this._clickTolerance(),\n t = [t + i, e + i];\n this._pxBounds = new f(this._point.subtract(t), this._point.add(t));\n },\n _update: function () {\n this._map && this._updatePath();\n },\n _updatePath: function () {\n this._renderer._updateCircle(this);\n },\n _empty: function () {\n return this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n },\n _containsPoint: function (t) {\n return t.distanceTo(this._point) <= this._radius + this._clickTolerance();\n }\n });\n var vi = gi.extend({\n initialize: function (t, e, i) {\n if (c(this, e = "number" == typeof e ? l({}, i, {\n radius: e\n }) : e), this._latlng = w(t), isNaN(this.options.radius)) throw new Error("Circle radius cannot be NaN");\n this._mRadius = this.options.radius;\n },\n setRadius: function (t) {\n return this._mRadius = t, this.redraw();\n },\n getRadius: function () {\n return this._mRadius;\n },\n getBounds: function () {\n var t = [this._radius, this._radiusY || this._radius];\n return new s(this._map.layerPointToLatLng(this._point.subtract(t)), this._map.layerPointToLatLng(this._point.add(t)));\n },\n setStyle: fi.prototype.setStyle,\n _project: function () {\n var t,\n e,\n i,\n n,\n o,\n s = this._latlng.lng,\n r = this._latlng.lat,\n a = this._map,\n h = a.options.crs;\n h.distance === st.distance ? (n = Math.PI / 180, o = this._mRadius / st.R / n, t = a.project([r + o, s]), e = a.project([r - o, s]), e = t.add(e).divideBy(2), i = a.unproject(e).lat, n = Math.acos((Math.cos(o * n) - Math.sin(r * n) * Math.sin(i * n)) / (Math.cos(r * n) * Math.cos(i * n))) / n, !isNaN(n) && 0 !== n || (n = o / Math.cos(Math.PI / 180 * r)), this._point = e.subtract(a.getPixelOrigin()), this._radius = isNaN(n) ? 0 : e.x - a.project([i, s - n]).x, this._radiusY = e.y - t.y) : (o = h.unproject(h.project(this._latlng).subtract([this._mRadius, 0])), this._point = a.latLngToLayerPoint(this._latlng), this._radius = this._point.x - a.latLngToLayerPoint(o).x), this._updateBounds();\n }\n });\n var yi = fi.extend({\n options: {\n smoothFactor: 1,\n noClip: !1\n },\n initialize: function (t, e) {\n c(this, e), this._setLatLngs(t);\n },\n getLatLngs: function () {\n return this._latlngs;\n },\n setLatLngs: function (t) {\n return this._setLatLngs(t), this.redraw();\n },\n isEmpty: function () {\n return !this._latlngs.length;\n },\n closestLayerPoint: function (t) {\n for (var e = 1 / 0, i = null, n = ri, o = 0, s = this._parts.length; o < s; o++) for (var r = this._parts[o], a = 1, h = r.length; a < h; a++) {\n var l,\n u,\n c = n(t, l = r[a - 1], u = r[a], !0);\n c < e && (e = c, i = n(t, l, u));\n }\n return i && (i.distance = Math.sqrt(e)), i;\n },\n getCenter: function () {\n if (this._map) return hi(this._defaultShape(), this._map.options.crs);\n throw new Error("Must add layer to map before using getCenter()");\n },\n getBounds: function () {\n return this._bounds;\n },\n addLatLng: function (t, e) {\n return e = e || this._defaultShape(), t = w(t), e.push(t), this._bounds.extend(t), this.redraw();\n },\n _setLatLngs: function (t) {\n this._bounds = new s(), this._latlngs = this._convertLatLngs(t);\n },\n _defaultShape: function () {\n return I(this._latlngs) ? this._latlngs : this._latlngs[0];\n },\n _convertLatLngs: function (t) {\n for (var e = [], i = I(t), n = 0, o = t.length; n < o; n++) i ? (e[n] = w(t[n]), this._bounds.extend(e[n])) : e[n] = this._convertLatLngs(t[n]);\n return e;\n },\n _project: function () {\n var t = new f();\n this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t), this._bounds.isValid() && t.isValid() && (this._rawPxBounds = t, this._updateBounds());\n },\n _updateBounds: function () {\n var t = this._clickTolerance(),\n t = new p(t, t);\n this._rawPxBounds && (this._pxBounds = new f([this._rawPxBounds.min.subtract(t), this._rawPxBounds.max.add(t)]));\n },\n _projectLatlngs: function (t, e, i) {\n var n,\n o,\n s = t[0] instanceof v,\n r = t.length;\n if (s) {\n for (o = [], n = 0; n < r; n++) o[n] = this._map.latLngToLayerPoint(t[n]), i.extend(o[n]);\n e.push(o);\n } else for (n = 0; n < r; n++) this._projectLatlngs(t[n], e, i);\n },\n _clipPoints: function () {\n var t = this._renderer._bounds;\n if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t)) if (this.options.noClip) this._parts = this._rings;else for (var e, i, n, o, s = this._parts, r = 0, a = 0, h = this._rings.length; r < h; r++) for (e = 0, i = (o = this._rings[r]).length; e < i - 1; e++) (n = ni(o[e], o[e + 1], t, e, !0)) && (s[a] = s[a] || [], s[a].push(n[0]), n[1] === o[e + 1] && e !== i - 2 || (s[a].push(n[1]), a++));\n },\n _simplifyPoints: function () {\n for (var t = this._parts, e = this.options.smoothFactor, i = 0, n = t.length; i < n; i++) t[i] = ei(t[i], e);\n },\n _update: function () {\n this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath());\n },\n _updatePath: function () {\n this._renderer._updatePoly(this);\n },\n _containsPoint: function (t, e) {\n var i,\n n,\n o,\n s,\n r,\n a,\n h = this._clickTolerance();\n if (this._pxBounds && this._pxBounds.contains(t)) for (i = 0, s = this._parts.length; i < s; i++) for (n = 0, o = (r = (a = this._parts[i]).length) - 1; n < r; o = n++) if ((e || 0 !== n) && ii(t, a[o], a[n]) <= h) return !0;\n return !1;\n }\n });\n yi._flat = ai;\n var xi = yi.extend({\n options: {\n fill: !0\n },\n isEmpty: function () {\n return !this._latlngs.length || !this._latlngs[0].length;\n },\n getCenter: function () {\n if (this._map) return $e(this._defaultShape(), this._map.options.crs);\n throw new Error("Must add layer to map before using getCenter()");\n },\n _convertLatLngs: function (t) {\n var t = yi.prototype._convertLatLngs.call(this, t),\n e = t.length;\n return 2 <= e && t[0] instanceof v && t[0].equals(t[e - 1]) && t.pop(), t;\n },\n _setLatLngs: function (t) {\n yi.prototype._setLatLngs.call(this, t), I(this._latlngs) && (this._latlngs = [this._latlngs]);\n },\n _defaultShape: function () {\n return (I(this._latlngs[0]) ? this._latlngs : this._latlngs[0])[0];\n },\n _clipPoints: function () {\n var t = this._renderer._bounds,\n e = this.options.weight,\n e = new p(e, e),\n t = new f(t.min.subtract(e), t.max.add(e));\n if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t)) if (this.options.noClip) this._parts = this._rings;else for (var i, n = 0, o = this._rings.length; n < o; n++) (i = Je(this._rings[n], t, !0)).length && this._parts.push(i);\n },\n _updatePath: function () {\n this._renderer._updatePoly(this, !0);\n },\n _containsPoint: function (t) {\n var e,\n i,\n n,\n o,\n s,\n r,\n a,\n h,\n l = !1;\n if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;\n for (o = 0, a = this._parts.length; o < a; o++) for (s = 0, r = (h = (e = this._parts[o]).length) - 1; s < h; r = s++) i = e[s], n = e[r], i.y > t.y != n.y > t.y && t.x < (n.x - i.x) * (t.y - i.y) / (n.y - i.y) + i.x && (l = !l);\n return l || yi.prototype._containsPoint.call(this, t, !0);\n }\n });\n var wi = ci.extend({\n initialize: function (t, e) {\n c(this, e), this._layers = {}, t && this.addData(t);\n },\n addData: function (t) {\n var e,\n i,\n n,\n o = d(t) ? t : t.features;\n if (o) {\n for (e = 0, i = o.length; e < i; e++) ((n = o[e]).geometries || n.geometry || n.features || n.coordinates) && this.addData(n);\n return this;\n }\n var s,\n r = this.options;\n return (!r.filter || r.filter(t)) && (s = bi(t, r)) ? (s.feature = Zi(t), s.defaultOptions = s.options, this.resetStyle(s), r.onEachFeature && r.onEachFeature(t, s), this.addLayer(s)) : this;\n },\n resetStyle: function (t) {\n return void 0 === t ? this.eachLayer(this.resetStyle, this) : (t.options = l({}, t.defaultOptions), this._setLayerStyle(t, this.options.style), this);\n },\n setStyle: function (e) {\n return this.eachLayer(function (t) {\n this._setLayerStyle(t, e);\n }, this);\n },\n _setLayerStyle: function (t, e) {\n t.setStyle && ("function" == typeof e && (e = e(t.feature)), t.setStyle(e));\n }\n });\n function bi(t, e) {\n var i,\n n,\n o,\n s,\n r = "Feature" === t.type ? t.geometry : t,\n a = r ? r.coordinates : null,\n h = [],\n l = e && e.pointToLayer,\n u = e && e.coordsToLatLng || Li;\n if (!a && !r) return null;\n switch (r.type) {\n case "Point":\n return Pi(l, t, i = u(a), e);\n case "MultiPoint":\n for (o = 0, s = a.length; o < s; o++) i = u(a[o]), h.push(Pi(l, t, i, e));\n return new ci(h);\n case "LineString":\n case "MultiLineString":\n return n = Ti(a, "LineString" === r.type ? 0 : 1, u), new yi(n, e);\n case "Polygon":\n case "MultiPolygon":\n return n = Ti(a, "Polygon" === r.type ? 1 : 2, u), new xi(n, e);\n case "GeometryCollection":\n for (o = 0, s = r.geometries.length; o < s; o++) {\n var c = bi({\n geometry: r.geometries[o],\n type: "Feature",\n properties: t.properties\n }, e);\n c && h.push(c);\n }\n return new ci(h);\n case "FeatureCollection":\n for (o = 0, s = r.features.length; o < s; o++) {\n var d = bi(r.features[o], e);\n d && h.push(d);\n }\n return new ci(h);\n default:\n throw new Error("Invalid GeoJSON object.");\n }\n }\n function Pi(t, e, i, n) {\n return t ? t(e, i) : new mi(i, n && n.markersInheritOptions && n);\n }\n function Li(t) {\n return new v(t[1], t[0], t[2]);\n }\n function Ti(t, e, i) {\n for (var n, o = [], s = 0, r = t.length; s < r; s++) n = e ? Ti(t[s], e - 1, i) : (i || Li)(t[s]), o.push(n);\n return o;\n }\n function Mi(t, e) {\n return void 0 !== (t = w(t)).alt ? [i(t.lng, e), i(t.lat, e), i(t.alt, e)] : [i(t.lng, e), i(t.lat, e)];\n }\n function zi(t, e, i, n) {\n for (var o = [], s = 0, r = t.length; s < r; s++) o.push(e ? zi(t[s], I(t[s]) ? 0 : e - 1, i, n) : Mi(t[s], n));\n return !e && i && 0 < o.length && o.push(o[0].slice()), o;\n }\n function Ci(t, e) {\n return t.feature ? l({}, t.feature, {\n geometry: e\n }) : Zi(e);\n }\n function Zi(t) {\n return "Feature" === t.type || "FeatureCollection" === t.type ? t : {\n type: "Feature",\n properties: {},\n geometry: t\n };\n }\n Tt = {\n toGeoJSON: function (t) {\n return Ci(this, {\n type: "Point",\n coordinates: Mi(this.getLatLng(), t)\n });\n }\n };\n function Si(t, e) {\n return new wi(t, e);\n }\n mi.include(Tt), vi.include(Tt), gi.include(Tt), yi.include({\n toGeoJSON: function (t) {\n var e = !I(this._latlngs);\n return Ci(this, {\n type: (e ? "Multi" : "") + "LineString",\n coordinates: zi(this._latlngs, e ? 1 : 0, !1, t)\n });\n }\n }), xi.include({\n toGeoJSON: function (t) {\n var e = !I(this._latlngs),\n i = e && !I(this._latlngs[0]),\n t = zi(this._latlngs, i ? 2 : e ? 1 : 0, !0, t);\n return Ci(this, {\n type: (i ? "Multi" : "") + "Polygon",\n coordinates: t = e ? t : [t]\n });\n }\n }), ui.include({\n toMultiPoint: function (e) {\n var i = [];\n return this.eachLayer(function (t) {\n i.push(t.toGeoJSON(e).geometry.coordinates);\n }), Ci(this, {\n type: "MultiPoint",\n coordinates: i\n });\n },\n toGeoJSON: function (e) {\n var i,\n n,\n t = this.feature && this.feature.geometry && this.feature.geometry.type;\n return "MultiPoint" === t ? this.toMultiPoint(e) : (i = "GeometryCollection" === t, n = [], this.eachLayer(function (t) {\n t.toGeoJSON && (t = t.toGeoJSON(e), i ? n.push(t.geometry) : "FeatureCollection" === (t = Zi(t)).type ? n.push.apply(n, t.features) : n.push(t));\n }), i ? Ci(this, {\n geometries: n,\n type: "GeometryCollection"\n }) : {\n type: "FeatureCollection",\n features: n\n });\n }\n });\n var Mt = Si,\n Ei = o.extend({\n options: {\n opacity: 1,\n alt: "",\n interactive: !1,\n crossOrigin: !1,\n errorOverlayUrl: "",\n zIndex: 1,\n className: ""\n },\n initialize: function (t, e, i) {\n this._url = t, this._bounds = g(e), c(this, i);\n },\n onAdd: function () {\n this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this.options.interactive && (M(this._image, "leaflet-interactive"), this.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this._reset();\n },\n onRemove: function () {\n T(this._image), this.options.interactive && this.removeInteractiveTarget(this._image);\n },\n setOpacity: function (t) {\n return this.options.opacity = t, this._image && this._updateOpacity(), this;\n },\n setStyle: function (t) {\n return t.opacity && this.setOpacity(t.opacity), this;\n },\n bringToFront: function () {\n return this._map && fe(this._image), this;\n },\n bringToBack: function () {\n return this._map && ge(this._image), this;\n },\n setUrl: function (t) {\n return this._url = t, this._image && (this._image.src = t), this;\n },\n setBounds: function (t) {\n return this._bounds = g(t), this._map && this._reset(), this;\n },\n getEvents: function () {\n var t = {\n zoom: this._reset,\n viewreset: this._reset\n };\n return this._zoomAnimated && (t.zoomanim = this._animateZoom), t;\n },\n setZIndex: function (t) {\n return this.options.zIndex = t, this._updateZIndex(), this;\n },\n getBounds: function () {\n return this._bounds;\n },\n getElement: function () {\n return this._image;\n },\n _initImage: function () {\n var t = "IMG" === this._url.tagName,\n e = this._image = t ? this._url : P("img");\n M(e, "leaflet-image-layer"), this._zoomAnimated && M(e, "leaflet-zoom-animated"), this.options.className && M(e, this.options.className), e.onselectstart = u, e.onmousemove = u, e.onload = a(this.fire, this, "load"), e.onerror = a(this._overlayOnError, this, "error"), !this.options.crossOrigin && "" !== this.options.crossOrigin || (e.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), this.options.zIndex && this._updateZIndex(), t ? this._url = e.src : (e.src = this._url, e.alt = this.options.alt);\n },\n _animateZoom: function (t) {\n var e = this._map.getZoomScale(t.zoom),\n t = this._map._latLngBoundsToNewLayerBounds(this._bounds, t.zoom, t.center).min;\n be(this._image, t, e);\n },\n _reset: function () {\n var t = this._image,\n e = new f(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\n i = e.getSize();\n Z(t, e.min), t.style.width = i.x + "px", t.style.height = i.y + "px";\n },\n _updateOpacity: function () {\n C(this._image, this.options.opacity);\n },\n _updateZIndex: function () {\n this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._image.style.zIndex = this.options.zIndex);\n },\n _overlayOnError: function () {\n this.fire("error");\n var t = this.options.errorOverlayUrl;\n t && this._url !== t && (this._url = t, this._image.src = t);\n },\n getCenter: function () {\n return this._bounds.getCenter();\n }\n }),\n ki = Ei.extend({\n options: {\n autoplay: !0,\n loop: !0,\n keepAspectRatio: !0,\n muted: !1,\n playsInline: !0\n },\n _initImage: function () {\n var t = "VIDEO" === this._url.tagName,\n e = this._image = t ? this._url : P("video");\n if (M(e, "leaflet-image-layer"), this._zoomAnimated && M(e, "leaflet-zoom-animated"), this.options.className && M(e, this.options.className), e.onselectstart = u, e.onmousemove = u, e.onloadeddata = a(this.fire, this, "load"), t) {\n for (var i = e.getElementsByTagName("source"), n = [], o = 0; o < i.length; o++) n.push(i[o].src);\n this._url = 0 < i.length ? n : [e.src];\n } else {\n d(this._url) || (this._url = [this._url]), !this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(e.style, "objectFit") && (e.style.objectFit = "fill"), e.autoplay = !!this.options.autoplay, e.loop = !!this.options.loop, e.muted = !!this.options.muted, e.playsInline = !!this.options.playsInline;\n for (var s = 0; s < this._url.length; s++) {\n var r = P("source");\n r.src = this._url[s], e.appendChild(r);\n }\n }\n }\n });\n var Oi = Ei.extend({\n _initImage: function () {\n var t = this._image = this._url;\n M(t, "leaflet-image-layer"), this._zoomAnimated && M(t, "leaflet-zoom-animated"), this.options.className && M(t, this.options.className), t.onselectstart = u, t.onmousemove = u;\n }\n });\n var Ai = o.extend({\n options: {\n interactive: !1,\n offset: [0, 0],\n className: "",\n pane: void 0,\n content: ""\n },\n initialize: function (t, e) {\n t && (t instanceof v || d(t)) ? (this._latlng = w(t), c(this, e)) : (c(this, t), this._source = e), this.options.content && (this._content = this.options.content);\n },\n openOn: function (t) {\n return (t = arguments.length ? t : this._source._map).hasLayer(this) || t.addLayer(this), this;\n },\n close: function () {\n return this._map && this._map.removeLayer(this), this;\n },\n toggle: function (t) {\n return this._map ? this.close() : (arguments.length ? this._source = t : t = this._source, this._prepareOpen(), this.openOn(t._map)), this;\n },\n onAdd: function (t) {\n this._zoomAnimated = t._zoomAnimated, this._container || this._initLayout(), t._fadeAnimated && C(this._container, 0), clearTimeout(this._removeTimeout), this.getPane().appendChild(this._container), this.update(), t._fadeAnimated && C(this._container, 1), this.bringToFront(), this.options.interactive && (M(this._container, "leaflet-interactive"), this.addInteractiveTarget(this._container));\n },\n onRemove: function (t) {\n t._fadeAnimated ? (C(this._container, 0), this._removeTimeout = setTimeout(a(T, void 0, this._container), 200)) : T(this._container), this.options.interactive && (z(this._container, "leaflet-interactive"), this.removeInteractiveTarget(this._container));\n },\n getLatLng: function () {\n return this._latlng;\n },\n setLatLng: function (t) {\n return this._latlng = w(t), this._map && (this._updatePosition(), this._adjustPan()), this;\n },\n getContent: function () {\n return this._content;\n },\n setContent: function (t) {\n return this._content = t, this.update(), this;\n },\n getElement: function () {\n return this._container;\n },\n update: function () {\n this._map && (this._container.style.visibility = "hidden", this._updateContent(), this._updateLayout(), this._updatePosition(), this._container.style.visibility = "", this._adjustPan());\n },\n getEvents: function () {\n var t = {\n zoom: this._updatePosition,\n viewreset: this._updatePosition\n };\n return this._zoomAnimated && (t.zoomanim = this._animateZoom), t;\n },\n isOpen: function () {\n return !!this._map && this._map.hasLayer(this);\n },\n bringToFront: function () {\n return this._map && fe(this._container), this;\n },\n bringToBack: function () {\n return this._map && ge(this._container), this;\n },\n _prepareOpen: function (t) {\n if (!(i = this._source)._map) return !1;\n if (i instanceof ci) {\n var e,\n i = null,\n n = this._source._layers;\n for (e in n) if (n[e]._map) {\n i = n[e];\n break;\n }\n if (!i) return !1;\n this._source = i;\n }\n if (!t) if (i.getCenter) t = i.getCenter();else if (i.getLatLng) t = i.getLatLng();else {\n if (!i.getBounds) throw new Error("Unable to get source layer LatLng.");\n t = i.getBounds().getCenter();\n }\n return this.setLatLng(t), this._map && this.update(), !0;\n },\n _updateContent: function () {\n if (this._content) {\n var t = this._contentNode,\n e = "function" == typeof this._content ? this._content(this._source || this) : this._content;\n if ("string" == typeof e) t.innerHTML = e;else {\n for (; t.hasChildNodes();) t.removeChild(t.firstChild);\n t.appendChild(e);\n }\n this.fire("contentupdate");\n }\n },\n _updatePosition: function () {\n var t, e, i;\n this._map && (e = this._map.latLngToLayerPoint(this._latlng), t = m(this.options.offset), i = this._getAnchor(), this._zoomAnimated ? Z(this._container, e.add(i)) : t = t.add(e).add(i), e = this._containerBottom = -t.y, i = this._containerLeft = -Math.round(this._containerWidth / 2) + t.x, this._container.style.bottom = e + "px", this._container.style.left = i + "px");\n },\n _getAnchor: function () {\n return [0, 0];\n }\n }),\n Bi = (A.include({\n _initOverlay: function (t, e, i, n) {\n var o = e;\n return o instanceof t || (o = new t(n).setContent(e)), i && o.setLatLng(i), o;\n }\n }), o.include({\n _initOverlay: function (t, e, i, n) {\n var o = i;\n return o instanceof t ? (c(o, n), o._source = this) : (o = e && !n ? e : new t(n, this)).setContent(i), o;\n }\n }), Ai.extend({\n options: {\n pane: "popupPane",\n offset: [0, 7],\n maxWidth: 300,\n minWidth: 50,\n maxHeight: null,\n autoPan: !0,\n autoPanPaddingTopLeft: null,\n autoPanPaddingBottomRight: null,\n autoPanPadding: [5, 5],\n keepInView: !1,\n closeButton: !0,\n autoClose: !0,\n closeOnEscapeKey: !0,\n className: ""\n },\n openOn: function (t) {\n return !(t = arguments.length ? t : this._source._map).hasLayer(this) && t._popup && t._popup.options.autoClose && t.removeLayer(t._popup), t._popup = this, Ai.prototype.openOn.call(this, t);\n },\n onAdd: function (t) {\n Ai.prototype.onAdd.call(this, t), t.fire("popupopen", {\n popup: this\n }), this._source && (this._source.fire("popupopen", {\n popup: this\n }, !0), this._source instanceof fi || this._source.on("preclick", Ae));\n },\n onRemove: function (t) {\n Ai.prototype.onRemove.call(this, t), t.fire("popupclose", {\n popup: this\n }), this._source && (this._source.fire("popupclose", {\n popup: this\n }, !0), this._source instanceof fi || this._source.off("preclick", Ae));\n },\n getEvents: function () {\n var t = Ai.prototype.getEvents.call(this);\n return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options.closePopupOnClick) && (t.preclick = this.close), this.options.keepInView && (t.moveend = this._adjustPan), t;\n },\n _initLayout: function () {\n var t = "leaflet-popup",\n e = this._container = P("div", t + " " + (this.options.className || "") + " leaflet-zoom-animated"),\n i = this._wrapper = P("div", t + "-content-wrapper", e);\n this._contentNode = P("div", t + "-content", i), Ie(e), Be(this._contentNode), S(e, "contextmenu", Ae), this._tipContainer = P("div", t + "-tip-container", e), this._tip = P("div", t + "-tip", this._tipContainer), this.options.closeButton && ((i = this._closeButton = P("a", t + "-close-button", e)).setAttribute("role", "button"), i.setAttribute("aria-label", "Close popup"), i.href = "#close", i.innerHTML = \'<span aria-hidden="true">×</span>\', S(i, "click", function (t) {\n O(t), this.close();\n }, this));\n },\n _updateLayout: function () {\n var t = this._contentNode,\n e = t.style,\n i = (e.width = "", e.whiteSpace = "nowrap", t.offsetWidth),\n i = Math.min(i, this.options.maxWidth),\n i = (i = Math.max(i, this.options.minWidth), e.width = i + 1 + "px", e.whiteSpace = "", e.height = "", t.offsetHeight),\n n = this.options.maxHeight,\n o = "leaflet-popup-scrolled";\n (n && n < i ? (e.height = n + "px", M) : z)(t, o), this._containerWidth = this._container.offsetWidth;\n },\n _animateZoom: function (t) {\n var t = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center),\n e = this._getAnchor();\n Z(this._container, t.add(e));\n },\n _adjustPan: function () {\n var t, e, i, n, o, s, r, a;\n this.options.autoPan && (this._map._panAnim && this._map._panAnim.stop(), this._autopanning ? this._autopanning = !1 : (t = this._map, e = parseInt(pe(this._container, "marginBottom"), 10) || 0, e = this._container.offsetHeight + e, a = this._containerWidth, (i = new p(this._containerLeft, -e - this._containerBottom))._add(Pe(this._container)), i = t.layerPointToContainerPoint(i), o = m(this.options.autoPanPadding), n = m(this.options.autoPanPaddingTopLeft || o), o = m(this.options.autoPanPaddingBottomRight || o), s = t.getSize(), r = 0, i.x + a + o.x > s.x && (r = i.x + a - s.x + o.x), i.x - r - n.x < (a = 0) && (r = i.x - n.x), i.y + e + o.y > s.y && (a = i.y + e - s.y + o.y), i.y - a - n.y < 0 && (a = i.y - n.y), (r || a) && (this.options.keepInView && (this._autopanning = !0), t.fire("autopanstart").panBy([r, a]))));\n },\n _getAnchor: function () {\n return m(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\n }\n })),\n Ii = (A.mergeOptions({\n closePopupOnClick: !0\n }), A.include({\n openPopup: function (t, e, i) {\n return this._initOverlay(Bi, t, e, i).openOn(this), this;\n },\n closePopup: function (t) {\n return (t = arguments.length ? t : this._popup) && t.close(), this;\n }\n }), o.include({\n bindPopup: function (t, e) {\n return this._popup = this._initOverlay(Bi, this._popup, t, e), this._popupHandlersAdded || (this.on({\n click: this._openPopup,\n keypress: this._onKeyPress,\n remove: this.closePopup,\n move: this._movePopup\n }), this._popupHandlersAdded = !0), this;\n },\n unbindPopup: function () {\n return this._popup && (this.off({\n click: this._openPopup,\n keypress: this._onKeyPress,\n remove: this.closePopup,\n move: this._movePopup\n }), this._popupHandlersAdded = !1, this._popup = null), this;\n },\n openPopup: function (t) {\n return this._popup && (this instanceof ci || (this._popup._source = this), this._popup._prepareOpen(t || this._latlng) && this._popup.openOn(this._map)), this;\n },\n closePopup: function () {\n return this._popup && this._popup.close(), this;\n },\n togglePopup: function () {\n return this._popup && this._popup.toggle(this), this;\n },\n isPopupOpen: function () {\n return !!this._popup && this._popup.isOpen();\n },\n setPopupContent: function (t) {\n return this._popup && this._popup.setContent(t), this;\n },\n getPopup: function () {\n return this._popup;\n },\n _openPopup: function (t) {\n var e;\n this._popup && this._map && (Re(t), e = t.layer || t.target, this._popup._source !== e || e instanceof fi ? (this._popup._source = e, this.openPopup(t.latlng)) : this._map.hasLayer(this._popup) ? this.closePopup() : this.openPopup(t.latlng));\n },\n _movePopup: function (t) {\n this._popup.setLatLng(t.latlng);\n },\n _onKeyPress: function (t) {\n 13 === t.originalEvent.keyCode && this._openPopup(t);\n }\n }), Ai.extend({\n options: {\n pane: "tooltipPane",\n offset: [0, 0],\n direction: "auto",\n permanent: !1,\n sticky: !1,\n opacity: .9\n },\n onAdd: function (t) {\n Ai.prototype.onAdd.call(this, t), this.setOpacity(this.options.opacity), t.fire("tooltipopen", {\n tooltip: this\n }), this._source && (this.addEventParent(this._source), this._source.fire("tooltipopen", {\n tooltip: this\n }, !0));\n },\n onRemove: function (t) {\n Ai.prototype.onRemove.call(this, t), t.fire("tooltipclose", {\n tooltip: this\n }), this._source && (this.removeEventParent(this._source), this._source.fire("tooltipclose", {\n tooltip: this\n }, !0));\n },\n getEvents: function () {\n var t = Ai.prototype.getEvents.call(this);\n return this.options.permanent || (t.preclick = this.close), t;\n },\n _initLayout: function () {\n var t = "leaflet-tooltip " + (this.options.className || "") + " leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide");\n this._contentNode = this._container = P("div", t), this._container.setAttribute("role", "tooltip"), this._container.setAttribute("id", "leaflet-tooltip-" + h(this));\n },\n _updateLayout: function () {},\n _adjustPan: function () {},\n _setPosition: function (t) {\n var e,\n i = this._map,\n n = this._container,\n o = i.latLngToContainerPoint(i.getCenter()),\n i = i.layerPointToContainerPoint(t),\n s = this.options.direction,\n r = n.offsetWidth,\n a = n.offsetHeight,\n h = m(this.options.offset),\n l = this._getAnchor(),\n i = "top" === s ? (e = r / 2, a) : "bottom" === s ? (e = r / 2, 0) : (e = "center" === s ? r / 2 : "right" === s ? 0 : "left" === s ? r : i.x < o.x ? (s = "right", 0) : (s = "left", r + 2 * (h.x + l.x)), a / 2);\n t = t.subtract(m(e, i, !0)).add(h).add(l), z(n, "leaflet-tooltip-right"), z(n, "leaflet-tooltip-left"), z(n, "leaflet-tooltip-top"), z(n, "leaflet-tooltip-bottom"), M(n, "leaflet-tooltip-" + s), Z(n, t);\n },\n _updatePosition: function () {\n var t = this._map.latLngToLayerPoint(this._latlng);\n this._setPosition(t);\n },\n setOpacity: function (t) {\n this.options.opacity = t, this._container && C(this._container, t);\n },\n _animateZoom: function (t) {\n t = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);\n this._setPosition(t);\n },\n _getAnchor: function () {\n return m(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n }\n })),\n Ri = (A.include({\n openTooltip: function (t, e, i) {\n return this._initOverlay(Ii, t, e, i).openOn(this), this;\n },\n closeTooltip: function (t) {\n return t.close(), this;\n }\n }), o.include({\n bindTooltip: function (t, e) {\n return this._tooltip && this.isTooltipOpen() && this.unbindTooltip(), this._tooltip = this._initOverlay(Ii, this._tooltip, t, e), this._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map.hasLayer(this) && this.openTooltip(), this;\n },\n unbindTooltip: function () {\n return this._tooltip && (this._initTooltipInteractions(!0), this.closeTooltip(), this._tooltip = null), this;\n },\n _initTooltipInteractions: function (t) {\n var e, i;\n !t && this._tooltipHandlersAdded || (e = t ? "off" : "on", i = {\n remove: this.closeTooltip,\n move: this._moveTooltip\n }, this._tooltip.options.permanent ? i.add = this._openTooltip : (i.mouseover = this._openTooltip, i.mouseout = this.closeTooltip, i.click = this._openTooltip, this._map ? this._addFocusListeners() : i.add = this._addFocusListeners), this._tooltip.options.sticky && (i.mousemove = this._moveTooltip), this[e](i), this._tooltipHandlersAdded = !t);\n },\n openTooltip: function (t) {\n return this._tooltip && (this instanceof ci || (this._tooltip._source = this), this._tooltip._prepareOpen(t) && (this._tooltip.openOn(this._map), this.getElement ? this._setAriaDescribedByOnLayer(this) : this.eachLayer && this.eachLayer(this._setAriaDescribedByOnLayer, this))), this;\n },\n closeTooltip: function () {\n if (this._tooltip) return this._tooltip.close();\n },\n toggleTooltip: function () {\n return this._tooltip && this._tooltip.toggle(this), this;\n },\n isTooltipOpen: function () {\n return this._tooltip.isOpen();\n },\n setTooltipContent: function (t) {\n return this._tooltip && this._tooltip.setContent(t), this;\n },\n getTooltip: function () {\n return this._tooltip;\n },\n _addFocusListeners: function () {\n this.getElement ? this._addFocusListenersOnLayer(this) : this.eachLayer && this.eachLayer(this._addFocusListenersOnLayer, this);\n },\n _addFocusListenersOnLayer: function (t) {\n var e = "function" == typeof t.getElement && t.getElement();\n e && (S(e, "focus", function () {\n this._tooltip._source = t, this.openTooltip();\n }, this), S(e, "blur", this.closeTooltip, this));\n },\n _setAriaDescribedByOnLayer: function (t) {\n t = "function" == typeof t.getElement && t.getElement();\n t && t.setAttribute("aria-describedby", this._tooltip._container.id);\n },\n _openTooltip: function (t) {\n var e;\n this._tooltip && this._map && (this._map.dragging && this._map.dragging.moving() && !this._openOnceFlag ? (this._openOnceFlag = !0, (e = this)._map.once("moveend", function () {\n e._openOnceFlag = !1, e._openTooltip(t);\n })) : (this._tooltip._source = t.layer || t.target, this.openTooltip(this._tooltip.options.sticky ? t.latlng : void 0)));\n },\n _moveTooltip: function (t) {\n var e = t.latlng;\n this._tooltip.options.sticky && t.originalEvent && (t = this._map.mouseEventToContainerPoint(t.originalEvent), t = this._map.containerPointToLayerPoint(t), e = this._map.layerPointToLatLng(t)), this._tooltip.setLatLng(e);\n }\n }), di.extend({\n options: {\n iconSize: [12, 12],\n html: !1,\n bgPos: null,\n className: "leaflet-div-icon"\n },\n createIcon: function (t) {\n var t = t && "DIV" === t.tagName ? t : document.createElement("div"),\n e = this.options;\n return e.html instanceof Element ? (me(t), t.appendChild(e.html)) : t.innerHTML = !1 !== e.html ? e.html : "", e.bgPos && (e = m(e.bgPos), t.style.backgroundPosition = -e.x + "px " + -e.y + "px"), this._setIconStyles(t, "icon"), t;\n },\n createShadow: function () {\n return null;\n }\n }));\n di.Default = _i;\n var Ni = o.extend({\n options: {\n tileSize: 256,\n opacity: 1,\n updateWhenIdle: b.mobile,\n updateWhenZooming: !0,\n updateInterval: 200,\n zIndex: 1,\n bounds: null,\n minZoom: 0,\n maxZoom: void 0,\n maxNativeZoom: void 0,\n minNativeZoom: void 0,\n noWrap: !1,\n pane: "tilePane",\n className: "",\n keepBuffer: 2\n },\n initialize: function (t) {\n c(this, t);\n },\n onAdd: function () {\n this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView();\n },\n beforeAdd: function (t) {\n t._addZoomLimit(this);\n },\n onRemove: function (t) {\n this._removeAllTiles(), T(this._container), t._removeZoomLimit(this), this._container = null, this._tileZoom = void 0;\n },\n bringToFront: function () {\n return this._map && (fe(this._container), this._setAutoZIndex(Math.max)), this;\n },\n bringToBack: function () {\n return this._map && (ge(this._container), this._setAutoZIndex(Math.min)), this;\n },\n getContainer: function () {\n return this._container;\n },\n setOpacity: function (t) {\n return this.options.opacity = t, this._updateOpacity(), this;\n },\n setZIndex: function (t) {\n return this.options.zIndex = t, this._updateZIndex(), this;\n },\n isLoading: function () {\n return this._loading;\n },\n redraw: function () {\n var t;\n return this._map && (this._removeAllTiles(), (t = this._clampZoom(this._map.getZoom())) !== this._tileZoom && (this._tileZoom = t, this._updateLevels()), this._update()), this;\n },\n getEvents: function () {\n var t = {\n viewprereset: this._invalidateAll,\n viewreset: this._resetView,\n zoom: this._resetView,\n moveend: this._onMoveEnd\n };\n return this.options.updateWhenIdle || (this._onMove || (this._onMove = j(this._onMoveEnd, this.options.updateInterval, this)), t.move = this._onMove), this._zoomAnimated && (t.zoomanim = this._animateZoom), t;\n },\n createTile: function () {\n return document.createElement("div");\n },\n getTileSize: function () {\n var t = this.options.tileSize;\n return t instanceof p ? t : new p(t, t);\n },\n _updateZIndex: function () {\n this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._container.style.zIndex = this.options.zIndex);\n },\n _setAutoZIndex: function (t) {\n for (var e, i = this.getPane().children, n = -t(-1 / 0, 1 / 0), o = 0, s = i.length; o < s; o++) e = i[o].style.zIndex, i[o] !== this._container && e && (n = t(n, +e));\n isFinite(n) && (this.options.zIndex = n + t(-1, 1), this._updateZIndex());\n },\n _updateOpacity: function () {\n if (this._map && !b.ielt9) {\n C(this._container, this.options.opacity);\n var t,\n e = +new Date(),\n i = !1,\n n = !1;\n for (t in this._tiles) {\n var o,\n s = this._tiles[t];\n s.current && s.loaded && (o = Math.min(1, (e - s.loaded) / 200), C(s.el, o), o < 1 ? i = !0 : (s.active ? n = !0 : this._onOpaqueTile(s), s.active = !0));\n }\n n && !this._noPrune && this._pruneTiles(), i && (r(this._fadeFrame), this._fadeFrame = x(this._updateOpacity, this));\n }\n },\n _onOpaqueTile: u,\n _initContainer: function () {\n this._container || (this._container = P("div", "leaflet-layer " + (this.options.className || "")), this._updateZIndex(), this.options.opacity < 1 && this._updateOpacity(), this.getPane().appendChild(this._container));\n },\n _updateLevels: function () {\n var t = this._tileZoom,\n e = this.options.maxZoom;\n if (void 0 !== t) {\n for (var i in this._levels) i = Number(i), this._levels[i].el.children.length || i === t ? (this._levels[i].el.style.zIndex = e - Math.abs(t - i), this._onUpdateLevel(i)) : (T(this._levels[i].el), this._removeTilesAtZoom(i), this._onRemoveLevel(i), delete this._levels[i]);\n var n = this._levels[t],\n o = this._map;\n return n || ((n = this._levels[t] = {}).el = P("div", "leaflet-tile-container leaflet-zoom-animated", this._container), n.el.style.zIndex = e, n.origin = o.project(o.unproject(o.getPixelOrigin()), t).round(), n.zoom = t, this._setZoomTransform(n, o.getCenter(), o.getZoom()), u(n.el.offsetWidth), this._onCreateLevel(n)), this._level = n;\n }\n },\n _onUpdateLevel: u,\n _onRemoveLevel: u,\n _onCreateLevel: u,\n _pruneTiles: function () {\n if (this._map) {\n var t,\n e,\n i,\n n = this._map.getZoom();\n if (n > this.options.maxZoom || n < this.options.minZoom) this._removeAllTiles();else {\n for (t in this._tiles) (i = this._tiles[t]).retain = i.current;\n for (t in this._tiles) (i = this._tiles[t]).current && !i.active && (e = i.coords, this._retainParent(e.x, e.y, e.z, e.z - 5) || this._retainChildren(e.x, e.y, e.z, e.z + 2));\n for (t in this._tiles) this._tiles[t].retain || this._removeTile(t);\n }\n }\n },\n _removeTilesAtZoom: function (t) {\n for (var e in this._tiles) this._tiles[e].coords.z === t && this._removeTile(e);\n },\n _removeAllTiles: function () {\n for (var t in this._tiles) this._removeTile(t);\n },\n _invalidateAll: function () {\n for (var t in this._levels) T(this._levels[t].el), this._onRemoveLevel(Number(t)), delete this._levels[t];\n this._removeAllTiles(), this._tileZoom = void 0;\n },\n _retainParent: function (t, e, i, n) {\n var t = Math.floor(t / 2),\n e = Math.floor(e / 2),\n i = i - 1,\n o = new p(+t, +e),\n o = (o.z = i, this._tileCoordsToKey(o)),\n o = this._tiles[o];\n return o && o.active ? o.retain = !0 : (o && o.loaded && (o.retain = !0), n < i && this._retainParent(t, e, i, n));\n },\n _retainChildren: function (t, e, i, n) {\n for (var o = 2 * t; o < 2 * t + 2; o++) for (var s = 2 * e; s < 2 * e + 2; s++) {\n var r = new p(o, s),\n r = (r.z = i + 1, this._tileCoordsToKey(r)),\n r = this._tiles[r];\n r && r.active ? r.retain = !0 : (r && r.loaded && (r.retain = !0), i + 1 < n && this._retainChildren(o, s, i + 1, n));\n }\n },\n _resetView: function (t) {\n t = t && (t.pinch || t.flyTo);\n this._setView(this._map.getCenter(), this._map.getZoom(), t, t);\n },\n _animateZoom: function (t) {\n this._setView(t.center, t.zoom, !0, t.noUpdate);\n },\n _clampZoom: function (t) {\n var e = this.options;\n return void 0 !== e.minNativeZoom && t < e.minNativeZoom ? e.minNativeZoom : void 0 !== e.maxNativeZoom && e.maxNativeZoom < t ? e.maxNativeZoom : t;\n },\n _setView: function (t, e, i, n) {\n var o = Math.round(e),\n o = void 0 !== this.options.maxZoom && o > this.options.maxZoom || void 0 !== this.options.minZoom && o < this.options.minZoom ? void 0 : this._clampZoom(o),\n s = this.options.updateWhenZooming && o !== this._tileZoom;\n n && !s || (this._tileZoom = o, this._abortLoading && this._abortLoading(), this._updateLevels(), this._resetGrid(), void 0 !== o && this._update(t), i || this._pruneTiles(), this._noPrune = !!i), this._setZoomTransforms(t, e);\n },\n _setZoomTransforms: function (t, e) {\n for (var i in this._levels) this._setZoomTransform(this._levels[i], t, e);\n },\n _setZoomTransform: function (t, e, i) {\n var n = this._map.getZoomScale(i, t.zoom),\n e = t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(e, i)).round();\n b.any3d ? be(t.el, e, n) : Z(t.el, e);\n },\n _resetGrid: function () {\n var t = this._map,\n e = t.options.crs,\n i = this._tileSize = this.getTileSize(),\n n = this._tileZoom,\n o = this._map.getPixelWorldBounds(this._tileZoom);\n o && (this._globalTileRange = this._pxBoundsToTileRange(o)), this._wrapX = e.wrapLng && !this.options.noWrap && [Math.floor(t.project([0, e.wrapLng[0]], n).x / i.x), Math.ceil(t.project([0, e.wrapLng[1]], n).x / i.y)], this._wrapY = e.wrapLat && !this.options.noWrap && [Math.floor(t.project([e.wrapLat[0], 0], n).y / i.x), Math.ceil(t.project([e.wrapLat[1], 0], n).y / i.y)];\n },\n _onMoveEnd: function () {\n this._map && !this._map._animatingZoom && this._update();\n },\n _getTiledPixelBounds: function (t) {\n var e = this._map,\n i = e._animatingZoom ? Math.max(e._animateToZoom, e.getZoom()) : e.getZoom(),\n i = e.getZoomScale(i, this._tileZoom),\n t = e.project(t, this._tileZoom).floor(),\n e = e.getSize().divideBy(2 * i);\n return new f(t.subtract(e), t.add(e));\n },\n _update: function (t) {\n var e = this._map;\n if (e) {\n var i = this._clampZoom(e.getZoom());\n if (void 0 === t && (t = e.getCenter()), void 0 !== this._tileZoom) {\n var n,\n e = this._getTiledPixelBounds(t),\n o = this._pxBoundsToTileRange(e),\n s = o.getCenter(),\n r = [],\n e = this.options.keepBuffer,\n a = new f(o.getBottomLeft().subtract([e, -e]), o.getTopRight().add([e, -e]));\n if (!(isFinite(o.min.x) && isFinite(o.min.y) && isFinite(o.max.x) && isFinite(o.max.y))) throw new Error("Attempted to load an infinite number of tiles");\n for (n in this._tiles) {\n var h = this._tiles[n].coords;\n h.z === this._tileZoom && a.contains(new p(h.x, h.y)) || (this._tiles[n].current = !1);\n }\n if (1 < Math.abs(i - this._tileZoom)) this._setView(t, i);else {\n for (var l = o.min.y; l <= o.max.y; l++) for (var u = o.min.x; u <= o.max.x; u++) {\n var c,\n d = new p(u, l);\n d.z = this._tileZoom, this._isValidTile(d) && ((c = this._tiles[this._tileCoordsToKey(d)]) ? c.current = !0 : r.push(d));\n }\n if (r.sort(function (t, e) {\n return t.distanceTo(s) - e.distanceTo(s);\n }), 0 !== r.length) {\n this._loading || (this._loading = !0, this.fire("loading"));\n for (var _ = document.createDocumentFragment(), u = 0; u < r.length; u++) this._addTile(r[u], _);\n this._level.el.appendChild(_);\n }\n }\n }\n }\n },\n _isValidTile: function (t) {\n var e = this._map.options.crs;\n if (!e.infinite) {\n var i = this._globalTileRange;\n if (!e.wrapLng && (t.x < i.min.x || t.x > i.max.x) || !e.wrapLat && (t.y < i.min.y || t.y > i.max.y)) return !1;\n }\n return !this.options.bounds || (e = this._tileCoordsToBounds(t), g(this.options.bounds).overlaps(e));\n },\n _keyToBounds: function (t) {\n return this._tileCoordsToBounds(this._keyToTileCoords(t));\n },\n _tileCoordsToNwSe: function (t) {\n var e = this._map,\n i = this.getTileSize(),\n n = t.scaleBy(i),\n i = n.add(i);\n return [e.unproject(n, t.z), e.unproject(i, t.z)];\n },\n _tileCoordsToBounds: function (t) {\n t = this._tileCoordsToNwSe(t), t = new s(t[0], t[1]);\n return t = this.options.noWrap ? t : this._map.wrapLatLngBounds(t);\n },\n _tileCoordsToKey: function (t) {\n return t.x + ":" + t.y + ":" + t.z;\n },\n _keyToTileCoords: function (t) {\n var t = t.split(":"),\n e = new p(+t[0], +t[1]);\n return e.z = +t[2], e;\n },\n _removeTile: function (t) {\n var e = this._tiles[t];\n e && (T(e.el), delete this._tiles[t], this.fire("tileunload", {\n tile: e.el,\n coords: this._keyToTileCoords(t)\n }));\n },\n _initTile: function (t) {\n M(t, "leaflet-tile");\n var e = this.getTileSize();\n t.style.width = e.x + "px", t.style.height = e.y + "px", t.onselectstart = u, t.onmousemove = u, b.ielt9 && this.options.opacity < 1 && C(t, this.options.opacity);\n },\n _addTile: function (t, e) {\n var i = this._getTilePos(t),\n n = this._tileCoordsToKey(t),\n o = this.createTile(this._wrapCoords(t), a(this._tileReady, this, t));\n this._initTile(o), this.createTile.length < 2 && x(a(this._tileReady, this, t, null, o)), Z(o, i), this._tiles[n] = {\n el: o,\n coords: t,\n current: !0\n }, e.appendChild(o), this.fire("tileloadstart", {\n tile: o,\n coords: t\n });\n },\n _tileReady: function (t, e, i) {\n e && this.fire("tileerror", {\n error: e,\n tile: i,\n coords: t\n });\n var n = this._tileCoordsToKey(t);\n (i = this._tiles[n]) && (i.loaded = +new Date(), this._map._fadeAnimated ? (C(i.el, 0), r(this._fadeFrame), this._fadeFrame = x(this._updateOpacity, this)) : (i.active = !0, this._pruneTiles()), e || (M(i.el, "leaflet-tile-loaded"), this.fire("tileload", {\n tile: i.el,\n coords: t\n })), this._noTilesToLoad() && (this._loading = !1, this.fire("load"), b.ielt9 || !this._map._fadeAnimated ? x(this._pruneTiles, this) : setTimeout(a(this._pruneTiles, this), 250)));\n },\n _getTilePos: function (t) {\n return t.scaleBy(this.getTileSize()).subtract(this._level.origin);\n },\n _wrapCoords: function (t) {\n var e = new p(this._wrapX ? H(t.x, this._wrapX) : t.x, this._wrapY ? H(t.y, this._wrapY) : t.y);\n return e.z = t.z, e;\n },\n _pxBoundsToTileRange: function (t) {\n var e = this.getTileSize();\n return new f(t.min.unscaleBy(e).floor(), t.max.unscaleBy(e).ceil().subtract([1, 1]));\n },\n _noTilesToLoad: function () {\n for (var t in this._tiles) if (!this._tiles[t].loaded) return !1;\n return !0;\n }\n });\n var Di = Ni.extend({\n options: {\n minZoom: 0,\n maxZoom: 18,\n subdomains: "abc",\n errorTileUrl: "",\n zoomOffset: 0,\n tms: !1,\n zoomReverse: !1,\n detectRetina: !1,\n crossOrigin: !1,\n referrerPolicy: !1\n },\n initialize: function (t, e) {\n this._url = t, (e = c(this, e)).detectRetina && b.retina && 0 < e.maxZoom ? (e.tileSize = Math.floor(e.tileSize / 2), e.zoomReverse ? (e.zoomOffset--, e.minZoom = Math.min(e.maxZoom, e.minZoom + 1)) : (e.zoomOffset++, e.maxZoom = Math.max(e.minZoom, e.maxZoom - 1)), e.minZoom = Math.max(0, e.minZoom)) : e.zoomReverse ? e.minZoom = Math.min(e.maxZoom, e.minZoom) : e.maxZoom = Math.max(e.minZoom, e.maxZoom), "string" == typeof e.subdomains && (e.subdomains = e.subdomains.split("")), this.on("tileunload", this._onTileRemove);\n },\n setUrl: function (t, e) {\n return this._url === t && void 0 === e && (e = !0), this._url = t, e || this.redraw(), this;\n },\n createTile: function (t, e) {\n var i = document.createElement("img");\n return S(i, "load", a(this._tileOnLoad, this, e, i)), S(i, "error", a(this._tileOnError, this, e, i)), !this.options.crossOrigin && "" !== this.options.crossOrigin || (i.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), "string" == typeof this.options.referrerPolicy && (i.referrerPolicy = this.options.referrerPolicy), i.alt = "", i.src = this.getTileUrl(t), i;\n },\n getTileUrl: function (t) {\n var e = {\n r: b.retina ? "@2x" : "",\n s: this._getSubdomain(t),\n x: t.x,\n y: t.y,\n z: this._getZoomForUrl()\n };\n return this._map && !this._map.options.crs.infinite && (t = this._globalTileRange.max.y - t.y, this.options.tms && (e.y = t), e["-y"] = t), q(this._url, l(e, this.options));\n },\n _tileOnLoad: function (t, e) {\n b.ielt9 ? setTimeout(a(t, this, null, e), 0) : t(null, e);\n },\n _tileOnError: function (t, e, i) {\n var n = this.options.errorTileUrl;\n n && e.getAttribute("src") !== n && (e.src = n), t(i, e);\n },\n _onTileRemove: function (t) {\n t.tile.onload = null;\n },\n _getZoomForUrl: function () {\n var t = this._tileZoom,\n e = this.options.maxZoom;\n return (t = this.options.zoomReverse ? e - t : t) + this.options.zoomOffset;\n },\n _getSubdomain: function (t) {\n t = Math.abs(t.x + t.y) % this.options.subdomains.length;\n return this.options.subdomains[t];\n },\n _abortLoading: function () {\n var t, e, i;\n for (t in this._tiles) this._tiles[t].coords.z !== this._tileZoom && ((i = this._tiles[t].el).onload = u, i.onerror = u, i.complete || (i.src = K, e = this._tiles[t].coords, T(i), delete this._tiles[t], this.fire("tileabort", {\n tile: i,\n coords: e\n })));\n },\n _removeTile: function (t) {\n var e = this._tiles[t];\n if (e) return e.el.setAttribute("src", K), Ni.prototype._removeTile.call(this, t);\n },\n _tileReady: function (t, e, i) {\n if (this._map && (!i || i.getAttribute("src") !== K)) return Ni.prototype._tileReady.call(this, t, e, i);\n }\n });\n function ji(t, e) {\n return new Di(t, e);\n }\n var Hi = Di.extend({\n defaultWmsParams: {\n service: "WMS",\n request: "GetMap",\n layers: "",\n styles: "",\n format: "image/jpeg",\n transparent: !1,\n version: "1.1.1"\n },\n options: {\n crs: null,\n uppercase: !1\n },\n initialize: function (t, e) {\n this._url = t;\n var i,\n n = l({}, this.defaultWmsParams);\n for (i in e) i in this.options || (n[i] = e[i]);\n var t = (e = c(this, e)).detectRetina && b.retina ? 2 : 1,\n o = this.getTileSize();\n n.width = o.x * t, n.height = o.y * t, this.wmsParams = n;\n },\n onAdd: function (t) {\n this._crs = this.options.crs || t.options.crs, this._wmsVersion = parseFloat(this.wmsParams.version);\n var e = 1.3 <= this._wmsVersion ? "crs" : "srs";\n this.wmsParams[e] = this._crs.code, Di.prototype.onAdd.call(this, t);\n },\n getTileUrl: function (t) {\n var e = this._tileCoordsToNwSe(t),\n i = this._crs,\n i = _(i.project(e[0]), i.project(e[1])),\n e = i.min,\n i = i.max,\n e = (1.3 <= this._wmsVersion && this._crs === li ? [e.y, e.x, i.y, i.x] : [e.x, e.y, i.x, i.y]).join(","),\n i = Di.prototype.getTileUrl.call(this, t);\n return i + U(this.wmsParams, i, this.options.uppercase) + (this.options.uppercase ? "&BBOX=" : "&bbox=") + e;\n },\n setParams: function (t, e) {\n return l(this.wmsParams, t), e || this.redraw(), this;\n }\n });\n Di.WMS = Hi, ji.wms = function (t, e) {\n return new Hi(t, e);\n };\n var Wi = o.extend({\n options: {\n padding: .1\n },\n initialize: function (t) {\n c(this, t), h(this), this._layers = this._layers || {};\n },\n onAdd: function () {\n this._container || (this._initContainer(), M(this._container, "leaflet-zoom-animated")), this.getPane().appendChild(this._container), this._update(), this.on("update", this._updatePaths, this);\n },\n onRemove: function () {\n this.off("update", this._updatePaths, this), this._destroyContainer();\n },\n getEvents: function () {\n var t = {\n viewreset: this._reset,\n zoom: this._onZoom,\n moveend: this._update,\n zoomend: this._onZoomEnd\n };\n return this._zoomAnimated && (t.zoomanim = this._onAnimZoom), t;\n },\n _onAnimZoom: function (t) {\n this._updateTransform(t.center, t.zoom);\n },\n _onZoom: function () {\n this._updateTransform(this._map.getCenter(), this._map.getZoom());\n },\n _updateTransform: function (t, e) {\n var i = this._map.getZoomScale(e, this._zoom),\n n = this._map.getSize().multiplyBy(.5 + this.options.padding),\n o = this._map.project(this._center, e),\n n = n.multiplyBy(-i).add(o).subtract(this._map._getNewPixelOrigin(t, e));\n b.any3d ? be(this._container, n, i) : Z(this._container, n);\n },\n _reset: function () {\n for (var t in this._update(), this._updateTransform(this._center, this._zoom), this._layers) this._layers[t]._reset();\n },\n _onZoomEnd: function () {\n for (var t in this._layers) this._layers[t]._project();\n },\n _updatePaths: function () {\n for (var t in this._layers) this._layers[t]._update();\n },\n _update: function () {\n var t = this.options.padding,\n e = this._map.getSize(),\n i = this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();\n this._bounds = new f(i, i.add(e.multiplyBy(1 + 2 * t)).round()), this._center = this._map.getCenter(), this._zoom = this._map.getZoom();\n }\n }),\n Fi = Wi.extend({\n options: {\n tolerance: 0\n },\n getEvents: function () {\n var t = Wi.prototype.getEvents.call(this);\n return t.viewprereset = this._onViewPreReset, t;\n },\n _onViewPreReset: function () {\n this._postponeUpdatePaths = !0;\n },\n onAdd: function () {\n Wi.prototype.onAdd.call(this), this._draw();\n },\n _initContainer: function () {\n var t = this._container = document.createElement("canvas");\n S(t, "mousemove", this._onMouseMove, this), S(t, "click dblclick mousedown mouseup contextmenu", this._onClick, this), S(t, "mouseout", this._handleMouseOut, this), t._leaflet_disable_events = !0, this._ctx = t.getContext("2d");\n },\n _destroyContainer: function () {\n r(this._redrawRequest), delete this._ctx, T(this._container), k(this._container), delete this._container;\n },\n _updatePaths: function () {\n if (!this._postponeUpdatePaths) {\n for (var t in this._redrawBounds = null, this._layers) this._layers[t]._update();\n this._redraw();\n }\n },\n _update: function () {\n var t, e, i, n;\n this._map._animatingZoom && this._bounds || (Wi.prototype._update.call(this), t = this._bounds, e = this._container, i = t.getSize(), n = b.retina ? 2 : 1, Z(e, t.min), e.width = n * i.x, e.height = n * i.y, e.style.width = i.x + "px", e.style.height = i.y + "px", b.retina && this._ctx.scale(2, 2), this._ctx.translate(-t.min.x, -t.min.y), this.fire("update"));\n },\n _reset: function () {\n Wi.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = !1, this._updatePaths());\n },\n _initPath: function (t) {\n this._updateDashArray(t);\n t = (this._layers[h(t)] = t)._order = {\n layer: t,\n prev: this._drawLast,\n next: null\n };\n this._drawLast && (this._drawLast.next = t), this._drawLast = t, this._drawFirst = this._drawFirst || this._drawLast;\n },\n _addPath: function (t) {\n this._requestRedraw(t);\n },\n _removePath: function (t) {\n var e = t._order,\n i = e.next,\n e = e.prev;\n i ? i.prev = e : this._drawLast = e, e ? e.next = i : this._drawFirst = i, delete t._order, delete this._layers[h(t)], this._requestRedraw(t);\n },\n _updatePath: function (t) {\n this._extendRedrawBounds(t), t._project(), t._update(), this._requestRedraw(t);\n },\n _updateStyle: function (t) {\n this._updateDashArray(t), this._requestRedraw(t);\n },\n _updateDashArray: function (t) {\n if ("string" == typeof t.options.dashArray) {\n for (var e, i = t.options.dashArray.split(/[, ]+/), n = [], o = 0; o < i.length; o++) {\n if (e = Number(i[o]), isNaN(e)) return;\n n.push(e);\n }\n t.options._dashArray = n;\n } else t.options._dashArray = t.options.dashArray;\n },\n _requestRedraw: function (t) {\n this._map && (this._extendRedrawBounds(t), this._redrawRequest = this._redrawRequest || x(this._redraw, this));\n },\n _extendRedrawBounds: function (t) {\n var e;\n t._pxBounds && (e = (t.options.weight || 0) + 1, this._redrawBounds = this._redrawBounds || new f(), this._redrawBounds.extend(t._pxBounds.min.subtract([e, e])), this._redrawBounds.extend(t._pxBounds.max.add([e, e])));\n },\n _redraw: function () {\n this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null;\n },\n _clear: function () {\n var t,\n e = this._redrawBounds;\n e ? (t = e.getSize(), this._ctx.clearRect(e.min.x, e.min.y, t.x, t.y)) : (this._ctx.save(), this._ctx.setTransform(1, 0, 0, 1, 0, 0), this._ctx.clearRect(0, 0, this._container.width, this._container.height), this._ctx.restore());\n },\n _draw: function () {\n var t,\n e,\n i = this._redrawBounds;\n this._ctx.save(), i && (e = i.getSize(), this._ctx.beginPath(), this._ctx.rect(i.min.x, i.min.y, e.x, e.y), this._ctx.clip()), this._drawing = !0;\n for (var n = this._drawFirst; n; n = n.next) t = n.layer, (!i || t._pxBounds && t._pxBounds.intersects(i)) && t._updatePath();\n this._drawing = !1, this._ctx.restore();\n },\n _updatePoly: function (t, e) {\n if (this._drawing) {\n var i,\n n,\n o,\n s,\n r = t._parts,\n a = r.length,\n h = this._ctx;\n if (a) {\n for (h.beginPath(), i = 0; i < a; i++) {\n for (n = 0, o = r[i].length; n < o; n++) s = r[i][n], h[n ? "lineTo" : "moveTo"](s.x, s.y);\n e && h.closePath();\n }\n this._fillStroke(h, t);\n }\n }\n },\n _updateCircle: function (t) {\n var e, i, n, o;\n this._drawing && !t._empty() && (e = t._point, i = this._ctx, n = Math.max(Math.round(t._radius), 1), 1 != (o = (Math.max(Math.round(t._radiusY), 1) || n) / n) && (i.save(), i.scale(1, o)), i.beginPath(), i.arc(e.x, e.y / o, n, 0, 2 * Math.PI, !1), 1 != o && i.restore(), this._fillStroke(i, t));\n },\n _fillStroke: function (t, e) {\n var i = e.options;\n i.fill && (t.globalAlpha = i.fillOpacity, t.fillStyle = i.fillColor || i.color, t.fill(i.fillRule || "evenodd")), i.stroke && 0 !== i.weight && (t.setLineDash && t.setLineDash(e.options && e.options._dashArray || []), t.globalAlpha = i.opacity, t.lineWidth = i.weight, t.strokeStyle = i.color, t.lineCap = i.lineCap, t.lineJoin = i.lineJoin, t.stroke());\n },\n _onClick: function (t) {\n for (var e, i, n = this._map.mouseEventToLayerPoint(t), o = this._drawFirst; o; o = o.next) (e = o.layer).options.interactive && e._containsPoint(n) && (("click" === t.type || "preclick" === t.type) && this._map._draggableMoved(e) || (i = e));\n this._fireEvent(!!i && [i], t);\n },\n _onMouseMove: function (t) {\n var e;\n !this._map || this._map.dragging.moving() || this._map._animatingZoom || (e = this._map.mouseEventToLayerPoint(t), this._handleMouseHover(t, e));\n },\n _handleMouseOut: function (t) {\n var e = this._hoveredLayer;\n e && (z(this._container, "leaflet-interactive"), this._fireEvent([e], t, "mouseout"), this._hoveredLayer = null, this._mouseHoverThrottled = !1);\n },\n _handleMouseHover: function (t, e) {\n if (!this._mouseHoverThrottled) {\n for (var i, n, o = this._drawFirst; o; o = o.next) (i = o.layer).options.interactive && i._containsPoint(e) && (n = i);\n n !== this._hoveredLayer && (this._handleMouseOut(t), n && (M(this._container, "leaflet-interactive"), this._fireEvent([n], t, "mouseover"), this._hoveredLayer = n)), this._fireEvent(!!this._hoveredLayer && [this._hoveredLayer], t), this._mouseHoverThrottled = !0, setTimeout(a(function () {\n this._mouseHoverThrottled = !1;\n }, this), 32);\n }\n },\n _fireEvent: function (t, e, i) {\n this._map._fireDOMEvent(e, i || e.type, t);\n },\n _bringToFront: function (t) {\n var e,\n i,\n n = t._order;\n n && (e = n.next, i = n.prev, e && ((e.prev = i) ? i.next = e : e && (this._drawFirst = e), n.prev = this._drawLast, (this._drawLast.next = n).next = null, this._drawLast = n, this._requestRedraw(t)));\n },\n _bringToBack: function (t) {\n var e,\n i,\n n = t._order;\n n && (e = n.next, (i = n.prev) && ((i.next = e) ? e.prev = i : i && (this._drawLast = i), n.prev = null, n.next = this._drawFirst, this._drawFirst.prev = n, this._drawFirst = n, this._requestRedraw(t)));\n }\n });\n function Ui(t) {\n return b.canvas ? new Fi(t) : null;\n }\n var Vi = function () {\n try {\n return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"), function (t) {\n return document.createElement("<lvml:" + t + \' class="lvml">\');\n };\n } catch (t) {}\n return function (t) {\n return document.createElement("<" + t + \' xmlns="urn:schemas-microsoft.com:vml" class="lvml">\');\n };\n }(),\n zt = {\n _initContainer: function () {\n this._container = P("div", "leaflet-vml-container");\n },\n _update: function () {\n this._map._animatingZoom || (Wi.prototype._update.call(this), this.fire("update"));\n },\n _initPath: function (t) {\n var e = t._container = Vi("shape");\n M(e, "leaflet-vml-shape " + (this.options.className || "")), e.coordsize = "1 1", t._path = Vi("path"), e.appendChild(t._path), this._updateStyle(t), this._layers[h(t)] = t;\n },\n _addPath: function (t) {\n var e = t._container;\n this._container.appendChild(e), t.options.interactive && t.addInteractiveTarget(e);\n },\n _removePath: function (t) {\n var e = t._container;\n T(e), t.removeInteractiveTarget(e), delete this._layers[h(t)];\n },\n _updateStyle: function (t) {\n var e = t._stroke,\n i = t._fill,\n n = t.options,\n o = t._container;\n o.stroked = !!n.stroke, o.filled = !!n.fill, n.stroke ? (e = e || (t._stroke = Vi("stroke")), o.appendChild(e), e.weight = n.weight + "px", e.color = n.color, e.opacity = n.opacity, n.dashArray ? e.dashStyle = d(n.dashArray) ? n.dashArray.join(" ") : n.dashArray.replace(/( *, *)/g, " ") : e.dashStyle = "", e.endcap = n.lineCap.replace("butt", "flat"), e.joinstyle = n.lineJoin) : e && (o.removeChild(e), t._stroke = null), n.fill ? (i = i || (t._fill = Vi("fill")), o.appendChild(i), i.color = n.fillColor || n.color, i.opacity = n.fillOpacity) : i && (o.removeChild(i), t._fill = null);\n },\n _updateCircle: function (t) {\n var e = t._point.round(),\n i = Math.round(t._radius),\n n = Math.round(t._radiusY || i);\n this._setPath(t, t._empty() ? "M0 0" : "AL " + e.x + "," + e.y + " " + i + "," + n + " 0,23592600");\n },\n _setPath: function (t, e) {\n t._path.v = e;\n },\n _bringToFront: function (t) {\n fe(t._container);\n },\n _bringToBack: function (t) {\n ge(t._container);\n }\n },\n qi = b.vml ? Vi : ct,\n Gi = Wi.extend({\n _initContainer: function () {\n this._container = qi("svg"), this._container.setAttribute("pointer-events", "none"), this._rootGroup = qi("g"), this._container.appendChild(this._rootGroup);\n },\n _destroyContainer: function () {\n T(this._container), k(this._container), delete this._container, delete this._rootGroup, delete this._svgSize;\n },\n _update: function () {\n var t, e, i;\n this._map._animatingZoom && this._bounds || (Wi.prototype._update.call(this), e = (t = this._bounds).getSize(), i = this._container, this._svgSize && this._svgSize.equals(e) || (this._svgSize = e, i.setAttribute("width", e.x), i.setAttribute("height", e.y)), Z(i, t.min), i.setAttribute("viewBox", [t.min.x, t.min.y, e.x, e.y].join(" ")), this.fire("update"));\n },\n _initPath: function (t) {\n var e = t._path = qi("path");\n t.options.className && M(e, t.options.className), t.options.interactive && M(e, "leaflet-interactive"), this._updateStyle(t), this._layers[h(t)] = t;\n },\n _addPath: function (t) {\n this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t._path), t.addInteractiveTarget(t._path);\n },\n _removePath: function (t) {\n T(t._path), t.removeInteractiveTarget(t._path), delete this._layers[h(t)];\n },\n _updatePath: function (t) {\n t._project(), t._update();\n },\n _updateStyle: function (t) {\n var e = t._path,\n t = t.options;\n e && (t.stroke ? (e.setAttribute("stroke", t.color), e.setAttribute("stroke-opacity", t.opacity), e.setAttribute("stroke-width", t.weight), e.setAttribute("stroke-linecap", t.lineCap), e.setAttribute("stroke-linejoin", t.lineJoin), t.dashArray ? e.setAttribute("stroke-dasharray", t.dashArray) : e.removeAttribute("stroke-dasharray"), t.dashOffset ? e.setAttribute("stroke-dashoffset", t.dashOffset) : e.removeAttribute("stroke-dashoffset")) : e.setAttribute("stroke", "none"), t.fill ? (e.setAttribute("fill", t.fillColor || t.color), e.setAttribute("fill-opacity", t.fillOpacity), e.setAttribute("fill-rule", t.fillRule || "evenodd")) : e.setAttribute("fill", "none"));\n },\n _updatePoly: function (t, e) {\n this._setPath(t, dt(t._parts, e));\n },\n _updateCircle: function (t) {\n var e = t._point,\n i = Math.max(Math.round(t._radius), 1),\n n = "a" + i + "," + (Math.max(Math.round(t._radiusY), 1) || i) + " 0 1,0 ",\n e = t._empty() ? "M0 0" : "M" + (e.x - i) + "," + e.y + n + 2 * i + ",0 " + n + 2 * -i + ",0 ";\n this._setPath(t, e);\n },\n _setPath: function (t, e) {\n t._path.setAttribute("d", e);\n },\n _bringToFront: function (t) {\n fe(t._path);\n },\n _bringToBack: function (t) {\n ge(t._path);\n }\n });\n function Ki(t) {\n return b.svg || b.vml ? new Gi(t) : null;\n }\n b.vml && Gi.include(zt), A.include({\n getRenderer: function (t) {\n t = (t = t.options.renderer || this._getPaneRenderer(t.options.pane) || this.options.renderer || this._renderer) || (this._renderer = this._createRenderer());\n return this.hasLayer(t) || this.addLayer(t), t;\n },\n _getPaneRenderer: function (t) {\n var e;\n return "overlayPane" !== t && void 0 !== t && (void 0 === (e = this._paneRenderers[t]) && (e = this._createRenderer({\n pane: t\n }), this._paneRenderers[t] = e), e);\n },\n _createRenderer: function (t) {\n return this.options.preferCanvas && Ui(t) || Ki(t);\n }\n });\n var Yi = xi.extend({\n initialize: function (t, e) {\n xi.prototype.initialize.call(this, this._boundsToLatLngs(t), e);\n },\n setBounds: function (t) {\n return this.setLatLngs(this._boundsToLatLngs(t));\n },\n _boundsToLatLngs: function (t) {\n return [(t = g(t)).getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()];\n }\n });\n Gi.create = qi, Gi.pointsToPath = dt, wi.geometryToLayer = bi, wi.coordsToLatLng = Li, wi.coordsToLatLngs = Ti, wi.latLngToCoords = Mi, wi.latLngsToCoords = zi, wi.getFeature = Ci, wi.asFeature = Zi, A.mergeOptions({\n boxZoom: !0\n });\n var _t = n.extend({\n initialize: function (t) {\n this._map = t, this._container = t._container, this._pane = t._panes.overlayPane, this._resetStateTimeout = 0, t.on("unload", this._destroy, this);\n },\n addHooks: function () {\n S(this._container, "mousedown", this._onMouseDown, this);\n },\n removeHooks: function () {\n k(this._container, "mousedown", this._onMouseDown, this);\n },\n moved: function () {\n return this._moved;\n },\n _destroy: function () {\n T(this._pane), delete this._pane;\n },\n _resetState: function () {\n this._resetStateTimeout = 0, this._moved = !1;\n },\n _clearDeferredResetState: function () {\n 0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this._resetStateTimeout = 0);\n },\n _onMouseDown: function (t) {\n if (!t.shiftKey || 1 !== t.which && 1 !== t.button) return !1;\n this._clearDeferredResetState(), this._resetState(), re(), Le(), this._startPoint = this._map.mouseEventToContainerPoint(t), S(document, {\n contextmenu: Re,\n mousemove: this._onMouseMove,\n mouseup: this._onMouseUp,\n keydown: this._onKeyDown\n }, this);\n },\n _onMouseMove: function (t) {\n this._moved || (this._moved = !0, this._box = P("div", "leaflet-zoom-box", this._container), M(this._container, "leaflet-crosshair"), this._map.fire("boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t);\n var t = new f(this._point, this._startPoint),\n e = t.getSize();\n Z(this._box, t.min), this._box.style.width = e.x + "px", this._box.style.height = e.y + "px";\n },\n _finish: function () {\n this._moved && (T(this._box), z(this._container, "leaflet-crosshair")), ae(), Te(), k(document, {\n contextmenu: Re,\n mousemove: this._onMouseMove,\n mouseup: this._onMouseUp,\n keydown: this._onKeyDown\n }, this);\n },\n _onMouseUp: function (t) {\n 1 !== t.which && 1 !== t.button || (this._finish(), this._moved && (this._clearDeferredResetState(), this._resetStateTimeout = setTimeout(a(this._resetState, this), 0), t = new s(this._map.containerPointToLatLng(this._startPoint), this._map.containerPointToLatLng(this._point)), this._map.fitBounds(t).fire("boxzoomend", {\n boxZoomBounds: t\n })));\n },\n _onKeyDown: function (t) {\n 27 === t.keyCode && (this._finish(), this._clearDeferredResetState(), this._resetState());\n }\n }),\n Ct = (A.addInitHook("addHandler", "boxZoom", _t), A.mergeOptions({\n doubleClickZoom: !0\n }), n.extend({\n addHooks: function () {\n this._map.on("dblclick", this._onDoubleClick, this);\n },\n removeHooks: function () {\n this._map.off("dblclick", this._onDoubleClick, this);\n },\n _onDoubleClick: function (t) {\n var e = this._map,\n i = e.getZoom(),\n n = e.options.zoomDelta,\n i = t.originalEvent.shiftKey ? i - n : i + n;\n "center" === e.options.doubleClickZoom ? e.setZoom(i) : e.setZoomAround(t.containerPoint, i);\n }\n })),\n Zt = (A.addInitHook("addHandler", "doubleClickZoom", Ct), A.mergeOptions({\n dragging: !0,\n inertia: !0,\n inertiaDeceleration: 3400,\n inertiaMaxSpeed: 1 / 0,\n easeLinearity: .2,\n worldCopyJump: !1,\n maxBoundsViscosity: 0\n }), n.extend({\n addHooks: function () {\n var t;\n this._draggable || (t = this._map, this._draggable = new Xe(t._mapPane, t._container), this._draggable.on({\n dragstart: this._onDragStart,\n drag: this._onDrag,\n dragend: this._onDragEnd\n }, this), this._draggable.on("predrag", this._onPreDragLimit, this), t.options.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t.on("zoomend", this._onZoomEnd, this), t.whenReady(this._onZoomEnd, this))), M(this._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this._positions = [], this._times = [];\n },\n removeHooks: function () {\n z(this._map._container, "leaflet-grab"), z(this._map._container, "leaflet-touch-drag"), this._draggable.disable();\n },\n moved: function () {\n return this._draggable && this._draggable._moved;\n },\n moving: function () {\n return this._draggable && this._draggable._moving;\n },\n _onDragStart: function () {\n var t,\n e = this._map;\n e._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity ? (t = g(this._map.options.maxBounds), this._offsetLimit = _(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1), this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options.maxBoundsViscosity))) : this._offsetLimit = null, e.fire("movestart").fire("dragstart"), e.options.inertia && (this._positions = [], this._times = []);\n },\n _onDrag: function (t) {\n var e, i;\n this._map.options.inertia && (e = this._lastTime = +new Date(), i = this._lastPos = this._draggable._absPos || this._draggable._newPos, this._positions.push(i), this._times.push(e), this._prunePositions(e)), this._map.fire("move", t).fire("drag", t);\n },\n _prunePositions: function (t) {\n for (; 1 < this._positions.length && 50 < t - this._times[0];) this._positions.shift(), this._times.shift();\n },\n _onZoomEnd: function () {\n var t = this._map.getSize().divideBy(2),\n e = this._map.latLngToLayerPoint([0, 0]);\n this._initialWorldOffset = e.subtract(t).x, this._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n },\n _viscousLimit: function (t, e) {\n return t - (t - e) * this._viscosity;\n },\n _onPreDragLimit: function () {\n var t, e;\n this._viscosity && this._offsetLimit && (t = this._draggable._newPos.subtract(this._draggable._startPos), e = this._offsetLimit, t.x < e.min.x && (t.x = this._viscousLimit(t.x, e.min.x)), t.y < e.min.y && (t.y = this._viscousLimit(t.y, e.min.y)), t.x > e.max.x && (t.x = this._viscousLimit(t.x, e.max.x)), t.y > e.max.y && (t.y = this._viscousLimit(t.y, e.max.y)), this._draggable._newPos = this._draggable._startPos.add(t));\n },\n _onPreDragWrap: function () {\n var t = this._worldWidth,\n e = Math.round(t / 2),\n i = this._initialWorldOffset,\n n = this._draggable._newPos.x,\n o = (n - e + i) % t + e - i,\n n = (n + e + i) % t - e - i,\n t = Math.abs(o + i) < Math.abs(n + i) ? o : n;\n this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = t;\n },\n _onDragEnd: function (t) {\n var e,\n i,\n n,\n o,\n s = this._map,\n r = s.options,\n a = !r.inertia || t.noInertia || this._times.length < 2;\n s.fire("dragend", t), !a && (this._prunePositions(+new Date()), t = this._lastPos.subtract(this._positions[0]), a = (this._lastTime - this._times[0]) / 1e3, e = r.easeLinearity, a = (t = t.multiplyBy(e / a)).distanceTo([0, 0]), i = Math.min(r.inertiaMaxSpeed, a), t = t.multiplyBy(i / a), n = i / (r.inertiaDeceleration * e), (o = t.multiplyBy(-n / 2).round()).x || o.y) ? (o = s._limitOffset(o, s.options.maxBounds), x(function () {\n s.panBy(o, {\n duration: n,\n easeLinearity: e,\n noMoveStart: !0,\n animate: !0\n });\n })) : s.fire("moveend");\n }\n })),\n St = (A.addInitHook("addHandler", "dragging", Zt), A.mergeOptions({\n keyboard: !0,\n keyboardPanDelta: 80\n }), n.extend({\n keyCodes: {\n left: [37],\n right: [39],\n down: [40],\n up: [38],\n zoomIn: [187, 107, 61, 171],\n zoomOut: [189, 109, 54, 173]\n },\n initialize: function (t) {\n this._map = t, this._setPanDelta(t.options.keyboardPanDelta), this._setZoomDelta(t.options.zoomDelta);\n },\n addHooks: function () {\n var t = this._map._container;\n t.tabIndex <= 0 && (t.tabIndex = "0"), S(t, {\n focus: this._onFocus,\n blur: this._onBlur,\n mousedown: this._onMouseDown\n }, this), this._map.on({\n focus: this._addHooks,\n blur: this._removeHooks\n }, this);\n },\n removeHooks: function () {\n this._removeHooks(), k(this._map._container, {\n focus: this._onFocus,\n blur: this._onBlur,\n mousedown: this._onMouseDown\n }, this), this._map.off({\n focus: this._addHooks,\n blur: this._removeHooks\n }, this);\n },\n _onMouseDown: function () {\n var t, e, i;\n this._focused || (i = document.body, t = document.documentElement, e = i.scrollTop || t.scrollTop, i = i.scrollLeft || t.scrollLeft, this._map._container.focus(), window.scrollTo(i, e));\n },\n _onFocus: function () {\n this._focused = !0, this._map.fire("focus");\n },\n _onBlur: function () {\n this._focused = !1, this._map.fire("blur");\n },\n _setPanDelta: function (t) {\n for (var e = this._panKeys = {}, i = this.keyCodes, n = 0, o = i.left.length; n < o; n++) e[i.left[n]] = [-1 * t, 0];\n for (n = 0, o = i.right.length; n < o; n++) e[i.right[n]] = [t, 0];\n for (n = 0, o = i.down.length; n < o; n++) e[i.down[n]] = [0, t];\n for (n = 0, o = i.up.length; n < o; n++) e[i.up[n]] = [0, -1 * t];\n },\n _setZoomDelta: function (t) {\n for (var e = this._zoomKeys = {}, i = this.keyCodes, n = 0, o = i.zoomIn.length; n < o; n++) e[i.zoomIn[n]] = t;\n for (n = 0, o = i.zoomOut.length; n < o; n++) e[i.zoomOut[n]] = -t;\n },\n _addHooks: function () {\n S(document, "keydown", this._onKeyDown, this);\n },\n _removeHooks: function () {\n k(document, "keydown", this._onKeyDown, this);\n },\n _onKeyDown: function (t) {\n if (!(t.altKey || t.ctrlKey || t.metaKey)) {\n var e,\n i,\n n = t.keyCode,\n o = this._map;\n if (n in this._panKeys) o._panAnim && o._panAnim._inProgress || (i = this._panKeys[n], t.shiftKey && (i = m(i).multiplyBy(3)), o.options.maxBounds && (i = o._limitOffset(m(i), o.options.maxBounds)), o.options.worldCopyJump ? (e = o.wrapLatLng(o.unproject(o.project(o.getCenter()).add(i))), o.panTo(e)) : o.panBy(i));else if (n in this._zoomKeys) o.setZoom(o.getZoom() + (t.shiftKey ? 3 : 1) * this._zoomKeys[n]);else {\n if (27 !== n || !o._popup || !o._popup.options.closeOnEscapeKey) return;\n o.closePopup();\n }\n Re(t);\n }\n }\n })),\n Et = (A.addInitHook("addHandler", "keyboard", St), A.mergeOptions({\n scrollWheelZoom: !0,\n wheelDebounceTime: 40,\n wheelPxPerZoomLevel: 60\n }), n.extend({\n addHooks: function () {\n S(this._map._container, "wheel", this._onWheelScroll, this), this._delta = 0;\n },\n removeHooks: function () {\n k(this._map._container, "wheel", this._onWheelScroll, this);\n },\n _onWheelScroll: function (t) {\n var e = He(t),\n i = this._map.options.wheelDebounceTime,\n e = (this._delta += e, this._lastMousePos = this._map.mouseEventToContainerPoint(t), this._startTime || (this._startTime = +new Date()), Math.max(i - (+new Date() - this._startTime), 0));\n clearTimeout(this._timer), this._timer = setTimeout(a(this._performZoom, this), e), Re(t);\n },\n _performZoom: function () {\n var t = this._map,\n e = t.getZoom(),\n i = this._map.options.zoomSnap || 0,\n n = (t._stop(), this._delta / (4 * this._map.options.wheelPxPerZoomLevel)),\n n = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n)))) / Math.LN2,\n i = i ? Math.ceil(n / i) * i : n,\n n = t._limitZoom(e + (0 < this._delta ? i : -i)) - e;\n this._delta = 0, this._startTime = null, n && ("center" === t.options.scrollWheelZoom ? t.setZoom(e + n) : t.setZoomAround(this._lastMousePos, e + n));\n }\n })),\n kt = (A.addInitHook("addHandler", "scrollWheelZoom", Et), A.mergeOptions({\n tapHold: b.touchNative && b.safari && b.mobile,\n tapTolerance: 15\n }), n.extend({\n addHooks: function () {\n S(this._map._container, "touchstart", this._onDown, this);\n },\n removeHooks: function () {\n k(this._map._container, "touchstart", this._onDown, this);\n },\n _onDown: function (t) {\n var e;\n clearTimeout(this._holdTimeout), 1 === t.touches.length && (e = t.touches[0], this._startPos = this._newPos = new p(e.clientX, e.clientY), this._holdTimeout = setTimeout(a(function () {\n this._cancel(), this._isTapValid() && (S(document, "touchend", O), S(document, "touchend touchcancel", this._cancelClickPrevent), this._simulateEvent("contextmenu", e));\n }, this), 600), S(document, "touchend touchcancel contextmenu", this._cancel, this), S(document, "touchmove", this._onMove, this));\n },\n _cancelClickPrevent: function t() {\n k(document, "touchend", O), k(document, "touchend touchcancel", t);\n },\n _cancel: function () {\n clearTimeout(this._holdTimeout), k(document, "touchend touchcancel contextmenu", this._cancel, this), k(document, "touchmove", this._onMove, this);\n },\n _onMove: function (t) {\n t = t.touches[0];\n this._newPos = new p(t.clientX, t.clientY);\n },\n _isTapValid: function () {\n return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n },\n _simulateEvent: function (t, e) {\n t = new MouseEvent(t, {\n bubbles: !0,\n cancelable: !0,\n view: window,\n screenX: e.screenX,\n screenY: e.screenY,\n clientX: e.clientX,\n clientY: e.clientY\n });\n t._simulated = !0, e.target.dispatchEvent(t);\n }\n })),\n Ot = (A.addInitHook("addHandler", "tapHold", kt), A.mergeOptions({\n touchZoom: b.touch,\n bounceAtZoomLimits: !0\n }), n.extend({\n addHooks: function () {\n M(this._map._container, "leaflet-touch-zoom"), S(this._map._container, "touchstart", this._onTouchStart, this);\n },\n removeHooks: function () {\n z(this._map._container, "leaflet-touch-zoom"), k(this._map._container, "touchstart", this._onTouchStart, this);\n },\n _onTouchStart: function (t) {\n var e,\n i,\n n = this._map;\n !t.touches || 2 !== t.touches.length || n._animatingZoom || this._zooming || (e = n.mouseEventToContainerPoint(t.touches[0]), i = n.mouseEventToContainerPoint(t.touches[1]), this._centerPoint = n.getSize()._divideBy(2), this._startLatLng = n.containerPointToLatLng(this._centerPoint), "center" !== n.options.touchZoom && (this._pinchStartLatLng = n.containerPointToLatLng(e.add(i)._divideBy(2))), this._startDist = e.distanceTo(i), this._startZoom = n.getZoom(), this._moved = !1, this._zooming = !0, n._stop(), S(document, "touchmove", this._onTouchMove, this), S(document, "touchend touchcancel", this._onTouchEnd, this), O(t));\n },\n _onTouchMove: function (t) {\n if (t.touches && 2 === t.touches.length && this._zooming) {\n var e = this._map,\n i = e.mouseEventToContainerPoint(t.touches[0]),\n n = e.mouseEventToContainerPoint(t.touches[1]),\n o = i.distanceTo(n) / this._startDist;\n if (this._zoom = e.getScaleZoom(o, this._startZoom), !e.options.bounceAtZoomLimits && (this._zoom < e.getMinZoom() && o < 1 || this._zoom > e.getMaxZoom() && 1 < o) && (this._zoom = e._limitZoom(this._zoom)), "center" === e.options.touchZoom) {\n if (this._center = this._startLatLng, 1 == o) return;\n } else {\n i = i._add(n)._divideBy(2)._subtract(this._centerPoint);\n if (1 == o && 0 === i.x && 0 === i.y) return;\n this._center = e.unproject(e.project(this._pinchStartLatLng, this._zoom).subtract(i), this._zoom);\n }\n this._moved || (e._moveStart(!0, !1), this._moved = !0), r(this._animRequest);\n n = a(e._move, e, this._center, this._zoom, {\n pinch: !0,\n round: !1\n }, void 0);\n this._animRequest = x(n, this, !0), O(t);\n }\n },\n _onTouchEnd: function () {\n this._moved && this._zooming ? (this._zooming = !1, r(this._animRequest), k(document, "touchmove", this._onTouchMove, this), k(document, "touchend touchcancel", this._onTouchEnd, this), this._map.options.zoomAnimation ? this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), !0, this._map.options.zoomSnap) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this._zooming = !1;\n }\n })),\n Xi = (A.addInitHook("addHandler", "touchZoom", Ot), A.BoxZoom = _t, A.DoubleClickZoom = Ct, A.Drag = Zt, A.Keyboard = St, A.ScrollWheelZoom = Et, A.TapHold = kt, A.TouchZoom = Ot, t.Bounds = f, t.Browser = b, t.CRS = ot, t.Canvas = Fi, t.Circle = vi, t.CircleMarker = gi, t.Class = et, t.Control = B, t.DivIcon = Ri, t.DivOverlay = Ai, t.DomEvent = mt, t.DomUtil = pt, t.Draggable = Xe, t.Evented = it, t.FeatureGroup = ci, t.GeoJSON = wi, t.GridLayer = Ni, t.Handler = n, t.Icon = di, t.ImageOverlay = Ei, t.LatLng = v, t.LatLngBounds = s, t.Layer = o, t.LayerGroup = ui, t.LineUtil = vt, t.Map = A, t.Marker = mi, t.Mixin = ft, t.Path = fi, t.Point = p, t.PolyUtil = gt, t.Polygon = xi, t.Polyline = yi, t.Popup = Bi, t.PosAnimation = Fe, t.Projection = wt, t.Rectangle = Yi, t.Renderer = Wi, t.SVG = Gi, t.SVGOverlay = Oi, t.TileLayer = Di, t.Tooltip = Ii, t.Transformation = at, t.Util = tt, t.VideoOverlay = ki, t.bind = a, t.bounds = _, t.canvas = Ui, t.circle = function (t, e, i) {\n return new vi(t, e, i);\n }, t.circleMarker = function (t, e) {\n return new gi(t, e);\n }, t.control = Ue, t.divIcon = function (t) {\n return new Ri(t);\n }, t.extend = l, t.featureGroup = function (t, e) {\n return new ci(t, e);\n }, t.geoJSON = Si, t.geoJson = Mt, t.gridLayer = function (t) {\n return new Ni(t);\n }, t.icon = function (t) {\n return new di(t);\n }, t.imageOverlay = function (t, e, i) {\n return new Ei(t, e, i);\n }, t.latLng = w, t.latLngBounds = g, t.layerGroup = function (t, e) {\n return new ui(t, e);\n }, t.map = function (t, e) {\n return new A(t, e);\n }, t.marker = function (t, e) {\n return new mi(t, e);\n }, t.point = m, t.polygon = function (t, e) {\n return new xi(t, e);\n }, t.polyline = function (t, e) {\n return new yi(t, e);\n }, t.popup = function (t, e) {\n return new Bi(t, e);\n }, t.rectangle = function (t, e) {\n return new Yi(t, e);\n }, t.setOptions = c, t.stamp = h, t.svg = Ki, t.svgOverlay = function (t, e, i) {\n return new Oi(t, e, i);\n }, t.tileLayer = ji, t.tooltip = function (t, e) {\n return new Ii(t, e);\n }, t.transformation = ht, t.version = "1.9.4", t.videoOverlay = function (t, e, i) {\n return new ki(t, e, i);\n }, window.L);\n t.noConflict = function () {\n return window.L = Xi, this;\n }, window.L = t;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUM7SUFBQSxDQUFDLEVBQUNELENBQUMsQ0FBQzBNLGNBQWMsR0FBQ2lDLEVBQUUsRUFBQzNPLENBQUMsQ0FBQyt3QyxPQUFPLEdBQUMsT0FBTyxFQUFDL3dDLENBQUMsQ0FBQ3VnRCxZQUFZLEdBQUMsVUFBU3ZnRCxDQUFDLEVBQUNDLENBQUMsRUFBQ1MsQ0FBQyxFQUFDO01BQUMsT0FBTyxJQUFJdWtDLEVBQUUsQ0FBQ2psQyxDQUFDLEVBQUNDLENBQUMsRUFBQ1MsQ0FBQyxDQUFDO0lBQUEsQ0FBQyxFQUFDb0QsTUFBTSxDQUFDb0MsQ0FBQyxDQUFDO0VBQUNsRyxDQUFDLENBQUN3Z0QsVUFBVSxHQUFDLFlBQVU7SUFBQyxPQUFPMThDLE1BQU0sQ0FBQ29DLENBQUMsR0FBQzYxQyxFQUFFLEVBQUMsSUFBSTtFQUFBLENBQUMsRUFBQ2o0QyxNQUFNLENBQUNvQyxDQUFDLEdBQUNsRyxDQUFDO0FBQUEsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2hpcHRpbWl6ZS8uL2pzL2xlYWZsZXQtMS40LjAuanM/ODM1MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAcHJlc2VydmVcbiAqIExlYWZsZXQgMS45LjQsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cHM6Ly9sZWFmbGV0anMuY29tXG4gKiAoYykgMjAxMC0yMDIzIFZsYWRpbWlyIEFnYWZvbmtpbiwgKGMpIDIwMTAtMjAxMSBDbG91ZE1hZGVcbiAqL1xuIWZ1bmN0aW9uKHQsZSl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/ZShleHBvcnRzKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtcImV4cG9ydHNcIl0sZSk6ZSgodD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOnR8fHNlbGYpLmxlYWZsZXQ9e30pfSh0aGlzLGZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGwodCl7Zm9yKHZhciBlLGksbj0xLG89YXJndW1lbnRzLmxlbmd0aDtuPG87bisrKWZvcihlIGluIGk9YXJndW1lbnRzW25dKXRbZV09aVtlXTtyZXR1cm4gdH12YXIgUj1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0KXtyZXR1cm4gTi5wcm90b3R5cGU9dCxuZXcgTn07ZnVuY3Rpb24gTigpe31mdW5jdGlvbiBhKHQsZSl7dmFyIGksbj1BcnJheS5wcm90b3R5cGUuc2xpY2U7cmV0dXJuIHQuYmluZD90LmJpbmQuYXBwbHkodCxuLmNhbGwoYXJndW1lbnRzLDEpKTooaT1uLmNhbGwoYXJndW1lbnRzLDIpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxpLmxlbmd0aD9pLmNvbmNhdChuLmNhbGwoYXJndW1lbnRzKSk6YXJndW1lbnRzKX0pfXZhciBEPTA7ZnVuY3Rpb24gaCh0KXtyZXR1cm5cIl9sZWFmbGV0X2lkXCJpbiB0fHwodC5fbGVhZmxldF9pZD0rK0QpLHQuX2xlYWZsZXRfaWR9ZnVuY3Rpb24gaih0LGUsaSl7dmFyIG4sbyxzPWZ1bmN0aW9uKCl7bj0hMSxvJiYoci5hcHBseShpLG8pLG89ITEpfSxyPWZ1bmN0aW9uKCl7bj9vPWFyZ3VtZW50czoodC5hcHBseShpLGFyZ3VtZW50cyksc2V0VGltZW91dChzLGUpLG49ITApfTtyZXR1cm4gcn1mdW5jdGlvbiBIKHQsZSxpKXt2YXIgbj1lWzFdLGU9ZVswXSxvPW4tZTtyZXR1cm4gdD09PW4mJmk/dDooKHQtZSklbytvKSVvK2V9ZnVuY3Rpb24gdSgpe3JldHVybiExfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4hMT09PWU/dDooZT1NYXRoLnBvdygxMCx2b2lkIDA9PT1lPzY6ZSksTWF0aC5yb3VuZCh0KmUpL2UpfWZ1bmN0aW9uIFcodCl7cmV0dXJuIHQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15cXHMrfFxccyskL2csXCJcIil9ZnVuY3Rpb24gRih0KXtyZXR1cm4gVyh0KS5zcGxpdCgvXFxzKy8pfWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIGkgaW4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsXCJvcHRpb25zXCIpfHwodC5vcHRpb25zPXQub3B0aW9ucz9SKHQub3B0aW9ucyk6e30pLGUpdC5vcHRpb25zW2ldPWVbaV07cmV0dXJuIHQub3B0aW9uc31mdW5jdGlvbiBVKHQsZSxpKXt2YXIgbixvPVtdO2ZvcihuIGluIHQpby5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChpP24udG9VcHBlckNhc2UoKTpuKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQodFtuXSkpO3JldHVybihlJiYtMSE9PWUuaW5kZXhPZihcIj9cIik/XCImXCI6XCI/XCIpK28uam9pbihcIiZcIil9dmFyIFY9L1xceyAqKFtcXHdfIC1dKykgKlxcfS9nO2Z1bmN0aW9uIHEodCxpKXtyZXR1cm4gdC5yZXBsYWNlKFYsZnVuY3Rpb24odCxlKXtlPWlbZV07aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJObyB2YWx1ZSBwcm92aWRlZCBmb3IgdmFyaWFibGUgXCIrdCk7cmV0dXJuIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKGkpOmV9KX12YXIgZD1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm5cIltvYmplY3QgQXJyYXldXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9O2Z1bmN0aW9uIEcodCxlKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX12YXIgSz1cImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBQUQvQUN3QUFBQUFBUUFCQUFBQ0FEcz1cIjtmdW5jdGlvbiBZKHQpe3JldHVybiB3aW5kb3dbXCJ3ZWJraXRcIit0XXx8d2luZG93W1wibW96XCIrdF18fHdpbmRvd1tcIm1zXCIrdF19dmFyIFg9MDtmdW5jdGlvbiBKKHQpe3ZhciBlPStuZXcgRGF0ZSxpPU1hdGgubWF4KDAsMTYtKGUtWCkpO3JldHVybiBYPWUraSx3aW5kb3cuc2V0VGltZW91dCh0LGkpfXZhciAkPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fFkoXCJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIil8fEosUT13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fFkoXCJDYW5jZWxBbmltYXRpb25GcmFtZVwiKXx8WShcIkNhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZVwiKXx8ZnVuY3Rpb24odCl7d2luZG93LmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24geCh0LGUsaSl7aWYoIWl8fCQhPT1KKXJldHVybiAkLmNhbGwod2luZG93LGEodCxlKSk7dC5jYWxsKGUpfWZ1bmN0aW9uIHIodCl7dCYmUS5jYWxsKHdpbmRvdyx0KX12YXIgdHQ9e19fcHJvdG9fXzpudWxsLGV4dGVuZDpsLGNyZWF0ZTpSLGJpbmQ6YSxnZXQgbGFzdElkKCl7cmV0dXJuIER9LHN0YW1wOmgsdGhyb3R0bGU6aix3cmFwTnVtOkgsZmFsc2VGbjp1LGZvcm1hdE51bTppLHRyaW06VyxzcGxpdFdvcmRzOkYsc2V0T3B0aW9uczpjLGdldFBhcmFtU3RyaW5nOlUsdGVtcGxhdGU6cSxpc0FycmF5OmQsaW5kZXhPZjpHLGVtcHR5SW1hZ2VVcmw6SyxyZXF1ZXN0Rm46JCxjYW5jZWxGbjpRLHJlcXVlc3RBbmltRnJhbWU6eCxjYW5jZWxBbmltRnJhbWU6cn07ZnVuY3Rpb24gZXQoKXt9ZXQuZXh0ZW5kPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtjKHRoaXMpLHRoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmNhbGxJbml0SG9va3MoKX12YXIgaSxuPWUuX19zdXBlcl9fPXRoaXMucHJvdG90eXBlLG89UihuKTtmb3IoaSBpbihvLmNvbnN0cnVjdG9yPWUpLnByb3RvdHlwZT1vLHRoaXMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsaSkmJlwicHJvdG90eXBlXCIhPT1pJiZcIl9fc3VwZXJfX1wiIT09aSYmKGVbaV09dGhpc1tpXSk7aWYodC5zdGF0aWNzJiZsKGUsdC5zdGF0aWNzKSx0LmluY2x1ZGVzKXt2YXIgcz10LmluY2x1ZGVzO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBMJiZMJiZMLk1peGluKXtzPWQocyk/czpbc107Zm9yKHZhciByPTA7cjxzLmxlbmd0aDtyKyspc1tyXT09PUwuTWl4aW4uRXZlbnRzJiZjb25zb2xlLndhcm4oXCJEZXByZWNhdGVkIGluY2x1ZGUgb2YgTC5NaXhpbi5FdmVudHM6IHRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlcywgcGxlYXNlIGluaGVyaXQgZnJvbSBMLkV2ZW50ZWQgaW5zdGVhZC5cIiwobmV3IEVycm9yKS5zdGFjayl9bC5hcHBseShudWxsLFtvXS5jb25jYXQodC5pbmNsdWRlcykpfXJldHVybiBsKG8sdCksZGVsZXRlIG8uc3RhdGljcyxkZWxldGUgby5pbmNsdWRlcyxvLm9wdGlvbnMmJihvLm9wdGlvbnM9bi5vcHRpb25zP1Iobi5vcHRpb25zKTp7fSxsKG8ub3B0aW9ucyx0Lm9wdGlvbnMpKSxvLl9pbml0SG9va3M9W10sby5jYWxsSW5pdEhvb2tzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2luaXRIb29rc0NhbGxlZCl7bi5jYWxsSW5pdEhvb2tzJiZuLmNhbGxJbml0SG9va3MuY2FsbCh0aGlzKSx0aGlzLl9pbml0SG9va3NDYWxsZWQ9ITA7Zm9yKHZhciB0PTAsZT1vLl9pbml0SG9va3MubGVuZ3RoO3Q8ZTt0Kyspby5faW5pdEhvb2tzW3RdLmNhbGwodGhpcyl9fSxlfSxldC5pbmNsdWRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHJvdG90eXBlLm9wdGlvbnM7cmV0dXJuIGwodGhpcy5wcm90b3R5cGUsdCksdC5vcHRpb25zJiYodGhpcy5wcm90b3R5cGUub3B0aW9ucz1lLHRoaXMubWVyZ2VPcHRpb25zKHQub3B0aW9ucykpLHRoaXN9LGV0Lm1lcmdlT3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gbCh0aGlzLnByb3RvdHlwZS5vcHRpb25zLHQpLHRoaXN9LGV0LmFkZEluaXRIb29rPWZ1bmN0aW9uKHQpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxpPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3RoaXNbdF0uYXBwbHkodGhpcyxlKX07cmV0dXJuIHRoaXMucHJvdG90eXBlLl9pbml0SG9va3M9dGhpcy5wcm90b3R5cGUuX2luaXRIb29rc3x8W10sdGhpcy5wcm90b3R5cGUuX2luaXRIb29rcy5wdXNoKGkpLHRoaXN9O3ZhciBlPXtvbjpmdW5jdGlvbih0LGUsaSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb24obix0W25dLGUpO2Vsc2UgZm9yKHZhciBvPTAscz0odD1GKHQpKS5sZW5ndGg7bzxzO28rKyl0aGlzLl9vbih0W29dLGUsaSk7cmV0dXJuIHRoaXN9LG9mZjpmdW5jdGlvbih0LGUsaSl7aWYoYXJndW1lbnRzLmxlbmd0aClpZihcIm9iamVjdFwiPT10eXBlb2YgdClmb3IodmFyIG4gaW4gdCl0aGlzLl9vZmYobix0W25dLGUpO2Vsc2V7dD1GKHQpO2Zvcih2YXIgbz0xPT09YXJndW1lbnRzLmxlbmd0aCxzPTAscj10Lmxlbmd0aDtzPHI7cysrKW8/dGhpcy5fb2ZmKHRbc10pOnRoaXMuX29mZih0W3NdLGUsaSl9ZWxzZSBkZWxldGUgdGhpcy5fZXZlbnRzO3JldHVybiB0aGlzfSxfb246ZnVuY3Rpb24odCxlLGksbil7XCJmdW5jdGlvblwiIT10eXBlb2YgZT9jb25zb2xlLndhcm4oXCJ3cm9uZyBsaXN0ZW5lciB0eXBlOiBcIit0eXBlb2YgZSk6ITE9PT10aGlzLl9saXN0ZW5zKHQsZSxpKSYmKGU9e2ZuOmUsY3R4Omk9aT09PXRoaXM/dm9pZCAwOml9LG4mJihlLm9uY2U9ITApLHRoaXMuX2V2ZW50cz10aGlzLl9ldmVudHN8fHt9LHRoaXMuX2V2ZW50c1t0XT10aGlzLl9ldmVudHNbdF18fFtdLHRoaXMuX2V2ZW50c1t0XS5wdXNoKGUpKX0sX29mZjpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzO2lmKHRoaXMuX2V2ZW50cyYmKG49dGhpcy5fZXZlbnRzW3RdKSlpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7aWYodGhpcy5fZmlyaW5nQ291bnQpZm9yKG89MCxzPW4ubGVuZ3RoO288cztvKyspbltvXS5mbj11O2RlbGV0ZSB0aGlzLl9ldmVudHNbdF19ZWxzZVwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/Y29uc29sZS53YXJuKFwid3JvbmcgbGlzdGVuZXIgdHlwZTogXCIrdHlwZW9mIGUpOiExIT09KGU9dGhpcy5fbGlzdGVucyh0LGUsaSkpJiYoaT1uW2VdLHRoaXMuX2ZpcmluZ0NvdW50JiYoaS5mbj11LHRoaXMuX2V2ZW50c1t0XT1uPW4uc2xpY2UoKSksbi5zcGxpY2UoZSwxKSl9LGZpcmU6ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMubGlzdGVucyh0LGkpKXt2YXIgbj1sKHt9LGUse3R5cGU6dCx0YXJnZXQ6dGhpcyxzb3VyY2VUYXJnZXQ6ZSYmZS5zb3VyY2VUYXJnZXR8fHRoaXN9KTtpZih0aGlzLl9ldmVudHMpe3ZhciBvPXRoaXMuX2V2ZW50c1t0XTtpZihvKXt0aGlzLl9maXJpbmdDb3VudD10aGlzLl9maXJpbmdDb3VudCsxfHwxO2Zvcih2YXIgcz0wLHI9by5sZW5ndGg7czxyO3MrKyl7dmFyIGE9b1tzXSxoPWEuZm47YS5vbmNlJiZ0aGlzLm9mZih0LGgsYS5jdHgpLGguY2FsbChhLmN0eHx8dGhpcyxuKX10aGlzLl9maXJpbmdDb3VudC0tfX1pJiZ0aGlzLl9wcm9wYWdhdGVFdmVudChuKX1yZXR1cm4gdGhpc30sbGlzdGVuczpmdW5jdGlvbih0LGUsaSxuKXtcInN0cmluZ1wiIT10eXBlb2YgdCYmY29uc29sZS53YXJuKCdcInN0cmluZ1wiIHR5cGUgYXJndW1lbnQgZXhwZWN0ZWQnKTt2YXIgbz1lLHM9KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJihuPSEhZSxpPW89dm9pZCAwKSx0aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50c1t0XSk7aWYocyYmcy5sZW5ndGgmJiExIT09dGhpcy5fbGlzdGVucyh0LG8saSkpcmV0dXJuITA7aWYobilmb3IodmFyIHIgaW4gdGhpcy5fZXZlbnRQYXJlbnRzKWlmKHRoaXMuX2V2ZW50UGFyZW50c1tyXS5saXN0ZW5zKHQsZSxpLG4pKXJldHVybiEwO3JldHVybiExfSxfbGlzdGVuczpmdW5jdGlvbih0LGUsaSl7aWYodGhpcy5fZXZlbnRzKXt2YXIgbj10aGlzLl9ldmVudHNbdF18fFtdO2lmKCFlKXJldHVybiEhbi5sZW5ndGg7aT09PXRoaXMmJihpPXZvaWQgMCk7Zm9yKHZhciBvPTAscz1uLmxlbmd0aDtvPHM7bysrKWlmKG5bb10uZm49PT1lJiZuW29dLmN0eD09PWkpcmV0dXJuIG99cmV0dXJuITF9LG9uY2U6ZnVuY3Rpb24odCxlLGkpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0KWZvcih2YXIgbiBpbiB0KXRoaXMuX29uKG4sdFtuXSxlLCEwKTtlbHNlIGZvcih2YXIgbz0wLHM9KHQ9Rih0KSkubGVuZ3RoO288cztvKyspdGhpcy5fb24odFtvXSxlLGksITApO3JldHVybiB0aGlzfSxhZGRFdmVudFBhcmVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZlbnRQYXJlbnRzPXRoaXMuX2V2ZW50UGFyZW50c3x8e30sdGhpcy5fZXZlbnRQYXJlbnRzW2godCldPXQsdGhpc30scmVtb3ZlRXZlbnRQYXJlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2V2ZW50UGFyZW50cyYmZGVsZXRlIHRoaXMuX2V2ZW50UGFyZW50c1toKHQpXSx0aGlzfSxfcHJvcGFnYXRlRXZlbnQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2V2ZW50UGFyZW50cyl0aGlzLl9ldmVudFBhcmVudHNbZV0uZmlyZSh0LnR5cGUsbCh7bGF5ZXI6dC50YXJnZXQscHJvcGFnYXRlZEZyb206dC50YXJnZXR9LHQpLCEwKX19LGl0PShlLmFkZEV2ZW50TGlzdGVuZXI9ZS5vbixlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZS5jbGVhckFsbEV2ZW50TGlzdGVuZXJzPWUub2ZmLGUuYWRkT25lVGltZUV2ZW50TGlzdGVuZXI9ZS5vbmNlLGUuZmlyZUV2ZW50PWUuZmlyZSxlLmhhc0V2ZW50TGlzdGVuZXJzPWUubGlzdGVucyxldC5leHRlbmQoZSkpO2Z1bmN0aW9uIHAodCxlLGkpe3RoaXMueD1pP01hdGgucm91bmQodCk6dCx0aGlzLnk9aT9NYXRoLnJvdW5kKGUpOmV9dmFyIG50PU1hdGgudHJ1bmN8fGZ1bmN0aW9uKHQpe3JldHVybiAwPHQ/TWF0aC5mbG9vcih0KTpNYXRoLmNlaWwodCl9O2Z1bmN0aW9uIG0odCxlLGkpe3JldHVybiB0IGluc3RhbmNlb2YgcD90OmQodCk/bmV3IHAodFswXSx0WzFdKTpudWxsPT10P3Q6XCJvYmplY3RcIj09dHlwZW9mIHQmJlwieFwiaW4gdCYmXCJ5XCJpbiB0P25ldyBwKHQueCx0LnkpOm5ldyBwKHQsZSxpKX1mdW5jdGlvbiBmKHQsZSl7aWYodClmb3IodmFyIGk9ZT9bdCxlXTp0LG49MCxvPWkubGVuZ3RoO248bztuKyspdGhpcy5leHRlbmQoaVtuXSl9ZnVuY3Rpb24gXyh0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2YgZj90Om5ldyBmKHQsZSl9ZnVuY3Rpb24gcyh0LGUpe2lmKHQpZm9yKHZhciBpPWU/W3QsZV06dCxuPTAsbz1pLmxlbmd0aDtuPG87bisrKXRoaXMuZXh0ZW5kKGlbbl0pfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIHM/dDpuZXcgcyh0LGUpfWZ1bmN0aW9uIHYodCxlLGkpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIExhdExuZyBvYmplY3Q6IChcIit0K1wiLCBcIitlK1wiKVwiKTt0aGlzLmxhdD0rdCx0aGlzLmxuZz0rZSx2b2lkIDAhPT1pJiYodGhpcy5hbHQ9K2kpfWZ1bmN0aW9uIHcodCxlLGkpe3JldHVybiB0IGluc3RhbmNlb2Ygdj90OmQodCkmJlwib2JqZWN0XCIhPXR5cGVvZiB0WzBdPzM9PT10Lmxlbmd0aD9uZXcgdih0WzBdLHRbMV0sdFsyXSk6Mj09PXQubGVuZ3RoP25ldyB2KHRbMF0sdFsxXSk6bnVsbDpudWxsPT10P3Q6XCJvYmplY3RcIj09dHlwZW9mIHQmJlwibGF0XCJpbiB0P25ldyB2KHQubGF0LFwibG5nXCJpbiB0P3QubG5nOnQubG9uLHQuYWx0KTp2b2lkIDA9PT1lP251bGw6bmV3IHYodCxlLGkpfXAucHJvdG90eXBlPXtjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgcCh0aGlzLngsdGhpcy55KX0sYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2FkZChtKHQpKX0sX2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fc3VidHJhY3QobSh0KSl9LF9zdWJ0cmFjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54LT10LngsdGhpcy55LT10LnksdGhpc30sZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fZGl2aWRlQnkodCl9LF9kaXZpZGVCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Lz10LHRoaXMueS89dCx0aGlzfSxtdWx0aXBseUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX211bHRpcGx5QnkodCl9LF9tdWx0aXBseUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXN9LHNjYWxlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKHRoaXMueCp0LngsdGhpcy55KnQueSl9LHVuc2NhbGVCeTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHAodGhpcy54L3QueCx0aGlzLnkvdC55KX0scm91bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9yb3VuZCgpfSxfcm91bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9LGZsb29yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fZmxvb3IoKX0sX2Zsb29yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzfSxjZWlsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fY2VpbCgpfSxfY2VpbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9LHRydW5jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fdHJ1bmMoKX0sX3RydW5jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD1udCh0aGlzLngpLHRoaXMueT1udCh0aGlzLnkpLHRoaXN9LGRpc3RhbmNlVG86ZnVuY3Rpb24odCl7dmFyIGU9KHQ9bSh0KSkueC10aGlzLngsdD10LnktdGhpcy55O3JldHVybiBNYXRoLnNxcnQoZSplK3QqdCl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4odD1tKHQpKS54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0PW0odCksTWF0aC5hYnModC54KTw9TWF0aC5hYnModGhpcy54KSYmTWF0aC5hYnModC55KTw9TWF0aC5hYnModGhpcy55KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cIlBvaW50KFwiK2kodGhpcy54KStcIiwgXCIraSh0aGlzLnkpK1wiKVwifX0sZi5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgZSxpO2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBwfHxcIm51bWJlclwiPT10eXBlb2YgdFswXXx8XCJ4XCJpbiB0KWU9aT1tKHQpO2Vsc2UgaWYoZT0odD1fKHQpKS5taW4saT10Lm1heCwhZXx8IWkpcmV0dXJuIHRoaXM7dGhpcy5taW58fHRoaXMubWF4Pyh0aGlzLm1pbi54PU1hdGgubWluKGUueCx0aGlzLm1pbi54KSx0aGlzLm1heC54PU1hdGgubWF4KGkueCx0aGlzLm1heC54KSx0aGlzLm1pbi55PU1hdGgubWluKGUueSx0aGlzLm1pbi55KSx0aGlzLm1heC55PU1hdGgubWF4KGkueSx0aGlzLm1heC55KSk6KHRoaXMubWluPWUuY2xvbmUoKSx0aGlzLm1heD1pLmNsb25lKCkpfXJldHVybiB0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG0oKHRoaXMubWluLngrdGhpcy5tYXgueCkvMiwodGhpcy5taW4ueSt0aGlzLm1heC55KS8yLHQpfSxnZXRCb3R0b21MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5taW4ueCx0aGlzLm1heC55KX0sZ2V0VG9wUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLm1heC54LHRoaXMubWluLnkpfSxnZXRUb3BMZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWlufSxnZXRCb3R0b21SaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC5zdWJ0cmFjdCh0aGlzLm1pbil9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuKHQ9KFwibnVtYmVyXCI9PXR5cGVvZiB0WzBdfHx0IGluc3RhbmNlb2YgcD9tOl8pKHQpKWluc3RhbmNlb2YgZj8oZT10Lm1pbixpPXQubWF4KTplPWk9dCxlLng+PXRoaXMubWluLngmJmkueDw9dGhpcy5tYXgueCYmZS55Pj10aGlzLm1pbi55JiZpLnk8PXRoaXMubWF4Lnl9LGludGVyc2VjdHM6ZnVuY3Rpb24odCl7dD1fKHQpO3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj10Lm1pbix0PXQubWF4LG89dC54Pj1lLngmJm4ueDw9aS54LHQ9dC55Pj1lLnkmJm4ueTw9aS55O3JldHVybiBvJiZ0fSxvdmVybGFwczpmdW5jdGlvbih0KXt0PV8odCk7dmFyIGU9dGhpcy5taW4saT10aGlzLm1heCxuPXQubWluLHQ9dC5tYXgsbz10Lng+ZS54JiZuLng8aS54LHQ9dC55PmUueSYmbi55PGkueTtyZXR1cm4gbyYmdH0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMubWlufHwhdGhpcy5tYXgpfSxwYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5taW4saT10aGlzLm1heCxuPU1hdGguYWJzKGUueC1pLngpKnQsdD1NYXRoLmFicyhlLnktaS55KSp0O3JldHVybiBfKG0oZS54LW4sZS55LXQpLG0oaS54K24saS55K3QpKX0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiEhdCYmKHQ9Xyh0KSx0aGlzLm1pbi5lcXVhbHModC5nZXRUb3BMZWZ0KCkpJiZ0aGlzLm1heC5lcXVhbHModC5nZXRCb3R0b21SaWdodCgpKSl9fSxzLnByb3RvdHlwZT17ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj10aGlzLl9zb3V0aFdlc3Qsbz10aGlzLl9ub3J0aEVhc3Q7aWYodCBpbnN0YW5jZW9mIHYpaT1lPXQ7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBzKSlyZXR1cm4gdD90aGlzLmV4dGVuZCh3KHQpfHxnKHQpKTp0aGlzO2lmKGU9dC5fc291dGhXZXN0LGk9dC5fbm9ydGhFYXN0LCFlfHwhaSlyZXR1cm4gdGhpc31yZXR1cm4gbnx8bz8obi5sYXQ9TWF0aC5taW4oZS5sYXQsbi5sYXQpLG4ubG5nPU1hdGgubWluKGUubG5nLG4ubG5nKSxvLmxhdD1NYXRoLm1heChpLmxhdCxvLmxhdCksby5sbmc9TWF0aC5tYXgoaS5sbmcsby5sbmcpKToodGhpcy5fc291dGhXZXN0PW5ldyB2KGUubGF0LGUubG5nKSx0aGlzLl9ub3J0aEVhc3Q9bmV3IHYoaS5sYXQsaS5sbmcpKSx0aGlzfSxwYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc291dGhXZXN0LGk9dGhpcy5fbm9ydGhFYXN0LG49TWF0aC5hYnMoZS5sYXQtaS5sYXQpKnQsdD1NYXRoLmFicyhlLmxuZy1pLmxuZykqdDtyZXR1cm4gbmV3IHMobmV3IHYoZS5sYXQtbixlLmxuZy10KSxuZXcgdihpLmxhdCtuLGkubG5nK3QpKX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KCh0aGlzLl9zb3V0aFdlc3QubGF0K3RoaXMuX25vcnRoRWFzdC5sYXQpLzIsKHRoaXMuX3NvdXRoV2VzdC5sbmcrdGhpcy5fbm9ydGhFYXN0LmxuZykvMil9LGdldFNvdXRoV2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3R9LGdldE5vcnRoRWFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3J0aEVhc3R9LGdldE5vcnRoV2VzdDpmdW5jdGlvbigpe3JldHVybiBuZXcgdih0aGlzLmdldE5vcnRoKCksdGhpcy5nZXRXZXN0KCkpfSxnZXRTb3V0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5nZXRTb3V0aCgpLHRoaXMuZ2V0RWFzdCgpKX0sZ2V0V2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubG5nfSxnZXRTb3V0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubGF0fSxnZXRFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sbmd9LGdldE5vcnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sYXR9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3Q9KFwibnVtYmVyXCI9PXR5cGVvZiB0WzBdfHx0IGluc3RhbmNlb2Ygdnx8XCJsYXRcImluIHQ/dzpnKSh0KTt2YXIgZSxpLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O3JldHVybiB0IGluc3RhbmNlb2Ygcz8oZT10LmdldFNvdXRoV2VzdCgpLGk9dC5nZXROb3J0aEVhc3QoKSk6ZT1pPXQsZS5sYXQ+PW4ubGF0JiZpLmxhdDw9by5sYXQmJmUubG5nPj1uLmxuZyYmaS5sbmc8PW8ubG5nfSxpbnRlcnNlY3RzOmZ1bmN0aW9uKHQpe3Q9Zyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxvPXQubGF0Pj1lLmxhdCYmbi5sYXQ8PWkubGF0LHQ9dC5sbmc+PWUubG5nJiZuLmxuZzw9aS5sbmc7cmV0dXJuIG8mJnR9LG92ZXJsYXBzOmZ1bmN0aW9uKHQpe3Q9Zyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxvPXQubGF0PmUubGF0JiZuLmxhdDxpLmxhdCx0PXQubG5nPmUubG5nJiZuLmxuZzxpLmxuZztyZXR1cm4gbyYmdH0sdG9CQm94U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuZ2V0V2VzdCgpLHRoaXMuZ2V0U291dGgoKSx0aGlzLmdldEVhc3QoKSx0aGlzLmdldE5vcnRoKCldLmpvaW4oXCIsXCIpfSxlcXVhbHM6ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQmJih0PWcodCksdGhpcy5fc291dGhXZXN0LmVxdWFscyh0LmdldFNvdXRoV2VzdCgpLGUpJiZ0aGlzLl9ub3J0aEVhc3QuZXF1YWxzKHQuZ2V0Tm9ydGhFYXN0KCksZSkpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5fc291dGhXZXN0fHwhdGhpcy5fbm9ydGhFYXN0KX19O3ZhciBvdD17bGF0TG5nVG9Qb2ludDpmdW5jdGlvbih0LGUpe3Q9dGhpcy5wcm9qZWN0aW9uLnByb2plY3QodCksZT10aGlzLnNjYWxlKGUpO3JldHVybiB0aGlzLnRyYW5zZm9ybWF0aW9uLl90cmFuc2Zvcm0odCxlKX0scG9pbnRUb0xhdExuZzpmdW5jdGlvbih0LGUpe2U9dGhpcy5zY2FsZShlKSx0PXRoaXMudHJhbnNmb3JtYXRpb24udW50cmFuc2Zvcm0odCxlKTtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdCh0KX0scHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnByb2plY3QodCl9LHVucHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdCh0KX0sc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDI1NipNYXRoLnBvdygyLHQpfSx6b29tOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0LzI1NikvTWF0aC5MTjJ9LGdldFByb2plY3RlZEJvdW5kczpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdGhpcy5pbmZpbml0ZT9udWxsOihlPXRoaXMucHJvamVjdGlvbi5ib3VuZHMsdD10aGlzLnNjYWxlKHQpLG5ldyBmKHRoaXMudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtKGUubWluLHQpLHRoaXMudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtKGUubWF4LHQpKSl9LGluZmluaXRlOiEodi5wcm90b3R5cGU9e2VxdWFsczpmdW5jdGlvbih0LGUpe3JldHVybiEhdCYmKHQ9dyh0KSxNYXRoLm1heChNYXRoLmFicyh0aGlzLmxhdC10LmxhdCksTWF0aC5hYnModGhpcy5sbmctdC5sbmcpKTw9KHZvaWQgMD09PWU/MWUtOTplKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVyblwiTGF0TG5nKFwiK2kodGhpcy5sYXQsdCkrXCIsIFwiK2kodGhpcy5sbmcsdCkrXCIpXCJ9LGRpc3RhbmNlVG86ZnVuY3Rpb24odCl7cmV0dXJuIHN0LmRpc3RhbmNlKHRoaXMsdyh0KSl9LHdyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gc3Qud3JhcExhdExuZyh0aGlzKX0sdG9Cb3VuZHM6ZnVuY3Rpb24odCl7dmFyIHQ9MTgwKnQvNDAwNzUwMTcsZT10L01hdGguY29zKE1hdGguUEkvMTgwKnRoaXMubGF0KTtyZXR1cm4gZyhbdGhpcy5sYXQtdCx0aGlzLmxuZy1lXSxbdGhpcy5sYXQrdCx0aGlzLmxuZytlXSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMubGF0LHRoaXMubG5nLHRoaXMuYWx0KX19KSx3cmFwTGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMud3JhcExuZz9IKHQubG5nLHRoaXMud3JhcExuZywhMCk6dC5sbmc7cmV0dXJuIG5ldyB2KHRoaXMud3JhcExhdD9IKHQubGF0LHRoaXMud3JhcExhdCwhMCk6dC5sYXQsZSx0LmFsdCl9LHdyYXBMYXRMbmdCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRDZW50ZXIoKSxpPXRoaXMud3JhcExhdExuZyhlKSxuPWUubGF0LWkubGF0LGU9ZS5sbmctaS5sbmc7cmV0dXJuIDA9PW4mJjA9PWU/dDooaT10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxuZXcgcyhuZXcgdihpLmxhdC1uLGkubG5nLWUpLG5ldyB2KHQubGF0LW4sdC5sbmctZSkpKX19LHN0PWwoe30sb3Qse3dyYXBMbmc6Wy0xODAsMTgwXSxSOjYzNzFlMyxkaXN0YW5jZTpmdW5jdGlvbih0LGUpe3ZhciBpPU1hdGguUEkvMTgwLG49dC5sYXQqaSxvPWUubGF0Kmkscz1NYXRoLnNpbigoZS5sYXQtdC5sYXQpKmkvMiksZT1NYXRoLnNpbigoZS5sbmctdC5sbmcpKmkvMiksdD1zKnMrTWF0aC5jb3MobikqTWF0aC5jb3MobykqZSplLGk9MipNYXRoLmF0YW4yKE1hdGguc3FydCh0KSxNYXRoLnNxcnQoMS10KSk7cmV0dXJuIHRoaXMuUippfX0pLHJ0PTYzNzgxMzcscnQ9e1I6cnQsTUFYX0xBVElUVURFOjg1LjA1MTEyODc3OTgscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLlBJLzE4MCxpPXRoaXMuTUFYX0xBVElUVURFLGk9TWF0aC5tYXgoTWF0aC5taW4oaSx0LmxhdCksLWkpLGk9TWF0aC5zaW4oaSplKTtyZXR1cm4gbmV3IHAodGhpcy5SKnQubG5nKmUsdGhpcy5SKk1hdGgubG9nKCgxK2kpLygxLWkpKS8yKX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPTE4MC9NYXRoLlBJO3JldHVybiBuZXcgdigoMipNYXRoLmF0YW4oTWF0aC5leHAodC55L3RoaXMuUikpLU1hdGguUEkvMikqZSx0LngqZS90aGlzLlIpfSxib3VuZHM6bmV3IGYoWy0ocnQ9cnQqTWF0aC5QSSksLXJ0XSxbcnQscnRdKX07ZnVuY3Rpb24gYXQodCxlLGksbil7ZCh0KT8odGhpcy5fYT10WzBdLHRoaXMuX2I9dFsxXSx0aGlzLl9jPXRbMl0sdGhpcy5fZD10WzNdKToodGhpcy5fYT10LHRoaXMuX2I9ZSx0aGlzLl9jPWksdGhpcy5fZD1uKX1mdW5jdGlvbiBodCh0LGUsaSxuKXtyZXR1cm4gbmV3IGF0KHQsZSxpLG4pfWF0LnByb3RvdHlwZT17dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybSh0LmNsb25lKCksZSl9LF90cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54PShlPWV8fDEpKih0aGlzLl9hKnQueCt0aGlzLl9iKSx0Lnk9ZSoodGhpcy5fYyp0LnkrdGhpcy5fZCksdH0sdW50cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHAoKHQueC8oZT1lfHwxKS10aGlzLl9iKS90aGlzLl9hLCh0LnkvZS10aGlzLl9kKS90aGlzLl9jKX19O3ZhciBsdD1sKHt9LHN0LHtjb2RlOlwiRVBTRzozODU3XCIscHJvamVjdGlvbjpydCx0cmFuc2Zvcm1hdGlvbjpodChsdD0uNS8oTWF0aC5QSSpydC5SKSwuNSwtbHQsLjUpfSksdXQ9bCh7fSxsdCx7Y29kZTpcIkVQU0c6OTAwOTEzXCJ9KTtmdW5jdGlvbiBjdCh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix0KX1mdW5jdGlvbiBkdCh0LGUpe2Zvcih2YXIgaSxuLG8scyxyPVwiXCIsYT0wLGg9dC5sZW5ndGg7YTxoO2ErKyl7Zm9yKGk9MCxuPShvPXRbYV0pLmxlbmd0aDtpPG47aSsrKXIrPShpP1wiTFwiOlwiTVwiKSsocz1vW2ldKS54K1wiIFwiK3MueTtyKz1lP2Iuc3ZnP1wielwiOlwieFwiOlwiXCJ9cmV0dXJuIHJ8fFwiTTAgMFwifXZhciBfdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUscHQ9XCJBY3RpdmVYT2JqZWN0XCJpbiB3aW5kb3csbXQ9cHQmJiFkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLG49XCJtc0xhdW5jaFVyaVwiaW4gbmF2aWdhdG9yJiYhKFwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCksZnQ9eShcIndlYmtpdFwiKSxndD15KFwiYW5kcm9pZFwiKSx2dD15KFwiYW5kcm9pZCAyXCIpfHx5KFwiYW5kcm9pZCAzXCIpLHl0PXBhcnNlSW50KC9XZWJLaXRcXC8oWzAtOV0rKXwkLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpWzFdLDEwKSx5dD1ndCYmeShcIkdvb2dsZVwiKSYmeXQ8NTM3JiYhKFwiQXVkaW9Ob2RlXCJpbiB3aW5kb3cpLHh0PSEhd2luZG93Lm9wZXJhLHd0PSFuJiZ5KFwiY2hyb21lXCIpLGJ0PXkoXCJnZWNrb1wiKSYmIWZ0JiYheHQmJiFwdCxQdD0hd3QmJnkoXCJzYWZhcmlcIiksTHQ9eShcInBoYW50b21cIiksbz1cIk9UcmFuc2l0aW9uXCJpbiBfdCxUdD0wPT09bmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoXCJXaW5cIiksTXQ9cHQmJlwidHJhbnNpdGlvblwiaW4gX3QsenQ9XCJXZWJLaXRDU1NNYXRyaXhcImluIHdpbmRvdyYmXCJtMTFcImluIG5ldyB3aW5kb3cuV2ViS2l0Q1NTTWF0cml4JiYhdnQsX3Q9XCJNb3pQZXJzcGVjdGl2ZVwiaW4gX3QsQ3Q9IXdpbmRvdy5MX0RJU0FCTEVfM0QmJihNdHx8enR8fF90KSYmIW8mJiFMdCxadD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygb3JpZW50YXRpb258fHkoXCJtb2JpbGVcIiksU3Q9WnQmJmZ0LEV0PVp0JiZ6dCxrdD0hd2luZG93LlBvaW50ZXJFdmVudCYmd2luZG93Lk1TUG9pbnRlckV2ZW50LE90PSEoIXdpbmRvdy5Qb2ludGVyRXZlbnQmJiFrdCksQXQ9XCJvbnRvdWNoc3RhcnRcImluIHdpbmRvd3x8ISF3aW5kb3cuVG91Y2hFdmVudCxCdD0hd2luZG93LkxfTk9fVE9VQ0gmJihBdHx8T3QpLEl0PVp0JiZ4dCxSdD1adCYmYnQsTnQ9MTwod2luZG93LmRldmljZVBpeGVsUmF0aW98fHdpbmRvdy5zY3JlZW4uZGV2aWNlWERQSS93aW5kb3cuc2NyZWVuLmxvZ2ljYWxYRFBJKSxEdD1mdW5jdGlvbigpe3ZhciB0PSExO3RyeXt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe3Q9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0UGFzc2l2ZUV2ZW50U3VwcG9ydFwiLHUsZSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0UGFzc2l2ZUV2ZW50U3VwcG9ydFwiLHUsZSl9Y2F0Y2godCl7fXJldHVybiB0fSgpLGp0PSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKS5nZXRDb250ZXh0LEh0PSEoIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROU3x8IWN0KFwic3ZnXCIpLmNyZWF0ZVNWR1JlY3QpLFd0PSEhSHQmJigoV3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaW5uZXJIVE1MPVwiPHN2Zy8+XCIsXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09KFd0LmZpcnN0Q2hpbGQmJld0LmZpcnN0Q2hpbGQubmFtZXNwYWNlVVJJKSk7ZnVuY3Rpb24geSh0KXtyZXR1cm4gMDw9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodCl9dmFyIGI9e2llOnB0LGllbHQ5Om10LGVkZ2U6bix3ZWJraXQ6ZnQsYW5kcm9pZDpndCxhbmRyb2lkMjM6dnQsYW5kcm9pZFN0b2NrOnl0LG9wZXJhOnh0LGNocm9tZTp3dCxnZWNrbzpidCxzYWZhcmk6UHQscGhhbnRvbTpMdCxvcGVyYTEyOm8sd2luOlR0LGllM2Q6TXQsd2Via2l0M2Q6enQsZ2Vja28zZDpfdCxhbnkzZDpDdCxtb2JpbGU6WnQsbW9iaWxlV2Via2l0OlN0LG1vYmlsZVdlYmtpdDNkOkV0LG1zUG9pbnRlcjprdCxwb2ludGVyOk90LHRvdWNoOkJ0LHRvdWNoTmF0aXZlOkF0LG1vYmlsZU9wZXJhOkl0LG1vYmlsZUdlY2tvOlJ0LHJldGluYTpOdCxwYXNzaXZlRXZlbnRzOkR0LGNhbnZhczpqdCxzdmc6SHQsdm1sOiFIdCYmZnVuY3Rpb24oKXt0cnl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlPSh0LmlubmVySFRNTD0nPHY6c2hhcGUgYWRqPVwiMVwiLz4nLHQuZmlyc3RDaGlsZCk7cmV0dXJuIGUuc3R5bGUuYmVoYXZpb3I9XCJ1cmwoI2RlZmF1bHQjVk1MKVwiLGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlLmFkan1jYXRjaCh0KXtyZXR1cm4hMX19KCksaW5saW5lU3ZnOld0LG1hYzowPT09bmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoXCJNYWNcIiksbGludXg6MD09PW5hdmlnYXRvci5wbGF0Zm9ybS5pbmRleE9mKFwiTGludXhcIil9LEZ0PWIubXNQb2ludGVyP1wiTVNQb2ludGVyRG93blwiOlwicG9pbnRlcmRvd25cIixVdD1iLm1zUG9pbnRlcj9cIk1TUG9pbnRlck1vdmVcIjpcInBvaW50ZXJtb3ZlXCIsVnQ9Yi5tc1BvaW50ZXI/XCJNU1BvaW50ZXJVcFwiOlwicG9pbnRlcnVwXCIscXQ9Yi5tc1BvaW50ZXI/XCJNU1BvaW50ZXJDYW5jZWxcIjpcInBvaW50ZXJjYW5jZWxcIixHdD17dG91Y2hzdGFydDpGdCx0b3VjaG1vdmU6VXQsdG91Y2hlbmQ6VnQsdG91Y2hjYW5jZWw6cXR9LEt0PXt0b3VjaHN0YXJ0OmZ1bmN0aW9uKHQsZSl7ZS5NU1BPSU5URVJfVFlQRV9UT1VDSCYmZS5wb2ludGVyVHlwZT09PWUuTVNQT0lOVEVSX1RZUEVfVE9VQ0gmJk8oZSk7ZWUodCxlKX0sdG91Y2htb3ZlOmVlLHRvdWNoZW5kOmVlLHRvdWNoY2FuY2VsOmVlfSxZdD17fSxYdD0hMTtmdW5jdGlvbiBKdCh0LGUsaSl7cmV0dXJuXCJ0b3VjaHN0YXJ0XCIhPT1lfHxYdHx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoRnQsJHQsITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoVXQsUXQsITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoVnQsdGUsITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIocXQsdGUsITApLFh0PSEwKSxLdFtlXT8oaT1LdFtlXS5iaW5kKHRoaXMsaSksdC5hZGRFdmVudExpc3RlbmVyKEd0W2VdLGksITEpLGkpOihjb25zb2xlLndhcm4oXCJ3cm9uZyBldmVudCBzcGVjaWZpZWQ6XCIsZSksdSl9ZnVuY3Rpb24gJHQodCl7WXRbdC5wb2ludGVySWRdPXR9ZnVuY3Rpb24gUXQodCl7WXRbdC5wb2ludGVySWRdJiYoWXRbdC5wb2ludGVySWRdPXQpfWZ1bmN0aW9uIHRlKHQpe2RlbGV0ZSBZdFt0LnBvaW50ZXJJZF19ZnVuY3Rpb24gZWUodCxlKXtpZihlLnBvaW50ZXJUeXBlIT09KGUuTVNQT0lOVEVSX1RZUEVfTU9VU0V8fFwibW91c2VcIikpe2Zvcih2YXIgaSBpbiBlLnRvdWNoZXM9W10sWXQpZS50b3VjaGVzLnB1c2goWXRbaV0pO2UuY2hhbmdlZFRvdWNoZXM9W2VdLHQoZSl9fXZhciBpZT0yMDA7ZnVuY3Rpb24gbmUodCxpKXt0LmFkZEV2ZW50TGlzdGVuZXIoXCJkYmxjbGlja1wiLGkpO3ZhciBuLG89MDtmdW5jdGlvbiBlKHQpe3ZhciBlOzEhPT10LmRldGFpbD9uPXQuZGV0YWlsOlwibW91c2VcIj09PXQucG9pbnRlclR5cGV8fHQuc291cmNlQ2FwYWJpbGl0aWVzJiYhdC5zb3VyY2VDYXBhYmlsaXRpZXMuZmlyZXNUb3VjaEV2ZW50c3x8KChlPU5lKHQpKS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTExhYmVsRWxlbWVudCYmdC5hdHRyaWJ1dGVzLmZvcn0pJiYhZS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudHx8dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50fSl8fCgoZT1EYXRlLm5vdygpKS1vPD1pZT8yPT09KytuJiZpKGZ1bmN0aW9uKHQpe3ZhciBlLGksbj17fTtmb3IoaSBpbiB0KWU9dFtpXSxuW2ldPWUmJmUuYmluZD9lLmJpbmQodCk6ZTtyZXR1cm4odD1uKS50eXBlPVwiZGJsY2xpY2tcIixuLmRldGFpbD0yLG4uaXNUcnVzdGVkPSExLG4uX3NpbXVsYXRlZD0hMCxufSh0KSk6bj0xLG89ZSkpfXJldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGUpLHtkYmxjbGljazppLHNpbURibGNsaWNrOmV9fXZhciBvZSxzZSxyZSxhZSxoZSxsZSx1ZT13ZShbXCJ0cmFuc2Zvcm1cIixcIndlYmtpdFRyYW5zZm9ybVwiLFwiT1RyYW5zZm9ybVwiLFwiTW96VHJhbnNmb3JtXCIsXCJtc1RyYW5zZm9ybVwiXSksY2U9d2UoW1wid2Via2l0VHJhbnNpdGlvblwiLFwidHJhbnNpdGlvblwiLFwiT1RyYW5zaXRpb25cIixcIk1velRyYW5zaXRpb25cIixcIm1zVHJhbnNpdGlvblwiXSksZGU9XCJ3ZWJraXRUcmFuc2l0aW9uXCI9PT1jZXx8XCJPVHJhbnNpdGlvblwiPT09Y2U/Y2UrXCJFbmRcIjpcInRyYW5zaXRpb25lbmRcIjtmdW5jdGlvbiBfZSh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTp0fWZ1bmN0aW9uIHBlKHQsZSl7dmFyIGk9dC5zdHlsZVtlXXx8dC5jdXJyZW50U3R5bGUmJnQuY3VycmVudFN0eWxlW2VdO3JldHVyblwiYXV0b1wiPT09KGk9aSYmXCJhdXRvXCIhPT1pfHwhZG9jdW1lbnQuZGVmYXVsdFZpZXc/aToodD1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkpP3RbZV06bnVsbCk/bnVsbDppfWZ1bmN0aW9uIFAodCxlLGkpe3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gdC5jbGFzc05hbWU9ZXx8XCJcIixpJiZpLmFwcGVuZENoaWxkKHQpLHR9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LnBhcmVudE5vZGU7ZSYmZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBtZSh0KXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGZlKHQpe3ZhciBlPXQucGFyZW50Tm9kZTtlJiZlLmxhc3RDaGlsZCE9PXQmJmUuYXBwZW5kQ2hpbGQodCl9ZnVuY3Rpb24gZ2UodCl7dmFyIGU9dC5wYXJlbnROb2RlO2UmJmUuZmlyc3RDaGlsZCE9PXQmJmUuaW5zZXJ0QmVmb3JlKHQsZS5maXJzdENoaWxkKX1mdW5jdGlvbiB2ZSh0LGUpe3JldHVybiB2b2lkIDAhPT10LmNsYXNzTGlzdD90LmNsYXNzTGlzdC5jb250YWlucyhlKTowPCh0PXhlKHQpKS5sZW5ndGgmJm5ldyBSZWdFeHAoXCIoXnxcXFxccylcIitlK1wiKFxcXFxzfCQpXCIpLnRlc3QodCl9ZnVuY3Rpb24gTSh0LGUpe3ZhciBpO2lmKHZvaWQgMCE9PXQuY2xhc3NMaXN0KWZvcih2YXIgbj1GKGUpLG89MCxzPW4ubGVuZ3RoO288cztvKyspdC5jbGFzc0xpc3QuYWRkKG5bb10pO2Vsc2UgdmUodCxlKXx8eWUodCwoKGk9eGUodCkpP2krXCIgXCI6XCJcIikrZSl9ZnVuY3Rpb24geih0LGUpe3ZvaWQgMCE9PXQuY2xhc3NMaXN0P3QuY2xhc3NMaXN0LnJlbW92ZShlKTp5ZSh0LFcoKFwiIFwiK3hlKHQpK1wiIFwiKS5yZXBsYWNlKFwiIFwiK2UrXCIgXCIsXCIgXCIpKSl9ZnVuY3Rpb24geWUodCxlKXt2b2lkIDA9PT10LmNsYXNzTmFtZS5iYXNlVmFsP3QuY2xhc3NOYW1lPWU6dC5jbGFzc05hbWUuYmFzZVZhbD1lfWZ1bmN0aW9uIHhlKHQpe3JldHVybiB2b2lkIDA9PT0odD10LmNvcnJlc3BvbmRpbmdFbGVtZW50P3QuY29ycmVzcG9uZGluZ0VsZW1lbnQ6dCkuY2xhc3NOYW1lLmJhc2VWYWw/dC5jbGFzc05hbWU6dC5jbGFzc05hbWUuYmFzZVZhbH1mdW5jdGlvbiBDKHQsZSl7aWYoXCJvcGFjaXR5XCJpbiB0LnN0eWxlKXQuc3R5bGUub3BhY2l0eT1lO2Vsc2UgaWYoXCJmaWx0ZXJcImluIHQuc3R5bGUpe3ZhciBpPSExLG49XCJEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYVwiO3RyeXtpPXQuZmlsdGVycy5pdGVtKG4pfWNhdGNoKHQpe2lmKDE9PT1lKXJldHVybn1lPU1hdGgucm91bmQoMTAwKmUpLGk/KGkuRW5hYmxlZD0xMDAhPT1lLGkuT3BhY2l0eT1lKTp0LnN0eWxlLmZpbHRlcis9XCIgcHJvZ2lkOlwiK24rXCIob3BhY2l0eT1cIitlK1wiKVwifX1mdW5jdGlvbiB3ZSh0KXtmb3IodmFyIGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLGk9MDtpPHQubGVuZ3RoO2krKylpZih0W2ldaW4gZSlyZXR1cm4gdFtpXTtyZXR1cm4hMX1mdW5jdGlvbiBiZSh0LGUsaSl7ZT1lfHxuZXcgcCgwLDApO3Quc3R5bGVbdWVdPShiLmllM2Q/XCJ0cmFuc2xhdGUoXCIrZS54K1wicHgsXCIrZS55K1wicHgpXCI6XCJ0cmFuc2xhdGUzZChcIitlLngrXCJweCxcIitlLnkrXCJweCwwKVwiKSsoaT9cIiBzY2FsZShcIitpK1wiKVwiOlwiXCIpfWZ1bmN0aW9uIFoodCxlKXt0Ll9sZWFmbGV0X3Bvcz1lLGIuYW55M2Q/YmUodCxlKToodC5zdHlsZS5sZWZ0PWUueCtcInB4XCIsdC5zdHlsZS50b3A9ZS55K1wicHhcIil9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIHQuX2xlYWZsZXRfcG9zfHxuZXcgcCgwLDApfWZ1bmN0aW9uIExlKCl7Uyh3aW5kb3csXCJkcmFnc3RhcnRcIixPKX1mdW5jdGlvbiBUZSgpe2sod2luZG93LFwiZHJhZ3N0YXJ0XCIsTyl9ZnVuY3Rpb24gTWUodCl7Zm9yKDstMT09PXQudGFiSW5kZXg7KXQ9dC5wYXJlbnROb2RlO3Quc3R5bGUmJih6ZSgpLGxlPShoZT10KS5zdHlsZS5vdXRsaW5lU3R5bGUsdC5zdHlsZS5vdXRsaW5lU3R5bGU9XCJub25lXCIsUyh3aW5kb3csXCJrZXlkb3duXCIsemUpKX1mdW5jdGlvbiB6ZSgpe2hlJiYoaGUuc3R5bGUub3V0bGluZVN0eWxlPWxlLGxlPWhlPXZvaWQgMCxrKHdpbmRvdyxcImtleWRvd25cIix6ZSkpfWZ1bmN0aW9uIENlKHQpe2Zvcig7ISgodD10LnBhcmVudE5vZGUpLm9mZnNldFdpZHRoJiZ0Lm9mZnNldEhlaWdodHx8dD09PWRvY3VtZW50LmJvZHkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24gWmUodCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57eDplLndpZHRoL3Qub2Zmc2V0V2lkdGh8fDEseTplLmhlaWdodC90Lm9mZnNldEhlaWdodHx8MSxib3VuZGluZ0NsaWVudFJlY3Q6ZX19YWU9XCJvbnNlbGVjdHN0YXJ0XCJpbiBkb2N1bWVudD8ocmU9ZnVuY3Rpb24oKXtTKHdpbmRvdyxcInNlbGVjdHN0YXJ0XCIsTyl9LGZ1bmN0aW9uKCl7ayh3aW5kb3csXCJzZWxlY3RzdGFydFwiLE8pfSk6KHNlPXdlKFtcInVzZXJTZWxlY3RcIixcIldlYmtpdFVzZXJTZWxlY3RcIixcIk9Vc2VyU2VsZWN0XCIsXCJNb3pVc2VyU2VsZWN0XCIsXCJtc1VzZXJTZWxlY3RcIl0pLHJlPWZ1bmN0aW9uKCl7dmFyIHQ7c2UmJih0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxvZT10W3NlXSx0W3NlXT1cIm5vbmVcIil9LGZ1bmN0aW9uKCl7c2UmJihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGVbc2VdPW9lLG9lPXZvaWQgMCl9KTtwdD17X19wcm90b19fOm51bGwsVFJBTlNGT1JNOnVlLFRSQU5TSVRJT046Y2UsVFJBTlNJVElPTl9FTkQ6ZGUsZ2V0Ol9lLGdldFN0eWxlOnBlLGNyZWF0ZTpQLHJlbW92ZTpULGVtcHR5Om1lLHRvRnJvbnQ6ZmUsdG9CYWNrOmdlLGhhc0NsYXNzOnZlLGFkZENsYXNzOk0scmVtb3ZlQ2xhc3M6eixzZXRDbGFzczp5ZSxnZXRDbGFzczp4ZSxzZXRPcGFjaXR5OkMsdGVzdFByb3A6d2Usc2V0VHJhbnNmb3JtOmJlLHNldFBvc2l0aW9uOlosZ2V0UG9zaXRpb246UGUsZ2V0IGRpc2FibGVUZXh0U2VsZWN0aW9uKCl7cmV0dXJuIHJlfSxnZXQgZW5hYmxlVGV4dFNlbGVjdGlvbigpe3JldHVybiBhZX0sZGlzYWJsZUltYWdlRHJhZzpMZSxlbmFibGVJbWFnZURyYWc6VGUscHJldmVudE91dGxpbmU6TWUscmVzdG9yZU91dGxpbmU6emUsZ2V0U2l6ZWRQYXJlbnROb2RlOkNlLGdldFNjYWxlOlplfTtmdW5jdGlvbiBTKHQsZSxpLG4pe2lmKGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKWtlKHQsbyxlW29dLGkpO2Vsc2UgZm9yKHZhciBzPTAscj0oZT1GKGUpKS5sZW5ndGg7czxyO3MrKylrZSh0LGVbc10saSxuKTtyZXR1cm4gdGhpc312YXIgRT1cIl9sZWFmbGV0X2V2ZW50c1wiO2Z1bmN0aW9uIGsodCxlLGksbil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpU2UodCksZGVsZXRlIHRbRV07ZWxzZSBpZihlJiZcIm9iamVjdFwiPT10eXBlb2YgZSlmb3IodmFyIG8gaW4gZSlPZSh0LG8sZVtvXSxpKTtlbHNlIGlmKGU9RihlKSwyPT09YXJndW1lbnRzLmxlbmd0aClTZSh0LGZ1bmN0aW9uKHQpe3JldHVybi0xIT09RyhlLHQpfSk7ZWxzZSBmb3IodmFyIHM9MCxyPWUubGVuZ3RoO3M8cjtzKyspT2UodCxlW3NdLGksbik7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gU2UodCxlKXtmb3IodmFyIGkgaW4gdFtFXSl7dmFyIG49aS5zcGxpdCgvXFxkLylbMF07ZSYmIWUobil8fE9lKHQsbixudWxsLG51bGwsaSl9fXZhciBFZT17bW91c2VlbnRlcjpcIm1vdXNlb3ZlclwiLG1vdXNlbGVhdmU6XCJtb3VzZW91dFwiLHdoZWVsOiEoXCJvbndoZWVsXCJpbiB3aW5kb3cpJiZcIm1vdXNld2hlZWxcIn07ZnVuY3Rpb24ga2UoZSx0LGksbil7dmFyIG8scyxyPXQraChpKSsobj9cIl9cIitoKG4pOlwiXCIpO2VbRV0mJmVbRV1bcl18fChzPW89ZnVuY3Rpb24odCl7cmV0dXJuIGkuY2FsbChufHxlLHR8fHdpbmRvdy5ldmVudCl9LCFiLnRvdWNoTmF0aXZlJiZiLnBvaW50ZXImJjA9PT10LmluZGV4T2YoXCJ0b3VjaFwiKT9vPUp0KGUsdCxvKTpiLnRvdWNoJiZcImRibGNsaWNrXCI9PT10P289bmUoZSxvKTpcImFkZEV2ZW50TGlzdGVuZXJcImluIGU/XCJ0b3VjaHN0YXJ0XCI9PT10fHxcInRvdWNobW92ZVwiPT09dHx8XCJ3aGVlbFwiPT09dHx8XCJtb3VzZXdoZWVsXCI9PT10P2UuYWRkRXZlbnRMaXN0ZW5lcihFZVt0XXx8dCxvLCEhYi5wYXNzaXZlRXZlbnRzJiZ7cGFzc2l2ZTohMX0pOlwibW91c2VlbnRlclwiPT09dHx8XCJtb3VzZWxlYXZlXCI9PT10P2UuYWRkRXZlbnRMaXN0ZW5lcihFZVt0XSxvPWZ1bmN0aW9uKHQpe3Q9dHx8d2luZG93LmV2ZW50LFdlKGUsdCkmJnModCl9LCExKTplLmFkZEV2ZW50TGlzdGVuZXIodCxzLCExKTplLmF0dGFjaEV2ZW50KFwib25cIit0LG8pLGVbRV09ZVtFXXx8e30sZVtFXVtyXT1vKX1mdW5jdGlvbiBPZSh0LGUsaSxuLG8pe289b3x8ZStoKGkpKyhuP1wiX1wiK2gobik6XCJcIik7dmFyIHMscixpPXRbRV0mJnRbRV1bb107aSYmKCFiLnRvdWNoTmF0aXZlJiZiLnBvaW50ZXImJjA9PT1lLmluZGV4T2YoXCJ0b3VjaFwiKT8obj10LHI9aSxHdFtzPWVdP24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihHdFtzXSxyLCExKTpjb25zb2xlLndhcm4oXCJ3cm9uZyBldmVudCBzcGVjaWZpZWQ6XCIscykpOmIudG91Y2gmJlwiZGJsY2xpY2tcIj09PWU/KG49aSwocj10KS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIixuLmRibGNsaWNrKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLG4uc2ltRGJsY2xpY2spKTpcInJlbW92ZUV2ZW50TGlzdGVuZXJcImluIHQ/dC5yZW1vdmVFdmVudExpc3RlbmVyKEVlW2VdfHxlLGksITEpOnQuZGV0YWNoRXZlbnQoXCJvblwiK2UsaSksdFtFXVtvXT1udWxsKX1mdW5jdGlvbiBBZSh0KXtyZXR1cm4gdC5zdG9wUHJvcGFnYXRpb24/dC5zdG9wUHJvcGFnYXRpb24oKTp0Lm9yaWdpbmFsRXZlbnQ/dC5vcmlnaW5hbEV2ZW50Ll9zdG9wcGVkPSEwOnQuY2FuY2VsQnViYmxlPSEwLHRoaXN9ZnVuY3Rpb24gQmUodCl7cmV0dXJuIGtlKHQsXCJ3aGVlbFwiLEFlKSx0aGlzfWZ1bmN0aW9uIEllKHQpe3JldHVybiBTKHQsXCJtb3VzZWRvd24gdG91Y2hzdGFydCBkYmxjbGljayBjb250ZXh0bWVudVwiLEFlKSx0Ll9sZWFmbGV0X2Rpc2FibGVfY2xpY2s9ITAsdGhpc31mdW5jdGlvbiBPKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHRoaXN9ZnVuY3Rpb24gUmUodCl7cmV0dXJuIE8odCksQWUodCksdGhpc31mdW5jdGlvbiBOZSh0KXtpZih0LmNvbXBvc2VkUGF0aClyZXR1cm4gdC5jb21wb3NlZFBhdGgoKTtmb3IodmFyIGU9W10saT10LnRhcmdldDtpOyllLnB1c2goaSksaT1pLnBhcmVudE5vZGU7cmV0dXJuIGV9ZnVuY3Rpb24gRGUodCxlKXt2YXIgaSxuO3JldHVybiBlPyhuPShpPVplKGUpKS5ib3VuZGluZ0NsaWVudFJlY3QsbmV3IHAoKHQuY2xpZW50WC1uLmxlZnQpL2kueC1lLmNsaWVudExlZnQsKHQuY2xpZW50WS1uLnRvcCkvaS55LWUuY2xpZW50VG9wKSk6bmV3IHAodC5jbGllbnRYLHQuY2xpZW50WSl9dmFyIGplPWIubGludXgmJmIuY2hyb21lP3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOmIubWFjPzMqd2luZG93LmRldmljZVBpeGVsUmF0aW86MDx3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbz8yKndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOjE7ZnVuY3Rpb24gSGUodCl7cmV0dXJuIGIuZWRnZT90LndoZWVsRGVsdGFZLzI6dC5kZWx0YVkmJjA9PT10LmRlbHRhTW9kZT8tdC5kZWx0YVkvamU6dC5kZWx0YVkmJjE9PT10LmRlbHRhTW9kZT8yMCotdC5kZWx0YVk6dC5kZWx0YVkmJjI9PT10LmRlbHRhTW9kZT82MCotdC5kZWx0YVk6dC5kZWx0YVh8fHQuZGVsdGFaPzA6dC53aGVlbERlbHRhPyh0LndoZWVsRGVsdGFZfHx0LndoZWVsRGVsdGEpLzI6dC5kZXRhaWwmJk1hdGguYWJzKHQuZGV0YWlsKTwzMjc2NT8yMCotdC5kZXRhaWw6dC5kZXRhaWw/dC5kZXRhaWwvLTMyNzY1KjYwOjB9ZnVuY3Rpb24gV2UodCxlKXt2YXIgaT1lLnJlbGF0ZWRUYXJnZXQ7aWYoIWkpcmV0dXJuITA7dHJ5e2Zvcig7aSYmaSE9PXQ7KWk9aS5wYXJlbnROb2RlfWNhdGNoKHQpe3JldHVybiExfXJldHVybiBpIT09dH12YXIgbXQ9e19fcHJvdG9fXzpudWxsLG9uOlMsb2ZmOmssc3RvcFByb3BhZ2F0aW9uOkFlLGRpc2FibGVTY3JvbGxQcm9wYWdhdGlvbjpCZSxkaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbjpJZSxwcmV2ZW50RGVmYXVsdDpPLHN0b3A6UmUsZ2V0UHJvcGFnYXRpb25QYXRoOk5lLGdldE1vdXNlUG9zaXRpb246RGUsZ2V0V2hlZWxEZWx0YTpIZSxpc0V4dGVybmFsVGFyZ2V0OldlLGFkZExpc3RlbmVyOlMscmVtb3ZlTGlzdGVuZXI6a30sRmU9aXQuZXh0ZW5kKHtydW46ZnVuY3Rpb24odCxlLGksbil7dGhpcy5zdG9wKCksdGhpcy5fZWw9dCx0aGlzLl9pblByb2dyZXNzPSEwLHRoaXMuX2R1cmF0aW9uPWl8fC4yNSx0aGlzLl9lYXNlT3V0UG93ZXI9MS9NYXRoLm1heChufHwuNSwuMiksdGhpcy5fc3RhcnRQb3M9UGUodCksdGhpcy5fb2Zmc2V0PWUuc3VidHJhY3QodGhpcy5fc3RhcnRQb3MpLHRoaXMuX3N0YXJ0VGltZT0rbmV3IERhdGUsdGhpcy5maXJlKFwic3RhcnRcIiksdGhpcy5fYW5pbWF0ZSgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5faW5Qcm9ncmVzcyYmKHRoaXMuX3N0ZXAoITApLHRoaXMuX2NvbXBsZXRlKCkpfSxfYW5pbWF0ZTpmdW5jdGlvbigpe3RoaXMuX2FuaW1JZD14KHRoaXMuX2FuaW1hdGUsdGhpcyksdGhpcy5fc3RlcCgpfSxfc3RlcDpmdW5jdGlvbih0KXt2YXIgZT0rbmV3IERhdGUtdGhpcy5fc3RhcnRUaW1lLGk9MWUzKnRoaXMuX2R1cmF0aW9uO2U8aT90aGlzLl9ydW5GcmFtZSh0aGlzLl9lYXNlT3V0KGUvaSksdCk6KHRoaXMuX3J1bkZyYW1lKDEpLHRoaXMuX2NvbXBsZXRlKCkpfSxfcnVuRnJhbWU6ZnVuY3Rpb24odCxlKXt0PXRoaXMuX3N0YXJ0UG9zLmFkZCh0aGlzLl9vZmZzZXQubXVsdGlwbHlCeSh0KSk7ZSYmdC5fcm91bmQoKSxaKHRoaXMuX2VsLHQpLHRoaXMuZmlyZShcInN0ZXBcIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe3IodGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZShcImVuZFwiKX0sX2Vhc2VPdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIDEtTWF0aC5wb3coMS10LHRoaXMuX2Vhc2VPdXRQb3dlcil9fSksQT1pdC5leHRlbmQoe29wdGlvbnM6e2NyczpsdCxjZW50ZXI6dm9pZCAwLHpvb206dm9pZCAwLG1pblpvb206dm9pZCAwLG1heFpvb206dm9pZCAwLGxheWVyczpbXSxtYXhCb3VuZHM6dm9pZCAwLHJlbmRlcmVyOnZvaWQgMCx6b29tQW5pbWF0aW9uOiEwLHpvb21BbmltYXRpb25UaHJlc2hvbGQ6NCxmYWRlQW5pbWF0aW9uOiEwLG1hcmtlclpvb21BbmltYXRpb246ITAsdHJhbnNmb3JtM0RMaW1pdDo4Mzg4NjA4LHpvb21TbmFwOjEsem9vbURlbHRhOjEsdHJhY2tSZXNpemU6ITB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtlPWModGhpcyxlKSx0aGlzLl9oYW5kbGVycz1bXSx0aGlzLl9sYXllcnM9e30sdGhpcy5fem9vbUJvdW5kTGF5ZXJzPXt9LHRoaXMuX3NpemVDaGFuZ2VkPSEwLHRoaXMuX2luaXRDb250YWluZXIodCksdGhpcy5faW5pdExheW91dCgpLHRoaXMuX29uUmVzaXplPWEodGhpcy5fb25SZXNpemUsdGhpcyksdGhpcy5faW5pdEV2ZW50cygpLGUubWF4Qm91bmRzJiZ0aGlzLnNldE1heEJvdW5kcyhlLm1heEJvdW5kcyksdm9pZCAwIT09ZS56b29tJiYodGhpcy5fem9vbT10aGlzLl9saW1pdFpvb20oZS56b29tKSksZS5jZW50ZXImJnZvaWQgMCE9PWUuem9vbSYmdGhpcy5zZXRWaWV3KHcoZS5jZW50ZXIpLGUuem9vbSx7cmVzZXQ6ITB9KSx0aGlzLmNhbGxJbml0SG9va3MoKSx0aGlzLl96b29tQW5pbWF0ZWQ9Y2UmJmIuYW55M2QmJiFiLm1vYmlsZU9wZXJhJiZ0aGlzLm9wdGlvbnMuem9vbUFuaW1hdGlvbix0aGlzLl96b29tQW5pbWF0ZWQmJih0aGlzLl9jcmVhdGVBbmltUHJveHkoKSxTKHRoaXMuX3Byb3h5LGRlLHRoaXMuX2NhdGNoVHJhbnNpdGlvbkVuZCx0aGlzKSksdGhpcy5fYWRkTGF5ZXJzKHRoaXMub3B0aW9ucy5sYXllcnMpfSxzZXRWaWV3OmZ1bmN0aW9uKHQsZSxpKXtpZigoZT12b2lkIDA9PT1lP3RoaXMuX3pvb206dGhpcy5fbGltaXRab29tKGUpLHQ9dGhpcy5fbGltaXRDZW50ZXIodyh0KSxlLHRoaXMub3B0aW9ucy5tYXhCb3VuZHMpLGk9aXx8e30sdGhpcy5fc3RvcCgpLHRoaXMuX2xvYWRlZCYmIWkucmVzZXQmJiEwIT09aSkmJih2b2lkIDAhPT1pLmFuaW1hdGUmJihpLnpvb209bCh7YW5pbWF0ZTppLmFuaW1hdGV9LGkuem9vbSksaS5wYW49bCh7YW5pbWF0ZTppLmFuaW1hdGUsZHVyYXRpb246aS5kdXJhdGlvbn0saS5wYW4pKSx0aGlzLl96b29tIT09ZT90aGlzLl90cnlBbmltYXRlZFpvb20mJnRoaXMuX3RyeUFuaW1hdGVkWm9vbSh0LGUsaS56b29tKTp0aGlzLl90cnlBbmltYXRlZFBhbih0LGkucGFuKSkpcmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXM7cmV0dXJuIHRoaXMuX3Jlc2V0Vmlldyh0LGUsaS5wYW4mJmkucGFuLm5vTW92ZVN0YXJ0KSx0aGlzfSxzZXRab29tOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2xvYWRlZD90aGlzLnNldFZpZXcodGhpcy5nZXRDZW50ZXIoKSx0LHt6b29tOmV9KToodGhpcy5fem9vbT10LHRoaXMpfSx6b29tSW46ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10fHwoYi5hbnkzZD90aGlzLm9wdGlvbnMuem9vbURlbHRhOjEpLHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tK3QsZSl9LHpvb21PdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10fHwoYi5hbnkzZD90aGlzLm9wdGlvbnMuem9vbURlbHRhOjEpLHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tLXQsZSl9LHNldFpvb21Bcm91bmQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLG89dGhpcy5nZXRTaXplKCkuZGl2aWRlQnkoMiksdD0odCBpbnN0YW5jZW9mIHA/dDp0aGlzLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQodCkpLnN1YnRyYWN0KG8pLm11bHRpcGx5QnkoMS0xL24pLG49dGhpcy5jb250YWluZXJQb2ludFRvTGF0TG5nKG8uYWRkKHQpKTtyZXR1cm4gdGhpcy5zZXRWaWV3KG4sZSx7em9vbTppfSl9LF9nZXRCb3VuZHNDZW50ZXJab29tOmZ1bmN0aW9uKHQsZSl7ZT1lfHx7fSx0PXQuZ2V0Qm91bmRzP3QuZ2V0Qm91bmRzKCk6Zyh0KTt2YXIgaT1tKGUucGFkZGluZ1RvcExlZnR8fGUucGFkZGluZ3x8WzAsMF0pLG49bShlLnBhZGRpbmdCb3R0b21SaWdodHx8ZS5wYWRkaW5nfHxbMCwwXSksbz10aGlzLmdldEJvdW5kc1pvb20odCwhMSxpLmFkZChuKSk7cmV0dXJuKG89XCJudW1iZXJcIj09dHlwZW9mIGUubWF4Wm9vbT9NYXRoLm1pbihlLm1heFpvb20sbyk6byk9PT0xLzA/e2NlbnRlcjp0LmdldENlbnRlcigpLHpvb206b306KGU9bi5zdWJ0cmFjdChpKS5kaXZpZGVCeSgyKSxuPXRoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLG8pLGk9dGhpcy5wcm9qZWN0KHQuZ2V0Tm9ydGhFYXN0KCksbykse2NlbnRlcjp0aGlzLnVucHJvamVjdChuLmFkZChpKS5kaXZpZGVCeSgyKS5hZGQoZSksbyksem9vbTpvfSl9LGZpdEJvdW5kczpmdW5jdGlvbih0LGUpe2lmKCh0PWcodCkpLmlzVmFsaWQoKSlyZXR1cm4gdD10aGlzLl9nZXRCb3VuZHNDZW50ZXJab29tKHQsZSksdGhpcy5zZXRWaWV3KHQuY2VudGVyLHQuem9vbSxlKTt0aHJvdyBuZXcgRXJyb3IoXCJCb3VuZHMgYXJlIG5vdCB2YWxpZC5cIil9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjplfSl9LHBhbkJ5OmZ1bmN0aW9uKHQsZSl7dmFyIGk7cmV0dXJuIGU9ZXx8e30sKHQ9bSh0KS5yb3VuZCgpKS54fHx0Lnk/KCEwPT09ZS5hbmltYXRlfHx0aGlzLmdldFNpemUoKS5jb250YWlucyh0KT8odGhpcy5fcGFuQW5pbXx8KHRoaXMuX3BhbkFuaW09bmV3IEZlLHRoaXMuX3BhbkFuaW0ub24oe3N0ZXA6dGhpcy5fb25QYW5UcmFuc2l0aW9uU3RlcCxlbmQ6dGhpcy5fb25QYW5UcmFuc2l0aW9uRW5kfSx0aGlzKSksZS5ub01vdmVTdGFydHx8dGhpcy5maXJlKFwibW92ZXN0YXJ0XCIpLCExIT09ZS5hbmltYXRlPyhNKHRoaXMuX21hcFBhbmUsXCJsZWFmbGV0LXBhbi1hbmltXCIpLGk9dGhpcy5fZ2V0TWFwUGFuZVBvcygpLnN1YnRyYWN0KHQpLnJvdW5kKCksdGhpcy5fcGFuQW5pbS5ydW4odGhpcy5fbWFwUGFuZSxpLGUuZHVyYXRpb258fC4yNSxlLmVhc2VMaW5lYXJpdHkpKToodGhpcy5fcmF3UGFuQnkodCksdGhpcy5maXJlKFwibW92ZVwiKS5maXJlKFwibW92ZWVuZFwiKSkpOnRoaXMuX3Jlc2V0Vmlldyh0aGlzLnVucHJvamVjdCh0aGlzLnByb2plY3QodGhpcy5nZXRDZW50ZXIoKSkuYWRkKHQpKSx0aGlzLmdldFpvb20oKSksdGhpcyk6dGhpcy5maXJlKFwibW92ZWVuZFwiKX0sZmx5VG86ZnVuY3Rpb24obixvLHQpe2lmKCExPT09KHQ9dHx8e30pLmFuaW1hdGV8fCFiLmFueTNkKXJldHVybiB0aGlzLnNldFZpZXcobixvLHQpO3RoaXMuX3N0b3AoKTt2YXIgcz10aGlzLnByb2plY3QodGhpcy5nZXRDZW50ZXIoKSkscj10aGlzLnByb2plY3QobiksZT10aGlzLmdldFNpemUoKSxhPXRoaXMuX3pvb20saD0obj13KG4pLG89dm9pZCAwPT09bz9hOm8sTWF0aC5tYXgoZS54LGUueSkpLGk9aCp0aGlzLmdldFpvb21TY2FsZShhLG8pLGw9ci5kaXN0YW5jZVRvKHMpfHwxLHU9MS40MixjPXUqdTtmdW5jdGlvbiBkKHQpe3Q9KGkqaS1oKmgrKHQ/LTE6MSkqYypjKmwqbCkvKDIqKHQ/aTpoKSpjKmwpLHQ9TWF0aC5zcXJ0KHQqdCsxKS10O3JldHVybiB0PDFlLTk/LTE4Ok1hdGgubG9nKHQpfWZ1bmN0aW9uIF8odCl7cmV0dXJuKE1hdGguZXhwKHQpLU1hdGguZXhwKC10KSkvMn1mdW5jdGlvbiBwKHQpe3JldHVybihNYXRoLmV4cCh0KStNYXRoLmV4cCgtdCkpLzJ9dmFyIG09ZCgwKTtmdW5jdGlvbiBmKHQpe3JldHVybiBoKihwKG0pKihfKHQ9bSt1KnQpL3AodCkpLV8obSkpL2N9dmFyIGc9RGF0ZS5ub3coKSx2PShkKDEpLW0pL3UseT10LmR1cmF0aW9uPzFlMyp0LmR1cmF0aW9uOjFlMyp2Ki44O3JldHVybiB0aGlzLl9tb3ZlU3RhcnQoITAsdC5ub01vdmVTdGFydCksZnVuY3Rpb24gdCgpe3ZhciBlPShEYXRlLm5vdygpLWcpL3ksaT0oMS1NYXRoLnBvdygxLWUsMS41KSkqdjtlPD0xPyh0aGlzLl9mbHlUb0ZyYW1lPXgodCx0aGlzKSx0aGlzLl9tb3ZlKHRoaXMudW5wcm9qZWN0KHMuYWRkKHIuc3VidHJhY3QocykubXVsdGlwbHlCeShmKGkpL2wpKSxhKSx0aGlzLmdldFNjYWxlWm9vbShoLyhlPWksaCoocChtKS9wKG0rdSplKSkpLGEpLHtmbHlUbzohMH0pKTp0aGlzLl9tb3ZlKG4sbykuX21vdmVFbmQoITApfS5jYWxsKHRoaXMpLHRoaXN9LGZseVRvQm91bmRzOmZ1bmN0aW9uKHQsZSl7dD10aGlzLl9nZXRCb3VuZHNDZW50ZXJab29tKHQsZSk7cmV0dXJuIHRoaXMuZmx5VG8odC5jZW50ZXIsdC56b29tLGUpfSxzZXRNYXhCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9Zyh0KSx0aGlzLmxpc3RlbnMoXCJtb3ZlZW5kXCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKSYmdGhpcy5vZmYoXCJtb3ZlZW5kXCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKSx0LmlzVmFsaWQoKT8odGhpcy5vcHRpb25zLm1heEJvdW5kcz10LHRoaXMuX2xvYWRlZCYmdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKCksdGhpcy5vbihcIm1vdmVlbmRcIix0aGlzLl9wYW5JbnNpZGVNYXhCb3VuZHMpKToodGhpcy5vcHRpb25zLm1heEJvdW5kcz1udWxsLHRoaXMpfSxzZXRNaW5ab29tOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucy5taW5ab29tO3JldHVybiB0aGlzLm9wdGlvbnMubWluWm9vbT10LHRoaXMuX2xvYWRlZCYmZSE9PXQmJih0aGlzLmZpcmUoXCJ6b29tbGV2ZWxzY2hhbmdlXCIpLHRoaXMuZ2V0Wm9vbSgpPHRoaXMub3B0aW9ucy5taW5ab29tKT90aGlzLnNldFpvb20odCk6dGhpc30sc2V0TWF4Wm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209dCx0aGlzLl9sb2FkZWQmJmUhPT10JiYodGhpcy5maXJlKFwiem9vbWxldmVsc2NoYW5nZVwiKSx0aGlzLmdldFpvb20oKT50aGlzLm9wdGlvbnMubWF4Wm9vbSk/dGhpcy5zZXRab29tKHQpOnRoaXN9LHBhbkluc2lkZUJvdW5kczpmdW5jdGlvbih0LGUpe3RoaXMuX2VuZm9yY2luZ0JvdW5kcz0hMDt2YXIgaT10aGlzLmdldENlbnRlcigpLHQ9dGhpcy5fbGltaXRDZW50ZXIoaSx0aGlzLl96b29tLGcodCkpO3JldHVybiBpLmVxdWFscyh0KXx8dGhpcy5wYW5Ubyh0LGUpLHRoaXMuX2VuZm9yY2luZ0JvdW5kcz0hMSx0aGlzfSxwYW5JbnNpZGU6ZnVuY3Rpb24odCxlKXt2YXIgaT1tKChlPWV8fHt9KS5wYWRkaW5nVG9wTGVmdHx8ZS5wYWRkaW5nfHxbMCwwXSksbj1tKGUucGFkZGluZ0JvdHRvbVJpZ2h0fHxlLnBhZGRpbmd8fFswLDBdKSxvPXRoaXMucHJvamVjdCh0aGlzLmdldENlbnRlcigpKSx0PXRoaXMucHJvamVjdCh0KSxzPXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKSxpPV8oW3MubWluLmFkZChpKSxzLm1heC5zdWJ0cmFjdChuKV0pLHM9aS5nZXRTaXplKCk7cmV0dXJuIGkuY29udGFpbnModCl8fCh0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITAsbj10LnN1YnRyYWN0KGkuZ2V0Q2VudGVyKCkpLGk9aS5leHRlbmQodCkuZ2V0U2l6ZSgpLnN1YnRyYWN0KHMpLG8ueCs9bi54PDA/LWkueDppLngsby55Kz1uLnk8MD8taS55OmkueSx0aGlzLnBhblRvKHRoaXMudW5wcm9qZWN0KG8pLGUpLHRoaXMuX2VuZm9yY2luZ0JvdW5kcz0hMSksdGhpc30saW52YWxpZGF0ZVNpemU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4gdGhpczt0PWwoe2FuaW1hdGU6ITEscGFuOiEwfSwhMD09PXQ/e2FuaW1hdGU6ITB9OnQpO3ZhciBlPXRoaXMuZ2V0U2l6ZSgpLGk9KHRoaXMuX3NpemVDaGFuZ2VkPSEwLHRoaXMuX2xhc3RDZW50ZXI9bnVsbCx0aGlzLmdldFNpemUoKSksbj1lLmRpdmlkZUJ5KDIpLnJvdW5kKCksbz1pLmRpdmlkZUJ5KDIpLnJvdW5kKCksbj1uLnN1YnRyYWN0KG8pO3JldHVybiBuLnh8fG4ueT8odC5hbmltYXRlJiZ0LnBhbj90aGlzLnBhbkJ5KG4pOih0LnBhbiYmdGhpcy5fcmF3UGFuQnkobiksdGhpcy5maXJlKFwibW92ZVwiKSx0LmRlYm91bmNlTW92ZWVuZD8oY2xlYXJUaW1lb3V0KHRoaXMuX3NpemVUaW1lciksdGhpcy5fc2l6ZVRpbWVyPXNldFRpbWVvdXQoYSh0aGlzLmZpcmUsdGhpcyxcIm1vdmVlbmRcIiksMjAwKSk6dGhpcy5maXJlKFwibW92ZWVuZFwiKSksdGhpcy5maXJlKFwicmVzaXplXCIse29sZFNpemU6ZSxuZXdTaXplOml9KSk6dGhpc30sc3RvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFpvb20odGhpcy5fbGltaXRab29tKHRoaXMuX3pvb20pKSx0aGlzLm9wdGlvbnMuem9vbVNuYXB8fHRoaXMuZmlyZShcInZpZXdyZXNldFwiKSx0aGlzLl9zdG9wKCl9LGxvY2F0ZTpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiB0PXRoaXMuX2xvY2F0ZU9wdGlvbnM9bCh7dGltZW91dDoxZTQsd2F0Y2g6ITF9LHQpLFwiZ2VvbG9jYXRpb25cImluIG5hdmlnYXRvcj8oZT1hKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2UsdGhpcyksaT1hKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uRXJyb3IsdGhpcyksdC53YXRjaD90aGlzLl9sb2NhdGlvbldhdGNoSWQ9bmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZSxpLHQpOm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZSxpLHQpKTp0aGlzLl9oYW5kbGVHZW9sb2NhdGlvbkVycm9yKHtjb2RlOjAsbWVzc2FnZTpcIkdlb2xvY2F0aW9uIG5vdCBzdXBwb3J0ZWQuXCJ9KSx0aGlzfSxzdG9wTG9jYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG5hdmlnYXRvci5nZW9sb2NhdGlvbiYmbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2gmJm5hdmlnYXRvci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHRoaXMuX2xvY2F0aW9uV2F0Y2hJZCksdGhpcy5fbG9jYXRlT3B0aW9ucyYmKHRoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0Vmlldz0hMSksdGhpc30sX2hhbmRsZUdlb2xvY2F0aW9uRXJyb3I6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkJiYoZT10LmNvZGUsdD10Lm1lc3NhZ2V8fCgxPT09ZT9cInBlcm1pc3Npb24gZGVuaWVkXCI6Mj09PWU/XCJwb3NpdGlvbiB1bmF2YWlsYWJsZVwiOlwidGltZW91dFwiKSx0aGlzLl9sb2NhdGVPcHRpb25zLnNldFZpZXcmJiF0aGlzLl9sb2FkZWQmJnRoaXMuZml0V29ybGQoKSx0aGlzLmZpcmUoXCJsb2NhdGlvbmVycm9yXCIse2NvZGU6ZSxtZXNzYWdlOlwiR2VvbG9jYXRpb24gZXJyb3I6IFwiK3QrXCIuXCJ9KSl9LF9oYW5kbGVHZW9sb2NhdGlvblJlc3BvbnNlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZCl7dmFyIGUsaSxuPW5ldyB2KHQuY29vcmRzLmxhdGl0dWRlLHQuY29vcmRzLmxvbmdpdHVkZSksbz1uLnRvQm91bmRzKDIqdC5jb29yZHMuYWNjdXJhY3kpLHM9dGhpcy5fbG9jYXRlT3B0aW9ucyxyPShzLnNldFZpZXcmJihlPXRoaXMuZ2V0Qm91bmRzWm9vbShvKSx0aGlzLnNldFZpZXcobixzLm1heFpvb20/TWF0aC5taW4oZSxzLm1heFpvb20pOmUpKSx7bGF0bG5nOm4sYm91bmRzOm8sdGltZXN0YW1wOnQudGltZXN0YW1wfSk7Zm9yKGkgaW4gdC5jb29yZHMpXCJudW1iZXJcIj09dHlwZW9mIHQuY29vcmRzW2ldJiYocltpXT10LmNvb3Jkc1tpXSk7dGhpcy5maXJlKFwibG9jYXRpb25mb3VuZFwiLHIpfX0sYWRkSGFuZGxlcjpmdW5jdGlvbih0LGUpe3JldHVybiBlJiYoZT10aGlzW3RdPW5ldyBlKHRoaXMpLHRoaXMuX2hhbmRsZXJzLnB1c2goZSksdGhpcy5vcHRpb25zW3RdJiZlLmVuYWJsZSgpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtpZih0aGlzLl9pbml0RXZlbnRzKCEwKSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzJiZ0aGlzLm9mZihcIm1vdmVlbmRcIix0aGlzLl9wYW5JbnNpZGVNYXhCb3VuZHMpLHRoaXMuX2NvbnRhaW5lcklkIT09dGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkKXRocm93IG5ldyBFcnJvcihcIk1hcCBjb250YWluZXIgaXMgYmVpbmcgcmV1c2VkIGJ5IGFub3RoZXIgaW5zdGFuY2VcIik7dHJ5e2RlbGV0ZSB0aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQsZGVsZXRlIHRoaXMuX2NvbnRhaW5lcklkfWNhdGNoKHQpe3RoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZD12b2lkIDAsdGhpcy5fY29udGFpbmVySWQ9dm9pZCAwfWZvcih2YXIgdCBpbiB2b2lkIDAhPT10aGlzLl9sb2NhdGlvbldhdGNoSWQmJnRoaXMuc3RvcExvY2F0ZSgpLHRoaXMuX3N0b3AoKSxUKHRoaXMuX21hcFBhbmUpLHRoaXMuX2NsZWFyQ29udHJvbFBvcyYmdGhpcy5fY2xlYXJDb250cm9sUG9zKCksdGhpcy5fcmVzaXplUmVxdWVzdCYmKHIodGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1udWxsKSx0aGlzLl9jbGVhckhhbmRsZXJzKCksdGhpcy5fbG9hZGVkJiZ0aGlzLmZpcmUoXCJ1bmxvYWRcIiksdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5yZW1vdmUoKTtmb3IodCBpbiB0aGlzLl9wYW5lcylUKHRoaXMuX3BhbmVzW3RdKTtyZXR1cm4gdGhpcy5fbGF5ZXJzPVtdLHRoaXMuX3BhbmVzPVtdLGRlbGV0ZSB0aGlzLl9tYXBQYW5lLGRlbGV0ZSB0aGlzLl9yZW5kZXJlcix0aGlzfSxjcmVhdGVQYW5lOmZ1bmN0aW9uKHQsZSl7ZT1QKFwiZGl2XCIsXCJsZWFmbGV0LXBhbmVcIisodD9cIiBsZWFmbGV0LVwiK3QucmVwbGFjZShcIlBhbmVcIixcIlwiKStcIi1wYW5lXCI6XCJcIiksZXx8dGhpcy5fbWFwUGFuZSk7cmV0dXJuIHQmJih0aGlzLl9wYW5lc1t0XT1lKSxlfSxnZXRDZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX2xhc3RDZW50ZXImJiF0aGlzLl9tb3ZlZCgpP3RoaXMuX2xhc3RDZW50ZXIuY2xvbmUoKTp0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpfSxnZXRab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKTtyZXR1cm4gbmV3IHModGhpcy51bnByb2plY3QodC5nZXRCb3R0b21MZWZ0KCkpLHRoaXMudW5wcm9qZWN0KHQuZ2V0VG9wUmlnaHQoKSkpfSxnZXRNaW5ab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9ucy5taW5ab29tP3RoaXMuX2xheWVyc01pblpvb218fDA6dGhpcy5vcHRpb25zLm1pblpvb219LGdldE1heFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zLm1heFpvb20/dm9pZCAwPT09dGhpcy5fbGF5ZXJzTWF4Wm9vbT8xLzA6dGhpcy5fbGF5ZXJzTWF4Wm9vbTp0aGlzLm9wdGlvbnMubWF4Wm9vbX0sZ2V0Qm91bmRzWm9vbTpmdW5jdGlvbih0LGUsaSl7dD1nKHQpLGk9bShpfHxbMCwwXSk7dmFyIG49dGhpcy5nZXRab29tKCl8fDAsbz10aGlzLmdldE1pblpvb20oKSxzPXRoaXMuZ2V0TWF4Wm9vbSgpLHI9dC5nZXROb3J0aFdlc3QoKSx0PXQuZ2V0U291dGhFYXN0KCksaT10aGlzLmdldFNpemUoKS5zdWJ0cmFjdChpKSx0PV8odGhpcy5wcm9qZWN0KHQsbiksdGhpcy5wcm9qZWN0KHIsbikpLmdldFNpemUoKSxyPWIuYW55M2Q/dGhpcy5vcHRpb25zLnpvb21TbmFwOjEsYT1pLngvdC54LGk9aS55L3QueSx0PWU/TWF0aC5tYXgoYSxpKTpNYXRoLm1pbihhLGkpLG49dGhpcy5nZXRTY2FsZVpvb20odCxuKTtyZXR1cm4gciYmKG49TWF0aC5yb3VuZChuLyhyLzEwMCkpKihyLzEwMCksbj1lP01hdGguY2VpbChuL3IpKnI6TWF0aC5mbG9vcihuL3IpKnIpLE1hdGgubWF4KG8sTWF0aC5taW4ocyxuKSl9LGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZSYmIXRoaXMuX3NpemVDaGFuZ2VkfHwodGhpcy5fc2l6ZT1uZXcgcCh0aGlzLl9jb250YWluZXIuY2xpZW50V2lkdGh8fDAsdGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodHx8MCksdGhpcy5fc2l6ZUNoYW5nZWQ9ITEpLHRoaXMuX3NpemUuY2xvbmUoKX0sZ2V0UGl4ZWxCb3VuZHM6ZnVuY3Rpb24odCxlKXt0PXRoaXMuX2dldFRvcExlZnRQb2ludCh0LGUpO3JldHVybiBuZXcgZih0LHQuYWRkKHRoaXMuZ2V0U2l6ZSgpKSl9LGdldFBpeGVsT3JpZ2luOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoZWNrSWZMb2FkZWQoKSx0aGlzLl9waXhlbE9yaWdpbn0sZ2V0UGl4ZWxXb3JsZEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmNycy5nZXRQcm9qZWN0ZWRCb3VuZHModm9pZCAwPT09dD90aGlzLmdldFpvb20oKTp0KX0sZ2V0UGFuZTpmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD90aGlzLl9wYW5lc1t0XTp0fSxnZXRQYW5lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYW5lc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sZ2V0Wm9vbVNjYWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gZT12b2lkIDA9PT1lP3RoaXMuX3pvb206ZSxpLnNjYWxlKHQpL2kuc2NhbGUoZSl9LGdldFNjYWxlWm9vbTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5jcnMsdD0oZT12b2lkIDA9PT1lP3RoaXMuX3pvb206ZSxpLnpvb20odCppLnNjYWxlKGUpKSk7cmV0dXJuIGlzTmFOKHQpPzEvMDp0fSxwcm9qZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9dm9pZCAwPT09ZT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KHcodCksZSl9LHVucHJvamVjdDpmdW5jdGlvbih0LGUpe3JldHVybiBlPXZvaWQgMD09PWU/dGhpcy5fem9vbTplLHRoaXMub3B0aW9ucy5jcnMucG9pbnRUb0xhdExuZyhtKHQpLGUpfSxsYXllclBvaW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7dD1tKHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdCh0KX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2plY3Qodyh0KSkuX3JvdW5kKCkuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LHdyYXBMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5jcnMud3JhcExhdExuZyh3KHQpKX0sd3JhcExhdExuZ0JvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmNycy53cmFwTGF0TG5nQm91bmRzKGcodCkpfSxkaXN0YW5jZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmRpc3RhbmNlKHcodCksdyhlKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtKHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtKHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3Q9dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChtKHQpKTtyZXR1cm4gdGhpcy5sYXllclBvaW50VG9MYXRMbmcodCl9LGxhdExuZ1RvQ29udGFpbmVyUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQodGhpcy5sYXRMbmdUb0xheWVyUG9pbnQodyh0KSkpfSxtb3VzZUV2ZW50VG9Db250YWluZXJQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gRGUodCx0aGlzLl9jb250YWluZXIpfSxtb3VzZUV2ZW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCkpfSxtb3VzZUV2ZW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fY29udGFpbmVyPV9lKHQpO2lmKCF0KXRocm93IG5ldyBFcnJvcihcIk1hcCBjb250YWluZXIgbm90IGZvdW5kLlwiKTtpZih0Ll9sZWFmbGV0X2lkKXRocm93IG5ldyBFcnJvcihcIk1hcCBjb250YWluZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC5cIik7Uyh0LFwic2Nyb2xsXCIsdGhpcy5fb25TY3JvbGwsdGhpcyksdGhpcy5fY29udGFpbmVySWQ9aCh0KX0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIsZT0odGhpcy5fZmFkZUFuaW1hdGVkPXRoaXMub3B0aW9ucy5mYWRlQW5pbWF0aW9uJiZiLmFueTNkLE0odCxcImxlYWZsZXQtY29udGFpbmVyXCIrKGIudG91Y2g/XCIgbGVhZmxldC10b3VjaFwiOlwiXCIpKyhiLnJldGluYT9cIiBsZWFmbGV0LXJldGluYVwiOlwiXCIpKyhiLmllbHQ5P1wiIGxlYWZsZXQtb2xkaWVcIjpcIlwiKSsoYi5zYWZhcmk/XCIgbGVhZmxldC1zYWZhcmlcIjpcIlwiKSsodGhpcy5fZmFkZUFuaW1hdGVkP1wiIGxlYWZsZXQtZmFkZS1hbmltXCI6XCJcIikpLHBlKHQsXCJwb3NpdGlvblwiKSk7XCJhYnNvbHV0ZVwiIT09ZSYmXCJyZWxhdGl2ZVwiIT09ZSYmXCJmaXhlZFwiIT09ZSYmXCJzdGlja3lcIiE9PWUmJih0LnN0eWxlLnBvc2l0aW9uPVwicmVsYXRpdmVcIiksdGhpcy5faW5pdFBhbmVzKCksdGhpcy5faW5pdENvbnRyb2xQb3MmJnRoaXMuX2luaXRDb250cm9sUG9zKCl9LF9pbml0UGFuZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYW5lcz17fTt0aGlzLl9wYW5lUmVuZGVyZXJzPXt9LHRoaXMuX21hcFBhbmU9dGhpcy5jcmVhdGVQYW5lKFwibWFwUGFuZVwiLHRoaXMuX2NvbnRhaW5lciksWih0aGlzLl9tYXBQYW5lLG5ldyBwKDAsMCkpLHRoaXMuY3JlYXRlUGFuZShcInRpbGVQYW5lXCIpLHRoaXMuY3JlYXRlUGFuZShcIm92ZXJsYXlQYW5lXCIpLHRoaXMuY3JlYXRlUGFuZShcInNoYWRvd1BhbmVcIiksdGhpcy5jcmVhdGVQYW5lKFwibWFya2VyUGFuZVwiKSx0aGlzLmNyZWF0ZVBhbmUoXCJ0b29sdGlwUGFuZVwiKSx0aGlzLmNyZWF0ZVBhbmUoXCJwb3B1cFBhbmVcIiksdGhpcy5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb258fChNKHQubWFya2VyUGFuZSxcImxlYWZsZXQtem9vbS1oaWRlXCIpLE0odC5zaGFkb3dQYW5lLFwibGVhZmxldC16b29tLWhpZGVcIikpfSxfcmVzZXRWaWV3OmZ1bmN0aW9uKHQsZSxpKXtaKHRoaXMuX21hcFBhbmUsbmV3IHAoMCwwKSk7dmFyIG49IXRoaXMuX2xvYWRlZCxvPSh0aGlzLl9sb2FkZWQ9ITAsZT10aGlzLl9saW1pdFpvb20oZSksdGhpcy5maXJlKFwidmlld3ByZXJlc2V0XCIpLHRoaXMuX3pvb20hPT1lKTt0aGlzLl9tb3ZlU3RhcnQobyxpKS5fbW92ZSh0LGUpLl9tb3ZlRW5kKG8pLHRoaXMuZmlyZShcInZpZXdyZXNldFwiKSxuJiZ0aGlzLmZpcmUoXCJsb2FkXCIpfSxfbW92ZVN0YXJ0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJnRoaXMuZmlyZShcInpvb21zdGFydFwiKSxlfHx0aGlzLmZpcmUoXCJtb3Zlc3RhcnRcIiksdGhpc30sX21vdmU6ZnVuY3Rpb24odCxlLGksbil7dm9pZCAwPT09ZSYmKGU9dGhpcy5fem9vbSk7dmFyIG89dGhpcy5fem9vbSE9PWU7cmV0dXJuIHRoaXMuX3pvb209ZSx0aGlzLl9sYXN0Q2VudGVyPXQsdGhpcy5fcGl4ZWxPcmlnaW49dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4odCksbj9pJiZpLnBpbmNoJiZ0aGlzLmZpcmUoXCJ6b29tXCIsaSk6KChvfHxpJiZpLnBpbmNoKSYmdGhpcy5maXJlKFwiem9vbVwiLGkpLHRoaXMuZmlyZShcIm1vdmVcIixpKSksdGhpc30sX21vdmVFbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnRoaXMuZmlyZShcInpvb21lbmRcIiksdGhpcy5maXJlKFwibW92ZWVuZFwiKX0sX3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9mbHlUb0ZyYW1lKSx0aGlzLl9wYW5BbmltJiZ0aGlzLl9wYW5BbmltLnN0b3AoKSx0aGlzfSxfcmF3UGFuQnk6ZnVuY3Rpb24odCl7Wih0aGlzLl9tYXBQYW5lLHRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KSl9LF9nZXRab29tU3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1heFpvb20oKS10aGlzLmdldE1pblpvb20oKX0sX3Bhbkluc2lkZU1heEJvdW5kczpmdW5jdGlvbigpe3RoaXMuX2VuZm9yY2luZ0JvdW5kc3x8dGhpcy5wYW5JbnNpZGVCb3VuZHModGhpcy5vcHRpb25zLm1heEJvdW5kcyl9LF9jaGVja0lmTG9hZGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xvYWRlZCl0aHJvdyBuZXcgRXJyb3IoXCJTZXQgbWFwIGNlbnRlciBhbmQgem9vbSBmaXJzdC5cIil9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldHM9e307dmFyIGU9dD9rOlM7ZSgodGhpcy5fdGFyZ2V0c1toKHRoaXMuX2NvbnRhaW5lcildPXRoaXMpLl9jb250YWluZXIsXCJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2Vtb3ZlIGNvbnRleHRtZW51IGtleXByZXNzIGtleWRvd24ga2V5dXBcIix0aGlzLl9oYW5kbGVET01FdmVudCx0aGlzKSx0aGlzLm9wdGlvbnMudHJhY2tSZXNpemUmJmUod2luZG93LFwicmVzaXplXCIsdGhpcy5fb25SZXNpemUsdGhpcyksYi5hbnkzZCYmdGhpcy5vcHRpb25zLnRyYW5zZm9ybTNETGltaXQmJih0P3RoaXMub2ZmOnRoaXMub24pLmNhbGwodGhpcyxcIm1vdmVlbmRcIix0aGlzLl9vbk1vdmVFbmQpfSxfb25SZXNpemU6ZnVuY3Rpb24oKXtyKHRoaXMuX3Jlc2l6ZVJlcXVlc3QpLHRoaXMuX3Jlc2l6ZVJlcXVlc3Q9eChmdW5jdGlvbigpe3RoaXMuaW52YWxpZGF0ZVNpemUoe2RlYm91bmNlTW92ZWVuZDohMH0pfSx0aGlzKX0sX29uU2Nyb2xsOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyLnNjcm9sbFRvcD0wLHRoaXMuX2NvbnRhaW5lci5zY3JvbGxMZWZ0PTB9LF9vbk1vdmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRNYXBQYW5lUG9zKCk7TWF0aC5tYXgoTWF0aC5hYnModC54KSxNYXRoLmFicyh0LnkpKT49dGhpcy5vcHRpb25zLnRyYW5zZm9ybTNETGltaXQmJnRoaXMuX3Jlc2V0Vmlldyh0aGlzLmdldENlbnRlcigpLHRoaXMuZ2V0Wm9vbSgpKX0sX2ZpbmRFdmVudFRhcmdldHM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGksbj1bXSxvPVwibW91c2VvdXRcIj09PWV8fFwibW91c2VvdmVyXCI9PT1lLHM9dC50YXJnZXR8fHQuc3JjRWxlbWVudCxyPSExO3M7KXtpZigoaT10aGlzLl90YXJnZXRzW2gocyldKSYmKFwiY2xpY2tcIj09PWV8fFwicHJlY2xpY2tcIj09PWUpJiZ0aGlzLl9kcmFnZ2FibGVNb3ZlZChpKSl7cj0hMDticmVha31pZihpJiZpLmxpc3RlbnMoZSwhMCkpe2lmKG8mJiFXZShzLHQpKWJyZWFrO2lmKG4ucHVzaChpKSxvKWJyZWFrfWlmKHM9PT10aGlzLl9jb250YWluZXIpYnJlYWs7cz1zLnBhcmVudE5vZGV9cmV0dXJuIG49bi5sZW5ndGh8fHJ8fG98fCF0aGlzLmxpc3RlbnMoZSwhMCk/bjpbdGhpc119LF9pc0NsaWNrRGlzYWJsZWQ6ZnVuY3Rpb24odCl7Zm9yKDt0JiZ0IT09dGhpcy5fY29udGFpbmVyOyl7aWYodC5fbGVhZmxldF9kaXNhYmxlX2NsaWNrKXJldHVybiEwO3Q9dC5wYXJlbnROb2RlfX0sX2hhbmRsZURPTUV2ZW50OmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC50YXJnZXR8fHQuc3JjRWxlbWVudDshdGhpcy5fbG9hZGVkfHxpLl9sZWFmbGV0X2Rpc2FibGVfZXZlbnRzfHxcImNsaWNrXCI9PT10LnR5cGUmJnRoaXMuX2lzQ2xpY2tEaXNhYmxlZChpKXx8KFwibW91c2Vkb3duXCI9PT0oZT10LnR5cGUpJiZNZShpKSx0aGlzLl9maXJlRE9NRXZlbnQodCxlKSl9LF9tb3VzZUV2ZW50czpbXCJjbGlja1wiLFwiZGJsY2xpY2tcIixcIm1vdXNlb3ZlclwiLFwibW91c2VvdXRcIixcImNvbnRleHRtZW51XCJdLF9maXJlRE9NRXZlbnQ6ZnVuY3Rpb24odCxlLGkpe1wiY2xpY2tcIj09PXQudHlwZSYmKChhPWwoe30sdCkpLnR5cGU9XCJwcmVjbGlja1wiLHRoaXMuX2ZpcmVET01FdmVudChhLGEudHlwZSxpKSk7dmFyIG49dGhpcy5fZmluZEV2ZW50VGFyZ2V0cyh0LGUpO2lmKGkpe2Zvcih2YXIgbz1bXSxzPTA7czxpLmxlbmd0aDtzKyspaVtzXS5saXN0ZW5zKGUsITApJiZvLnB1c2goaVtzXSk7bj1vLmNvbmNhdChuKX1pZihuLmxlbmd0aCl7XCJjb250ZXh0bWVudVwiPT09ZSYmTyh0KTt2YXIgcixhPW5bMF0saD17b3JpZ2luYWxFdmVudDp0fTtmb3IoXCJrZXlwcmVzc1wiIT09dC50eXBlJiZcImtleWRvd25cIiE9PXQudHlwZSYmXCJrZXl1cFwiIT09dC50eXBlJiYocj1hLmdldExhdExuZyYmKCFhLl9yYWRpdXN8fGEuX3JhZGl1czw9MTApLGguY29udGFpbmVyUG9pbnQ9cj90aGlzLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQoYS5nZXRMYXRMbmcoKSk6dGhpcy5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSxoLmxheWVyUG9pbnQ9dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChoLmNvbnRhaW5lclBvaW50KSxoLmxhdGxuZz1yP2EuZ2V0TGF0TG5nKCk6dGhpcy5sYXllclBvaW50VG9MYXRMbmcoaC5sYXllclBvaW50KSkscz0wO3M8bi5sZW5ndGg7cysrKWlmKG5bc10uZmlyZShlLGgsITApLGgub3JpZ2luYWxFdmVudC5fc3RvcHBlZHx8ITE9PT1uW3NdLm9wdGlvbnMuYnViYmxpbmdNb3VzZUV2ZW50cyYmLTEhPT1HKHRoaXMuX21vdXNlRXZlbnRzLGUpKXJldHVybn19LF9kcmFnZ2FibGVNb3ZlZDpmdW5jdGlvbih0KXtyZXR1cm4odD10LmRyYWdnaW5nJiZ0LmRyYWdnaW5nLmVuYWJsZWQoKT90OnRoaXMpLmRyYWdnaW5nJiZ0LmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuYm94Wm9vbSYmdGhpcy5ib3hab29tLm1vdmVkKCl9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9oYW5kbGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ/dC5jYWxsKGV8fHRoaXMse3RhcmdldDp0aGlzfSk6dGhpcy5vbihcImxvYWRcIix0LGUpLHRoaXN9LF9nZXRNYXBQYW5lUG9zOmZ1bmN0aW9uKCl7cmV0dXJuIFBlKHRoaXMuX21hcFBhbmUpfHxuZXcgcCgwLDApfSxfbW92ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRNYXBQYW5lUG9zKCk7cmV0dXJuIHQmJiF0LmVxdWFscyhbMCwwXSl9LF9nZXRUb3BMZWZ0UG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4odCYmdm9pZCAwIT09ZT90aGlzLl9nZXROZXdQaXhlbE9yaWdpbih0LGUpOnRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSkuc3VidHJhY3QodGhpcy5fZ2V0TWFwUGFuZVBvcygpKX0sX2dldE5ld1BpeGVsT3JpZ2luOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpO3JldHVybiB0aGlzLnByb2plY3QodCxlKS5fc3VidHJhY3QoaSkuX2FkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpLl9yb3VuZCgpfSxfbGF0TG5nVG9OZXdMYXllclBvaW50OmZ1bmN0aW9uKHQsZSxpKXtpPXRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKGksZSk7cmV0dXJuIHRoaXMucHJvamVjdCh0LGUpLl9zdWJ0cmFjdChpKX0sX2xhdExuZ0JvdW5kc1RvTmV3TGF5ZXJCb3VuZHM6ZnVuY3Rpb24odCxlLGkpe2k9dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4oaSxlKTtyZXR1cm4gXyhbdGhpcy5wcm9qZWN0KHQuZ2V0U291dGhXZXN0KCksZSkuX3N1YnRyYWN0KGkpLHRoaXMucHJvamVjdCh0LmdldE5vcnRoV2VzdCgpLGUpLl9zdWJ0cmFjdChpKSx0aGlzLnByb2plY3QodC5nZXRTb3V0aEVhc3QoKSxlKS5fc3VidHJhY3QoaSksdGhpcy5wcm9qZWN0KHQuZ2V0Tm9ydGhFYXN0KCksZSkuX3N1YnRyYWN0KGkpXSl9LF9nZXRDZW50ZXJMYXllclBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQodGhpcy5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpKX0sX2dldENlbnRlck9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sYXRMbmdUb0xheWVyUG9pbnQodCkuc3VidHJhY3QodGhpcy5fZ2V0Q2VudGVyTGF5ZXJQb2ludCgpKX0sX2xpbWl0Q2VudGVyOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvO3JldHVybiFpfHwobj10aGlzLnByb2plY3QodCxlKSxvPXRoaXMuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLG89bmV3IGYobi5zdWJ0cmFjdChvKSxuLmFkZChvKSksbz10aGlzLl9nZXRCb3VuZHNPZmZzZXQobyxpLGUpLE1hdGguYWJzKG8ueCk8PTEmJk1hdGguYWJzKG8ueSk8PTEpP3Q6dGhpcy51bnByb2plY3Qobi5hZGQobyksZSl9LF9saW1pdE9mZnNldDpmdW5jdGlvbih0LGUpe3ZhciBpO3JldHVybiBlPyhpPW5ldyBmKChpPXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKSkubWluLmFkZCh0KSxpLm1heC5hZGQodCkpLHQuYWRkKHRoaXMuX2dldEJvdW5kc09mZnNldChpLGUpKSk6dH0sX2dldEJvdW5kc09mZnNldDpmdW5jdGlvbih0LGUsaSl7ZT1fKHRoaXMucHJvamVjdChlLmdldE5vcnRoRWFzdCgpLGkpLHRoaXMucHJvamVjdChlLmdldFNvdXRoV2VzdCgpLGkpKSxpPWUubWluLnN1YnRyYWN0KHQubWluKSxlPWUubWF4LnN1YnRyYWN0KHQubWF4KTtyZXR1cm4gbmV3IHAodGhpcy5fcmVib3VuZChpLngsLWUueCksdGhpcy5fcmVib3VuZChpLnksLWUueSkpfSxfcmVib3VuZDpmdW5jdGlvbih0LGUpe3JldHVybiAwPHQrZT9NYXRoLnJvdW5kKHQtZSkvMjpNYXRoLm1heCgwLE1hdGguY2VpbCh0KSktTWF0aC5tYXgoMCxNYXRoLmZsb29yKGUpKX0sX2xpbWl0Wm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldE1pblpvb20oKSxpPXRoaXMuZ2V0TWF4Wm9vbSgpLG49Yi5hbnkzZD90aGlzLm9wdGlvbnMuem9vbVNuYXA6MTtyZXR1cm4gbiYmKHQ9TWF0aC5yb3VuZCh0L24pKm4pLE1hdGgubWF4KGUsTWF0aC5taW4oaSx0KSl9LF9vblBhblRyYW5zaXRpb25TdGVwOmZ1bmN0aW9uKCl7dGhpcy5maXJlKFwibW92ZVwiKX0sX29uUGFuVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3oodGhpcy5fbWFwUGFuZSxcImxlYWZsZXQtcGFuLWFuaW1cIiksdGhpcy5maXJlKFwibW92ZWVuZFwiKX0sX3RyeUFuaW1hdGVkUGFuOmZ1bmN0aW9uKHQsZSl7dD10aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX3RydW5jKCk7cmV0dXJuISghMCE9PShlJiZlLmFuaW1hdGUpJiYhdGhpcy5nZXRTaXplKCkuY29udGFpbnModCkpJiYodGhpcy5wYW5CeSh0LGUpLCEwKX0sX2NyZWF0ZUFuaW1Qcm94eTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb3h5PVAoXCJkaXZcIixcImxlYWZsZXQtcHJveHkgbGVhZmxldC16b29tLWFuaW1hdGVkXCIpO3RoaXMuX3BhbmVzLm1hcFBhbmUuYXBwZW5kQ2hpbGQodCksdGhpcy5vbihcInpvb21hbmltXCIsZnVuY3Rpb24odCl7dmFyIGU9dWUsaT10aGlzLl9wcm94eS5zdHlsZVtlXTtiZSh0aGlzLl9wcm94eSx0aGlzLnByb2plY3QodC5jZW50ZXIsdC56b29tKSx0aGlzLmdldFpvb21TY2FsZSh0Lnpvb20sMSkpLGk9PT10aGlzLl9wcm94eS5zdHlsZVtlXSYmdGhpcy5fYW5pbWF0aW5nWm9vbSYmdGhpcy5fb25ab29tVHJhbnNpdGlvbkVuZCgpfSx0aGlzKSx0aGlzLm9uKFwibG9hZCBtb3ZlZW5kXCIsdGhpcy5fYW5pbU1vdmVFbmQsdGhpcyksdGhpcy5fb24oXCJ1bmxvYWRcIix0aGlzLl9kZXN0cm95QW5pbVByb3h5LHRoaXMpfSxfZGVzdHJveUFuaW1Qcm94eTpmdW5jdGlvbigpe1QodGhpcy5fcHJveHkpLHRoaXMub2ZmKFwibG9hZCBtb3ZlZW5kXCIsdGhpcy5fYW5pbU1vdmVFbmQsdGhpcyksZGVsZXRlIHRoaXMuX3Byb3h5fSxfYW5pbU1vdmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldENlbnRlcigpLGU9dGhpcy5nZXRab29tKCk7YmUodGhpcy5fcHJveHksdGhpcy5wcm9qZWN0KHQsZSksdGhpcy5nZXRab29tU2NhbGUoZSwxKSl9LF9jYXRjaFRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7dGhpcy5fYW5pbWF0aW5nWm9vbSYmMDw9dC5wcm9wZXJ0eU5hbWUuaW5kZXhPZihcInRyYW5zZm9ybVwiKSYmdGhpcy5fb25ab29tVHJhbnNpdGlvbkVuZCgpfSxfbm90aGluZ1RvQW5pbWF0ZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLl9jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxlYWZsZXQtem9vbS1hbmltYXRlZFwiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxlLGkpe2lmKCF0aGlzLl9hbmltYXRpbmdab29tKXtpZihpPWl8fHt9LCF0aGlzLl96b29tQW5pbWF0ZWR8fCExPT09aS5hbmltYXRlfHx0aGlzLl9ub3RoaW5nVG9BbmltYXRlKCl8fE1hdGguYWJzKGUtdGhpcy5fem9vbSk+dGhpcy5vcHRpb25zLnpvb21BbmltYXRpb25UaHJlc2hvbGQpcmV0dXJuITE7dmFyIG49dGhpcy5nZXRab29tU2NhbGUoZSksbj10aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX2RpdmlkZUJ5KDEtMS9uKTtpZighMCE9PWkuYW5pbWF0ZSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG4pKXJldHVybiExO3goZnVuY3Rpb24oKXt0aGlzLl9tb3ZlU3RhcnQoITAsaS5ub01vdmVTdGFydHx8ITEpLl9hbmltYXRlWm9vbSh0LGUsITApfSx0aGlzKX1yZXR1cm4hMH0sX2FuaW1hdGVab29tOmZ1bmN0aW9uKHQsZSxpLG4pe3RoaXMuX21hcFBhbmUmJihpJiYodGhpcy5fYW5pbWF0aW5nWm9vbT0hMCx0aGlzLl9hbmltYXRlVG9DZW50ZXI9dCx0aGlzLl9hbmltYXRlVG9ab29tPWUsTSh0aGlzLl9tYXBQYW5lLFwibGVhZmxldC16b29tLWFuaW1cIikpLHRoaXMuZmlyZShcInpvb21hbmltXCIse2NlbnRlcjp0LHpvb206ZSxub1VwZGF0ZTpufSksdGhpcy5fdGVtcEZpcmVab29tRXZlbnR8fCh0aGlzLl90ZW1wRmlyZVpvb21FdmVudD10aGlzLl96b29tIT09dGhpcy5fYW5pbWF0ZVRvWm9vbSksdGhpcy5fbW92ZSh0aGlzLl9hbmltYXRlVG9DZW50ZXIsdGhpcy5fYW5pbWF0ZVRvWm9vbSx2b2lkIDAsITApLHNldFRpbWVvdXQoYSh0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kLHRoaXMpLDI1MCkpfSxfb25ab29tVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGluZ1pvb20mJih0aGlzLl9tYXBQYW5lJiZ6KHRoaXMuX21hcFBhbmUsXCJsZWFmbGV0LXpvb20tYW5pbVwiKSx0aGlzLl9hbmltYXRpbmdab29tPSExLHRoaXMuX21vdmUodGhpcy5fYW5pbWF0ZVRvQ2VudGVyLHRoaXMuX2FuaW1hdGVUb1pvb20sdm9pZCAwLCEwKSx0aGlzLl90ZW1wRmlyZVpvb21FdmVudCYmdGhpcy5maXJlKFwiem9vbVwiKSxkZWxldGUgdGhpcy5fdGVtcEZpcmVab29tRXZlbnQsdGhpcy5maXJlKFwibW92ZVwiKSx0aGlzLl9tb3ZlRW5kKCEwKSl9fSk7ZnVuY3Rpb24gVWUodCl7cmV0dXJuIG5ldyBCKHQpfXZhciBCPWV0LmV4dGVuZCh7b3B0aW9uczp7cG9zaXRpb246XCJ0b3ByaWdodFwifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9ufSxzZXRQb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXA7cmV0dXJuIGUmJmUucmVtb3ZlQ29udHJvbCh0aGlzKSx0aGlzLm9wdGlvbnMucG9zaXRpb249dCxlJiZlLmFkZENvbnRyb2wodGhpcyksdGhpc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sYWRkVG86ZnVuY3Rpb24odCl7dGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9dDt2YXIgZT10aGlzLl9jb250YWluZXI9dGhpcy5vbkFkZCh0KSxpPXRoaXMuZ2V0UG9zaXRpb24oKSx0PXQuX2NvbnRyb2xDb3JuZXJzW2ldO3JldHVybiBNKGUsXCJsZWFmbGV0LWNvbnRyb2xcIiksLTEhPT1pLmluZGV4T2YoXCJib3R0b21cIik/dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpOnQuYXBwZW5kQ2hpbGQoZSksdGhpcy5fbWFwLm9uKFwidW5sb2FkXCIsdGhpcy5yZW1vdmUsdGhpcyksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKFQodGhpcy5fY29udGFpbmVyKSx0aGlzLm9uUmVtb3ZlJiZ0aGlzLm9uUmVtb3ZlKHRoaXMuX21hcCksdGhpcy5fbWFwLm9mZihcInVubG9hZFwiLHRoaXMucmVtb3ZlLHRoaXMpLHRoaXMuX21hcD1udWxsKSx0aGlzfSxfcmVmb2N1c09uTWFwOmZ1bmN0aW9uKHQpe3RoaXMuX21hcCYmdCYmMDx0LnNjcmVlblgmJjA8dC5zY3JlZW5ZJiZ0aGlzLl9tYXAuZ2V0Q29udGFpbmVyKCkuZm9jdXMoKX19KSxWZT0oQS5pbmNsdWRlKHthZGRDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZFRvKHRoaXMpLHRoaXN9LHJlbW92ZUNvbnRyb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlKCksdGhpc30sX2luaXRDb250cm9sUG9zOmZ1bmN0aW9uKCl7dmFyIGk9dGhpcy5fY29udHJvbENvcm5lcnM9e30sbj1cImxlYWZsZXQtXCIsbz10aGlzLl9jb250cm9sQ29udGFpbmVyPVAoXCJkaXZcIixuK1wiY29udHJvbC1jb250YWluZXJcIix0aGlzLl9jb250YWluZXIpO2Z1bmN0aW9uIHQodCxlKXtpW3QrZV09UChcImRpdlwiLG4rdCtcIiBcIituK2Usbyl9dChcInRvcFwiLFwibGVmdFwiKSx0KFwidG9wXCIsXCJyaWdodFwiKSx0KFwiYm90dG9tXCIsXCJsZWZ0XCIpLHQoXCJib3R0b21cIixcInJpZ2h0XCIpfSxfY2xlYXJDb250cm9sUG9zOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2NvbnRyb2xDb3JuZXJzKVQodGhpcy5fY29udHJvbENvcm5lcnNbdF0pO1QodGhpcy5fY29udHJvbENvbnRhaW5lciksZGVsZXRlIHRoaXMuX2NvbnRyb2xDb3JuZXJzLGRlbGV0ZSB0aGlzLl9jb250cm9sQ29udGFpbmVyfX0pLEIuZXh0ZW5kKHtvcHRpb25zOntjb2xsYXBzZWQ6ITAscG9zaXRpb246XCJ0b3ByaWdodFwiLGF1dG9aSW5kZXg6ITAsaGlkZVNpbmdsZUJhc2U6ITEsc29ydExheWVyczohMSxzb3J0RnVuY3Rpb246ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIGk8bj8tMTpuPGk/MTowfX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7Zm9yKHZhciBuIGluIGModGhpcyxpKSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHM9W10sdGhpcy5fbGF5ZXJzPVtdLHRoaXMuX2xhc3RaSW5kZXg9MCx0aGlzLl9oYW5kbGluZ0NsaWNrPSExLHRoaXMuX3ByZXZlbnRDbGljaz0hMSx0KXRoaXMuX2FkZExheWVyKHRbbl0sbik7Zm9yKG4gaW4gZSl0aGlzLl9hZGRMYXllcihlW25dLG4sITApfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksKHRoaXMuX21hcD10KS5vbihcInpvb21lbmRcIix0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzLHRoaXMpO2Zvcih2YXIgZT0wO2U8dGhpcy5fbGF5ZXJzLmxlbmd0aDtlKyspdGhpcy5fbGF5ZXJzW2VdLmxheWVyLm9uKFwiYWRkIHJlbW92ZVwiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyk7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIEIucHJvdG90eXBlLmFkZFRvLmNhbGwodGhpcyx0KSx0aGlzLl9leHBhbmRJZk5vdENvbGxhcHNlZCgpfSxvblJlbW92ZTpmdW5jdGlvbigpe3RoaXMuX21hcC5vZmYoXCJ6b29tZW5kXCIsdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycyx0aGlzKTtmb3IodmFyIHQ9MDt0PHRoaXMuX2xheWVycy5sZW5ndGg7dCsrKXRoaXMuX2xheWVyc1t0XS5sYXllci5vZmYoXCJhZGQgcmVtb3ZlXCIsdGhpcy5fb25MYXllckNoYW5nZSx0aGlzKX0sYWRkQmFzZUxheWVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2FkZExheWVyKHQsZSksdGhpcy5fbWFwP3RoaXMuX3VwZGF0ZSgpOnRoaXN9LGFkZE92ZXJsYXk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fYWRkTGF5ZXIodCxlLCEwKSx0aGlzLl9tYXA/dGhpcy5fdXBkYXRlKCk6dGhpc30scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7dC5vZmYoXCJhZGQgcmVtb3ZlXCIsdGhpcy5fb25MYXllckNoYW5nZSx0aGlzKTt0PXRoaXMuX2dldExheWVyKGgodCkpO3JldHVybiB0JiZ0aGlzLl9sYXllcnMuc3BsaWNlKHRoaXMuX2xheWVycy5pbmRleE9mKHQpLDEpLHRoaXMuX21hcD90aGlzLl91cGRhdGUoKTp0aGlzfSxleHBhbmQ6ZnVuY3Rpb24oKXtNKHRoaXMuX2NvbnRhaW5lcixcImxlYWZsZXQtY29udHJvbC1sYXllcnMtZXhwYW5kZWRcIiksdGhpcy5fc2VjdGlvbi5zdHlsZS5oZWlnaHQ9bnVsbDt2YXIgdD10aGlzLl9tYXAuZ2V0U2l6ZSgpLnktKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRUb3ArNTApO3JldHVybiB0PHRoaXMuX3NlY3Rpb24uY2xpZW50SGVpZ2h0PyhNKHRoaXMuX3NlY3Rpb24sXCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNjcm9sbGJhclwiKSx0aGlzLl9zZWN0aW9uLnN0eWxlLmhlaWdodD10K1wicHhcIik6eih0aGlzLl9zZWN0aW9uLFwibGVhZmxldC1jb250cm9sLWxheWVycy1zY3JvbGxiYXJcIiksdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycygpLHRoaXN9LGNvbGxhcHNlOmZ1bmN0aW9uKCl7cmV0dXJuIHoodGhpcy5fY29udGFpbmVyLFwibGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZFwiKSx0aGlzfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PVwibGVhZmxldC1jb250cm9sLWxheWVyc1wiLGU9dGhpcy5fY29udGFpbmVyPVAoXCJkaXZcIix0KSxpPXRoaXMub3B0aW9ucy5jb2xsYXBzZWQsbj0oZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsITApLEllKGUpLEJlKGUpLHRoaXMuX3NlY3Rpb249UChcInNlY3Rpb25cIix0K1wiLWxpc3RcIikpLG89KGkmJih0aGlzLl9tYXAub24oXCJjbGlja1wiLHRoaXMuY29sbGFwc2UsdGhpcyksUyhlLHttb3VzZWVudGVyOnRoaXMuX2V4cGFuZFNhZmVseSxtb3VzZWxlYXZlOnRoaXMuY29sbGFwc2V9LHRoaXMpKSx0aGlzLl9sYXllcnNMaW5rPVAoXCJhXCIsdCtcIi10b2dnbGVcIixlKSk7by5ocmVmPVwiI1wiLG8udGl0bGU9XCJMYXllcnNcIixvLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImJ1dHRvblwiKSxTKG8se2tleWRvd246ZnVuY3Rpb24odCl7MTM9PT10LmtleUNvZGUmJnRoaXMuX2V4cGFuZFNhZmVseSgpfSxjbGljazpmdW5jdGlvbih0KXtPKHQpLHRoaXMuX2V4cGFuZFNhZmVseSgpfX0sdGhpcyksaXx8dGhpcy5leHBhbmQoKSx0aGlzLl9iYXNlTGF5ZXJzTGlzdD1QKFwiZGl2XCIsdCtcIi1iYXNlXCIsbiksdGhpcy5fc2VwYXJhdG9yPVAoXCJkaXZcIix0K1wiLXNlcGFyYXRvclwiLG4pLHRoaXMuX292ZXJsYXlzTGlzdD1QKFwiZGl2XCIsdCtcIi1vdmVybGF5c1wiLG4pLGUuYXBwZW5kQ2hpbGQobil9LF9nZXRMYXllcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX2xheWVycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2xheWVyc1tlXSYmaCh0aGlzLl9sYXllcnNbZV0ubGF5ZXIpPT09dClyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdfSxfYWRkTGF5ZXI6ZnVuY3Rpb24odCxlLGkpe3RoaXMuX21hcCYmdC5vbihcImFkZCByZW1vdmVcIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLHRoaXMuX2xheWVycy5wdXNoKHtsYXllcjp0LG5hbWU6ZSxvdmVybGF5Oml9KSx0aGlzLm9wdGlvbnMuc29ydExheWVycyYmdGhpcy5fbGF5ZXJzLnNvcnQoYShmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnMuc29ydEZ1bmN0aW9uKHQubGF5ZXIsZS5sYXllcix0Lm5hbWUsZS5uYW1lKX0sdGhpcykpLHRoaXMub3B0aW9ucy5hdXRvWkluZGV4JiZ0LnNldFpJbmRleCYmKHRoaXMuX2xhc3RaSW5kZXgrKyx0LnNldFpJbmRleCh0aGlzLl9sYXN0WkluZGV4KSksdGhpcy5fZXhwYW5kSWZOb3RDb2xsYXBzZWQoKX0sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX2NvbnRhaW5lcil7bWUodGhpcy5fYmFzZUxheWVyc0xpc3QpLG1lKHRoaXMuX292ZXJsYXlzTGlzdCksdGhpcy5fbGF5ZXJDb250cm9sSW5wdXRzPVtdO2Zvcih2YXIgdCxlLGksbj0wLG89MDtvPHRoaXMuX2xheWVycy5sZW5ndGg7bysrKWk9dGhpcy5fbGF5ZXJzW29dLHRoaXMuX2FkZEl0ZW0oaSksZT1lfHxpLm92ZXJsYXksdD10fHwhaS5vdmVybGF5LG4rPWkub3ZlcmxheT8wOjE7dGhpcy5vcHRpb25zLmhpZGVTaW5nbGVCYXNlJiYodGhpcy5fYmFzZUxheWVyc0xpc3Quc3R5bGUuZGlzcGxheT0odD10JiYxPG4pP1wiXCI6XCJub25lXCIpLHRoaXMuX3NlcGFyYXRvci5zdHlsZS5kaXNwbGF5PWUmJnQ/XCJcIjpcIm5vbmVcIn1yZXR1cm4gdGhpc30sX29uTGF5ZXJDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5faGFuZGxpbmdDbGlja3x8dGhpcy5fdXBkYXRlKCk7dmFyIGU9dGhpcy5fZ2V0TGF5ZXIoaCh0LnRhcmdldCkpLHQ9ZS5vdmVybGF5P1wiYWRkXCI9PT10LnR5cGU/XCJvdmVybGF5YWRkXCI6XCJvdmVybGF5cmVtb3ZlXCI6XCJhZGRcIj09PXQudHlwZT9cImJhc2VsYXllcmNoYW5nZVwiOm51bGw7dCYmdGhpcy5fbWFwLmZpcmUodCxlKX0sX2NyZWF0ZVJhZGlvRWxlbWVudDpmdW5jdGlvbih0LGUpe3Q9JzxpbnB1dCB0eXBlPVwicmFkaW9cIiBjbGFzcz1cImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VsZWN0b3JcIiBuYW1lPVwiJyt0KydcIicrKGU/JyBjaGVja2VkPVwiY2hlY2tlZFwiJzpcIlwiKStcIi8+XCIsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiBlLmlubmVySFRNTD10LGUuZmlyc3RDaGlsZH0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dmFyIGUsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiksbj10aGlzLl9tYXAuaGFzTGF5ZXIodC5sYXllciksbj0odC5vdmVybGF5PygoZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIikpLnR5cGU9XCJjaGVja2JveFwiLGUuY2xhc3NOYW1lPVwibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvclwiLGUuZGVmYXVsdENoZWNrZWQ9bik6ZT10aGlzLl9jcmVhdGVSYWRpb0VsZW1lbnQoXCJsZWFmbGV0LWJhc2UtbGF5ZXJzX1wiK2godGhpcyksbiksdGhpcy5fbGF5ZXJDb250cm9sSW5wdXRzLnB1c2goZSksZS5sYXllcklkPWgodC5sYXllciksUyhlLFwiY2xpY2tcIix0aGlzLl9vbklucHV0Q2xpY2ssdGhpcyksZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIikpLG89KG4uaW5uZXJIVE1MPVwiIFwiK3QubmFtZSxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSk7cmV0dXJuIGkuYXBwZW5kQ2hpbGQobyksby5hcHBlbmRDaGlsZChlKSxvLmFwcGVuZENoaWxkKG4pLCh0Lm92ZXJsYXk/dGhpcy5fb3ZlcmxheXNMaXN0OnRoaXMuX2Jhc2VMYXllcnNMaXN0KS5hcHBlbmRDaGlsZChpKSx0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzKCksaX0sX29uSW5wdXRDbGljazpmdW5jdGlvbigpe2lmKCF0aGlzLl9wcmV2ZW50Q2xpY2spe3ZhciB0LGUsaT10aGlzLl9sYXllckNvbnRyb2xJbnB1dHMsbj1bXSxvPVtdO3RoaXMuX2hhbmRsaW5nQ2xpY2s9ITA7Zm9yKHZhciBzPWkubGVuZ3RoLTE7MDw9cztzLS0pdD1pW3NdLGU9dGhpcy5fZ2V0TGF5ZXIodC5sYXllcklkKS5sYXllcix0LmNoZWNrZWQ/bi5wdXNoKGUpOnQuY2hlY2tlZHx8by5wdXNoKGUpO2ZvcihzPTA7czxvLmxlbmd0aDtzKyspdGhpcy5fbWFwLmhhc0xheWVyKG9bc10pJiZ0aGlzLl9tYXAucmVtb3ZlTGF5ZXIob1tzXSk7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl0aGlzLl9tYXAuaGFzTGF5ZXIobltzXSl8fHRoaXMuX21hcC5hZGRMYXllcihuW3NdKTt0aGlzLl9oYW5kbGluZ0NsaWNrPSExLHRoaXMuX3JlZm9jdXNPbk1hcCgpfX0sX2NoZWNrRGlzYWJsZWRMYXllcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPXRoaXMuX2xheWVyQ29udHJvbElucHV0cyxuPXRoaXMuX21hcC5nZXRab29tKCksbz1pLmxlbmd0aC0xOzA8PW87by0tKXQ9aVtvXSxlPXRoaXMuX2dldExheWVyKHQubGF5ZXJJZCkubGF5ZXIsdC5kaXNhYmxlZD12b2lkIDAhPT1lLm9wdGlvbnMubWluWm9vbSYmbjxlLm9wdGlvbnMubWluWm9vbXx8dm9pZCAwIT09ZS5vcHRpb25zLm1heFpvb20mJm4+ZS5vcHRpb25zLm1heFpvb219LF9leHBhbmRJZk5vdENvbGxhcHNlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJiF0aGlzLm9wdGlvbnMuY29sbGFwc2VkJiZ0aGlzLmV4cGFuZCgpLHRoaXN9LF9leHBhbmRTYWZlbHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zZWN0aW9uLGU9KHRoaXMuX3ByZXZlbnRDbGljaz0hMCxTKHQsXCJjbGlja1wiLE8pLHRoaXMuZXhwYW5kKCksdGhpcyk7c2V0VGltZW91dChmdW5jdGlvbigpe2sodCxcImNsaWNrXCIsTyksZS5fcHJldmVudENsaWNrPSExfSl9fSkpLHFlPUIuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjpcInRvcGxlZnRcIix6b29tSW5UZXh0Oic8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4rPC9zcGFuPicsem9vbUluVGl0bGU6XCJab29tIGluXCIsem9vbU91dFRleHQ6JzxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiYjeDIyMTI7PC9zcGFuPicsem9vbU91dFRpdGxlOlwiWm9vbSBvdXRcIn0sb25BZGQ6ZnVuY3Rpb24odCl7dmFyIGU9XCJsZWFmbGV0LWNvbnRyb2wtem9vbVwiLGk9UChcImRpdlwiLGUrXCIgbGVhZmxldC1iYXJcIiksbj10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX3pvb21JbkJ1dHRvbj10aGlzLl9jcmVhdGVCdXR0b24obi56b29tSW5UZXh0LG4uem9vbUluVGl0bGUsZStcIi1pblwiLGksdGhpcy5fem9vbUluKSx0aGlzLl96b29tT3V0QnV0dG9uPXRoaXMuX2NyZWF0ZUJ1dHRvbihuLnpvb21PdXRUZXh0LG4uem9vbU91dFRpdGxlLGUrXCItb3V0XCIsaSx0aGlzLl96b29tT3V0KSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oXCJ6b29tZW5kIHpvb21sZXZlbHNjaGFuZ2VcIix0aGlzLl91cGRhdGVEaXNhYmxlZCx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZihcInpvb21lbmQgem9vbWxldmVsc2NoYW5nZVwiLHRoaXMuX3VwZGF0ZURpc2FibGVkLHRoaXMpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkPSEwLHRoaXMuX3VwZGF0ZURpc2FibGVkKCksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3VwZGF0ZURpc2FibGVkKCksdGhpc30sX3pvb21JbjpmdW5jdGlvbih0KXshdGhpcy5fZGlzYWJsZWQmJnRoaXMuX21hcC5fem9vbTx0aGlzLl9tYXAuZ2V0TWF4Wm9vbSgpJiZ0aGlzLl9tYXAuem9vbUluKHRoaXMuX21hcC5vcHRpb25zLnpvb21EZWx0YSoodC5zaGlmdEtleT8zOjEpKX0sX3pvb21PdXQ6ZnVuY3Rpb24odCl7IXRoaXMuX2Rpc2FibGVkJiZ0aGlzLl9tYXAuX3pvb20+dGhpcy5fbWFwLmdldE1pblpvb20oKSYmdGhpcy5fbWFwLnpvb21PdXQodGhpcy5fbWFwLm9wdGlvbnMuem9vbURlbHRhKih0LnNoaWZ0S2V5PzM6MSkpfSxfY3JlYXRlQnV0dG9uOmZ1bmN0aW9uKHQsZSxpLG4sbyl7aT1QKFwiYVwiLGksbik7cmV0dXJuIGkuaW5uZXJIVE1MPXQsaS5ocmVmPVwiI1wiLGkudGl0bGU9ZSxpLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImJ1dHRvblwiKSxpLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixlKSxJZShpKSxTKGksXCJjbGlja1wiLFJlKSxTKGksXCJjbGlja1wiLG8sdGhpcyksUyhpLFwiY2xpY2tcIix0aGlzLl9yZWZvY3VzT25NYXAsdGhpcyksaX0sX3VwZGF0ZURpc2FibGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9XCJsZWFmbGV0LWRpc2FibGVkXCI7eih0aGlzLl96b29tSW5CdXR0b24sZSkseih0aGlzLl96b29tT3V0QnV0dG9uLGUpLHRoaXMuX3pvb21JbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIsXCJmYWxzZVwiKSx0aGlzLl96b29tT3V0QnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIixcImZhbHNlXCIpLCF0aGlzLl9kaXNhYmxlZCYmdC5fem9vbSE9PXQuZ2V0TWluWm9vbSgpfHwoTSh0aGlzLl96b29tT3V0QnV0dG9uLGUpLHRoaXMuX3pvb21PdXRCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiLFwidHJ1ZVwiKSksIXRoaXMuX2Rpc2FibGVkJiZ0Ll96b29tIT09dC5nZXRNYXhab29tKCl8fChNKHRoaXMuX3pvb21JbkJ1dHRvbixlKSx0aGlzLl96b29tSW5CdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiLFwidHJ1ZVwiKSl9fSksR2U9KEEubWVyZ2VPcHRpb25zKHt6b29tQ29udHJvbDohMH0pLEEuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuem9vbUNvbnRyb2wmJih0aGlzLnpvb21Db250cm9sPW5ldyBxZSx0aGlzLmFkZENvbnRyb2wodGhpcy56b29tQ29udHJvbCkpfSksQi5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOlwiYm90dG9tbGVmdFwiLG1heFdpZHRoOjEwMCxtZXRyaWM6ITAsaW1wZXJpYWw6ITB9LG9uQWRkOmZ1bmN0aW9uKHQpe3ZhciBlPVwibGVhZmxldC1jb250cm9sLXNjYWxlXCIsaT1QKFwiZGl2XCIsZSksbj10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2FkZFNjYWxlcyhuLGUrXCItbGluZVwiLGkpLHQub24obi51cGRhdGVXaGVuSWRsZT9cIm1vdmVlbmRcIjpcIm1vdmVcIix0aGlzLl91cGRhdGUsdGhpcyksdC53aGVuUmVhZHkodGhpcy5fdXBkYXRlLHRoaXMpLGl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZT9cIm1vdmVlbmRcIjpcIm1vdmVcIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxlLGkpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPVAoXCJkaXZcIixlLGkpKSx0LmltcGVyaWFsJiYodGhpcy5faVNjYWxlPVAoXCJkaXZcIixlLGkpKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxlPXQuZ2V0U2l6ZSgpLnkvMix0PXQuZGlzdGFuY2UodC5jb250YWluZXJQb2ludFRvTGF0TG5nKFswLGVdKSx0LmNvbnRhaW5lclBvaW50VG9MYXRMbmcoW3RoaXMub3B0aW9ucy5tYXhXaWR0aCxlXSkpO3RoaXMuX3VwZGF0ZVNjYWxlcyh0KX0sX3VwZGF0ZVNjYWxlczpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMubWV0cmljJiZ0JiZ0aGlzLl91cGRhdGVNZXRyaWModCksdGhpcy5vcHRpb25zLmltcGVyaWFsJiZ0JiZ0aGlzLl91cGRhdGVJbXBlcmlhbCh0KX0sX3VwZGF0ZU1ldHJpYzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRSb3VuZE51bSh0KTt0aGlzLl91cGRhdGVTY2FsZSh0aGlzLl9tU2NhbGUsZTwxZTM/ZStcIiBtXCI6ZS8xZTMrXCIga21cIixlL3QpfSxfdXBkYXRlSW1wZXJpYWw6ZnVuY3Rpb24odCl7dmFyIGUsaSx0PTMuMjgwODM5OSp0OzUyODA8dD8oaT10aGlzLl9nZXRSb3VuZE51bShlPXQvNTI4MCksdGhpcy5fdXBkYXRlU2NhbGUodGhpcy5faVNjYWxlLGkrXCIgbWlcIixpL2UpKTooaT10aGlzLl9nZXRSb3VuZE51bSh0KSx0aGlzLl91cGRhdGVTY2FsZSh0aGlzLl9pU2NhbGUsaStcIiBmdFwiLGkvdCkpfSxfdXBkYXRlU2NhbGU6ZnVuY3Rpb24odCxlLGkpe3Quc3R5bGUud2lkdGg9TWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMubWF4V2lkdGgqaSkrXCJweFwiLHQuaW5uZXJIVE1MPWV9LF9nZXRSb3VuZE51bTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdygxMCwoTWF0aC5mbG9vcih0KStcIlwiKS5sZW5ndGgtMSksdD10L2U7cmV0dXJuIGUqKHQ9MTA8PXQ/MTA6NTw9dD81OjM8PXQ/MzoyPD10PzI6MSl9fSkpLEtlPUIuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjpcImJvdHRvbXJpZ2h0XCIscHJlZml4Oic8YSBocmVmPVwiaHR0cHM6Ly9sZWFmbGV0anMuY29tXCIgdGl0bGU9XCJBIEphdmFTY3JpcHQgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwc1wiPicrKGIuaW5saW5lU3ZnPyc8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTIgOFwiIGNsYXNzPVwibGVhZmxldC1hdHRyaWJ1dGlvbi1mbGFnXCI+PHBhdGggZmlsbD1cIiM0QzdCRTFcIiBkPVwiTTAgMGgxMnY0SDB6XCIvPjxwYXRoIGZpbGw9XCIjRkZENTAwXCIgZD1cIk0wIDRoMTJ2M0gwelwiLz48cGF0aCBmaWxsPVwiI0UwQkMwMFwiIGQ9XCJNMCA3aDEydjFIMHpcIi8+PC9zdmc+ICc6XCJcIikrXCJMZWFmbGV0PC9hPlwifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KSx0aGlzLl9hdHRyaWJ1dGlvbnM9e319LG9uQWRkOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbih0LmF0dHJpYnV0aW9uQ29udHJvbD10aGlzKS5fY29udGFpbmVyPVAoXCJkaXZcIixcImxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvblwiKSxJZSh0aGlzLl9jb250YWluZXIpLHQuX2xheWVycyl0Ll9sYXllcnNbZV0uZ2V0QXR0cmlidXRpb24mJnRoaXMuYWRkQXR0cmlidXRpb24odC5fbGF5ZXJzW2VdLmdldEF0dHJpYnV0aW9uKCkpO3JldHVybiB0aGlzLl91cGRhdGUoKSx0Lm9uKFwibGF5ZXJhZGRcIix0aGlzLl9hZGRBdHRyaWJ1dGlvbix0aGlzKSx0aGlzLl9jb250YWluZXJ9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKFwibGF5ZXJhZGRcIix0aGlzLl9hZGRBdHRyaWJ1dGlvbix0aGlzKX0sX2FkZEF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3QubGF5ZXIuZ2V0QXR0cmlidXRpb24mJih0aGlzLmFkZEF0dHJpYnV0aW9uKHQubGF5ZXIuZ2V0QXR0cmlidXRpb24oKSksdC5sYXllci5vbmNlKFwicmVtb3ZlXCIsZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0aW9uKHQubGF5ZXIuZ2V0QXR0cmlidXRpb24oKSl9LHRoaXMpKX0sc2V0UHJlZml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZml4PXQsdGhpcy5fdXBkYXRlKCksdGhpc30sYWRkQXR0cmlidXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHQmJih0aGlzLl9hdHRyaWJ1dGlvbnNbdF18fCh0aGlzLl9hdHRyaWJ1dGlvbnNbdF09MCksdGhpcy5fYXR0cmlidXRpb25zW3RdKyssdGhpcy5fdXBkYXRlKCkpLHRoaXN9LHJlbW92ZUF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLl9hdHRyaWJ1dGlvbnNbdF0mJih0aGlzLl9hdHRyaWJ1dGlvbnNbdF0tLSx0aGlzLl91cGRhdGUoKSksdGhpc30sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQsZT1bXTtmb3IodCBpbiB0aGlzLl9hdHRyaWJ1dGlvbnMpdGhpcy5fYXR0cmlidXRpb25zW3RdJiZlLnB1c2godCk7dmFyIGk9W107dGhpcy5vcHRpb25zLnByZWZpeCYmaS5wdXNoKHRoaXMub3B0aW9ucy5wcmVmaXgpLGUubGVuZ3RoJiZpLnB1c2goZS5qb2luKFwiLCBcIikpLHRoaXMuX2NvbnRhaW5lci5pbm5lckhUTUw9aS5qb2luKCcgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+fDwvc3Bhbj4gJyl9fX0pLG49KEEubWVyZ2VPcHRpb25zKHthdHRyaWJ1dGlvbkNvbnRyb2w6ITB9KSxBLmFkZEluaXRIb29rKGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmF0dHJpYnV0aW9uQ29udHJvbCYmKG5ldyBLZSkuYWRkVG8odGhpcyl9KSxCLkxheWVycz1WZSxCLlpvb209cWUsQi5TY2FsZT1HZSxCLkF0dHJpYnV0aW9uPUtlLFVlLmxheWVycz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG5ldyBWZSh0LGUsaSl9LFVlLnpvb209ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBxZSh0KX0sVWUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBHZSh0KX0sVWUuYXR0cmlidXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBLZSh0KX0sZXQuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10fSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZHx8KHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5hZGRIb29rcygpKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWQmJih0aGlzLl9lbmFibGVkPSExLHRoaXMucmVtb3ZlSG9va3MoKSksdGhpc30sZW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH19KSksZnQ9KG4uYWRkVG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hZGRIYW5kbGVyKGUsdGhpcyksdGhpc30se0V2ZW50czplfSksWWU9Yi50b3VjaD9cInRvdWNoc3RhcnQgbW91c2Vkb3duXCI6XCJtb3VzZWRvd25cIixYZT1pdC5leHRlbmQoe29wdGlvbnM6e2NsaWNrVG9sZXJhbmNlOjN9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlLGksbil7Yyh0aGlzLG4pLHRoaXMuX2VsZW1lbnQ9dCx0aGlzLl9kcmFnU3RhcnRUYXJnZXQ9ZXx8dCx0aGlzLl9wcmV2ZW50T3V0bGluZT1pfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkfHwoUyh0aGlzLl9kcmFnU3RhcnRUYXJnZXQsWWUsdGhpcy5fb25Eb3duLHRoaXMpLHRoaXMuX2VuYWJsZWQ9ITApfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZW5hYmxlZCYmKFhlLl9kcmFnZ2luZz09PXRoaXMmJnRoaXMuZmluaXNoRHJhZyghMCksayh0aGlzLl9kcmFnU3RhcnRUYXJnZXQsWWUsdGhpcy5fb25Eb3duLHRoaXMpLHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5fbW92ZWQ9ITEpfSxfb25Eb3duOmZ1bmN0aW9uKHQpe3ZhciBlLGk7dGhpcy5fZW5hYmxlZCYmKHRoaXMuX21vdmVkPSExLHZlKHRoaXMuX2VsZW1lbnQsXCJsZWFmbGV0LXpvb20tYW5pbVwiKXx8KHQudG91Y2hlcyYmMSE9PXQudG91Y2hlcy5sZW5ndGg/WGUuX2RyYWdnaW5nPT09dGhpcyYmdGhpcy5maW5pc2hEcmFnKCk6WGUuX2RyYWdnaW5nfHx0LnNoaWZ0S2V5fHwxIT09dC53aGljaCYmMSE9PXQuYnV0dG9uJiYhdC50b3VjaGVzfHwoKFhlLl9kcmFnZ2luZz10aGlzKS5fcHJldmVudE91dGxpbmUmJk1lKHRoaXMuX2VsZW1lbnQpLExlKCkscmUoKSx0aGlzLl9tb3Zpbmd8fCh0aGlzLmZpcmUoXCJkb3duXCIpLGk9dC50b3VjaGVzP3QudG91Y2hlc1swXTp0LGU9Q2UodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRQb2ludD1uZXcgcChpLmNsaWVudFgsaS5jbGllbnRZKSx0aGlzLl9zdGFydFBvcz1QZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9wYXJlbnRTY2FsZT1aZShlKSxpPVwibW91c2Vkb3duXCI9PT10LnR5cGUsUyhkb2N1bWVudCxpP1wibW91c2Vtb3ZlXCI6XCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUsdGhpcyksUyhkb2N1bWVudCxpP1wibW91c2V1cFwiOlwidG91Y2hlbmQgdG91Y2hjYW5jZWxcIix0aGlzLl9vblVwLHRoaXMpKSkpKX0sX29uTW92ZTpmdW5jdGlvbih0KXt2YXIgZTt0aGlzLl9lbmFibGVkJiYodC50b3VjaGVzJiYxPHQudG91Y2hlcy5sZW5ndGg/dGhpcy5fbW92ZWQ9ITA6IShlPW5ldyBwKChlPXQudG91Y2hlcyYmMT09PXQudG91Y2hlcy5sZW5ndGg/dC50b3VjaGVzWzBdOnQpLmNsaWVudFgsZS5jbGllbnRZKS5fc3VidHJhY3QodGhpcy5fc3RhcnRQb2ludCkpLngmJiFlLnl8fE1hdGguYWJzKGUueCkrTWF0aC5hYnMoZS55KTx0aGlzLm9wdGlvbnMuY2xpY2tUb2xlcmFuY2V8fChlLngvPXRoaXMuX3BhcmVudFNjYWxlLngsZS55Lz10aGlzLl9wYXJlbnRTY2FsZS55LE8odCksdGhpcy5fbW92ZWR8fCh0aGlzLmZpcmUoXCJkcmFnc3RhcnRcIiksdGhpcy5fbW92ZWQ9ITAsTShkb2N1bWVudC5ib2R5LFwibGVhZmxldC1kcmFnZ2luZ1wiKSx0aGlzLl9sYXN0VGFyZ2V0PXQudGFyZ2V0fHx0LnNyY0VsZW1lbnQsd2luZG93LlNWR0VsZW1lbnRJbnN0YW5jZSYmdGhpcy5fbGFzdFRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5TVkdFbGVtZW50SW5zdGFuY2UmJih0aGlzLl9sYXN0VGFyZ2V0PXRoaXMuX2xhc3RUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLE0odGhpcy5fbGFzdFRhcmdldCxcImxlYWZsZXQtZHJhZy10YXJnZXRcIikpLHRoaXMuX25ld1Bvcz10aGlzLl9zdGFydFBvcy5hZGQoZSksdGhpcy5fbW92aW5nPSEwLHRoaXMuX2xhc3RFdmVudD10LHRoaXMuX3VwZGF0ZVBvc2l0aW9uKCkpKX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9e29yaWdpbmFsRXZlbnQ6dGhpcy5fbGFzdEV2ZW50fTt0aGlzLmZpcmUoXCJwcmVkcmFnXCIsdCksWih0aGlzLl9lbGVtZW50LHRoaXMuX25ld1BvcyksdGhpcy5maXJlKFwiZHJhZ1wiLHQpfSxfb25VcDpmdW5jdGlvbigpe3RoaXMuX2VuYWJsZWQmJnRoaXMuZmluaXNoRHJhZygpfSxmaW5pc2hEcmFnOmZ1bmN0aW9uKHQpe3ooZG9jdW1lbnQuYm9keSxcImxlYWZsZXQtZHJhZ2dpbmdcIiksdGhpcy5fbGFzdFRhcmdldCYmKHoodGhpcy5fbGFzdFRhcmdldCxcImxlYWZsZXQtZHJhZy10YXJnZXRcIiksdGhpcy5fbGFzdFRhcmdldD1udWxsKSxrKGRvY3VtZW50LFwibW91c2Vtb3ZlIHRvdWNobW92ZVwiLHRoaXMuX29uTW92ZSx0aGlzKSxrKGRvY3VtZW50LFwibW91c2V1cCB0b3VjaGVuZCB0b3VjaGNhbmNlbFwiLHRoaXMuX29uVXAsdGhpcyksVGUoKSxhZSgpO3ZhciBlPXRoaXMuX21vdmVkJiZ0aGlzLl9tb3Zpbmc7dGhpcy5fbW92aW5nPSExLFhlLl9kcmFnZ2luZz0hMSxlJiZ0aGlzLmZpcmUoXCJkcmFnZW5kXCIse25vSW5lcnRpYTp0LGRpc3RhbmNlOnRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKX0pfX0pO2Z1bmN0aW9uIEplKHQsZSxpKXtmb3IodmFyIG4sbyxzLHIsYSxoLGwsdT1bMSw0LDIsOF0sYz0wLGQ9dC5sZW5ndGg7YzxkO2MrKyl0W2NdLl9jb2RlPXNpKHRbY10sZSk7Zm9yKHM9MDtzPDQ7cysrKXtmb3IoaD11W3NdLG49W10sYz0wLG89KGQ9dC5sZW5ndGgpLTE7YzxkO289YysrKXI9dFtjXSxhPXRbb10sci5fY29kZSZoP2EuX2NvZGUmaHx8KChsPW9pKGEscixoLGUsaSkpLl9jb2RlPXNpKGwsZSksbi5wdXNoKGwpKTooYS5fY29kZSZoJiYoKGw9b2koYSxyLGgsZSxpKSkuX2NvZGU9c2kobCxlKSxuLnB1c2gobCkpLG4ucHVzaChyKSk7dD1ufXJldHVybiB0fWZ1bmN0aW9uICRlKHQsZSl7dmFyIGksbixvLHMscixhLGg7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJsYXRsbmdzIG5vdCBwYXNzZWRcIik7SSh0KXx8KGNvbnNvbGUud2FybihcImxhdGxuZ3MgYXJlIG5vdCBmbGF0ISBPbmx5IHRoZSBmaXJzdCByaW5nIHdpbGwgYmUgdXNlZFwiKSx0PXRbMF0pO2Zvcih2YXIgbD13KFswLDBdKSx1PWcodCksYz0odS5nZXROb3J0aFdlc3QoKS5kaXN0YW5jZVRvKHUuZ2V0U291dGhXZXN0KCkpKnUuZ2V0Tm9ydGhFYXN0KCkuZGlzdGFuY2VUbyh1LmdldE5vcnRoV2VzdCgpKTwxNzAwJiYobD1RZSh0KSksdC5sZW5ndGgpLGQ9W10sXz0wO188YztfKyspe3ZhciBwPXcodFtfXSk7ZC5wdXNoKGUucHJvamVjdCh3KFtwLmxhdC1sLmxhdCxwLmxuZy1sLmxuZ10pKSl9Zm9yKF89cj1hPWg9MCxpPWMtMTtfPGM7aT1fKyspbj1kW19dLG89ZFtpXSxzPW4ueSpvLngtby55Km4ueCxhKz0obi54K28ueCkqcyxoKz0obi55K28ueSkqcyxyKz0zKnM7dT0wPT09cj9kWzBdOlthL3IsaC9yXSx1PWUudW5wcm9qZWN0KG0odSkpO3JldHVybiB3KFt1LmxhdCtsLmxhdCx1LmxuZytsLmxuZ10pfWZ1bmN0aW9uIFFlKHQpe2Zvcih2YXIgZT0wLGk9MCxuPTAsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz13KHRbb10pO2UrPXMubGF0LGkrPXMubG5nLG4rK31yZXR1cm4gdyhbZS9uLGkvbl0pfXZhciB0aSxndD17X19wcm90b19fOm51bGwsY2xpcFBvbHlnb246SmUscG9seWdvbkNlbnRlcjokZSxjZW50cm9pZDpRZX07ZnVuY3Rpb24gZWkodCxlKXtpZihlJiZ0Lmxlbmd0aCl7dmFyIGk9dD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bdFswXV0sbj0xLG89MCxzPXQubGVuZ3RoO248cztuKyspKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS54LXQueCxlPWUueS10Lnk7cmV0dXJuIGkqaStlKmV9KSh0W25dLHRbb10pPmUmJihpLnB1c2godFtuXSksbz1uKTtvPHMtMSYmaS5wdXNoKHRbcy0xXSk7cmV0dXJuIGl9KHQsZT1lKmUpLG49aS5sZW5ndGgsbz1uZXcodHlwZW9mIFVpbnQ4QXJyYXkhPXZvaWQgMCtcIlwiP1VpbnQ4QXJyYXk6QXJyYXkpKG4pO29bMF09b1tuLTFdPTEsZnVuY3Rpb24gdChlLGksbixvLHMpe3ZhciByLGEsaCxsPTA7Zm9yKGE9bysxO2E8PXMtMTthKyspaD1yaShlW2FdLGVbb10sZVtzXSwhMCksbDxoJiYocj1hLGw9aCk7bjxsJiYoaVtyXT0xLHQoZSxpLG4sbyxyKSx0KGUsaSxuLHIscykpfShpLG8sZSwwLG4tMSk7dmFyIHMscj1bXTtmb3Iocz0wO3M8bjtzKyspb1tzXSYmci5wdXNoKGlbc10pO3JldHVybiByfXJldHVybiB0LnNsaWNlKCl9ZnVuY3Rpb24gaWkodCxlLGkpe3JldHVybiBNYXRoLnNxcnQocmkodCxlLGksITApKX1mdW5jdGlvbiBuaSh0LGUsaSxuLG8pe3ZhciBzLHIsYSxoPW4/dGk6c2kodCxpKSxsPXNpKGUsaSk7Zm9yKHRpPWw7Oyl7aWYoIShofGwpKXJldHVyblt0LGVdO2lmKGgmbClyZXR1cm4hMTthPXNpKHI9b2kodCxlLHM9aHx8bCxpLG8pLGkpLHM9PT1oPyh0PXIsaD1hKTooZT1yLGw9YSl9fWZ1bmN0aW9uIG9pKHQsZSxpLG4sbyl7dmFyIHMscixhPWUueC10LngsZT1lLnktdC55LGg9bi5taW4sbj1uLm1heDtyZXR1cm4gOCZpPyhzPXQueCthKihuLnktdC55KS9lLHI9bi55KTo0Jmk/KHM9dC54K2EqKGgueS10LnkpL2Uscj1oLnkpOjImaT8ocz1uLngscj10LnkrZSoobi54LXQueCkvYSk6MSZpJiYocz1oLngscj10LnkrZSooaC54LXQueCkvYSksbmV3IHAocyxyLG8pfWZ1bmN0aW9uIHNpKHQsZSl7dmFyIGk9MDtyZXR1cm4gdC54PGUubWluLng/aXw9MTp0Lng+ZS5tYXgueCYmKGl8PTIpLHQueTxlLm1pbi55P2l8PTQ6dC55PmUubWF4LnkmJihpfD04KSxpfWZ1bmN0aW9uIHJpKHQsZSxpLG4pe3ZhciBvPWUueCxlPWUueSxzPWkueC1vLHI9aS55LWUsYT1zKnMrcipyO3JldHVybiAwPGEmJigxPChhPSgodC54LW8pKnMrKHQueS1lKSpyKS9hKT8obz1pLngsZT1pLnkpOjA8YSYmKG8rPXMqYSxlKz1yKmEpKSxzPXQueC1vLHI9dC55LWUsbj9zKnMrcipyOm5ldyBwKG8sZSl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4hZCh0WzBdKXx8XCJvYmplY3RcIiE9dHlwZW9mIHRbMF1bMF0mJnZvaWQgMCE9PXRbMF1bMF19ZnVuY3Rpb24gYWkodCl7cmV0dXJuIGNvbnNvbGUud2FybihcIkRlcHJlY2F0ZWQgdXNlIG9mIF9mbGF0LCBwbGVhc2UgdXNlIEwuTGluZVV0aWwuaXNGbGF0IGluc3RlYWQuXCIpLEkodCl9ZnVuY3Rpb24gaGkodCxlKXt2YXIgaSxuLG8scyxyLGE7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJsYXRsbmdzIG5vdCBwYXNzZWRcIik7SSh0KXx8KGNvbnNvbGUud2FybihcImxhdGxuZ3MgYXJlIG5vdCBmbGF0ISBPbmx5IHRoZSBmaXJzdCByaW5nIHdpbGwgYmUgdXNlZFwiKSx0PXRbMF0pO2Zvcih2YXIgaD13KFswLDBdKSxsPWcodCksdT0obC5nZXROb3J0aFdlc3QoKS5kaXN0YW5jZVRvKGwuZ2V0U291dGhXZXN0KCkpKmwuZ2V0Tm9ydGhFYXN0KCkuZGlzdGFuY2VUbyhsLmdldE5vcnRoV2VzdCgpKTwxNzAwJiYoaD1RZSh0KSksdC5sZW5ndGgpLGM9W10sZD0wO2Q8dTtkKyspe3ZhciBfPXcodFtkXSk7Yy5wdXNoKGUucHJvamVjdCh3KFtfLmxhdC1oLmxhdCxfLmxuZy1oLmxuZ10pKSl9Zm9yKGk9ZD0wO2Q8dS0xO2QrKylpKz1jW2RdLmRpc3RhbmNlVG8oY1tkKzFdKS8yO2lmKDA9PT1pKWE9Y1swXTtlbHNlIGZvcihuPWQ9MDtkPHUtMTtkKyspaWYobz1jW2RdLHM9Y1tkKzFdLGk8KG4rPXI9by5kaXN0YW5jZVRvKHMpKSl7YT1bcy54LShyPShuLWkpL3IpKihzLngtby54KSxzLnktcioocy55LW8ueSldO2JyZWFrfWw9ZS51bnByb2plY3QobShhKSk7cmV0dXJuIHcoW2wubGF0K2gubGF0LGwubG5nK2gubG5nXSl9dmFyIHZ0PXtfX3Byb3RvX186bnVsbCxzaW1wbGlmeTplaSxwb2ludFRvU2VnbWVudERpc3RhbmNlOmlpLGNsb3Nlc3RQb2ludE9uU2VnbWVudDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHJpKHQsZSxpKX0sY2xpcFNlZ21lbnQ6bmksX2dldEVkZ2VJbnRlcnNlY3Rpb246b2ksX2dldEJpdENvZGU6c2ksX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50OnJpLGlzRmxhdDpJLF9mbGF0OmFpLHBvbHlsaW5lQ2VudGVyOmhpfSx5dD17cHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHAodC5sbmcsdC5sYXQpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB2KHQueSx0LngpfSxib3VuZHM6bmV3IGYoWy0xODAsLTkwXSxbMTgwLDkwXSl9LHh0PXtSOjYzNzgxMzcsUl9NSU5PUjo2MzU2NzUyLjMxNDI0NTE3OSxib3VuZHM6bmV3IGYoWy0yMDAzNzUwOC4zNDI3OSwtMTU0OTY1NzAuNzM5NzJdLFsyMDAzNzUwOC4zNDI3OSwxODc2NDY1Ni4yMzEzOF0pLHByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5QSS8xODAsaT10aGlzLlIsbj10LmxhdCplLG89dGhpcy5SX01JTk9SL2ksbz1NYXRoLnNxcnQoMS1vKm8pLHM9bypNYXRoLnNpbihuKSxzPU1hdGgudGFuKE1hdGguUEkvNC1uLzIpL01hdGgucG93KCgxLXMpLygxK3MpLG8vMiksbj0taSpNYXRoLmxvZyhNYXRoLm1heChzLDFlLTEwKSk7cmV0dXJuIG5ldyBwKHQubG5nKmUqaSxuKX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPTE4MC9NYXRoLlBJLG49dGhpcy5SLG89dGhpcy5SX01JTk9SL24scz1NYXRoLnNxcnQoMS1vKm8pLHI9TWF0aC5leHAoLXQueS9uKSxhPU1hdGguUEkvMi0yKk1hdGguYXRhbihyKSxoPTAsbD0uMTtoPDE1JiYxZS03PE1hdGguYWJzKGwpO2grKyllPXMqTWF0aC5zaW4oYSksZT1NYXRoLnBvdygoMS1lKS8oMStlKSxzLzIpLGErPWw9TWF0aC5QSS8yLTIqTWF0aC5hdGFuKHIqZSktYTtyZXR1cm4gbmV3IHYoYSppLHQueCppL24pfX0sd3Q9e19fcHJvdG9fXzpudWxsLExvbkxhdDp5dCxNZXJjYXRvcjp4dCxTcGhlcmljYWxNZXJjYXRvcjpydH0sUHQ9bCh7fSxzdCx7Y29kZTpcIkVQU0c6MzM5NVwiLHByb2plY3Rpb246eHQsdHJhbnNmb3JtYXRpb246aHQoYnQ9LjUvKE1hdGguUEkqeHQuUiksLjUsLWJ0LC41KX0pLGxpPWwoe30sc3Qse2NvZGU6XCJFUFNHOjQzMjZcIixwcm9qZWN0aW9uOnl0LHRyYW5zZm9ybWF0aW9uOmh0KDEvMTgwLDEsLTEvMTgwLC41KX0pLEx0PWwoe30sb3Qse3Byb2plY3Rpb246eXQsdHJhbnNmb3JtYXRpb246aHQoMSwwLC0xLDApLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygyLHQpfSx6b29tOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMn0sZGlzdGFuY2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLmxuZy10LmxuZyxlPWUubGF0LXQubGF0O3JldHVybiBNYXRoLnNxcnQoaSppK2UqZSl9LGluZmluaXRlOiEwfSksbz0ob3QuRWFydGg9c3Qsb3QuRVBTRzMzOTU9UHQsb3QuRVBTRzM4NTc9bHQsb3QuRVBTRzkwMDkxMz11dCxvdC5FUFNHNDMyNj1saSxvdC5TaW1wbGU9THQsaXQuZXh0ZW5kKHtvcHRpb25zOntwYW5lOlwib3ZlcmxheVBhbmVcIixhdHRyaWJ1dGlvbjpudWxsLGJ1YmJsaW5nTW91c2VFdmVudHM6ITB9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbW92ZUZyb20odGhpcy5fbWFwfHx0aGlzLl9tYXBUb0FkZCl9LHJlbW92ZUZyb206ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQucmVtb3ZlTGF5ZXIodGhpcyksdGhpc30sZ2V0UGFuZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWFwLmdldFBhbmUodD90aGlzLm9wdGlvbnNbdF18fHQ6dGhpcy5vcHRpb25zLnBhbmUpfSxhZGRJbnRlcmFjdGl2ZVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWFwLl90YXJnZXRzW2godCldPXRoaXN9LHJlbW92ZUludGVyYWN0aXZlVGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdGhpcy5fbWFwLl90YXJnZXRzW2godCldLHRoaXN9LGdldEF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGlvbn0sX2xheWVyQWRkOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC50YXJnZXQ7aS5oYXNMYXllcih0aGlzKSYmKHRoaXMuX21hcD1pLHRoaXMuX3pvb21BbmltYXRlZD1pLl96b29tQW5pbWF0ZWQsdGhpcy5nZXRFdmVudHMmJihlPXRoaXMuZ2V0RXZlbnRzKCksaS5vbihlLHRoaXMpLHRoaXMub25jZShcInJlbW92ZVwiLGZ1bmN0aW9uKCl7aS5vZmYoZSx0aGlzKX0sdGhpcykpLHRoaXMub25BZGQoaSksdGhpcy5maXJlKFwiYWRkXCIpLGkuZmlyZShcImxheWVyYWRkXCIse2xheWVyOnRoaXN9KSl9fSkpLHVpPShBLmluY2x1ZGUoe2FkZExheWVyOmZ1bmN0aW9uKHQpe3ZhciBlO2lmKHQuX2xheWVyQWRkKXJldHVybiBlPWgodCksdGhpcy5fbGF5ZXJzW2VdfHwoKHRoaXMuX2xheWVyc1tlXT10KS5fbWFwVG9BZGQ9dGhpcyx0LmJlZm9yZUFkZCYmdC5iZWZvcmVBZGQodGhpcyksdGhpcy53aGVuUmVhZHkodC5fbGF5ZXJBZGQsdCkpLHRoaXM7dGhyb3cgbmV3IEVycm9yKFwiVGhlIHByb3ZpZGVkIG9iamVjdCBpcyBub3QgYSBMYXllci5cIil9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3ZhciBlPWgodCk7cmV0dXJuIHRoaXMuX2xheWVyc1tlXSYmKHRoaXMuX2xvYWRlZCYmdC5vblJlbW92ZSh0aGlzKSxkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX2xvYWRlZCYmKHRoaXMuZmlyZShcImxheWVycmVtb3ZlXCIse2xheWVyOnR9KSx0LmZpcmUoXCJyZW1vdmVcIikpLHQuX21hcD10Ll9tYXBUb0FkZD1udWxsKSx0aGlzfSxoYXNMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gaCh0KWluIHRoaXMuX2xheWVyc30sZWFjaExheWVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIHRoaXMuX2xheWVycyl0LmNhbGwoZSx0aGlzLl9sYXllcnNbaV0pO3JldHVybiB0aGlzfSxfYWRkTGF5ZXJzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9KHQ9dD9kKHQpP3Q6W3RdOltdKS5sZW5ndGg7ZTxpO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxfYWRkWm9vbUxpbWl0OmZ1bmN0aW9uKHQpe2lzTmFOKHQub3B0aW9ucy5tYXhab29tKSYmaXNOYU4odC5vcHRpb25zLm1pblpvb20pfHwodGhpcy5fem9vbUJvdW5kTGF5ZXJzW2godCldPXQsdGhpcy5fdXBkYXRlWm9vbUxldmVscygpKX0sX3JlbW92ZVpvb21MaW1pdDpmdW5jdGlvbih0KXt0PWgodCk7dGhpcy5fem9vbUJvdW5kTGF5ZXJzW3RdJiYoZGVsZXRlIHRoaXMuX3pvb21Cb3VuZExheWVyc1t0XSx0aGlzLl91cGRhdGVab29tTGV2ZWxzKCkpfSxfdXBkYXRlWm9vbUxldmVsczpmdW5jdGlvbigpe3ZhciB0LGU9MS8wLGk9LTEvMCxuPXRoaXMuX2dldFpvb21TcGFuKCk7Zm9yKHQgaW4gdGhpcy5fem9vbUJvdW5kTGF5ZXJzKXZhciBvPXRoaXMuX3pvb21Cb3VuZExheWVyc1t0XS5vcHRpb25zLGU9dm9pZCAwPT09by5taW5ab29tP2U6TWF0aC5taW4oZSxvLm1pblpvb20pLGk9dm9pZCAwPT09by5tYXhab29tP2k6TWF0aC5tYXgoaSxvLm1heFpvb20pO3RoaXMuX2xheWVyc01heFpvb209aT09PS0xLzA/dm9pZCAwOmksdGhpcy5fbGF5ZXJzTWluWm9vbT1lPT09MS8wP3ZvaWQgMDplLG4hPT10aGlzLl9nZXRab29tU3BhbigpJiZ0aGlzLmZpcmUoXCJ6b29tbGV2ZWxzY2hhbmdlXCIpLHZvaWQgMD09PXRoaXMub3B0aW9ucy5tYXhab29tJiZ0aGlzLl9sYXllcnNNYXhab29tJiZ0aGlzLmdldFpvb20oKT50aGlzLl9sYXllcnNNYXhab29tJiZ0aGlzLnNldFpvb20odGhpcy5fbGF5ZXJzTWF4Wm9vbSksdm9pZCAwPT09dGhpcy5vcHRpb25zLm1pblpvb20mJnRoaXMuX2xheWVyc01pblpvb20mJnRoaXMuZ2V0Wm9vbSgpPHRoaXMuX2xheWVyc01pblpvb20mJnRoaXMuc2V0Wm9vbSh0aGlzLl9sYXllcnNNaW5ab29tKX19KSxvLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe3ZhciBpLG47aWYoYyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0KWZvcihpPTAsbj10Lmxlbmd0aDtpPG47aSsrKXRoaXMuYWRkTGF5ZXIodFtpXSl9LGFkZExheWVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0TGF5ZXJJZCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdPXQsdGhpcy5fbWFwJiZ0aGlzLl9tYXAuYWRkTGF5ZXIodCksdGhpc30scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7dD10IGluIHRoaXMuX2xheWVycz90OnRoaXMuZ2V0TGF5ZXJJZCh0KTtyZXR1cm4gdGhpcy5fbWFwJiZ0aGlzLl9sYXllcnNbdF0mJnRoaXMuX21hcC5yZW1vdmVMYXllcih0aGlzLl9sYXllcnNbdF0pLGRlbGV0ZSB0aGlzLl9sYXllcnNbdF0sdGhpc30saGFzTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuKFwibnVtYmVyXCI9PXR5cGVvZiB0P3Q6dGhpcy5nZXRMYXllcklkKHQpKWluIHRoaXMuX2xheWVyc30sY2xlYXJMYXllcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIodGhpcy5yZW1vdmVMYXllcix0aGlzKX0saW52b2tlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Zm9yKGUgaW4gdGhpcy5fbGF5ZXJzKShpPXRoaXMuX2xheWVyc1tlXSlbdF0mJmlbdF0uYXBwbHkoaSxuKTtyZXR1cm4gdGhpc30sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5lYWNoTGF5ZXIodC5hZGRMYXllcix0KX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5lYWNoTGF5ZXIodC5yZW1vdmVMYXllcix0KX0sZWFjaExheWVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIHRoaXMuX2xheWVycyl0LmNhbGwoZSx0aGlzLl9sYXllcnNbaV0pO3JldHVybiB0aGlzfSxnZXRMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF5ZXJzW3RdfSxnZXRMYXllcnM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIodC5wdXNoLHQpLHR9LHNldFpJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZva2UoXCJzZXRaSW5kZXhcIix0KX0sZ2V0TGF5ZXJJZDpofSkpLGNpPXVpLmV4dGVuZCh7YWRkTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk/dGhpczoodC5hZGRFdmVudFBhcmVudCh0aGlzKSx1aS5wcm90b3R5cGUuYWRkTGF5ZXIuY2FsbCh0aGlzLHQpLHRoaXMuZmlyZShcImxheWVyYWRkXCIse2xheWVyOnR9KSl9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpPygodD10IGluIHRoaXMuX2xheWVycz90aGlzLl9sYXllcnNbdF06dCkucmVtb3ZlRXZlbnRQYXJlbnQodGhpcyksdWkucHJvdG90eXBlLnJlbW92ZUxheWVyLmNhbGwodGhpcyx0KSx0aGlzLmZpcmUoXCJsYXllcnJlbW92ZVwiLHtsYXllcjp0fSkpOnRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZShcInNldFN0eWxlXCIsdCl9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludm9rZShcImJyaW5nVG9Gcm9udFwiKX0sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnZva2UoXCJicmluZ1RvQmFja1wiKX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgcztmb3IodCBpbiB0aGlzLl9sYXllcnMpe3ZhciBpPXRoaXMuX2xheWVyc1t0XTtlLmV4dGVuZChpLmdldEJvdW5kcz9pLmdldEJvdW5kcygpOmkuZ2V0TGF0TG5nKCkpfXJldHVybiBlfX0pLGRpPWV0LmV4dGVuZCh7b3B0aW9uczp7cG9wdXBBbmNob3I6WzAsMF0sdG9vbHRpcEFuY2hvcjpbMCwwXSxjcm9zc09yaWdpbjohMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtjKHRoaXMsdCl9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oXCJpY29uXCIsdCl9LGNyZWF0ZVNoYWRvdzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3JlYXRlSWNvbihcInNoYWRvd1wiLHQpfSxfY3JlYXRlSWNvbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldEljb25VcmwodCk7aWYoaSlyZXR1cm4gaT10aGlzLl9jcmVhdGVJbWcoaSxlJiZcIklNR1wiPT09ZS50YWdOYW1lP2U6bnVsbCksdGhpcy5fc2V0SWNvblN0eWxlcyhpLHQpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJlwiXCIhPT10aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW58fChpLmNyb3NzT3JpZ2luPSEwPT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luP1wiXCI6dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luKSxpO2lmKFwiaWNvblwiPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJpY29uVXJsIG5vdCBzZXQgaW4gSWNvbiBvcHRpb25zIChzZWUgdGhlIGRvY3MpLlwiKTtyZXR1cm4gbnVsbH0sX3NldEljb25TdHlsZXM6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9wdGlvbnMsbj1pW2UrXCJTaXplXCJdLG49bShuPVwibnVtYmVyXCI9PXR5cGVvZiBuP1tuLG5dOm4pLG89bShcInNoYWRvd1wiPT09ZSYmaS5zaGFkb3dBbmNob3J8fGkuaWNvbkFuY2hvcnx8biYmbi5kaXZpZGVCeSgyLCEwKSk7dC5jbGFzc05hbWU9XCJsZWFmbGV0LW1hcmtlci1cIitlK1wiIFwiKyhpLmNsYXNzTmFtZXx8XCJcIiksbyYmKHQuc3R5bGUubWFyZ2luTGVmdD0tby54K1wicHhcIix0LnN0eWxlLm1hcmdpblRvcD0tby55K1wicHhcIiksbiYmKHQuc3R5bGUud2lkdGg9bi54K1wicHhcIix0LnN0eWxlLmhlaWdodD1uLnkrXCJweFwiKX0sX2NyZWF0ZUltZzpmdW5jdGlvbih0LGUpe3JldHVybihlPWV8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIikpLnNyYz10LGV9LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBiLnJldGluYSYmdGhpcy5vcHRpb25zW3QrXCJSZXRpbmFVcmxcIl18fHRoaXMub3B0aW9uc1t0K1wiVXJsXCJdfX0pO3ZhciBfaT1kaS5leHRlbmQoe29wdGlvbnM6e2ljb25Vcmw6XCJtYXJrZXItaWNvbi5wbmdcIixpY29uUmV0aW5hVXJsOlwibWFya2VyLWljb24tMngucG5nXCIsc2hhZG93VXJsOlwibWFya2VyLXNoYWRvdy5wbmdcIixpY29uU2l6ZTpbMjUsNDFdLGljb25BbmNob3I6WzEyLDQxXSxwb3B1cEFuY2hvcjpbMSwtMzRdLHRvb2x0aXBBbmNob3I6WzE2LC0yOF0sc2hhZG93U2l6ZTpbNDEsNDFdfSxfZ2V0SWNvblVybDpmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgX2kuaW1hZ2VQYXRoJiYoX2kuaW1hZ2VQYXRoPXRoaXMuX2RldGVjdEljb25QYXRoKCkpLCh0aGlzLm9wdGlvbnMuaW1hZ2VQYXRofHxfaS5pbWFnZVBhdGgpK2RpLnByb3RvdHlwZS5fZ2V0SWNvblVybC5jYWxsKHRoaXMsdCl9LF9zdHJpcFVybDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSxpKXtyZXR1cm4oZT1lLmV4ZWModCkpJiZlW2ldfXJldHVybih0PWUodCwvXnVybFxcKChbJ1wiXSk/KC4rKVxcMVxcKSQvLDIpKSYmZSh0LC9eKC4qKW1hcmtlci1pY29uXFwucG5nJC8sMSl9LF9kZXRlY3RJY29uUGF0aDpmdW5jdGlvbigpe3ZhciB0PVAoXCJkaXZcIixcImxlYWZsZXQtZGVmYXVsdC1pY29uLXBhdGhcIixkb2N1bWVudC5ib2R5KSxlPXBlKHQsXCJiYWNrZ3JvdW5kLWltYWdlXCIpfHxwZSh0LFwiYmFja2dyb3VuZEltYWdlXCIpO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLChlPXRoaXMuX3N0cmlwVXJsKGUpKT9lOih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbaHJlZiQ9XCJsZWFmbGV0LmNzc1wiXScpKT90LmhyZWYuc3Vic3RyaW5nKDAsdC5ocmVmLmxlbmd0aC1cImxlYWZsZXQuY3NzXCIubGVuZ3RoLTEpOlwiXCJ9fSkscGk9bi5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyPXR9LGFkZEhvb2tzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFya2VyLl9pY29uO3RoaXMuX2RyYWdnYWJsZXx8KHRoaXMuX2RyYWdnYWJsZT1uZXcgWGUodCx0LCEwKSksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQscHJlZHJhZzp0aGlzLl9vblByZURyYWcsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLmVuYWJsZSgpLE0odCxcImxlYWZsZXQtbWFya2VyLWRyYWdnYWJsZVwiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQscHJlZHJhZzp0aGlzLl9vblByZURyYWcsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLmRpc2FibGUoKSx0aGlzLl9tYXJrZXIuX2ljb24mJnoodGhpcy5fbWFya2VyLl9pY29uLFwibGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlXCIpfSxtb3ZlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnZ2FibGUmJnRoaXMuX2RyYWdnYWJsZS5fbW92ZWR9LF9hZGp1c3RQYW46ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFya2VyLGk9ZS5fbWFwLG49dGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhblNwZWVkLG89dGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhblBhZGRpbmcscz1QZShlLl9pY29uKSxyPWkuZ2V0UGl4ZWxCb3VuZHMoKSxhPWkuZ2V0UGl4ZWxPcmlnaW4oKSxhPV8oci5taW4uX3N1YnRyYWN0KGEpLmFkZChvKSxyLm1heC5fc3VidHJhY3QoYSkuc3VidHJhY3QobykpO2EuY29udGFpbnMocyl8fChvPW0oKE1hdGgubWF4KGEubWF4Lngscy54KS1hLm1heC54KS8oci5tYXgueC1hLm1heC54KS0oTWF0aC5taW4oYS5taW4ueCxzLngpLWEubWluLngpLyhyLm1pbi54LWEubWluLngpLChNYXRoLm1heChhLm1heC55LHMueSktYS5tYXgueSkvKHIubWF4LnktYS5tYXgueSktKE1hdGgubWluKGEubWluLnkscy55KS1hLm1pbi55KS8oci5taW4ueS1hLm1pbi55KSkubXVsdGlwbHlCeShuKSxpLnBhbkJ5KG8se2FuaW1hdGU6ITF9KSx0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy5fYWRkKG8pLHRoaXMuX2RyYWdnYWJsZS5fc3RhcnRQb3MuX2FkZChvKSxaKGUuX2ljb24sdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MpLHRoaXMuX29uRHJhZyh0KSx0aGlzLl9wYW5SZXF1ZXN0PXgodGhpcy5fYWRqdXN0UGFuLmJpbmQodGhpcyx0KSkpfSxfb25EcmFnU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9vbGRMYXRMbmc9dGhpcy5fbWFya2VyLmdldExhdExuZygpLHRoaXMuX21hcmtlci5jbG9zZVBvcHVwJiZ0aGlzLl9tYXJrZXIuY2xvc2VQb3B1cCgpLHRoaXMuX21hcmtlci5maXJlKFwibW92ZXN0YXJ0XCIpLmZpcmUoXCJkcmFnc3RhcnRcIil9LF9vblByZURyYWc6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhbiYmKHIodGhpcy5fcGFuUmVxdWVzdCksdGhpcy5fcGFuUmVxdWVzdD14KHRoaXMuX2FkanVzdFBhbi5iaW5kKHRoaXMsdCkpKX0sX29uRHJhZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXJrZXIsaT1lLl9zaGFkb3csbj1QZShlLl9pY29uKSxvPWUuX21hcC5sYXllclBvaW50VG9MYXRMbmcobik7aSYmWihpLG4pLGUuX2xhdGxuZz1vLHQubGF0bG5nPW8sdC5vbGRMYXRMbmc9dGhpcy5fb2xkTGF0TG5nLGUuZmlyZShcIm1vdmVcIix0KS5maXJlKFwiZHJhZ1wiLHQpfSxfb25EcmFnRW5kOmZ1bmN0aW9uKHQpe3IodGhpcy5fcGFuUmVxdWVzdCksZGVsZXRlIHRoaXMuX29sZExhdExuZyx0aGlzLl9tYXJrZXIuZmlyZShcIm1vdmVlbmRcIikuZmlyZShcImRyYWdlbmRcIix0KX19KSxtaT1vLmV4dGVuZCh7b3B0aW9uczp7aWNvbjpuZXcgX2ksaW50ZXJhY3RpdmU6ITAsa2V5Ym9hcmQ6ITAsdGl0bGU6XCJcIixhbHQ6XCJNYXJrZXJcIix6SW5kZXhPZmZzZXQ6MCxvcGFjaXR5OjEscmlzZU9uSG92ZXI6ITEscmlzZU9mZnNldDoyNTAscGFuZTpcIm1hcmtlclBhbmVcIixzaGFkb3dQYW5lOlwic2hhZG93UGFuZVwiLGJ1YmJsaW5nTW91c2VFdmVudHM6ITEsYXV0b1Bhbk9uRm9jdXM6ITAsZHJhZ2dhYmxlOiExLGF1dG9QYW46ITEsYXV0b1BhblBhZGRpbmc6WzUwLDUwXSxhdXRvUGFuU3BlZWQ6MTB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtjKHRoaXMsZSksdGhpcy5fbGF0bG5nPXcodCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX3pvb21BbmltYXRlZD10aGlzLl96b29tQW5pbWF0ZWQmJnQub3B0aW9ucy5tYXJrZXJab29tQW5pbWF0aW9uLHRoaXMuX3pvb21BbmltYXRlZCYmdC5vbihcInpvb21hbmltXCIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyksdGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLmVuYWJsZWQoKSYmKHRoaXMub3B0aW9ucy5kcmFnZ2FibGU9ITAsdGhpcy5kcmFnZ2luZy5yZW1vdmVIb29rcygpKSxkZWxldGUgdGhpcy5kcmFnZ2luZyx0aGlzLl96b29tQW5pbWF0ZWQmJnQub2ZmKFwiem9vbWFuaW1cIix0aGlzLl9hbmltYXRlWm9vbSx0aGlzKSx0aGlzLl9yZW1vdmVJY29uKCksdGhpcy5fcmVtb3ZlU2hhZG93KCl9LGdldEV2ZW50czpmdW5jdGlvbigpe3JldHVybnt6b29tOnRoaXMudXBkYXRlLHZpZXdyZXNldDp0aGlzLnVwZGF0ZX19LGdldExhdExuZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmd9LHNldExhdExuZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9sYXRsbmc7cmV0dXJuIHRoaXMuX2xhdGxuZz13KHQpLHRoaXMudXBkYXRlKCksdGhpcy5maXJlKFwibW92ZVwiLHtvbGRMYXRMbmc6ZSxsYXRsbmc6dGhpcy5fbGF0bG5nfSl9LHNldFpJbmRleE9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldD10LHRoaXMudXBkYXRlKCl9LGdldEljb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmljb259LHNldEljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pY29uPXQsdGhpcy5fbWFwJiYodGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpKSx0aGlzLl9wb3B1cCYmdGhpcy5iaW5kUG9wdXAodGhpcy5fcG9wdXAsdGhpcy5fcG9wdXAub3B0aW9ucyksdGhpc30sZ2V0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pY29ufSx1cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5faWNvbiYmdGhpcy5fbWFwJiYodD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZykucm91bmQoKSx0aGlzLl9zZXRQb3ModCkpLHRoaXN9LF9pbml0SWNvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPVwibGVhZmxldC16b29tLVwiKyh0aGlzLl96b29tQW5pbWF0ZWQ/XCJhbmltYXRlZFwiOlwiaGlkZVwiKSxpPXQuaWNvbi5jcmVhdGVJY29uKHRoaXMuX2ljb24pLG49ITEsaT0oaSE9PXRoaXMuX2ljb24mJih0aGlzLl9pY29uJiZ0aGlzLl9yZW1vdmVJY29uKCksbj0hMCx0LnRpdGxlJiYoaS50aXRsZT10LnRpdGxlKSxcIklNR1wiPT09aS50YWdOYW1lJiYoaS5hbHQ9dC5hbHR8fFwiXCIpKSxNKGksZSksdC5rZXlib2FyZCYmKGkudGFiSW5kZXg9XCIwXCIsaS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJidXR0b25cIikpLHRoaXMuX2ljb249aSx0LnJpc2VPbkhvdmVyJiZ0aGlzLm9uKHttb3VzZW92ZXI6dGhpcy5fYnJpbmdUb0Zyb250LG1vdXNlb3V0OnRoaXMuX3Jlc2V0WkluZGV4fSksdGhpcy5vcHRpb25zLmF1dG9QYW5PbkZvY3VzJiZTKGksXCJmb2N1c1wiLHRoaXMuX3Bhbk9uRm9jdXMsdGhpcyksdC5pY29uLmNyZWF0ZVNoYWRvdyh0aGlzLl9zaGFkb3cpKSxvPSExO2khPT10aGlzLl9zaGFkb3cmJih0aGlzLl9yZW1vdmVTaGFkb3coKSxvPSEwKSxpJiYoTShpLGUpLGkuYWx0PVwiXCIpLHRoaXMuX3NoYWRvdz1pLHQub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksbiYmdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksdGhpcy5faW5pdEludGVyYWN0aW9uKCksaSYmbyYmdGhpcy5nZXRQYW5lKHQuc2hhZG93UGFuZSkuYXBwZW5kQ2hpbGQodGhpcy5fc2hhZG93KX0sX3JlbW92ZUljb246ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMucmlzZU9uSG92ZXImJnRoaXMub2ZmKHttb3VzZW92ZXI6dGhpcy5fYnJpbmdUb0Zyb250LG1vdXNlb3V0OnRoaXMuX3Jlc2V0WkluZGV4fSksdGhpcy5vcHRpb25zLmF1dG9QYW5PbkZvY3VzJiZrKHRoaXMuX2ljb24sXCJmb2N1c1wiLHRoaXMuX3Bhbk9uRm9jdXMsdGhpcyksVCh0aGlzLl9pY29uKSx0aGlzLnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2ljb24pLHRoaXMuX2ljb249bnVsbH0sX3JlbW92ZVNoYWRvdzpmdW5jdGlvbigpe3RoaXMuX3NoYWRvdyYmVCh0aGlzLl9zaGFkb3cpLHRoaXMuX3NoYWRvdz1udWxsfSxfc2V0UG9zOmZ1bmN0aW9uKHQpe3RoaXMuX2ljb24mJloodGhpcy5faWNvbix0KSx0aGlzLl9zaGFkb3cmJloodGhpcy5fc2hhZG93LHQpLHRoaXMuX3pJbmRleD10LnkrdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCx0aGlzLl9yZXNldFpJbmRleCgpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuX2ljb24mJih0aGlzLl9pY29uLnN0eWxlLnpJbmRleD10aGlzLl96SW5kZXgrdCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0PXRoaXMuX21hcC5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZyx0Lnpvb20sdC5jZW50ZXIpLnJvdW5kKCk7dGhpcy5fc2V0UG9zKHQpfSxfaW5pdEludGVyYWN0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5vcHRpb25zLmludGVyYWN0aXZlJiYoTSh0aGlzLl9pY29uLFwibGVhZmxldC1pbnRlcmFjdGl2ZVwiKSx0aGlzLmFkZEludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2ljb24pLHBpJiYodD10aGlzLm9wdGlvbnMuZHJhZ2dhYmxlLHRoaXMuZHJhZ2dpbmcmJih0PXRoaXMuZHJhZ2dpbmcuZW5hYmxlZCgpLHRoaXMuZHJhZ2dpbmcuZGlzYWJsZSgpKSx0aGlzLmRyYWdnaW5nPW5ldyBwaSh0aGlzKSx0JiZ0aGlzLmRyYWdnaW5nLmVuYWJsZSgpKSl9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5fbWFwJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpc30sX3VwZGF0ZU9wYWNpdHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMub3BhY2l0eTt0aGlzLl9pY29uJiZDKHRoaXMuX2ljb24sdCksdGhpcy5fc2hhZG93JiZDKHRoaXMuX3NoYWRvdyx0KX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVpJbmRleCh0aGlzLm9wdGlvbnMucmlzZU9mZnNldCl9LF9yZXNldFpJbmRleDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVpJbmRleCgwKX0sX3Bhbk9uRm9jdXM6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcy5fbWFwO2kmJih0PShlPXRoaXMub3B0aW9ucy5pY29uLm9wdGlvbnMpLmljb25TaXplP20oZS5pY29uU2l6ZSk6bSgwLDApLGU9ZS5pY29uQW5jaG9yP20oZS5pY29uQW5jaG9yKTptKDAsMCksaS5wYW5JbnNpZGUodGhpcy5fbGF0bG5nLHtwYWRkaW5nVG9wTGVmdDplLHBhZGRpbmdCb3R0b21SaWdodDp0LnN1YnRyYWN0KGUpfSkpfSxfZ2V0UG9wdXBBbmNob3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy5wb3B1cEFuY2hvcn0sX2dldFRvb2x0aXBBbmNob3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy50b29sdGlwQW5jaG9yfX0pO3ZhciBmaT1vLmV4dGVuZCh7b3B0aW9uczp7c3Ryb2tlOiEwLGNvbG9yOlwiIzMzODhmZlwiLHdlaWdodDozLG9wYWNpdHk6MSxsaW5lQ2FwOlwicm91bmRcIixsaW5lSm9pbjpcInJvdW5kXCIsZGFzaEFycmF5Om51bGwsZGFzaE9mZnNldDpudWxsLGZpbGw6ITEsZmlsbENvbG9yOm51bGwsZmlsbE9wYWNpdHk6LjIsZmlsbFJ1bGU6XCJldmVub2RkXCIsaW50ZXJhY3RpdmU6ITAsYnViYmxpbmdNb3VzZUV2ZW50czohMH0sYmVmb3JlQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyPXQuZ2V0UmVuZGVyZXIodGhpcyl9LG9uQWRkOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX2luaXRQYXRoKHRoaXMpLHRoaXMuX3Jlc2V0KCksdGhpcy5fcmVuZGVyZXIuX2FkZFBhdGgodGhpcyl9LG9uUmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX3JlbW92ZVBhdGgodGhpcyl9LHJlZHJhdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX3JlbmRlcmVyLl91cGRhdGVQYXRoKHRoaXMpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHRoaXMsdCksdGhpcy5fcmVuZGVyZXImJih0aGlzLl9yZW5kZXJlci5fdXBkYXRlU3R5bGUodGhpcyksdGhpcy5vcHRpb25zLnN0cm9rZSYmdCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsXCJ3ZWlnaHRcIikmJnRoaXMuX3VwZGF0ZUJvdW5kcygpKSx0aGlzfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXImJnRoaXMuX3JlbmRlcmVyLl9icmluZ1RvRnJvbnQodGhpcyksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXImJnRoaXMuX3JlbmRlcmVyLl9icmluZ1RvQmFjayh0aGlzKSx0aGlzfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhdGh9LF9yZXNldDpmdW5jdGlvbigpe3RoaXMuX3Byb2plY3QoKSx0aGlzLl91cGRhdGUoKX0sX2NsaWNrVG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMub3B0aW9ucy5zdHJva2U/dGhpcy5vcHRpb25zLndlaWdodC8yOjApKyh0aGlzLl9yZW5kZXJlci5vcHRpb25zLnRvbGVyYW5jZXx8MCl9fSksZ2k9ZmkuZXh0ZW5kKHtvcHRpb25zOntmaWxsOiEwLHJhZGl1czoxMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe2ModGhpcyxlKSx0aGlzLl9sYXRsbmc9dyh0KSx0aGlzLl9yYWRpdXM9dGhpcy5vcHRpb25zLnJhZGl1c30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xhdGxuZztyZXR1cm4gdGhpcy5fbGF0bG5nPXcodCksdGhpcy5yZWRyYXcoKSx0aGlzLmZpcmUoXCJtb3ZlXCIse29sZExhdExuZzplLGxhdGxuZzp0aGlzLl9sYXRsbmd9KX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucmFkaXVzPXRoaXMuX3JhZGl1cz10LHRoaXMucmVkcmF3KCl9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYWRpdXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXQmJnQucmFkaXVzfHx0aGlzLl9yYWRpdXM7cmV0dXJuIGZpLnByb3RvdHlwZS5zZXRTdHlsZS5jYWxsKHRoaXMsdCksdGhpcy5zZXRSYWRpdXMoZSksdGhpc30sX3Byb2plY3Q6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksdGhpcy5fdXBkYXRlQm91bmRzKCl9LF91cGRhdGVCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yYWRpdXMsZT10aGlzLl9yYWRpdXNZfHx0LGk9dGhpcy5fY2xpY2tUb2xlcmFuY2UoKSx0PVt0K2ksZStpXTt0aGlzLl9weEJvdW5kcz1uZXcgZih0aGlzLl9wb2ludC5zdWJ0cmFjdCh0KSx0aGlzLl9wb2ludC5hZGQodCkpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiZ0aGlzLl91cGRhdGVQYXRoKCl9LF91cGRhdGVQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX3VwZGF0ZUNpcmNsZSh0aGlzKX0sX2VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1cyYmIXRoaXMuX3JlbmRlcmVyLl9ib3VuZHMuaW50ZXJzZWN0cyh0aGlzLl9weEJvdW5kcyl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3RhbmNlVG8odGhpcy5fcG9pbnQpPD10aGlzLl9yYWRpdXMrdGhpcy5fY2xpY2tUb2xlcmFuY2UoKX19KTt2YXIgdmk9Z2kuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpKXtpZihjKHRoaXMsZT1cIm51bWJlclwiPT10eXBlb2YgZT9sKHt9LGkse3JhZGl1czplfSk6ZSksdGhpcy5fbGF0bG5nPXcodCksaXNOYU4odGhpcy5vcHRpb25zLnJhZGl1cykpdGhyb3cgbmV3IEVycm9yKFwiQ2lyY2xlIHJhZGl1cyBjYW5ub3QgYmUgTmFOXCIpO3RoaXMuX21SYWRpdXM9dGhpcy5vcHRpb25zLnJhZGl1c30sc2V0UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tUmFkaXVzPXQsdGhpcy5yZWRyYXcoKX0sZ2V0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21SYWRpdXN9LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PVt0aGlzLl9yYWRpdXMsdGhpcy5fcmFkaXVzWXx8dGhpcy5fcmFkaXVzXTtyZXR1cm4gbmV3IHModGhpcy5fbWFwLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9wb2ludC5zdWJ0cmFjdCh0KSksdGhpcy5fbWFwLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9wb2ludC5hZGQodCkpKX0sc2V0U3R5bGU6ZmkucHJvdG90eXBlLnNldFN0eWxlLF9wcm9qZWN0OmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbyxzPXRoaXMuX2xhdGxuZy5sbmcscj10aGlzLl9sYXRsbmcubGF0LGE9dGhpcy5fbWFwLGg9YS5vcHRpb25zLmNycztoLmRpc3RhbmNlPT09c3QuZGlzdGFuY2U/KG49TWF0aC5QSS8xODAsbz10aGlzLl9tUmFkaXVzL3N0LlIvbix0PWEucHJvamVjdChbcitvLHNdKSxlPWEucHJvamVjdChbci1vLHNdKSxlPXQuYWRkKGUpLmRpdmlkZUJ5KDIpLGk9YS51bnByb2plY3QoZSkubGF0LG49TWF0aC5hY29zKChNYXRoLmNvcyhvKm4pLU1hdGguc2luKHIqbikqTWF0aC5zaW4oaSpuKSkvKE1hdGguY29zKHIqbikqTWF0aC5jb3MoaSpuKSkpL24sIWlzTmFOKG4pJiYwIT09bnx8KG49by9NYXRoLmNvcyhNYXRoLlBJLzE4MCpyKSksdGhpcy5fcG9pbnQ9ZS5zdWJ0cmFjdChhLmdldFBpeGVsT3JpZ2luKCkpLHRoaXMuX3JhZGl1cz1pc05hTihuKT8wOmUueC1hLnByb2plY3QoW2kscy1uXSkueCx0aGlzLl9yYWRpdXNZPWUueS10LnkpOihvPWgudW5wcm9qZWN0KGgucHJvamVjdCh0aGlzLl9sYXRsbmcpLnN1YnRyYWN0KFt0aGlzLl9tUmFkaXVzLDBdKSksdGhpcy5fcG9pbnQ9YS5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSx0aGlzLl9yYWRpdXM9dGhpcy5fcG9pbnQueC1hLmxhdExuZ1RvTGF5ZXJQb2ludChvKS54KSx0aGlzLl91cGRhdGVCb3VuZHMoKX19KTt2YXIgeWk9ZmkuZXh0ZW5kKHtvcHRpb25zOntzbW9vdGhGYWN0b3I6MSxub0NsaXA6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtjKHRoaXMsZSksdGhpcy5fc2V0TGF0TG5ncyh0KX0sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmdzfSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zZXRMYXRMbmdzKHQpLHRoaXMucmVkcmF3KCl9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fbGF0bG5ncy5sZW5ndGh9LGNsb3Nlc3RMYXllclBvaW50OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xLzAsaT1udWxsLG49cmksbz0wLHM9dGhpcy5fcGFydHMubGVuZ3RoO288cztvKyspZm9yKHZhciByPXRoaXMuX3BhcnRzW29dLGE9MSxoPXIubGVuZ3RoO2E8aDthKyspe3ZhciBsLHUsYz1uKHQsbD1yW2EtMV0sdT1yW2FdLCEwKTtjPGUmJihlPWMsaT1uKHQsbCx1KSl9cmV0dXJuIGkmJihpLmRpc3RhbmNlPU1hdGguc3FydChlKSksaX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXJldHVybiBoaSh0aGlzLl9kZWZhdWx0U2hhcGUoKSx0aGlzLl9tYXAub3B0aW9ucy5jcnMpO3Rocm93IG5ldyBFcnJvcihcIk11c3QgYWRkIGxheWVyIHRvIG1hcCBiZWZvcmUgdXNpbmcgZ2V0Q2VudGVyKClcIil9LGdldEJvdW5kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZHN9LGFkZExhdExuZzpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fHRoaXMuX2RlZmF1bHRTaGFwZSgpLHQ9dyh0KSxlLnB1c2godCksdGhpcy5fYm91bmRzLmV4dGVuZCh0KSx0aGlzLnJlZHJhdygpfSxfc2V0TGF0TG5nczpmdW5jdGlvbih0KXt0aGlzLl9ib3VuZHM9bmV3IHMsdGhpcy5fbGF0bG5ncz10aGlzLl9jb252ZXJ0TGF0TG5ncyh0KX0sX2RlZmF1bHRTaGFwZTpmdW5jdGlvbigpe3JldHVybiBJKHRoaXMuX2xhdGxuZ3MpP3RoaXMuX2xhdGxuZ3M6dGhpcy5fbGF0bG5nc1swXX0sX2NvbnZlcnRMYXRMbmdzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPUkodCksbj0wLG89dC5sZW5ndGg7bjxvO24rKylpPyhlW25dPXcodFtuXSksdGhpcy5fYm91bmRzLmV4dGVuZChlW25dKSk6ZVtuXT10aGlzLl9jb252ZXJ0TGF0TG5ncyh0W25dKTtyZXR1cm4gZX0sX3Byb2plY3Q6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZjt0aGlzLl9yaW5ncz1bXSx0aGlzLl9wcm9qZWN0TGF0bG5ncyh0aGlzLl9sYXRsbmdzLHRoaXMuX3JpbmdzLHQpLHRoaXMuX2JvdW5kcy5pc1ZhbGlkKCkmJnQuaXNWYWxpZCgpJiYodGhpcy5fcmF3UHhCb3VuZHM9dCx0aGlzLl91cGRhdGVCb3VuZHMoKSl9LF91cGRhdGVCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jbGlja1RvbGVyYW5jZSgpLHQ9bmV3IHAodCx0KTt0aGlzLl9yYXdQeEJvdW5kcyYmKHRoaXMuX3B4Qm91bmRzPW5ldyBmKFt0aGlzLl9yYXdQeEJvdW5kcy5taW4uc3VidHJhY3QodCksdGhpcy5fcmF3UHhCb3VuZHMubWF4LmFkZCh0KV0pKX0sX3Byb2plY3RMYXRsbmdzOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHM9dFswXWluc3RhbmNlb2YgdixyPXQubGVuZ3RoO2lmKHMpe2ZvcihvPVtdLG49MDtuPHI7bisrKW9bbl09dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0W25dKSxpLmV4dGVuZChvW25dKTtlLnB1c2gobyl9ZWxzZSBmb3Iobj0wO248cjtuKyspdGhpcy5fcHJvamVjdExhdGxuZ3ModFtuXSxlLGkpfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlbmRlcmVyLl9ib3VuZHM7aWYodGhpcy5fcGFydHM9W10sdGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmludGVyc2VjdHModCkpaWYodGhpcy5vcHRpb25zLm5vQ2xpcCl0aGlzLl9wYXJ0cz10aGlzLl9yaW5ncztlbHNlIGZvcih2YXIgZSxpLG4sbyxzPXRoaXMuX3BhcnRzLHI9MCxhPTAsaD10aGlzLl9yaW5ncy5sZW5ndGg7cjxoO3IrKylmb3IoZT0wLGk9KG89dGhpcy5fcmluZ3Nbcl0pLmxlbmd0aDtlPGktMTtlKyspKG49bmkob1tlXSxvW2UrMV0sdCxlLCEwKSkmJihzW2FdPXNbYV18fFtdLHNbYV0ucHVzaChuWzBdKSxuWzFdPT09b1tlKzFdJiZlIT09aS0yfHwoc1thXS5wdXNoKG5bMV0pLGErKykpfSxfc2ltcGxpZnlQb2ludHM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fcGFydHMsZT10aGlzLm9wdGlvbnMuc21vb3RoRmFjdG9yLGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspdFtpXT1laSh0W2ldLGUpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiYodGhpcy5fY2xpcFBvaW50cygpLHRoaXMuX3NpbXBsaWZ5UG9pbnRzKCksdGhpcy5fdXBkYXRlUGF0aCgpKX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5fdXBkYXRlUG9seSh0aGlzKX0sX2NvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGEsaD10aGlzLl9jbGlja1RvbGVyYW5jZSgpO2lmKHRoaXMuX3B4Qm91bmRzJiZ0aGlzLl9weEJvdW5kcy5jb250YWlucyh0KSlmb3IoaT0wLHM9dGhpcy5fcGFydHMubGVuZ3RoO2k8cztpKyspZm9yKG49MCxvPShyPShhPXRoaXMuX3BhcnRzW2ldKS5sZW5ndGgpLTE7bjxyO289bisrKWlmKChlfHwwIT09bikmJmlpKHQsYVtvXSxhW25dKTw9aClyZXR1cm4hMDtyZXR1cm4hMX19KTt5aS5fZmxhdD1haTt2YXIgeGk9eWkuZXh0ZW5kKHtvcHRpb25zOntmaWxsOiEwfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2xhdGxuZ3MubGVuZ3RofHwhdGhpcy5fbGF0bG5nc1swXS5sZW5ndGh9LGdldENlbnRlcjpmdW5jdGlvbigpe2lmKHRoaXMuX21hcClyZXR1cm4gJGUodGhpcy5fZGVmYXVsdFNoYXBlKCksdGhpcy5fbWFwLm9wdGlvbnMuY3JzKTt0aHJvdyBuZXcgRXJyb3IoXCJNdXN0IGFkZCBsYXllciB0byBtYXAgYmVmb3JlIHVzaW5nIGdldENlbnRlcigpXCIpfSxfY29udmVydExhdExuZ3M6ZnVuY3Rpb24odCl7dmFyIHQ9eWkucHJvdG90eXBlLl9jb252ZXJ0TGF0TG5ncy5jYWxsKHRoaXMsdCksZT10Lmxlbmd0aDtyZXR1cm4gMjw9ZSYmdFswXWluc3RhbmNlb2YgdiYmdFswXS5lcXVhbHModFtlLTFdKSYmdC5wb3AoKSx0fSxfc2V0TGF0TG5nczpmdW5jdGlvbih0KXt5aS5wcm90b3R5cGUuX3NldExhdExuZ3MuY2FsbCh0aGlzLHQpLEkodGhpcy5fbGF0bG5ncykmJih0aGlzLl9sYXRsbmdzPVt0aGlzLl9sYXRsbmdzXSl9LF9kZWZhdWx0U2hhcGU6ZnVuY3Rpb24oKXtyZXR1cm4oSSh0aGlzLl9sYXRsbmdzWzBdKT90aGlzLl9sYXRsbmdzOnRoaXMuX2xhdGxuZ3NbMF0pWzBdfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlbmRlcmVyLl9ib3VuZHMsZT10aGlzLm9wdGlvbnMud2VpZ2h0LGU9bmV3IHAoZSxlKSx0PW5ldyBmKHQubWluLnN1YnRyYWN0KGUpLHQubWF4LmFkZChlKSk7aWYodGhpcy5fcGFydHM9W10sdGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmludGVyc2VjdHModCkpaWYodGhpcy5vcHRpb25zLm5vQ2xpcCl0aGlzLl9wYXJ0cz10aGlzLl9yaW5ncztlbHNlIGZvcih2YXIgaSxuPTAsbz10aGlzLl9yaW5ncy5sZW5ndGg7bjxvO24rKykoaT1KZSh0aGlzLl9yaW5nc1tuXSx0LCEwKSkubGVuZ3RoJiZ0aGlzLl9wYXJ0cy5wdXNoKGkpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLl91cGRhdGVQb2x5KHRoaXMsITApfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGw9ITE7aWYoIXRoaXMuX3B4Qm91bmRzfHwhdGhpcy5fcHhCb3VuZHMuY29udGFpbnModCkpcmV0dXJuITE7Zm9yKG89MCxhPXRoaXMuX3BhcnRzLmxlbmd0aDtvPGE7bysrKWZvcihzPTAscj0oaD0oZT10aGlzLl9wYXJ0c1tvXSkubGVuZ3RoKS0xO3M8aDtyPXMrKylpPWVbc10sbj1lW3JdLGkueT50LnkhPW4ueT50LnkmJnQueDwobi54LWkueCkqKHQueS1pLnkpLyhuLnktaS55KStpLngmJihsPSFsKTtyZXR1cm4gbHx8eWkucHJvdG90eXBlLl9jb250YWluc1BvaW50LmNhbGwodGhpcyx0LCEwKX19KTt2YXIgd2k9Y2kuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7Yyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG89ZCh0KT90OnQuZmVhdHVyZXM7aWYobyl7Zm9yKGU9MCxpPW8ubGVuZ3RoO2U8aTtlKyspKChuPW9bZV0pLmdlb21ldHJpZXN8fG4uZ2VvbWV0cnl8fG4uZmVhdHVyZXN8fG4uY29vcmRpbmF0ZXMpJiZ0aGlzLmFkZERhdGEobik7cmV0dXJuIHRoaXN9dmFyIHMscj10aGlzLm9wdGlvbnM7cmV0dXJuKCFyLmZpbHRlcnx8ci5maWx0ZXIodCkpJiYocz1iaSh0LHIpKT8ocy5mZWF0dXJlPVppKHQpLHMuZGVmYXVsdE9wdGlvbnM9cy5vcHRpb25zLHRoaXMucmVzZXRTdHlsZShzKSxyLm9uRWFjaEZlYXR1cmUmJnIub25FYWNoRmVhdHVyZSh0LHMpLHRoaXMuYWRkTGF5ZXIocykpOnRoaXN9LHJlc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5lYWNoTGF5ZXIodGhpcy5yZXNldFN0eWxlLHRoaXMpOih0Lm9wdGlvbnM9bCh7fSx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsdGhpcy5vcHRpb25zLnN0eWxlKSx0aGlzKX0sc2V0U3R5bGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe3RoaXMuX3NldExheWVyU3R5bGUodCxlKX0sdGhpcyl9LF9zZXRMYXllclN0eWxlOmZ1bmN0aW9uKHQsZSl7dC5zZXRTdHlsZSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJihlPWUodC5mZWF0dXJlKSksdC5zZXRTdHlsZShlKSl9fSk7ZnVuY3Rpb24gYmkodCxlKXt2YXIgaSxuLG8scyxyPVwiRmVhdHVyZVwiPT09dC50eXBlP3QuZ2VvbWV0cnk6dCxhPXI/ci5jb29yZGluYXRlczpudWxsLGg9W10sbD1lJiZlLnBvaW50VG9MYXllcix1PWUmJmUuY29vcmRzVG9MYXRMbmd8fExpO2lmKCFhJiYhcilyZXR1cm4gbnVsbDtzd2l0Y2goci50eXBlKXtjYXNlXCJQb2ludFwiOnJldHVybiBQaShsLHQsaT11KGEpLGUpO2Nhc2VcIk11bHRpUG9pbnRcIjpmb3Iobz0wLHM9YS5sZW5ndGg7bzxzO28rKylpPXUoYVtvXSksaC5wdXNoKFBpKGwsdCxpLGUpKTtyZXR1cm4gbmV3IGNpKGgpO2Nhc2VcIkxpbmVTdHJpbmdcIjpjYXNlXCJNdWx0aUxpbmVTdHJpbmdcIjpyZXR1cm4gbj1UaShhLFwiTGluZVN0cmluZ1wiPT09ci50eXBlPzA6MSx1KSxuZXcgeWkobixlKTtjYXNlXCJQb2x5Z29uXCI6Y2FzZVwiTXVsdGlQb2x5Z29uXCI6cmV0dXJuIG49VGkoYSxcIlBvbHlnb25cIj09PXIudHlwZT8xOjIsdSksbmV3IHhpKG4sZSk7Y2FzZVwiR2VvbWV0cnlDb2xsZWN0aW9uXCI6Zm9yKG89MCxzPXIuZ2VvbWV0cmllcy5sZW5ndGg7bzxzO28rKyl7dmFyIGM9Ymkoe2dlb21ldHJ5OnIuZ2VvbWV0cmllc1tvXSx0eXBlOlwiRmVhdHVyZVwiLHByb3BlcnRpZXM6dC5wcm9wZXJ0aWVzfSxlKTtjJiZoLnB1c2goYyl9cmV0dXJuIG5ldyBjaShoKTtjYXNlXCJGZWF0dXJlQ29sbGVjdGlvblwiOmZvcihvPTAscz1yLmZlYXR1cmVzLmxlbmd0aDtvPHM7bysrKXt2YXIgZD1iaShyLmZlYXR1cmVzW29dLGUpO2QmJmgucHVzaChkKX1yZXR1cm4gbmV3IGNpKGgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBHZW9KU09OIG9iamVjdC5cIil9fWZ1bmN0aW9uIFBpKHQsZSxpLG4pe3JldHVybiB0P3QoZSxpKTpuZXcgbWkoaSxuJiZuLm1hcmtlcnNJbmhlcml0T3B0aW9ucyYmbil9ZnVuY3Rpb24gTGkodCl7cmV0dXJuIG5ldyB2KHRbMV0sdFswXSx0WzJdKX1mdW5jdGlvbiBUaSh0LGUsaSl7Zm9yKHZhciBuLG89W10scz0wLHI9dC5sZW5ndGg7czxyO3MrKyluPWU/VGkodFtzXSxlLTEsaSk6KGl8fExpKSh0W3NdKSxvLnB1c2gobik7cmV0dXJuIG99ZnVuY3Rpb24gTWkodCxlKXtyZXR1cm4gdm9pZCAwIT09KHQ9dyh0KSkuYWx0P1tpKHQubG5nLGUpLGkodC5sYXQsZSksaSh0LmFsdCxlKV06W2kodC5sbmcsZSksaSh0LmxhdCxlKV19ZnVuY3Rpb24gemkodCxlLGksbil7Zm9yKHZhciBvPVtdLHM9MCxyPXQubGVuZ3RoO3M8cjtzKyspby5wdXNoKGU/emkodFtzXSxJKHRbc10pPzA6ZS0xLGksbik6TWkodFtzXSxuKSk7cmV0dXJuIWUmJmkmJjA8by5sZW5ndGgmJm8ucHVzaChvWzBdLnNsaWNlKCkpLG99ZnVuY3Rpb24gQ2kodCxlKXtyZXR1cm4gdC5mZWF0dXJlP2woe30sdC5mZWF0dXJlLHtnZW9tZXRyeTplfSk6WmkoZSl9ZnVuY3Rpb24gWmkodCl7cmV0dXJuXCJGZWF0dXJlXCI9PT10LnR5cGV8fFwiRmVhdHVyZUNvbGxlY3Rpb25cIj09PXQudHlwZT90Ont0eXBlOlwiRmVhdHVyZVwiLHByb3BlcnRpZXM6e30sZ2VvbWV0cnk6dH19VHQ9e3RvR2VvSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4gQ2kodGhpcyx7dHlwZTpcIlBvaW50XCIsY29vcmRpbmF0ZXM6TWkodGhpcy5nZXRMYXRMbmcoKSx0KX0pfX07ZnVuY3Rpb24gU2kodCxlKXtyZXR1cm4gbmV3IHdpKHQsZSl9bWkuaW5jbHVkZShUdCksdmkuaW5jbHVkZShUdCksZ2kuaW5jbHVkZShUdCkseWkuaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPSFJKHRoaXMuX2xhdGxuZ3MpO3JldHVybiBDaSh0aGlzLHt0eXBlOihlP1wiTXVsdGlcIjpcIlwiKStcIkxpbmVTdHJpbmdcIixjb29yZGluYXRlczp6aSh0aGlzLl9sYXRsbmdzLGU/MTowLCExLHQpfSl9fSkseGkuaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPSFJKHRoaXMuX2xhdGxuZ3MpLGk9ZSYmIUkodGhpcy5fbGF0bG5nc1swXSksdD16aSh0aGlzLl9sYXRsbmdzLGk/MjplPzE6MCwhMCx0KTtyZXR1cm4gQ2kodGhpcyx7dHlwZTooaT9cIk11bHRpXCI6XCJcIikrXCJQb2x5Z29uXCIsY29vcmRpbmF0ZXM6dD1lP3Q6W3RdfSl9fSksdWkuaW5jbHVkZSh7dG9NdWx0aVBvaW50OmZ1bmN0aW9uKGUpe3ZhciBpPVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbih0KXtpLnB1c2godC50b0dlb0pTT04oZSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSksQ2kodGhpcyx7dHlwZTpcIk11bHRpUG9pbnRcIixjb29yZGluYXRlczppfSl9LHRvR2VvSlNPTjpmdW5jdGlvbihlKXt2YXIgaSxuLHQ9dGhpcy5mZWF0dXJlJiZ0aGlzLmZlYXR1cmUuZ2VvbWV0cnkmJnRoaXMuZmVhdHVyZS5nZW9tZXRyeS50eXBlO3JldHVyblwiTXVsdGlQb2ludFwiPT09dD90aGlzLnRvTXVsdGlQb2ludChlKTooaT1cIkdlb21ldHJ5Q29sbGVjdGlvblwiPT09dCxuPVtdLHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe3QudG9HZW9KU09OJiYodD10LnRvR2VvSlNPTihlKSxpP24ucHVzaCh0Lmdlb21ldHJ5KTpcIkZlYXR1cmVDb2xsZWN0aW9uXCI9PT0odD1aaSh0KSkudHlwZT9uLnB1c2guYXBwbHkobix0LmZlYXR1cmVzKTpuLnB1c2godCkpfSksaT9DaSh0aGlzLHtnZW9tZXRyaWVzOm4sdHlwZTpcIkdlb21ldHJ5Q29sbGVjdGlvblwifSk6e3R5cGU6XCJGZWF0dXJlQ29sbGVjdGlvblwiLGZlYXR1cmVzOm59KX19KTt2YXIgTXQ9U2ksRWk9by5leHRlbmQoe29wdGlvbnM6e29wYWNpdHk6MSxhbHQ6XCJcIixpbnRlcmFjdGl2ZTohMSxjcm9zc09yaWdpbjohMSxlcnJvck92ZXJsYXlVcmw6XCJcIix6SW5kZXg6MSxjbGFzc05hbWU6XCJcIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fdXJsPXQsdGhpcy5fYm91bmRzPWcoZSksYyh0aGlzLGkpfSxvbkFkZDpmdW5jdGlvbigpe3RoaXMuX2ltYWdlfHwodGhpcy5faW5pdEltYWdlKCksdGhpcy5vcHRpb25zLm9wYWNpdHk8MSYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpKSx0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJihNKHRoaXMuX2ltYWdlLFwibGVhZmxldC1pbnRlcmFjdGl2ZVwiKSx0aGlzLmFkZEludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2ltYWdlKSksdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2UpLHRoaXMuX3Jlc2V0KCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKCl7VCh0aGlzLl9pbWFnZSksdGhpcy5vcHRpb25zLmludGVyYWN0aXZlJiZ0aGlzLnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2ltYWdlKX0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9pbWFnZSYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm9wYWNpdHkmJnRoaXMuc2V0T3BhY2l0eSh0Lm9wYWNpdHkpLHRoaXN9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJmZlKHRoaXMuX2ltYWdlKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJmdlKHRoaXMuX2ltYWdlKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VybD10LHRoaXMuX2ltYWdlJiYodGhpcy5faW1hZ2Uuc3JjPXQpLHRoaXN9LHNldEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYm91bmRzPWcodCksdGhpcy5fbWFwJiZ0aGlzLl9yZXNldCgpLHRoaXN9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt6b29tOnRoaXMuX3Jlc2V0LHZpZXdyZXNldDp0aGlzLl9yZXNldH07cmV0dXJuIHRoaXMuX3pvb21BbmltYXRlZCYmKHQuem9vbWFuaW09dGhpcy5fYW5pbWF0ZVpvb20pLHR9LHNldFpJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLnpJbmRleD10LHRoaXMuX3VwZGF0ZVpJbmRleCgpLHRoaXN9LGdldEJvdW5kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZHN9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW1hZ2V9LF9pbml0SW1hZ2U6ZnVuY3Rpb24oKXt2YXIgdD1cIklNR1wiPT09dGhpcy5fdXJsLnRhZ05hbWUsZT10aGlzLl9pbWFnZT10P3RoaXMuX3VybDpQKFwiaW1nXCIpO00oZSxcImxlYWZsZXQtaW1hZ2UtbGF5ZXJcIiksdGhpcy5fem9vbUFuaW1hdGVkJiZNKGUsXCJsZWFmbGV0LXpvb20tYW5pbWF0ZWRcIiksdGhpcy5vcHRpb25zLmNsYXNzTmFtZSYmTShlLHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLGUub25zZWxlY3RzdGFydD11LGUub25tb3VzZW1vdmU9dSxlLm9ubG9hZD1hKHRoaXMuZmlyZSx0aGlzLFwibG9hZFwiKSxlLm9uZXJyb3I9YSh0aGlzLl9vdmVybGF5T25FcnJvcix0aGlzLFwiZXJyb3JcIiksIXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbiYmXCJcIiE9PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbnx8KGUuY3Jvc3NPcmlnaW49ITA9PT10aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4/XCJcIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLHRoaXMub3B0aW9ucy56SW5kZXgmJnRoaXMuX3VwZGF0ZVpJbmRleCgpLHQ/dGhpcy5fdXJsPWUuc3JjOihlLnNyYz10aGlzLl91cmwsZS5hbHQ9dGhpcy5vcHRpb25zLmFsdCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKHQuem9vbSksdD10aGlzLl9tYXAuX2xhdExuZ0JvdW5kc1RvTmV3TGF5ZXJCb3VuZHModGhpcy5fYm91bmRzLHQuem9vbSx0LmNlbnRlcikubWluO2JlKHRoaXMuX2ltYWdlLHQsZSl9LF9yZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ltYWdlLGU9bmV3IGYodGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ib3VuZHMuZ2V0Tm9ydGhXZXN0KCkpLHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKSksaT1lLmdldFNpemUoKTtaKHQsZS5taW4pLHQuc3R5bGUud2lkdGg9aS54K1wicHhcIix0LnN0eWxlLmhlaWdodD1pLnkrXCJweFwifSxfdXBkYXRlT3BhY2l0eTpmdW5jdGlvbigpe0ModGhpcy5faW1hZ2UsdGhpcy5vcHRpb25zLm9wYWNpdHkpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5faW1hZ2UmJnZvaWQgMCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJm51bGwhPT10aGlzLm9wdGlvbnMuekluZGV4JiYodGhpcy5faW1hZ2Uuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfb3ZlcmxheU9uRXJyb3I6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoXCJlcnJvclwiKTt2YXIgdD10aGlzLm9wdGlvbnMuZXJyb3JPdmVybGF5VXJsO3QmJnRoaXMuX3VybCE9PXQmJih0aGlzLl91cmw9dCx0aGlzLl9pbWFnZS5zcmM9dCl9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZHMuZ2V0Q2VudGVyKCl9fSksa2k9RWkuZXh0ZW5kKHtvcHRpb25zOnthdXRvcGxheTohMCxsb29wOiEwLGtlZXBBc3BlY3RSYXRpbzohMCxtdXRlZDohMSxwbGF5c0lubGluZTohMH0sX2luaXRJbWFnZTpmdW5jdGlvbigpe3ZhciB0PVwiVklERU9cIj09PXRoaXMuX3VybC50YWdOYW1lLGU9dGhpcy5faW1hZ2U9dD90aGlzLl91cmw6UChcInZpZGVvXCIpO2lmKE0oZSxcImxlYWZsZXQtaW1hZ2UtbGF5ZXJcIiksdGhpcy5fem9vbUFuaW1hdGVkJiZNKGUsXCJsZWFmbGV0LXpvb20tYW5pbWF0ZWRcIiksdGhpcy5vcHRpb25zLmNsYXNzTmFtZSYmTShlLHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLGUub25zZWxlY3RzdGFydD11LGUub25tb3VzZW1vdmU9dSxlLm9ubG9hZGVkZGF0YT1hKHRoaXMuZmlyZSx0aGlzLFwibG9hZFwiKSx0KXtmb3IodmFyIGk9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNvdXJjZVwiKSxuPVtdLG89MDtvPGkubGVuZ3RoO28rKyluLnB1c2goaVtvXS5zcmMpO3RoaXMuX3VybD0wPGkubGVuZ3RoP246W2Uuc3JjXX1lbHNle2QodGhpcy5fdXJsKXx8KHRoaXMuX3VybD1bdGhpcy5fdXJsXSksIXRoaXMub3B0aW9ucy5rZWVwQXNwZWN0UmF0aW8mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLnN0eWxlLFwib2JqZWN0Rml0XCIpJiYoZS5zdHlsZS5vYmplY3RGaXQ9XCJmaWxsXCIpLGUuYXV0b3BsYXk9ISF0aGlzLm9wdGlvbnMuYXV0b3BsYXksZS5sb29wPSEhdGhpcy5vcHRpb25zLmxvb3AsZS5tdXRlZD0hIXRoaXMub3B0aW9ucy5tdXRlZCxlLnBsYXlzSW5saW5lPSEhdGhpcy5vcHRpb25zLnBsYXlzSW5saW5lO2Zvcih2YXIgcz0wO3M8dGhpcy5fdXJsLmxlbmd0aDtzKyspe3ZhciByPVAoXCJzb3VyY2VcIik7ci5zcmM9dGhpcy5fdXJsW3NdLGUuYXBwZW5kQ2hpbGQocil9fX19KTt2YXIgT2k9RWkuZXh0ZW5kKHtfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW1hZ2U9dGhpcy5fdXJsO00odCxcImxlYWZsZXQtaW1hZ2UtbGF5ZXJcIiksdGhpcy5fem9vbUFuaW1hdGVkJiZNKHQsXCJsZWFmbGV0LXpvb20tYW5pbWF0ZWRcIiksdGhpcy5vcHRpb25zLmNsYXNzTmFtZSYmTSh0LHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLHQub25zZWxlY3RzdGFydD11LHQub25tb3VzZW1vdmU9dX19KTt2YXIgQWk9by5leHRlbmQoe29wdGlvbnM6e2ludGVyYWN0aXZlOiExLG9mZnNldDpbMCwwXSxjbGFzc05hbWU6XCJcIixwYW5lOnZvaWQgMCxjb250ZW50OlwiXCJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0JiYodCBpbnN0YW5jZW9mIHZ8fGQodCkpPyh0aGlzLl9sYXRsbmc9dyh0KSxjKHRoaXMsZSkpOihjKHRoaXMsdCksdGhpcy5fc291cmNlPWUpLHRoaXMub3B0aW9ucy5jb250ZW50JiYodGhpcy5fY29udGVudD10aGlzLm9wdGlvbnMuY29udGVudCl9LG9wZW5PbjpmdW5jdGlvbih0KXtyZXR1cm4odD1hcmd1bWVudHMubGVuZ3RoP3Q6dGhpcy5fc291cmNlLl9tYXApLmhhc0xheWVyKHRoaXMpfHx0LmFkZExheWVyKHRoaXMpLHRoaXN9LGNsb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMpLHRoaXN9LHRvZ2dsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWFwP3RoaXMuY2xvc2UoKTooYXJndW1lbnRzLmxlbmd0aD90aGlzLl9zb3VyY2U9dDp0PXRoaXMuX3NvdXJjZSx0aGlzLl9wcmVwYXJlT3BlbigpLHRoaXMub3Blbk9uKHQuX21hcCkpLHRoaXN9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX3pvb21BbmltYXRlZD10Ll96b29tQW5pbWF0ZWQsdGhpcy5fY29udGFpbmVyfHx0aGlzLl9pbml0TGF5b3V0KCksdC5fZmFkZUFuaW1hdGVkJiZDKHRoaXMuX2NvbnRhaW5lciwwKSxjbGVhclRpbWVvdXQodGhpcy5fcmVtb3ZlVGltZW91dCksdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLnVwZGF0ZSgpLHQuX2ZhZGVBbmltYXRlZCYmQyh0aGlzLl9jb250YWluZXIsMSksdGhpcy5icmluZ1RvRnJvbnQoKSx0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJihNKHRoaXMuX2NvbnRhaW5lcixcImxlYWZsZXQtaW50ZXJhY3RpdmVcIiksdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9jb250YWluZXIpKX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5fZmFkZUFuaW1hdGVkPyhDKHRoaXMuX2NvbnRhaW5lciwwKSx0aGlzLl9yZW1vdmVUaW1lb3V0PXNldFRpbWVvdXQoYShULHZvaWQgMCx0aGlzLl9jb250YWluZXIpLDIwMCkpOlQodGhpcy5fY29udGFpbmVyKSx0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJih6KHRoaXMuX2NvbnRhaW5lcixcImxlYWZsZXQtaW50ZXJhY3RpdmVcIiksdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9jb250YWluZXIpKX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9dyh0KSx0aGlzLl9tYXAmJih0aGlzLl91cGRhdGVQb3NpdGlvbigpLHRoaXMuX2FkanVzdFBhbigpKSx0aGlzfSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnR9LHNldENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbnRlbnQ9dCx0aGlzLnVwZGF0ZSgpLHRoaXN9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwiLHRoaXMuX3VwZGF0ZUNvbnRlbnQoKSx0aGlzLl91cGRhdGVMYXlvdXQoKSx0aGlzLl91cGRhdGVQb3NpdGlvbigpLHRoaXMuX2NvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PVwiXCIsdGhpcy5fYWRqdXN0UGFuKCkpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17em9vbTp0aGlzLl91cGRhdGVQb3NpdGlvbix2aWV3cmVzZXQ6dGhpcy5fdXBkYXRlUG9zaXRpb259O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX2FuaW1hdGVab29tKSx0fSxpc09wZW46ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX21hcCYmdGhpcy5fbWFwLmhhc0xheWVyKHRoaXMpfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZmZSh0aGlzLl9jb250YWluZXIpLHRoaXN9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmZ2UodGhpcy5fY29udGFpbmVyKSx0aGlzfSxfcHJlcGFyZU9wZW46ZnVuY3Rpb24odCl7aWYoIShpPXRoaXMuX3NvdXJjZSkuX21hcClyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgY2kpe3ZhciBlLGk9bnVsbCxuPXRoaXMuX3NvdXJjZS5fbGF5ZXJzO2ZvcihlIGluIG4paWYobltlXS5fbWFwKXtpPW5bZV07YnJlYWt9aWYoIWkpcmV0dXJuITE7dGhpcy5fc291cmNlPWl9aWYoIXQpaWYoaS5nZXRDZW50ZXIpdD1pLmdldENlbnRlcigpO2Vsc2UgaWYoaS5nZXRMYXRMbmcpdD1pLmdldExhdExuZygpO2Vsc2V7aWYoIWkuZ2V0Qm91bmRzKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBnZXQgc291cmNlIGxheWVyIExhdExuZy5cIik7dD1pLmdldEJvdW5kcygpLmdldENlbnRlcigpfXJldHVybiB0aGlzLnNldExhdExuZyh0KSx0aGlzLl9tYXAmJnRoaXMudXBkYXRlKCksITB9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGVudCl7dmFyIHQ9dGhpcy5fY29udGVudE5vZGUsZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLl9jb250ZW50P3RoaXMuX2NvbnRlbnQodGhpcy5fc291cmNlfHx0aGlzKTp0aGlzLl9jb250ZW50O2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXQuaW5uZXJIVE1MPWU7ZWxzZXtmb3IoO3QuaGFzQ2hpbGROb2RlcygpOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCk7dC5hcHBlbmRDaGlsZChlKX10aGlzLmZpcmUoXCJjb250ZW50dXBkYXRlXCIpfX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO3RoaXMuX21hcCYmKGU9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpLHQ9bSh0aGlzLm9wdGlvbnMub2Zmc2V0KSxpPXRoaXMuX2dldEFuY2hvcigpLHRoaXMuX3pvb21BbmltYXRlZD9aKHRoaXMuX2NvbnRhaW5lcixlLmFkZChpKSk6dD10LmFkZChlKS5hZGQoaSksZT10aGlzLl9jb250YWluZXJCb3R0b209LXQueSxpPXRoaXMuX2NvbnRhaW5lckxlZnQ9LU1hdGgucm91bmQodGhpcy5fY29udGFpbmVyV2lkdGgvMikrdC54LHRoaXMuX2NvbnRhaW5lci5zdHlsZS5ib3R0b209ZStcInB4XCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLmxlZnQ9aStcInB4XCIpfSxfZ2V0QW5jaG9yOmZ1bmN0aW9uKCl7cmV0dXJuWzAsMF19fSksQmk9KEEuaW5jbHVkZSh7X2luaXRPdmVybGF5OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvPWU7cmV0dXJuIG8gaW5zdGFuY2VvZiB0fHwobz1uZXcgdChuKS5zZXRDb250ZW50KGUpKSxpJiZvLnNldExhdExuZyhpKSxvfX0pLG8uaW5jbHVkZSh7X2luaXRPdmVybGF5OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvPWk7cmV0dXJuIG8gaW5zdGFuY2VvZiB0PyhjKG8sbiksby5fc291cmNlPXRoaXMpOihvPWUmJiFuP2U6bmV3IHQobix0aGlzKSkuc2V0Q29udGVudChpKSxvfX0pLEFpLmV4dGVuZCh7b3B0aW9uczp7cGFuZTpcInBvcHVwUGFuZVwiLG9mZnNldDpbMCw3XSxtYXhXaWR0aDozMDAsbWluV2lkdGg6NTAsbWF4SGVpZ2h0Om51bGwsYXV0b1BhbjohMCxhdXRvUGFuUGFkZGluZ1RvcExlZnQ6bnVsbCxhdXRvUGFuUGFkZGluZ0JvdHRvbVJpZ2h0Om51bGwsYXV0b1BhblBhZGRpbmc6WzUsNV0sa2VlcEluVmlldzohMSxjbG9zZUJ1dHRvbjohMCxhdXRvQ2xvc2U6ITAsY2xvc2VPbkVzY2FwZUtleTohMCxjbGFzc05hbWU6XCJcIn0sb3Blbk9uOmZ1bmN0aW9uKHQpe3JldHVybiEodD1hcmd1bWVudHMubGVuZ3RoP3Q6dGhpcy5fc291cmNlLl9tYXApLmhhc0xheWVyKHRoaXMpJiZ0Ll9wb3B1cCYmdC5fcG9wdXAub3B0aW9ucy5hdXRvQ2xvc2UmJnQucmVtb3ZlTGF5ZXIodC5fcG9wdXApLHQuX3BvcHVwPXRoaXMsQWkucHJvdG90eXBlLm9wZW5Pbi5jYWxsKHRoaXMsdCl9LG9uQWRkOmZ1bmN0aW9uKHQpe0FpLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCksdC5maXJlKFwicG9wdXBvcGVuXCIse3BvcHVwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJih0aGlzLl9zb3VyY2UuZmlyZShcInBvcHVwb3BlblwiLHtwb3B1cDp0aGlzfSwhMCksdGhpcy5fc291cmNlIGluc3RhbmNlb2YgZml8fHRoaXMuX3NvdXJjZS5vbihcInByZWNsaWNrXCIsQWUpKX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7QWkucHJvdG90eXBlLm9uUmVtb3ZlLmNhbGwodGhpcyx0KSx0LmZpcmUoXCJwb3B1cGNsb3NlXCIse3BvcHVwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJih0aGlzLl9zb3VyY2UuZmlyZShcInBvcHVwY2xvc2VcIix7cG9wdXA6dGhpc30sITApLHRoaXMuX3NvdXJjZSBpbnN0YW5jZW9mIGZpfHx0aGlzLl9zb3VyY2Uub2ZmKFwicHJlY2xpY2tcIixBZSkpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1BaS5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7cmV0dXJuKHZvaWQgMCE9PXRoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2s/dGhpcy5vcHRpb25zLmNsb3NlT25DbGljazp0aGlzLl9tYXAub3B0aW9ucy5jbG9zZVBvcHVwT25DbGljaykmJih0LnByZWNsaWNrPXRoaXMuY2xvc2UpLHRoaXMub3B0aW9ucy5rZWVwSW5WaWV3JiYodC5tb3ZlZW5kPXRoaXMuX2FkanVzdFBhbiksdH0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD1cImxlYWZsZXQtcG9wdXBcIixlPXRoaXMuX2NvbnRhaW5lcj1QKFwiZGl2XCIsdCtcIiBcIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8XCJcIikrXCIgbGVhZmxldC16b29tLWFuaW1hdGVkXCIpLGk9dGhpcy5fd3JhcHBlcj1QKFwiZGl2XCIsdCtcIi1jb250ZW50LXdyYXBwZXJcIixlKTt0aGlzLl9jb250ZW50Tm9kZT1QKFwiZGl2XCIsdCtcIi1jb250ZW50XCIsaSksSWUoZSksQmUodGhpcy5fY29udGVudE5vZGUpLFMoZSxcImNvbnRleHRtZW51XCIsQWUpLHRoaXMuX3RpcENvbnRhaW5lcj1QKFwiZGl2XCIsdCtcIi10aXAtY29udGFpbmVyXCIsZSksdGhpcy5fdGlwPVAoXCJkaXZcIix0K1wiLXRpcFwiLHRoaXMuX3RpcENvbnRhaW5lciksdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYoKGk9dGhpcy5fY2xvc2VCdXR0b249UChcImFcIix0K1wiLWNsb3NlLWJ1dHRvblwiLGUpKS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJidXR0b25cIiksaS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJDbG9zZSBwb3B1cFwiKSxpLmhyZWY9XCIjY2xvc2VcIixpLmlubmVySFRNTD0nPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JiMyMTU7PC9zcGFuPicsUyhpLFwiY2xpY2tcIixmdW5jdGlvbih0KXtPKHQpLHRoaXMuY2xvc2UoKX0sdGhpcykpfSxfdXBkYXRlTGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29udGVudE5vZGUsZT10LnN0eWxlLGk9KGUud2lkdGg9XCJcIixlLndoaXRlU3BhY2U9XCJub3dyYXBcIix0Lm9mZnNldFdpZHRoKSxpPU1hdGgubWluKGksdGhpcy5vcHRpb25zLm1heFdpZHRoKSxpPShpPU1hdGgubWF4KGksdGhpcy5vcHRpb25zLm1pbldpZHRoKSxlLndpZHRoPWkrMStcInB4XCIsZS53aGl0ZVNwYWNlPVwiXCIsZS5oZWlnaHQ9XCJcIix0Lm9mZnNldEhlaWdodCksbj10aGlzLm9wdGlvbnMubWF4SGVpZ2h0LG89XCJsZWFmbGV0LXBvcHVwLXNjcm9sbGVkXCI7KG4mJm48aT8oZS5oZWlnaHQ9bitcInB4XCIsTSk6eikodCxvKSx0aGlzLl9jb250YWluZXJXaWR0aD10aGlzLl9jb250YWluZXIub2Zmc2V0V2lkdGh9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt2YXIgdD10aGlzLl9tYXAuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcsdC56b29tLHQuY2VudGVyKSxlPXRoaXMuX2dldEFuY2hvcigpO1oodGhpcy5fY29udGFpbmVyLHQuYWRkKGUpKX0sX2FkanVzdFBhbjpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scyxyLGE7dGhpcy5vcHRpb25zLmF1dG9QYW4mJih0aGlzLl9tYXAuX3BhbkFuaW0mJnRoaXMuX21hcC5fcGFuQW5pbS5zdG9wKCksdGhpcy5fYXV0b3Bhbm5pbmc/dGhpcy5fYXV0b3Bhbm5pbmc9ITE6KHQ9dGhpcy5fbWFwLGU9cGFyc2VJbnQocGUodGhpcy5fY29udGFpbmVyLFwibWFyZ2luQm90dG9tXCIpLDEwKXx8MCxlPXRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQrZSxhPXRoaXMuX2NvbnRhaW5lcldpZHRoLChpPW5ldyBwKHRoaXMuX2NvbnRhaW5lckxlZnQsLWUtdGhpcy5fY29udGFpbmVyQm90dG9tKSkuX2FkZChQZSh0aGlzLl9jb250YWluZXIpKSxpPXQubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQoaSksbz1tKHRoaXMub3B0aW9ucy5hdXRvUGFuUGFkZGluZyksbj1tKHRoaXMub3B0aW9ucy5hdXRvUGFuUGFkZGluZ1RvcExlZnR8fG8pLG89bSh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmdCb3R0b21SaWdodHx8bykscz10LmdldFNpemUoKSxyPTAsaS54K2Erby54PnMueCYmKHI9aS54K2Etcy54K28ueCksaS54LXItbi54PChhPTApJiYocj1pLngtbi54KSxpLnkrZStvLnk+cy55JiYoYT1pLnkrZS1zLnkrby55KSxpLnktYS1uLnk8MCYmKGE9aS55LW4ueSksKHJ8fGEpJiYodGhpcy5vcHRpb25zLmtlZXBJblZpZXcmJih0aGlzLl9hdXRvcGFubmluZz0hMCksdC5maXJlKFwiYXV0b3BhbnN0YXJ0XCIpLnBhbkJ5KFtyLGFdKSkpKX0sX2dldEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3NvdXJjZSYmdGhpcy5fc291cmNlLl9nZXRQb3B1cEFuY2hvcj90aGlzLl9zb3VyY2UuX2dldFBvcHVwQW5jaG9yKCk6WzAsMF0pfX0pKSxJaT0oQS5tZXJnZU9wdGlvbnMoe2Nsb3NlUG9wdXBPbkNsaWNrOiEwfSksQS5pbmNsdWRlKHtvcGVuUG9wdXA6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl9pbml0T3ZlcmxheShCaSx0LGUsaSkub3Blbk9uKHRoaXMpLHRoaXN9LGNsb3NlUG9wdXA6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3BvcHVwKSYmdC5jbG9zZSgpLHRoaXN9fSksby5pbmNsdWRlKHtiaW5kUG9wdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcG9wdXA9dGhpcy5faW5pdE92ZXJsYXkoQmksdGhpcy5fcG9wdXAsdCxlKSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWR8fCh0aGlzLm9uKHtjbGljazp0aGlzLl9vcGVuUG9wdXAsa2V5cHJlc3M6dGhpcy5fb25LZXlQcmVzcyxyZW1vdmU6dGhpcy5jbG9zZVBvcHVwLG1vdmU6dGhpcy5fbW92ZVBvcHVwfSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSEwKSx0aGlzfSx1bmJpbmRQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmKHRoaXMub2ZmKHtjbGljazp0aGlzLl9vcGVuUG9wdXAsa2V5cHJlc3M6dGhpcy5fb25LZXlQcmVzcyxyZW1vdmU6dGhpcy5jbG9zZVBvcHVwLG1vdmU6dGhpcy5fbW92ZVBvcHVwfSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSExLHRoaXMuX3BvcHVwPW51bGwpLHRoaXN9LG9wZW5Qb3B1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzIGluc3RhbmNlb2YgY2l8fCh0aGlzLl9wb3B1cC5fc291cmNlPXRoaXMpLHRoaXMuX3BvcHVwLl9wcmVwYXJlT3Blbih0fHx0aGlzLl9sYXRsbmcpJiZ0aGlzLl9wb3B1cC5vcGVuT24odGhpcy5fbWFwKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuY2xvc2UoKSx0aGlzfSx0b2dnbGVQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAudG9nZ2xlKHRoaXMpLHRoaXN9LGlzUG9wdXBPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuaXNPcGVuKCl9LHNldFBvcHVwQ29udGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksdGhpc30sZ2V0UG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXB9LF9vcGVuUG9wdXA6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5fcG9wdXAmJnRoaXMuX21hcCYmKFJlKHQpLGU9dC5sYXllcnx8dC50YXJnZXQsdGhpcy5fcG9wdXAuX3NvdXJjZSE9PWV8fGUgaW5zdGFuY2VvZiBmaT8odGhpcy5fcG9wdXAuX3NvdXJjZT1lLHRoaXMub3BlblBvcHVwKHQubGF0bG5nKSk6dGhpcy5fbWFwLmhhc0xheWVyKHRoaXMuX3BvcHVwKT90aGlzLmNsb3NlUG9wdXAoKTp0aGlzLm9wZW5Qb3B1cCh0LmxhdGxuZykpfSxfbW92ZVBvcHVwOmZ1bmN0aW9uKHQpe3RoaXMuX3BvcHVwLnNldExhdExuZyh0LmxhdGxuZyl9LF9vbktleVByZXNzOmZ1bmN0aW9uKHQpezEzPT09dC5vcmlnaW5hbEV2ZW50LmtleUNvZGUmJnRoaXMuX29wZW5Qb3B1cCh0KX19KSxBaS5leHRlbmQoe29wdGlvbnM6e3BhbmU6XCJ0b29sdGlwUGFuZVwiLG9mZnNldDpbMCwwXSxkaXJlY3Rpb246XCJhdXRvXCIscGVybWFuZW50OiExLHN0aWNreTohMSxvcGFjaXR5Oi45fSxvbkFkZDpmdW5jdGlvbih0KXtBaS5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzLHQpLHRoaXMuc2V0T3BhY2l0eSh0aGlzLm9wdGlvbnMub3BhY2l0eSksdC5maXJlKFwidG9vbHRpcG9wZW5cIix7dG9vbHRpcDp0aGlzfSksdGhpcy5fc291cmNlJiYodGhpcy5hZGRFdmVudFBhcmVudCh0aGlzLl9zb3VyY2UpLHRoaXMuX3NvdXJjZS5maXJlKFwidG9vbHRpcG9wZW5cIix7dG9vbHRpcDp0aGlzfSwhMCkpfSxvblJlbW92ZTpmdW5jdGlvbih0KXtBaS5wcm90b3R5cGUub25SZW1vdmUuY2FsbCh0aGlzLHQpLHQuZmlyZShcInRvb2x0aXBjbG9zZVwiLHt0b29sdGlwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJih0aGlzLnJlbW92ZUV2ZW50UGFyZW50KHRoaXMuX3NvdXJjZSksdGhpcy5fc291cmNlLmZpcmUoXCJ0b29sdGlwY2xvc2VcIix7dG9vbHRpcDp0aGlzfSwhMCkpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1BaS5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMub3B0aW9ucy5wZXJtYW5lbnR8fCh0LnByZWNsaWNrPXRoaXMuY2xvc2UpLHR9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9XCJsZWFmbGV0LXRvb2x0aXAgXCIrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fFwiXCIpK1wiIGxlYWZsZXQtem9vbS1cIisodGhpcy5fem9vbUFuaW1hdGVkP1wiYW5pbWF0ZWRcIjpcImhpZGVcIik7dGhpcy5fY29udGVudE5vZGU9dGhpcy5fY29udGFpbmVyPVAoXCJkaXZcIix0KSx0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwidG9vbHRpcFwiKSx0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKFwiaWRcIixcImxlYWZsZXQtdG9vbHRpcC1cIitoKHRoaXMpKX0sX3VwZGF0ZUxheW91dDpmdW5jdGlvbigpe30sX2FkanVzdFBhbjpmdW5jdGlvbigpe30sX3NldFBvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5fbWFwLG49dGhpcy5fY29udGFpbmVyLG89aS5sYXRMbmdUb0NvbnRhaW5lclBvaW50KGkuZ2V0Q2VudGVyKCkpLGk9aS5sYXllclBvaW50VG9Db250YWluZXJQb2ludCh0KSxzPXRoaXMub3B0aW9ucy5kaXJlY3Rpb24scj1uLm9mZnNldFdpZHRoLGE9bi5vZmZzZXRIZWlnaHQsaD1tKHRoaXMub3B0aW9ucy5vZmZzZXQpLGw9dGhpcy5fZ2V0QW5jaG9yKCksaT1cInRvcFwiPT09cz8oZT1yLzIsYSk6XCJib3R0b21cIj09PXM/KGU9ci8yLDApOihlPVwiY2VudGVyXCI9PT1zP3IvMjpcInJpZ2h0XCI9PT1zPzA6XCJsZWZ0XCI9PT1zP3I6aS54PG8ueD8ocz1cInJpZ2h0XCIsMCk6KHM9XCJsZWZ0XCIscisyKihoLngrbC54KSksYS8yKTt0PXQuc3VidHJhY3QobShlLGksITApKS5hZGQoaCkuYWRkKGwpLHoobixcImxlYWZsZXQtdG9vbHRpcC1yaWdodFwiKSx6KG4sXCJsZWFmbGV0LXRvb2x0aXAtbGVmdFwiKSx6KG4sXCJsZWFmbGV0LXRvb2x0aXAtdG9wXCIpLHoobixcImxlYWZsZXQtdG9vbHRpcC1ib3R0b21cIiksTShuLFwibGVhZmxldC10b29sdGlwLVwiK3MpLFoobix0KX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpO3RoaXMuX3NldFBvc2l0aW9uKHQpfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5fY29udGFpbmVyJiZDKHRoaXMuX2NvbnRhaW5lcix0KX0sX2FuaW1hdGVab29tOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlcik7dGhpcy5fc2V0UG9zaXRpb24odCl9LF9nZXRBbmNob3I6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9zb3VyY2UmJnRoaXMuX3NvdXJjZS5fZ2V0VG9vbHRpcEFuY2hvciYmIXRoaXMub3B0aW9ucy5zdGlja3k/dGhpcy5fc291cmNlLl9nZXRUb29sdGlwQW5jaG9yKCk6WzAsMF0pfX0pKSxSaT0oQS5pbmNsdWRlKHtvcGVuVG9vbHRpcDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuX2luaXRPdmVybGF5KElpLHQsZSxpKS5vcGVuT24odGhpcyksdGhpc30sY2xvc2VUb29sdGlwOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlKCksdGhpc319KSxvLmluY2x1ZGUoe2JpbmRUb29sdGlwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuaXNUb29sdGlwT3BlbigpJiZ0aGlzLnVuYmluZFRvb2x0aXAoKSx0aGlzLl90b29sdGlwPXRoaXMuX2luaXRPdmVybGF5KElpLHRoaXMuX3Rvb2x0aXAsdCxlKSx0aGlzLl9pbml0VG9vbHRpcEludGVyYWN0aW9ucygpLHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5wZXJtYW5lbnQmJnRoaXMuX21hcCYmdGhpcy5fbWFwLmhhc0xheWVyKHRoaXMpJiZ0aGlzLm9wZW5Ub29sdGlwKCksdGhpc30sdW5iaW5kVG9vbHRpcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b29sdGlwJiYodGhpcy5faW5pdFRvb2x0aXBJbnRlcmFjdGlvbnMoITApLHRoaXMuY2xvc2VUb29sdGlwKCksdGhpcy5fdG9vbHRpcD1udWxsKSx0aGlzfSxfaW5pdFRvb2x0aXBJbnRlcmFjdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGUsaTshdCYmdGhpcy5fdG9vbHRpcEhhbmRsZXJzQWRkZWR8fChlPXQ/XCJvZmZcIjpcIm9uXCIsaT17cmVtb3ZlOnRoaXMuY2xvc2VUb29sdGlwLG1vdmU6dGhpcy5fbW92ZVRvb2x0aXB9LHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5wZXJtYW5lbnQ/aS5hZGQ9dGhpcy5fb3BlblRvb2x0aXA6KGkubW91c2VvdmVyPXRoaXMuX29wZW5Ub29sdGlwLGkubW91c2VvdXQ9dGhpcy5jbG9zZVRvb2x0aXAsaS5jbGljaz10aGlzLl9vcGVuVG9vbHRpcCx0aGlzLl9tYXA/dGhpcy5fYWRkRm9jdXNMaXN0ZW5lcnMoKTppLmFkZD10aGlzLl9hZGRGb2N1c0xpc3RlbmVycyksdGhpcy5fdG9vbHRpcC5vcHRpb25zLnN0aWNreSYmKGkubW91c2Vtb3ZlPXRoaXMuX21vdmVUb29sdGlwKSx0aGlzW2VdKGkpLHRoaXMuX3Rvb2x0aXBIYW5kbGVyc0FkZGVkPSF0KX0sb3BlblRvb2x0aXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJih0aGlzIGluc3RhbmNlb2YgY2l8fCh0aGlzLl90b29sdGlwLl9zb3VyY2U9dGhpcyksdGhpcy5fdG9vbHRpcC5fcHJlcGFyZU9wZW4odCkmJih0aGlzLl90b29sdGlwLm9wZW5Pbih0aGlzLl9tYXApLHRoaXMuZ2V0RWxlbWVudD90aGlzLl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyKHRoaXMpOnRoaXMuZWFjaExheWVyJiZ0aGlzLmVhY2hMYXllcih0aGlzLl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyLHRoaXMpKSksdGhpc30sY2xvc2VUb29sdGlwOmZ1bmN0aW9uKCl7aWYodGhpcy5fdG9vbHRpcClyZXR1cm4gdGhpcy5fdG9vbHRpcC5jbG9zZSgpfSx0b2dnbGVUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuX3Rvb2x0aXAudG9nZ2xlKHRoaXMpLHRoaXN9LGlzVG9vbHRpcE9wZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG9vbHRpcC5pc09wZW4oKX0sc2V0VG9vbHRpcENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuX3Rvb2x0aXAuc2V0Q29udGVudCh0KSx0aGlzfSxnZXRUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXB9LF9hZGRGb2N1c0xpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuZ2V0RWxlbWVudD90aGlzLl9hZGRGb2N1c0xpc3RlbmVyc09uTGF5ZXIodGhpcyk6dGhpcy5lYWNoTGF5ZXImJnRoaXMuZWFjaExheWVyKHRoaXMuX2FkZEZvY3VzTGlzdGVuZXJzT25MYXllcix0aGlzKX0sX2FkZEZvY3VzTGlzdGVuZXJzT25MYXllcjpmdW5jdGlvbih0KXt2YXIgZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldEVsZW1lbnQmJnQuZ2V0RWxlbWVudCgpO2UmJihTKGUsXCJmb2N1c1wiLGZ1bmN0aW9uKCl7dGhpcy5fdG9vbHRpcC5fc291cmNlPXQsdGhpcy5vcGVuVG9vbHRpcCgpfSx0aGlzKSxTKGUsXCJibHVyXCIsdGhpcy5jbG9zZVRvb2x0aXAsdGhpcykpfSxfc2V0QXJpYURlc2NyaWJlZEJ5T25MYXllcjpmdW5jdGlvbih0KXt0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0RWxlbWVudCYmdC5nZXRFbGVtZW50KCk7dCYmdC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIsdGhpcy5fdG9vbHRpcC5fY29udGFpbmVyLmlkKX0sX29wZW5Ub29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBlO3RoaXMuX3Rvb2x0aXAmJnRoaXMuX21hcCYmKHRoaXMuX21hcC5kcmFnZ2luZyYmdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmluZygpJiYhdGhpcy5fb3Blbk9uY2VGbGFnPyh0aGlzLl9vcGVuT25jZUZsYWc9ITAsKGU9dGhpcykuX21hcC5vbmNlKFwibW92ZWVuZFwiLGZ1bmN0aW9uKCl7ZS5fb3Blbk9uY2VGbGFnPSExLGUuX29wZW5Ub29sdGlwKHQpfSkpOih0aGlzLl90b29sdGlwLl9zb3VyY2U9dC5sYXllcnx8dC50YXJnZXQsdGhpcy5vcGVuVG9vbHRpcCh0aGlzLl90b29sdGlwLm9wdGlvbnMuc3RpY2t5P3QubGF0bG5nOnZvaWQgMCkpKX0sX21vdmVUb29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGF0bG5nO3RoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kmJnQub3JpZ2luYWxFdmVudCYmKHQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQub3JpZ2luYWxFdmVudCksdD10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQodCksZT10aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKHQpKSx0aGlzLl90b29sdGlwLnNldExhdExuZyhlKX19KSxkaS5leHRlbmQoe29wdGlvbnM6e2ljb25TaXplOlsxMiwxMl0saHRtbDohMSxiZ1BvczpudWxsLGNsYXNzTmFtZTpcImxlYWZsZXQtZGl2LWljb25cIn0sY3JlYXRlSWNvbjpmdW5jdGlvbih0KXt2YXIgdD10JiZcIkRJVlwiPT09dC50YWdOYW1lP3Q6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlPXRoaXMub3B0aW9ucztyZXR1cm4gZS5odG1sIGluc3RhbmNlb2YgRWxlbWVudD8obWUodCksdC5hcHBlbmRDaGlsZChlLmh0bWwpKTp0LmlubmVySFRNTD0hMSE9PWUuaHRtbD9lLmh0bWw6XCJcIixlLmJnUG9zJiYoZT1tKGUuYmdQb3MpLHQuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPS1lLngrXCJweCBcIistZS55K1wicHhcIiksdGhpcy5fc2V0SWNvblN0eWxlcyh0LFwiaWNvblwiKSx0fSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19KSk7ZGkuRGVmYXVsdD1faTt2YXIgTmk9by5leHRlbmQoe29wdGlvbnM6e3RpbGVTaXplOjI1NixvcGFjaXR5OjEsdXBkYXRlV2hlbklkbGU6Yi5tb2JpbGUsdXBkYXRlV2hlblpvb21pbmc6ITAsdXBkYXRlSW50ZXJ2YWw6MjAwLHpJbmRleDoxLGJvdW5kczpudWxsLG1pblpvb206MCxtYXhab29tOnZvaWQgMCxtYXhOYXRpdmVab29tOnZvaWQgMCxtaW5OYXRpdmVab29tOnZvaWQgMCxub1dyYXA6ITEscGFuZTpcInRpbGVQYW5lXCIsY2xhc3NOYW1lOlwiXCIsa2VlcEJ1ZmZlcjoyfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KX0sb25BZGQ6ZnVuY3Rpb24oKXt0aGlzLl9pbml0Q29udGFpbmVyKCksdGhpcy5fbGV2ZWxzPXt9LHRoaXMuX3RpbGVzPXt9LHRoaXMuX3Jlc2V0VmlldygpfSxiZWZvcmVBZGQ6ZnVuY3Rpb24odCl7dC5fYWRkWm9vbUxpbWl0KHRoaXMpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVBbGxUaWxlcygpLFQodGhpcy5fY29udGFpbmVyKSx0Ll9yZW1vdmVab29tTGltaXQodGhpcyksdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fdGlsZVpvb209dm9pZCAwfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYoZmUodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWF4KSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYoZ2UodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWluKSksdGhpc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpc30sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4PXQsdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpc30saXNMb2FkaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmd9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9tYXAmJih0aGlzLl9yZW1vdmVBbGxUaWxlcygpLCh0PXRoaXMuX2NsYW1wWm9vbSh0aGlzLl9tYXAuZ2V0Wm9vbSgpKSkhPT10aGlzLl90aWxlWm9vbSYmKHRoaXMuX3RpbGVab29tPXQsdGhpcy5fdXBkYXRlTGV2ZWxzKCkpLHRoaXMuX3VwZGF0ZSgpKSx0aGlzfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3ByZXJlc2V0OnRoaXMuX2ludmFsaWRhdGVBbGwsdmlld3Jlc2V0OnRoaXMuX3Jlc2V0Vmlldyx6b29tOnRoaXMuX3Jlc2V0Vmlldyxtb3ZlZW5kOnRoaXMuX29uTW92ZUVuZH07cmV0dXJuIHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZXx8KHRoaXMuX29uTW92ZXx8KHRoaXMuX29uTW92ZT1qKHRoaXMuX29uTW92ZUVuZCx0aGlzLm9wdGlvbnMudXBkYXRlSW50ZXJ2YWwsdGhpcykpLHQubW92ZT10aGlzLl9vbk1vdmUpLHRoaXMuX3pvb21BbmltYXRlZCYmKHQuem9vbWFuaW09dGhpcy5fYW5pbWF0ZVpvb20pLHR9LGNyZWF0ZVRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKX0sZ2V0VGlsZVNpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMudGlsZVNpemU7cmV0dXJuIHQgaW5zdGFuY2VvZiBwP3Q6bmV3IHAodCx0KX0sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lciYmdm9pZCAwIT09dGhpcy5vcHRpb25zLnpJbmRleCYmbnVsbCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJih0aGlzLl9jb250YWluZXIuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfc2V0QXV0b1pJbmRleDpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT10aGlzLmdldFBhbmUoKS5jaGlsZHJlbixuPS10KC0xLzAsMS8wKSxvPTAscz1pLmxlbmd0aDtvPHM7bysrKWU9aVtvXS5zdHlsZS56SW5kZXgsaVtvXSE9PXRoaXMuX2NvbnRhaW5lciYmZSYmKG49dChuLCtlKSk7aXNGaW5pdGUobikmJih0aGlzLm9wdGlvbnMuekluZGV4PW4rdCgtMSwxKSx0aGlzLl91cGRhdGVaSW5kZXgoKSl9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwJiYhYi5pZWx0OSl7Qyh0aGlzLl9jb250YWluZXIsdGhpcy5vcHRpb25zLm9wYWNpdHkpO3ZhciB0LGU9K25ldyBEYXRlLGk9ITEsbj0hMTtmb3IodCBpbiB0aGlzLl90aWxlcyl7dmFyIG8scz10aGlzLl90aWxlc1t0XTtzLmN1cnJlbnQmJnMubG9hZGVkJiYobz1NYXRoLm1pbigxLChlLXMubG9hZGVkKS8yMDApLEMocy5lbCxvKSxvPDE/aT0hMDoocy5hY3RpdmU/bj0hMDp0aGlzLl9vbk9wYXF1ZVRpbGUocykscy5hY3RpdmU9ITApKX1uJiYhdGhpcy5fbm9QcnVuZSYmdGhpcy5fcHJ1bmVUaWxlcygpLGkmJihyKHRoaXMuX2ZhZGVGcmFtZSksdGhpcy5fZmFkZUZyYW1lPXgodGhpcy5fdXBkYXRlT3BhY2l0eSx0aGlzKSl9fSxfb25PcGFxdWVUaWxlOnUsX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXJ8fCh0aGlzLl9jb250YWluZXI9UChcImRpdlwiLFwibGVhZmxldC1sYXllciBcIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8XCJcIikpLHRoaXMuX3VwZGF0ZVpJbmRleCgpLHRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzLmdldFBhbmUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpKX0sX3VwZGF0ZUxldmVsczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RpbGVab29tLGU9dGhpcy5vcHRpb25zLm1heFpvb207aWYodm9pZCAwIT09dCl7Zm9yKHZhciBpIGluIHRoaXMuX2xldmVscylpPU51bWJlcihpKSx0aGlzLl9sZXZlbHNbaV0uZWwuY2hpbGRyZW4ubGVuZ3RofHxpPT09dD8odGhpcy5fbGV2ZWxzW2ldLmVsLnN0eWxlLnpJbmRleD1lLU1hdGguYWJzKHQtaSksdGhpcy5fb25VcGRhdGVMZXZlbChpKSk6KFQodGhpcy5fbGV2ZWxzW2ldLmVsKSx0aGlzLl9yZW1vdmVUaWxlc0F0Wm9vbShpKSx0aGlzLl9vblJlbW92ZUxldmVsKGkpLGRlbGV0ZSB0aGlzLl9sZXZlbHNbaV0pO3ZhciBuPXRoaXMuX2xldmVsc1t0XSxvPXRoaXMuX21hcDtyZXR1cm4gbnx8KChuPXRoaXMuX2xldmVsc1t0XT17fSkuZWw9UChcImRpdlwiLFwibGVhZmxldC10aWxlLWNvbnRhaW5lciBsZWFmbGV0LXpvb20tYW5pbWF0ZWRcIix0aGlzLl9jb250YWluZXIpLG4uZWwuc3R5bGUuekluZGV4PWUsbi5vcmlnaW49by5wcm9qZWN0KG8udW5wcm9qZWN0KG8uZ2V0UGl4ZWxPcmlnaW4oKSksdCkucm91bmQoKSxuLnpvb209dCx0aGlzLl9zZXRab29tVHJhbnNmb3JtKG4sby5nZXRDZW50ZXIoKSxvLmdldFpvb20oKSksdShuLmVsLm9mZnNldFdpZHRoKSx0aGlzLl9vbkNyZWF0ZUxldmVsKG4pKSx0aGlzLl9sZXZlbD1ufX0sX29uVXBkYXRlTGV2ZWw6dSxfb25SZW1vdmVMZXZlbDp1LF9vbkNyZWF0ZUxldmVsOnUsX3BydW5lVGlsZXM6ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0LGUsaSxuPXRoaXMuX21hcC5nZXRab29tKCk7aWYobj50aGlzLm9wdGlvbnMubWF4Wm9vbXx8bjx0aGlzLm9wdGlvbnMubWluWm9vbSl0aGlzLl9yZW1vdmVBbGxUaWxlcygpO2Vsc2V7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpKGk9dGhpcy5fdGlsZXNbdF0pLnJldGFpbj1pLmN1cnJlbnQ7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpKGk9dGhpcy5fdGlsZXNbdF0pLmN1cnJlbnQmJiFpLmFjdGl2ZSYmKGU9aS5jb29yZHMsdGhpcy5fcmV0YWluUGFyZW50KGUueCxlLnksZS56LGUuei01KXx8dGhpcy5fcmV0YWluQ2hpbGRyZW4oZS54LGUueSxlLnosZS56KzIpKTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5yZXRhaW58fHRoaXMuX3JlbW92ZVRpbGUodCl9fX0sX3JlbW92ZVRpbGVzQXRab29tOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1tlXS5jb29yZHMuej09PXQmJnRoaXMuX3JlbW92ZVRpbGUoZSl9LF9yZW1vdmVBbGxUaWxlczpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcyl0aGlzLl9yZW1vdmVUaWxlKHQpfSxfaW52YWxpZGF0ZUFsbDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl9sZXZlbHMpVCh0aGlzLl9sZXZlbHNbdF0uZWwpLHRoaXMuX29uUmVtb3ZlTGV2ZWwoTnVtYmVyKHQpKSxkZWxldGUgdGhpcy5fbGV2ZWxzW3RdO3RoaXMuX3JlbW92ZUFsbFRpbGVzKCksdGhpcy5fdGlsZVpvb209dm9pZCAwfSxfcmV0YWluUGFyZW50OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciB0PU1hdGguZmxvb3IodC8yKSxlPU1hdGguZmxvb3IoZS8yKSxpPWktMSxvPW5ldyBwKCt0LCtlKSxvPShvLno9aSx0aGlzLl90aWxlQ29vcmRzVG9LZXkobykpLG89dGhpcy5fdGlsZXNbb107cmV0dXJuIG8mJm8uYWN0aXZlP28ucmV0YWluPSEwOihvJiZvLmxvYWRlZCYmKG8ucmV0YWluPSEwKSxuPGkmJnRoaXMuX3JldGFpblBhcmVudCh0LGUsaSxuKSl9LF9yZXRhaW5DaGlsZHJlbjpmdW5jdGlvbih0LGUsaSxuKXtmb3IodmFyIG89Mip0O288Mip0KzI7bysrKWZvcih2YXIgcz0yKmU7czwyKmUrMjtzKyspe3ZhciByPW5ldyBwKG8scykscj0oci56PWkrMSx0aGlzLl90aWxlQ29vcmRzVG9LZXkocikpLHI9dGhpcy5fdGlsZXNbcl07ciYmci5hY3RpdmU/ci5yZXRhaW49ITA6KHImJnIubG9hZGVkJiYoci5yZXRhaW49ITApLGkrMTxuJiZ0aGlzLl9yZXRhaW5DaGlsZHJlbihvLHMsaSsxLG4pKX19LF9yZXNldFZpZXc6ZnVuY3Rpb24odCl7dD10JiYodC5waW5jaHx8dC5mbHlUbyk7dGhpcy5fc2V0Vmlldyh0aGlzLl9tYXAuZ2V0Q2VudGVyKCksdGhpcy5fbWFwLmdldFpvb20oKSx0LHQpfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dGhpcy5fc2V0Vmlldyh0LmNlbnRlcix0Lnpvb20sITAsdC5ub1VwZGF0ZSl9LF9jbGFtcFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiB2b2lkIDAhPT1lLm1pbk5hdGl2ZVpvb20mJnQ8ZS5taW5OYXRpdmVab29tP2UubWluTmF0aXZlWm9vbTp2b2lkIDAhPT1lLm1heE5hdGl2ZVpvb20mJmUubWF4TmF0aXZlWm9vbTx0P2UubWF4TmF0aXZlWm9vbTp0fSxfc2V0VmlldzpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbz1NYXRoLnJvdW5kKGUpLG89dm9pZCAwIT09dGhpcy5vcHRpb25zLm1heFpvb20mJm8+dGhpcy5vcHRpb25zLm1heFpvb218fHZvaWQgMCE9PXRoaXMub3B0aW9ucy5taW5ab29tJiZvPHRoaXMub3B0aW9ucy5taW5ab29tP3ZvaWQgMDp0aGlzLl9jbGFtcFpvb20obykscz10aGlzLm9wdGlvbnMudXBkYXRlV2hlblpvb21pbmcmJm8hPT10aGlzLl90aWxlWm9vbTtuJiYhc3x8KHRoaXMuX3RpbGVab29tPW8sdGhpcy5fYWJvcnRMb2FkaW5nJiZ0aGlzLl9hYm9ydExvYWRpbmcoKSx0aGlzLl91cGRhdGVMZXZlbHMoKSx0aGlzLl9yZXNldEdyaWQoKSx2b2lkIDAhPT1vJiZ0aGlzLl91cGRhdGUodCksaXx8dGhpcy5fcHJ1bmVUaWxlcygpLHRoaXMuX25vUHJ1bmU9ISFpKSx0aGlzLl9zZXRab29tVHJhbnNmb3Jtcyh0LGUpfSxfc2V0Wm9vbVRyYW5zZm9ybXM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gdGhpcy5fbGV2ZWxzKXRoaXMuX3NldFpvb21UcmFuc2Zvcm0odGhpcy5fbGV2ZWxzW2ldLHQsZSl9LF9zZXRab29tVHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGksdC56b29tKSxlPXQub3JpZ2luLm11bHRpcGx5Qnkobikuc3VidHJhY3QodGhpcy5fbWFwLl9nZXROZXdQaXhlbE9yaWdpbihlLGkpKS5yb3VuZCgpO2IuYW55M2Q/YmUodC5lbCxlLG4pOloodC5lbCxlKX0sX3Jlc2V0R3JpZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxlPXQub3B0aW9ucy5jcnMsaT10aGlzLl90aWxlU2l6ZT10aGlzLmdldFRpbGVTaXplKCksbj10aGlzLl90aWxlWm9vbSxvPXRoaXMuX21hcC5nZXRQaXhlbFdvcmxkQm91bmRzKHRoaXMuX3RpbGVab29tKTtvJiYodGhpcy5fZ2xvYmFsVGlsZVJhbmdlPXRoaXMuX3B4Qm91bmRzVG9UaWxlUmFuZ2UobykpLHRoaXMuX3dyYXBYPWUud3JhcExuZyYmIXRoaXMub3B0aW9ucy5ub1dyYXAmJltNYXRoLmZsb29yKHQucHJvamVjdChbMCxlLndyYXBMbmdbMF1dLG4pLngvaS54KSxNYXRoLmNlaWwodC5wcm9qZWN0KFswLGUud3JhcExuZ1sxXV0sbikueC9pLnkpXSx0aGlzLl93cmFwWT1lLndyYXBMYXQmJiF0aGlzLm9wdGlvbnMubm9XcmFwJiZbTWF0aC5mbG9vcih0LnByb2plY3QoW2Uud3JhcExhdFswXSwwXSxuKS55L2kueCksTWF0aC5jZWlsKHQucHJvamVjdChbZS53cmFwTGF0WzFdLDBdLG4pLnkvaS55KV19LF9vbk1vdmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJiF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20mJnRoaXMuX3VwZGF0ZSgpfSxfZ2V0VGlsZWRQaXhlbEJvdW5kczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAsaT1lLl9hbmltYXRpbmdab29tP01hdGgubWF4KGUuX2FuaW1hdGVUb1pvb20sZS5nZXRab29tKCkpOmUuZ2V0Wm9vbSgpLGk9ZS5nZXRab29tU2NhbGUoaSx0aGlzLl90aWxlWm9vbSksdD1lLnByb2plY3QodCx0aGlzLl90aWxlWm9vbSkuZmxvb3IoKSxlPWUuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIqaSk7cmV0dXJuIG5ldyBmKHQuc3VidHJhY3QoZSksdC5hZGQoZSkpfSxfdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcDtpZihlKXt2YXIgaT10aGlzLl9jbGFtcFpvb20oZS5nZXRab29tKCkpO2lmKHZvaWQgMD09PXQmJih0PWUuZ2V0Q2VudGVyKCkpLHZvaWQgMCE9PXRoaXMuX3RpbGVab29tKXt2YXIgbixlPXRoaXMuX2dldFRpbGVkUGl4ZWxCb3VuZHModCksbz10aGlzLl9weEJvdW5kc1RvVGlsZVJhbmdlKGUpLHM9by5nZXRDZW50ZXIoKSxyPVtdLGU9dGhpcy5vcHRpb25zLmtlZXBCdWZmZXIsYT1uZXcgZihvLmdldEJvdHRvbUxlZnQoKS5zdWJ0cmFjdChbZSwtZV0pLG8uZ2V0VG9wUmlnaHQoKS5hZGQoW2UsLWVdKSk7aWYoIShpc0Zpbml0ZShvLm1pbi54KSYmaXNGaW5pdGUoby5taW4ueSkmJmlzRmluaXRlKG8ubWF4LngpJiZpc0Zpbml0ZShvLm1heC55KSkpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGxvYWQgYW4gaW5maW5pdGUgbnVtYmVyIG9mIHRpbGVzXCIpO2ZvcihuIGluIHRoaXMuX3RpbGVzKXt2YXIgaD10aGlzLl90aWxlc1tuXS5jb29yZHM7aC56PT09dGhpcy5fdGlsZVpvb20mJmEuY29udGFpbnMobmV3IHAoaC54LGgueSkpfHwodGhpcy5fdGlsZXNbbl0uY3VycmVudD0hMSl9aWYoMTxNYXRoLmFicyhpLXRoaXMuX3RpbGVab29tKSl0aGlzLl9zZXRWaWV3KHQsaSk7ZWxzZXtmb3IodmFyIGw9by5taW4ueTtsPD1vLm1heC55O2wrKylmb3IodmFyIHU9by5taW4ueDt1PD1vLm1heC54O3UrKyl7dmFyIGMsZD1uZXcgcCh1LGwpO2Quej10aGlzLl90aWxlWm9vbSx0aGlzLl9pc1ZhbGlkVGlsZShkKSYmKChjPXRoaXMuX3RpbGVzW3RoaXMuX3RpbGVDb29yZHNUb0tleShkKV0pP2MuY3VycmVudD0hMDpyLnB1c2goZCkpfWlmKHIuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRpc3RhbmNlVG8ocyktZS5kaXN0YW5jZVRvKHMpfSksMCE9PXIubGVuZ3RoKXt0aGlzLl9sb2FkaW5nfHwodGhpcy5fbG9hZGluZz0hMCx0aGlzLmZpcmUoXCJsb2FkaW5nXCIpKTtmb3IodmFyIF89ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHU9MDt1PHIubGVuZ3RoO3UrKyl0aGlzLl9hZGRUaWxlKHJbdV0sXyk7dGhpcy5fbGV2ZWwuZWwuYXBwZW5kQ2hpbGQoXyl9fX19fSxfaXNWYWxpZFRpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLm9wdGlvbnMuY3JzO2lmKCFlLmluZmluaXRlKXt2YXIgaT10aGlzLl9nbG9iYWxUaWxlUmFuZ2U7aWYoIWUud3JhcExuZyYmKHQueDxpLm1pbi54fHx0Lng+aS5tYXgueCl8fCFlLndyYXBMYXQmJih0Lnk8aS5taW4ueXx8dC55PmkubWF4LnkpKXJldHVybiExfXJldHVybiF0aGlzLm9wdGlvbnMuYm91bmRzfHwoZT10aGlzLl90aWxlQ29vcmRzVG9Cb3VuZHModCksZyh0aGlzLm9wdGlvbnMuYm91bmRzKS5vdmVybGFwcyhlKSl9LF9rZXlUb0JvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdGlsZUNvb3Jkc1RvQm91bmRzKHRoaXMuX2tleVRvVGlsZUNvb3Jkcyh0KSl9LF90aWxlQ29vcmRzVG9Od1NlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPXRoaXMuZ2V0VGlsZVNpemUoKSxuPXQuc2NhbGVCeShpKSxpPW4uYWRkKGkpO3JldHVybltlLnVucHJvamVjdChuLHQueiksZS51bnByb2plY3QoaSx0LnopXX0sX3RpbGVDb29yZHNUb0JvdW5kczpmdW5jdGlvbih0KXt0PXRoaXMuX3RpbGVDb29yZHNUb053U2UodCksdD1uZXcgcyh0WzBdLHRbMV0pO3JldHVybiB0PXRoaXMub3B0aW9ucy5ub1dyYXA/dDp0aGlzLl9tYXAud3JhcExhdExuZ0JvdW5kcyh0KX0sX3RpbGVDb29yZHNUb0tleTpmdW5jdGlvbih0KXtyZXR1cm4gdC54K1wiOlwiK3QueStcIjpcIit0Lnp9LF9rZXlUb1RpbGVDb29yZHM6ZnVuY3Rpb24odCl7dmFyIHQ9dC5zcGxpdChcIjpcIiksZT1uZXcgcCgrdFswXSwrdFsxXSk7cmV0dXJuIGUuej0rdFsyXSxlfSxfcmVtb3ZlVGlsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aWxlc1t0XTtlJiYoVChlLmVsKSxkZWxldGUgdGhpcy5fdGlsZXNbdF0sdGhpcy5maXJlKFwidGlsZXVubG9hZFwiLHt0aWxlOmUuZWwsY29vcmRzOnRoaXMuX2tleVRvVGlsZUNvb3Jkcyh0KX0pKX0sX2luaXRUaWxlOmZ1bmN0aW9uKHQpe00odCxcImxlYWZsZXQtdGlsZVwiKTt2YXIgZT10aGlzLmdldFRpbGVTaXplKCk7dC5zdHlsZS53aWR0aD1lLngrXCJweFwiLHQuc3R5bGUuaGVpZ2h0PWUueStcInB4XCIsdC5vbnNlbGVjdHN0YXJ0PXUsdC5vbm1vdXNlbW92ZT11LGIuaWVsdDkmJnRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJkModCx0aGlzLm9wdGlvbnMub3BhY2l0eSl9LF9hZGRUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0VGlsZVBvcyh0KSxuPXRoaXMuX3RpbGVDb29yZHNUb0tleSh0KSxvPXRoaXMuY3JlYXRlVGlsZSh0aGlzLl93cmFwQ29vcmRzKHQpLGEodGhpcy5fdGlsZVJlYWR5LHRoaXMsdCkpO3RoaXMuX2luaXRUaWxlKG8pLHRoaXMuY3JlYXRlVGlsZS5sZW5ndGg8MiYmeChhKHRoaXMuX3RpbGVSZWFkeSx0aGlzLHQsbnVsbCxvKSksWihvLGkpLHRoaXMuX3RpbGVzW25dPXtlbDpvLGNvb3Jkczp0LGN1cnJlbnQ6ITB9LGUuYXBwZW5kQ2hpbGQobyksdGhpcy5maXJlKFwidGlsZWxvYWRzdGFydFwiLHt0aWxlOm8sY29vcmRzOnR9KX0sX3RpbGVSZWFkeTpmdW5jdGlvbih0LGUsaSl7ZSYmdGhpcy5maXJlKFwidGlsZWVycm9yXCIse2Vycm9yOmUsdGlsZTppLGNvb3Jkczp0fSk7dmFyIG49dGhpcy5fdGlsZUNvb3Jkc1RvS2V5KHQpOyhpPXRoaXMuX3RpbGVzW25dKSYmKGkubG9hZGVkPStuZXcgRGF0ZSx0aGlzLl9tYXAuX2ZhZGVBbmltYXRlZD8oQyhpLmVsLDApLHIodGhpcy5fZmFkZUZyYW1lKSx0aGlzLl9mYWRlRnJhbWU9eCh0aGlzLl91cGRhdGVPcGFjaXR5LHRoaXMpKTooaS5hY3RpdmU9ITAsdGhpcy5fcHJ1bmVUaWxlcygpKSxlfHwoTShpLmVsLFwibGVhZmxldC10aWxlLWxvYWRlZFwiKSx0aGlzLmZpcmUoXCJ0aWxlbG9hZFwiLHt0aWxlOmkuZWwsY29vcmRzOnR9KSksdGhpcy5fbm9UaWxlc1RvTG9hZCgpJiYodGhpcy5fbG9hZGluZz0hMSx0aGlzLmZpcmUoXCJsb2FkXCIpLGIuaWVsdDl8fCF0aGlzLl9tYXAuX2ZhZGVBbmltYXRlZD94KHRoaXMuX3BydW5lVGlsZXMsdGhpcyk6c2V0VGltZW91dChhKHRoaXMuX3BydW5lVGlsZXMsdGhpcyksMjUwKSkpfSxfZ2V0VGlsZVBvczpmdW5jdGlvbih0KXtyZXR1cm4gdC5zY2FsZUJ5KHRoaXMuZ2V0VGlsZVNpemUoKSkuc3VidHJhY3QodGhpcy5fbGV2ZWwub3JpZ2luKX0sX3dyYXBDb29yZHM6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHAodGhpcy5fd3JhcFg/SCh0LngsdGhpcy5fd3JhcFgpOnQueCx0aGlzLl93cmFwWT9IKHQueSx0aGlzLl93cmFwWSk6dC55KTtyZXR1cm4gZS56PXQueixlfSxfcHhCb3VuZHNUb1RpbGVSYW5nZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFRpbGVTaXplKCk7cmV0dXJuIG5ldyBmKHQubWluLnVuc2NhbGVCeShlKS5mbG9vcigpLHQubWF4LnVuc2NhbGVCeShlKS5jZWlsKCkuc3VidHJhY3QoWzEsMV0pKX0sX25vVGlsZXNUb0xvYWQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fdGlsZXMpaWYoIXRoaXMuX3RpbGVzW3RdLmxvYWRlZClyZXR1cm4hMTtyZXR1cm4hMH19KTt2YXIgRGk9TmkuZXh0ZW5kKHtvcHRpb25zOnttaW5ab29tOjAsbWF4Wm9vbToxOCxzdWJkb21haW5zOlwiYWJjXCIsZXJyb3JUaWxlVXJsOlwiXCIsem9vbU9mZnNldDowLHRtczohMSx6b29tUmV2ZXJzZTohMSxkZXRlY3RSZXRpbmE6ITEsY3Jvc3NPcmlnaW46ITEscmVmZXJyZXJQb2xpY3k6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl91cmw9dCwoZT1jKHRoaXMsZSkpLmRldGVjdFJldGluYSYmYi5yZXRpbmEmJjA8ZS5tYXhab29tPyhlLnRpbGVTaXplPU1hdGguZmxvb3IoZS50aWxlU2l6ZS8yKSxlLnpvb21SZXZlcnNlPyhlLnpvb21PZmZzZXQtLSxlLm1pblpvb209TWF0aC5taW4oZS5tYXhab29tLGUubWluWm9vbSsxKSk6KGUuem9vbU9mZnNldCsrLGUubWF4Wm9vbT1NYXRoLm1heChlLm1pblpvb20sZS5tYXhab29tLTEpKSxlLm1pblpvb209TWF0aC5tYXgoMCxlLm1pblpvb20pKTplLnpvb21SZXZlcnNlP2UubWluWm9vbT1NYXRoLm1pbihlLm1heFpvb20sZS5taW5ab29tKTplLm1heFpvb209TWF0aC5tYXgoZS5taW5ab29tLGUubWF4Wm9vbSksXCJzdHJpbmdcIj09dHlwZW9mIGUuc3ViZG9tYWlucyYmKGUuc3ViZG9tYWlucz1lLnN1YmRvbWFpbnMuc3BsaXQoXCJcIikpLHRoaXMub24oXCJ0aWxldW5sb2FkXCIsdGhpcy5fb25UaWxlUmVtb3ZlKX0sc2V0VXJsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3VybD09PXQmJnZvaWQgMD09PWUmJihlPSEwKSx0aGlzLl91cmw9dCxlfHx0aGlzLnJlZHJhdygpLHRoaXN9LGNyZWF0ZVRpbGU6ZnVuY3Rpb24odCxlKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO3JldHVybiBTKGksXCJsb2FkXCIsYSh0aGlzLl90aWxlT25Mb2FkLHRoaXMsZSxpKSksUyhpLFwiZXJyb3JcIixhKHRoaXMuX3RpbGVPbkVycm9yLHRoaXMsZSxpKSksIXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbiYmXCJcIiE9PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbnx8KGkuY3Jvc3NPcmlnaW49ITA9PT10aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4/XCJcIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLFwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucmVmZXJyZXJQb2xpY3kmJihpLnJlZmVycmVyUG9saWN5PXRoaXMub3B0aW9ucy5yZWZlcnJlclBvbGljeSksaS5hbHQ9XCJcIixpLnNyYz10aGlzLmdldFRpbGVVcmwodCksaX0sZ2V0VGlsZVVybDpmdW5jdGlvbih0KXt2YXIgZT17cjpiLnJldGluYT9cIkAyeFwiOlwiXCIsczp0aGlzLl9nZXRTdWJkb21haW4odCkseDp0LngseTp0Lnksejp0aGlzLl9nZXRab29tRm9yVXJsKCl9O3JldHVybiB0aGlzLl9tYXAmJiF0aGlzLl9tYXAub3B0aW9ucy5jcnMuaW5maW5pdGUmJih0PXRoaXMuX2dsb2JhbFRpbGVSYW5nZS5tYXgueS10LnksdGhpcy5vcHRpb25zLnRtcyYmKGUueT10KSxlW1wiLXlcIl09dCkscSh0aGlzLl91cmwsbChlLHRoaXMub3B0aW9ucykpfSxfdGlsZU9uTG9hZDpmdW5jdGlvbih0LGUpe2IuaWVsdDk/c2V0VGltZW91dChhKHQsdGhpcyxudWxsLGUpLDApOnQobnVsbCxlKX0sX3RpbGVPbkVycm9yOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLm9wdGlvbnMuZXJyb3JUaWxlVXJsO24mJmUuZ2V0QXR0cmlidXRlKFwic3JjXCIpIT09biYmKGUuc3JjPW4pLHQoaSxlKX0sX29uVGlsZVJlbW92ZTpmdW5jdGlvbih0KXt0LnRpbGUub25sb2FkPW51bGx9LF9nZXRab29tRm9yVXJsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGlsZVpvb20sZT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4odD10aGlzLm9wdGlvbnMuem9vbVJldmVyc2U/ZS10OnQpK3RoaXMub3B0aW9ucy56b29tT2Zmc2V0fSxfZ2V0U3ViZG9tYWluOmZ1bmN0aW9uKHQpe3Q9TWF0aC5hYnModC54K3QueSkldGhpcy5vcHRpb25zLnN1YmRvbWFpbnMubGVuZ3RoO3JldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1t0XX0sX2Fib3J0TG9hZGluZzpmdW5jdGlvbigpe3ZhciB0LGUsaTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5jb29yZHMueiE9PXRoaXMuX3RpbGVab29tJiYoKGk9dGhpcy5fdGlsZXNbdF0uZWwpLm9ubG9hZD11LGkub25lcnJvcj11LGkuY29tcGxldGV8fChpLnNyYz1LLGU9dGhpcy5fdGlsZXNbdF0uY29vcmRzLFQoaSksZGVsZXRlIHRoaXMuX3RpbGVzW3RdLHRoaXMuZmlyZShcInRpbGVhYm9ydFwiLHt0aWxlOmksY29vcmRzOmV9KSkpfSxfcmVtb3ZlVGlsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aWxlc1t0XTtpZihlKXJldHVybiBlLmVsLnNldEF0dHJpYnV0ZShcInNyY1wiLEspLE5pLnByb3RvdHlwZS5fcmVtb3ZlVGlsZS5jYWxsKHRoaXMsdCl9LF90aWxlUmVhZHk6ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuX21hcCYmKCFpfHxpLmdldEF0dHJpYnV0ZShcInNyY1wiKSE9PUspKXJldHVybiBOaS5wcm90b3R5cGUuX3RpbGVSZWFkeS5jYWxsKHRoaXMsdCxlLGkpfX0pO2Z1bmN0aW9uIGppKHQsZSl7cmV0dXJuIG5ldyBEaSh0LGUpfXZhciBIaT1EaS5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6XCJXTVNcIixyZXF1ZXN0OlwiR2V0TWFwXCIsbGF5ZXJzOlwiXCIsc3R5bGVzOlwiXCIsZm9ybWF0OlwiaW1hZ2UvanBlZ1wiLHRyYW5zcGFyZW50OiExLHZlcnNpb246XCIxLjEuMVwifSxvcHRpb25zOntjcnM6bnVsbCx1cHBlcmNhc2U6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl91cmw9dDt2YXIgaSxuPWwoe30sdGhpcy5kZWZhdWx0V21zUGFyYW1zKTtmb3IoaSBpbiBlKWkgaW4gdGhpcy5vcHRpb25zfHwobltpXT1lW2ldKTt2YXIgdD0oZT1jKHRoaXMsZSkpLmRldGVjdFJldGluYSYmYi5yZXRpbmE/MjoxLG89dGhpcy5nZXRUaWxlU2l6ZSgpO24ud2lkdGg9by54KnQsbi5oZWlnaHQ9by55KnQsdGhpcy53bXNQYXJhbXM9bn0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fY3JzPXRoaXMub3B0aW9ucy5jcnN8fHQub3B0aW9ucy5jcnMsdGhpcy5fd21zVmVyc2lvbj1wYXJzZUZsb2F0KHRoaXMud21zUGFyYW1zLnZlcnNpb24pO3ZhciBlPTEuMzw9dGhpcy5fd21zVmVyc2lvbj9cImNyc1wiOlwic3JzXCI7dGhpcy53bXNQYXJhbXNbZV09dGhpcy5fY3JzLmNvZGUsRGkucHJvdG90eXBlLm9uQWRkLmNhbGwodGhpcyx0KX0sZ2V0VGlsZVVybDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aWxlQ29vcmRzVG9Od1NlKHQpLGk9dGhpcy5fY3JzLGk9XyhpLnByb2plY3QoZVswXSksaS5wcm9qZWN0KGVbMV0pKSxlPWkubWluLGk9aS5tYXgsZT0oMS4zPD10aGlzLl93bXNWZXJzaW9uJiZ0aGlzLl9jcnM9PT1saT9bZS55LGUueCxpLnksaS54XTpbZS54LGUueSxpLngsaS55XSkuam9pbihcIixcIiksaT1EaS5wcm90b3R5cGUuZ2V0VGlsZVVybC5jYWxsKHRoaXMsdCk7cmV0dXJuIGkrVSh0aGlzLndtc1BhcmFtcyxpLHRoaXMub3B0aW9ucy51cHBlcmNhc2UpKyh0aGlzLm9wdGlvbnMudXBwZXJjYXNlP1wiJkJCT1g9XCI6XCImYmJveD1cIikrZX0sc2V0UGFyYW1zOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGwodGhpcy53bXNQYXJhbXMsdCksZXx8dGhpcy5yZWRyYXcoKSx0aGlzfX0pO0RpLldNUz1IaSxqaS53bXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEhpKHQsZSl9O3ZhciBXaT1vLmV4dGVuZCh7b3B0aW9uczp7cGFkZGluZzouMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtjKHRoaXMsdCksaCh0aGlzKSx0aGlzLl9sYXllcnM9dGhpcy5fbGF5ZXJzfHx7fX0sb25BZGQ6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXJ8fCh0aGlzLl9pbml0Q29udGFpbmVyKCksTSh0aGlzLl9jb250YWluZXIsXCJsZWFmbGV0LXpvb20tYW5pbWF0ZWRcIikpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fdXBkYXRlKCksdGhpcy5vbihcInVwZGF0ZVwiLHRoaXMuX3VwZGF0ZVBhdGhzLHRoaXMpfSxvblJlbW92ZTpmdW5jdGlvbigpe3RoaXMub2ZmKFwidXBkYXRlXCIsdGhpcy5fdXBkYXRlUGF0aHMsdGhpcyksdGhpcy5fZGVzdHJveUNvbnRhaW5lcigpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3Jlc2V0OnRoaXMuX3Jlc2V0LHpvb206dGhpcy5fb25ab29tLG1vdmVlbmQ6dGhpcy5fdXBkYXRlLHpvb21lbmQ6dGhpcy5fb25ab29tRW5kfTtyZXR1cm4gdGhpcy5fem9vbUFuaW1hdGVkJiYodC56b29tYW5pbT10aGlzLl9vbkFuaW1ab29tKSx0fSxfb25BbmltWm9vbTpmdW5jdGlvbih0KXt0aGlzLl91cGRhdGVUcmFuc2Zvcm0odC5jZW50ZXIsdC56b29tKX0sX29uWm9vbTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVRyYW5zZm9ybSh0aGlzLl9tYXAuZ2V0Q2VudGVyKCksdGhpcy5fbWFwLmdldFpvb20oKSl9LF91cGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGUsdGhpcy5fem9vbSksbj10aGlzLl9tYXAuZ2V0U2l6ZSgpLm11bHRpcGx5QnkoLjUrdGhpcy5vcHRpb25zLnBhZGRpbmcpLG89dGhpcy5fbWFwLnByb2plY3QodGhpcy5fY2VudGVyLGUpLG49bi5tdWx0aXBseUJ5KC1pKS5hZGQobykuc3VidHJhY3QodGhpcy5fbWFwLl9nZXROZXdQaXhlbE9yaWdpbih0LGUpKTtiLmFueTNkP2JlKHRoaXMuX2NvbnRhaW5lcixuLGkpOloodGhpcy5fY29udGFpbmVyLG4pfSxfcmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fdXBkYXRlKCksdGhpcy5fdXBkYXRlVHJhbnNmb3JtKHRoaXMuX2NlbnRlcix0aGlzLl96b29tKSx0aGlzLl9sYXllcnMpdGhpcy5fbGF5ZXJzW3RdLl9yZXNldCgpfSxfb25ab29tRW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0uX3Byb2plY3QoKX0sX3VwZGF0ZVBhdGhzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0uX3VwZGF0ZSgpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnBhZGRpbmcsZT10aGlzLl9tYXAuZ2V0U2l6ZSgpLGk9dGhpcy5fbWFwLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KGUubXVsdGlwbHlCeSgtdCkpLnJvdW5kKCk7dGhpcy5fYm91bmRzPW5ldyBmKGksaS5hZGQoZS5tdWx0aXBseUJ5KDErMip0KSkucm91bmQoKSksdGhpcy5fY2VudGVyPXRoaXMuX21hcC5nZXRDZW50ZXIoKSx0aGlzLl96b29tPXRoaXMuX21hcC5nZXRab29tKCl9fSksRmk9V2kuZXh0ZW5kKHtvcHRpb25zOnt0b2xlcmFuY2U6MH0sZ2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9V2kucHJvdG90eXBlLmdldEV2ZW50cy5jYWxsKHRoaXMpO3JldHVybiB0LnZpZXdwcmVyZXNldD10aGlzLl9vblZpZXdQcmVSZXNldCx0fSxfb25WaWV3UHJlUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzPSEwfSxvbkFkZDpmdW5jdGlvbigpe1dpLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMpLHRoaXMuX2RyYXcoKX0sX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtTKHQsXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdXNlTW92ZSx0aGlzKSxTKHQsXCJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBjb250ZXh0bWVudVwiLHRoaXMuX29uQ2xpY2ssdGhpcyksUyh0LFwibW91c2VvdXRcIix0aGlzLl9oYW5kbGVNb3VzZU91dCx0aGlzKSx0Ll9sZWFmbGV0X2Rpc2FibGVfZXZlbnRzPSEwLHRoaXMuX2N0eD10LmdldENvbnRleHQoXCIyZFwiKX0sX2Rlc3Ryb3lDb250YWluZXI6ZnVuY3Rpb24oKXtyKHRoaXMuX3JlZHJhd1JlcXVlc3QpLGRlbGV0ZSB0aGlzLl9jdHgsVCh0aGlzLl9jb250YWluZXIpLGsodGhpcy5fY29udGFpbmVyKSxkZWxldGUgdGhpcy5fY29udGFpbmVyfSxfdXBkYXRlUGF0aHM6ZnVuY3Rpb24oKXtpZighdGhpcy5fcG9zdHBvbmVVcGRhdGVQYXRocyl7Zm9yKHZhciB0IGluIHRoaXMuX3JlZHJhd0JvdW5kcz1udWxsLHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0uX3VwZGF0ZSgpO3RoaXMuX3JlZHJhdygpfX0sX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuO3RoaXMuX21hcC5fYW5pbWF0aW5nWm9vbSYmdGhpcy5fYm91bmRzfHwoV2kucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKSx0PXRoaXMuX2JvdW5kcyxlPXRoaXMuX2NvbnRhaW5lcixpPXQuZ2V0U2l6ZSgpLG49Yi5yZXRpbmE/MjoxLFooZSx0Lm1pbiksZS53aWR0aD1uKmkueCxlLmhlaWdodD1uKmkueSxlLnN0eWxlLndpZHRoPWkueCtcInB4XCIsZS5zdHlsZS5oZWlnaHQ9aS55K1wicHhcIixiLnJldGluYSYmdGhpcy5fY3R4LnNjYWxlKDIsMiksdGhpcy5fY3R4LnRyYW5zbGF0ZSgtdC5taW4ueCwtdC5taW4ueSksdGhpcy5maXJlKFwidXBkYXRlXCIpKX0sX3Jlc2V0OmZ1bmN0aW9uKCl7V2kucHJvdG90eXBlLl9yZXNldC5jYWxsKHRoaXMpLHRoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHMmJih0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzPSExLHRoaXMuX3VwZGF0ZVBhdGhzKCkpfSxfaW5pdFBhdGg6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlRGFzaEFycmF5KHQpO3Q9KHRoaXMuX2xheWVyc1toKHQpXT10KS5fb3JkZXI9e2xheWVyOnQscHJldjp0aGlzLl9kcmF3TGFzdCxuZXh0Om51bGx9O3RoaXMuX2RyYXdMYXN0JiYodGhpcy5fZHJhd0xhc3QubmV4dD10KSx0aGlzLl9kcmF3TGFzdD10LHRoaXMuX2RyYXdGaXJzdD10aGlzLl9kcmF3Rmlyc3R8fHRoaXMuX2RyYXdMYXN0fSxfYWRkUGF0aDpmdW5jdGlvbih0KXt0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXt2YXIgZT10Ll9vcmRlcixpPWUubmV4dCxlPWUucHJldjtpP2kucHJldj1lOnRoaXMuX2RyYXdMYXN0PWUsZT9lLm5leHQ9aTp0aGlzLl9kcmF3Rmlyc3Q9aSxkZWxldGUgdC5fb3JkZXIsZGVsZXRlIHRoaXMuX2xheWVyc1toKHQpXSx0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbih0KXt0aGlzLl9leHRlbmRSZWRyYXdCb3VuZHModCksdC5fcHJvamVjdCgpLHQuX3VwZGF0ZSgpLHRoaXMuX3JlcXVlc3RSZWRyYXcodCl9LF91cGRhdGVTdHlsZTpmdW5jdGlvbih0KXt0aGlzLl91cGRhdGVEYXNoQXJyYXkodCksdGhpcy5fcmVxdWVzdFJlZHJhdyh0KX0sX3VwZGF0ZURhc2hBcnJheTpmdW5jdGlvbih0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdC5vcHRpb25zLmRhc2hBcnJheSl7Zm9yKHZhciBlLGk9dC5vcHRpb25zLmRhc2hBcnJheS5zcGxpdCgvWywgXSsvKSxuPVtdLG89MDtvPGkubGVuZ3RoO28rKyl7aWYoZT1OdW1iZXIoaVtvXSksaXNOYU4oZSkpcmV0dXJuO24ucHVzaChlKX10Lm9wdGlvbnMuX2Rhc2hBcnJheT1ufWVsc2UgdC5vcHRpb25zLl9kYXNoQXJyYXk9dC5vcHRpb25zLmRhc2hBcnJheX0sX3JlcXVlc3RSZWRyYXc6ZnVuY3Rpb24odCl7dGhpcy5fbWFwJiYodGhpcy5fZXh0ZW5kUmVkcmF3Qm91bmRzKHQpLHRoaXMuX3JlZHJhd1JlcXVlc3Q9dGhpcy5fcmVkcmF3UmVxdWVzdHx8eCh0aGlzLl9yZWRyYXcsdGhpcykpfSxfZXh0ZW5kUmVkcmF3Qm91bmRzOmZ1bmN0aW9uKHQpe3ZhciBlO3QuX3B4Qm91bmRzJiYoZT0odC5vcHRpb25zLndlaWdodHx8MCkrMSx0aGlzLl9yZWRyYXdCb3VuZHM9dGhpcy5fcmVkcmF3Qm91bmRzfHxuZXcgZix0aGlzLl9yZWRyYXdCb3VuZHMuZXh0ZW5kKHQuX3B4Qm91bmRzLm1pbi5zdWJ0cmFjdChbZSxlXSkpLHRoaXMuX3JlZHJhd0JvdW5kcy5leHRlbmQodC5fcHhCb3VuZHMubWF4LmFkZChbZSxlXSkpKX0sX3JlZHJhdzpmdW5jdGlvbigpe3RoaXMuX3JlZHJhd1JlcXVlc3Q9bnVsbCx0aGlzLl9yZWRyYXdCb3VuZHMmJih0aGlzLl9yZWRyYXdCb3VuZHMubWluLl9mbG9vcigpLHRoaXMuX3JlZHJhd0JvdW5kcy5tYXguX2NlaWwoKSksdGhpcy5fY2xlYXIoKSx0aGlzLl9kcmF3KCksdGhpcy5fcmVkcmF3Qm91bmRzPW51bGx9LF9jbGVhcjpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fcmVkcmF3Qm91bmRzO2U/KHQ9ZS5nZXRTaXplKCksdGhpcy5fY3R4LmNsZWFyUmVjdChlLm1pbi54LGUubWluLnksdC54LHQueSkpOih0aGlzLl9jdHguc2F2ZSgpLHRoaXMuX2N0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApLHRoaXMuX2N0eC5jbGVhclJlY3QoMCwwLHRoaXMuX2NvbnRhaW5lci53aWR0aCx0aGlzLl9jb250YWluZXIuaGVpZ2h0KSx0aGlzLl9jdHgucmVzdG9yZSgpKX0sX2RyYXc6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcy5fcmVkcmF3Qm91bmRzO3RoaXMuX2N0eC5zYXZlKCksaSYmKGU9aS5nZXRTaXplKCksdGhpcy5fY3R4LmJlZ2luUGF0aCgpLHRoaXMuX2N0eC5yZWN0KGkubWluLngsaS5taW4ueSxlLngsZS55KSx0aGlzLl9jdHguY2xpcCgpKSx0aGlzLl9kcmF3aW5nPSEwO2Zvcih2YXIgbj10aGlzLl9kcmF3Rmlyc3Q7bjtuPW4ubmV4dCl0PW4ubGF5ZXIsKCFpfHx0Ll9weEJvdW5kcyYmdC5fcHhCb3VuZHMuaW50ZXJzZWN0cyhpKSkmJnQuX3VwZGF0ZVBhdGgoKTt0aGlzLl9kcmF3aW5nPSExLHRoaXMuX2N0eC5yZXN0b3JlKCl9LF91cGRhdGVQb2x5OmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fZHJhd2luZyl7dmFyIGksbixvLHMscj10Ll9wYXJ0cyxhPXIubGVuZ3RoLGg9dGhpcy5fY3R4O2lmKGEpe2ZvcihoLmJlZ2luUGF0aCgpLGk9MDtpPGE7aSsrKXtmb3Iobj0wLG89cltpXS5sZW5ndGg7bjxvO24rKylzPXJbaV1bbl0saFtuP1wibGluZVRvXCI6XCJtb3ZlVG9cIl0ocy54LHMueSk7ZSYmaC5jbG9zZVBhdGgoKX10aGlzLl9maWxsU3Ryb2tlKGgsdCl9fX0sX3VwZGF0ZUNpcmNsZTpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbzt0aGlzLl9kcmF3aW5nJiYhdC5fZW1wdHkoKSYmKGU9dC5fcG9pbnQsaT10aGlzLl9jdHgsbj1NYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1cyksMSksMSE9KG89KE1hdGgubWF4KE1hdGgucm91bmQodC5fcmFkaXVzWSksMSl8fG4pL24pJiYoaS5zYXZlKCksaS5zY2FsZSgxLG8pKSxpLmJlZ2luUGF0aCgpLGkuYXJjKGUueCxlLnkvbyxuLDAsMipNYXRoLlBJLCExKSwxIT1vJiZpLnJlc3RvcmUoKSx0aGlzLl9maWxsU3Ryb2tlKGksdCkpfSxfZmlsbFN0cm9rZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUub3B0aW9ucztpLmZpbGwmJih0Lmdsb2JhbEFscGhhPWkuZmlsbE9wYWNpdHksdC5maWxsU3R5bGU9aS5maWxsQ29sb3J8fGkuY29sb3IsdC5maWxsKGkuZmlsbFJ1bGV8fFwiZXZlbm9kZFwiKSksaS5zdHJva2UmJjAhPT1pLndlaWdodCYmKHQuc2V0TGluZURhc2gmJnQuc2V0TGluZURhc2goZS5vcHRpb25zJiZlLm9wdGlvbnMuX2Rhc2hBcnJheXx8W10pLHQuZ2xvYmFsQWxwaGE9aS5vcGFjaXR5LHQubGluZVdpZHRoPWkud2VpZ2h0LHQuc3Ryb2tlU3R5bGU9aS5jb2xvcix0LmxpbmVDYXA9aS5saW5lQ2FwLHQubGluZUpvaW49aS5saW5lSm9pbix0LnN0cm9rZSgpKX0sX29uQ2xpY2s6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGksbj10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSxvPXRoaXMuX2RyYXdGaXJzdDtvO289by5uZXh0KShlPW8ubGF5ZXIpLm9wdGlvbnMuaW50ZXJhY3RpdmUmJmUuX2NvbnRhaW5zUG9pbnQobikmJigoXCJjbGlja1wiPT09dC50eXBlfHxcInByZWNsaWNrXCI9PT10LnR5cGUpJiZ0aGlzLl9tYXAuX2RyYWdnYWJsZU1vdmVkKGUpfHwoaT1lKSk7dGhpcy5fZmlyZUV2ZW50KCEhaSYmW2ldLHQpfSxfb25Nb3VzZU1vdmU6ZnVuY3Rpb24odCl7dmFyIGU7IXRoaXMuX21hcHx8dGhpcy5fbWFwLmRyYWdnaW5nLm1vdmluZygpfHx0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb218fChlPXRoaXMuX21hcC5tb3VzZUV2ZW50VG9MYXllclBvaW50KHQpLHRoaXMuX2hhbmRsZU1vdXNlSG92ZXIodCxlKSl9LF9oYW5kbGVNb3VzZU91dDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9ob3ZlcmVkTGF5ZXI7ZSYmKHoodGhpcy5fY29udGFpbmVyLFwibGVhZmxldC1pbnRlcmFjdGl2ZVwiKSx0aGlzLl9maXJlRXZlbnQoW2VdLHQsXCJtb3VzZW91dFwiKSx0aGlzLl9ob3ZlcmVkTGF5ZXI9bnVsbCx0aGlzLl9tb3VzZUhvdmVyVGhyb3R0bGVkPSExKX0sX2hhbmRsZU1vdXNlSG92ZXI6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fbW91c2VIb3ZlclRocm90dGxlZCl7Zm9yKHZhciBpLG4sbz10aGlzLl9kcmF3Rmlyc3Q7bztvPW8ubmV4dCkoaT1vLmxheWVyKS5vcHRpb25zLmludGVyYWN0aXZlJiZpLl9jb250YWluc1BvaW50KGUpJiYobj1pKTtuIT09dGhpcy5faG92ZXJlZExheWVyJiYodGhpcy5faGFuZGxlTW91c2VPdXQodCksbiYmKE0odGhpcy5fY29udGFpbmVyLFwibGVhZmxldC1pbnRlcmFjdGl2ZVwiKSx0aGlzLl9maXJlRXZlbnQoW25dLHQsXCJtb3VzZW92ZXJcIiksdGhpcy5faG92ZXJlZExheWVyPW4pKSx0aGlzLl9maXJlRXZlbnQoISF0aGlzLl9ob3ZlcmVkTGF5ZXImJlt0aGlzLl9ob3ZlcmVkTGF5ZXJdLHQpLHRoaXMuX21vdXNlSG92ZXJUaHJvdHRsZWQ9ITAsc2V0VGltZW91dChhKGZ1bmN0aW9uKCl7dGhpcy5fbW91c2VIb3ZlclRocm90dGxlZD0hMX0sdGhpcyksMzIpfX0sX2ZpcmVFdmVudDpmdW5jdGlvbih0LGUsaSl7dGhpcy5fbWFwLl9maXJlRE9NRXZlbnQoZSxpfHxlLnR5cGUsdCl9LF9icmluZ1RvRnJvbnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXQuX29yZGVyO24mJihlPW4ubmV4dCxpPW4ucHJldixlJiYoKGUucHJldj1pKT9pLm5leHQ9ZTplJiYodGhpcy5fZHJhd0ZpcnN0PWUpLG4ucHJldj10aGlzLl9kcmF3TGFzdCwodGhpcy5fZHJhd0xhc3QubmV4dD1uKS5uZXh0PW51bGwsdGhpcy5fZHJhd0xhc3Q9bix0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpKSl9LF9icmluZ1RvQmFjazpmdW5jdGlvbih0KXt2YXIgZSxpLG49dC5fb3JkZXI7biYmKGU9bi5uZXh0LChpPW4ucHJldikmJigoaS5uZXh0PWUpP2UucHJldj1pOmkmJih0aGlzLl9kcmF3TGFzdD1pKSxuLnByZXY9bnVsbCxuLm5leHQ9dGhpcy5fZHJhd0ZpcnN0LHRoaXMuX2RyYXdGaXJzdC5wcmV2PW4sdGhpcy5fZHJhd0ZpcnN0PW4sdGhpcy5fcmVxdWVzdFJlZHJhdyh0KSkpfX0pO2Z1bmN0aW9uIFVpKHQpe3JldHVybiBiLmNhbnZhcz9uZXcgRmkodCk6bnVsbH12YXIgVmk9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGRvY3VtZW50Lm5hbWVzcGFjZXMuYWRkKFwibHZtbFwiLFwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWxcIiksZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCI8bHZtbDpcIit0KycgY2xhc3M9XCJsdm1sXCI+Jyl9fWNhdGNoKHQpe31yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCI8XCIrdCsnIHhtbG5zPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LmNvbTp2bWxcIiBjbGFzcz1cImx2bWxcIj4nKX19KCksenQ9e19pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyPVAoXCJkaXZcIixcImxlYWZsZXQtdm1sLWNvbnRhaW5lclwiKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX21hcC5fYW5pbWF0aW5nWm9vbXx8KFdpLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyksdGhpcy5maXJlKFwidXBkYXRlXCIpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2NvbnRhaW5lcj1WaShcInNoYXBlXCIpO00oZSxcImxlYWZsZXQtdm1sLXNoYXBlIFwiKyh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lfHxcIlwiKSksZS5jb29yZHNpemU9XCIxIDFcIix0Ll9wYXRoPVZpKFwicGF0aFwiKSxlLmFwcGVuZENoaWxkKHQuX3BhdGgpLHRoaXMuX3VwZGF0ZVN0eWxlKHQpLHRoaXMuX2xheWVyc1toKHQpXT10fSxfYWRkUGF0aDpmdW5jdGlvbih0KXt2YXIgZT10Ll9jb250YWluZXI7dGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGUpLHQub3B0aW9ucy5pbnRlcmFjdGl2ZSYmdC5hZGRJbnRlcmFjdGl2ZVRhcmdldChlKX0sX3JlbW92ZVBhdGg6ZnVuY3Rpb24odCl7dmFyIGU9dC5fY29udGFpbmVyO1QoZSksdC5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldChlKSxkZWxldGUgdGhpcy5fbGF5ZXJzW2godCldfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fc3Ryb2tlLGk9dC5fZmlsbCxuPXQub3B0aW9ucyxvPXQuX2NvbnRhaW5lcjtvLnN0cm9rZWQ9ISFuLnN0cm9rZSxvLmZpbGxlZD0hIW4uZmlsbCxuLnN0cm9rZT8oZT1lfHwodC5fc3Ryb2tlPVZpKFwic3Ryb2tlXCIpKSxvLmFwcGVuZENoaWxkKGUpLGUud2VpZ2h0PW4ud2VpZ2h0K1wicHhcIixlLmNvbG9yPW4uY29sb3IsZS5vcGFjaXR5PW4ub3BhY2l0eSxuLmRhc2hBcnJheT9lLmRhc2hTdHlsZT1kKG4uZGFzaEFycmF5KT9uLmRhc2hBcnJheS5qb2luKFwiIFwiKTpuLmRhc2hBcnJheS5yZXBsYWNlKC8oICosICopL2csXCIgXCIpOmUuZGFzaFN0eWxlPVwiXCIsZS5lbmRjYXA9bi5saW5lQ2FwLnJlcGxhY2UoXCJidXR0XCIsXCJmbGF0XCIpLGUuam9pbnN0eWxlPW4ubGluZUpvaW4pOmUmJihvLnJlbW92ZUNoaWxkKGUpLHQuX3N0cm9rZT1udWxsKSxuLmZpbGw/KGk9aXx8KHQuX2ZpbGw9VmkoXCJmaWxsXCIpKSxvLmFwcGVuZENoaWxkKGkpLGkuY29sb3I9bi5maWxsQ29sb3J8fG4uY29sb3IsaS5vcGFjaXR5PW4uZmlsbE9wYWNpdHkpOmkmJihvLnJlbW92ZUNoaWxkKGkpLHQuX2ZpbGw9bnVsbCl9LF91cGRhdGVDaXJjbGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fcG9pbnQucm91bmQoKSxpPU1hdGgucm91bmQodC5fcmFkaXVzKSxuPU1hdGgucm91bmQodC5fcmFkaXVzWXx8aSk7dGhpcy5fc2V0UGF0aCh0LHQuX2VtcHR5KCk/XCJNMCAwXCI6XCJBTCBcIitlLngrXCIsXCIrZS55K1wiIFwiK2krXCIsXCIrbitcIiAwLDIzNTkyNjAwXCIpfSxfc2V0UGF0aDpmdW5jdGlvbih0LGUpe3QuX3BhdGgudj1lfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKHQpe2ZlKHQuX2NvbnRhaW5lcil9LF9icmluZ1RvQmFjazpmdW5jdGlvbih0KXtnZSh0Ll9jb250YWluZXIpfX0scWk9Yi52bWw/Vmk6Y3QsR2k9V2kuZXh0ZW5kKHtfaW5pdENvbnRhaW5lcjpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lcj1xaShcInN2Z1wiKSx0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKFwicG9pbnRlci1ldmVudHNcIixcIm5vbmVcIiksdGhpcy5fcm9vdEdyb3VwPXFpKFwiZ1wiKSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm9vdEdyb3VwKX0sX2Rlc3Ryb3lDb250YWluZXI6ZnVuY3Rpb24oKXtUKHRoaXMuX2NvbnRhaW5lciksayh0aGlzLl9jb250YWluZXIpLGRlbGV0ZSB0aGlzLl9jb250YWluZXIsZGVsZXRlIHRoaXMuX3Jvb3RHcm91cCxkZWxldGUgdGhpcy5fc3ZnU2l6ZX0sX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20mJnRoaXMuX2JvdW5kc3x8KFdpLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyksZT0odD10aGlzLl9ib3VuZHMpLmdldFNpemUoKSxpPXRoaXMuX2NvbnRhaW5lcix0aGlzLl9zdmdTaXplJiZ0aGlzLl9zdmdTaXplLmVxdWFscyhlKXx8KHRoaXMuX3N2Z1NpemU9ZSxpLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsZS54KSxpLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGUueSkpLFooaSx0Lm1pbiksaS5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsW3QubWluLngsdC5taW4ueSxlLngsZS55XS5qb2luKFwiIFwiKSksdGhpcy5maXJlKFwidXBkYXRlXCIpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX3BhdGg9cWkoXCJwYXRoXCIpO3Qub3B0aW9ucy5jbGFzc05hbWUmJk0oZSx0Lm9wdGlvbnMuY2xhc3NOYW1lKSx0Lm9wdGlvbnMuaW50ZXJhY3RpdmUmJk0oZSxcImxlYWZsZXQtaW50ZXJhY3RpdmVcIiksdGhpcy5fdXBkYXRlU3R5bGUodCksdGhpcy5fbGF5ZXJzW2godCldPXR9LF9hZGRQYXRoOmZ1bmN0aW9uKHQpe3RoaXMuX3Jvb3RHcm91cHx8dGhpcy5faW5pdENvbnRhaW5lcigpLHRoaXMuX3Jvb3RHcm91cC5hcHBlbmRDaGlsZCh0Ll9wYXRoKSx0LmFkZEludGVyYWN0aXZlVGFyZ2V0KHQuX3BhdGgpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXtUKHQuX3BhdGgpLHQucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodC5fcGF0aCksZGVsZXRlIHRoaXMuX2xheWVyc1toKHQpXX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24odCl7dC5fcHJvamVjdCgpLHQuX3VwZGF0ZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fcGF0aCx0PXQub3B0aW9ucztlJiYodC5zdHJva2U/KGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlXCIsdC5jb2xvciksZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utb3BhY2l0eVwiLHQub3BhY2l0eSksZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIix0LndlaWdodCksZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtbGluZWNhcFwiLHQubGluZUNhcCksZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtbGluZWpvaW5cIix0LmxpbmVKb2luKSx0LmRhc2hBcnJheT9lLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIix0LmRhc2hBcnJheSk6ZS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHJva2UtZGFzaGFycmF5XCIpLHQuZGFzaE9mZnNldD9lLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNob2Zmc2V0XCIsdC5kYXNoT2Zmc2V0KTplLnJlbW92ZUF0dHJpYnV0ZShcInN0cm9rZS1kYXNob2Zmc2V0XCIpKTplLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLFwibm9uZVwiKSx0LmZpbGw/KGUuc2V0QXR0cmlidXRlKFwiZmlsbFwiLHQuZmlsbENvbG9yfHx0LmNvbG9yKSxlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLHQuZmlsbE9wYWNpdHkpLGUuc2V0QXR0cmlidXRlKFwiZmlsbC1ydWxlXCIsdC5maWxsUnVsZXx8XCJldmVub2RkXCIpKTplLnNldEF0dHJpYnV0ZShcImZpbGxcIixcIm5vbmVcIikpfSxfdXBkYXRlUG9seTpmdW5jdGlvbih0LGUpe3RoaXMuX3NldFBhdGgodCxkdCh0Ll9wYXJ0cyxlKSl9LF91cGRhdGVDaXJjbGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fcG9pbnQsaT1NYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1cyksMSksbj1cImFcIitpK1wiLFwiKyhNYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1c1kpLDEpfHxpKStcIiAwIDEsMCBcIixlPXQuX2VtcHR5KCk/XCJNMCAwXCI6XCJNXCIrKGUueC1pKStcIixcIitlLnkrbisyKmkrXCIsMCBcIituKzIqLWkrXCIsMCBcIjt0aGlzLl9zZXRQYXRoKHQsZSl9LF9zZXRQYXRoOmZ1bmN0aW9uKHQsZSl7dC5fcGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsZSl9LF9icmluZ1RvRnJvbnQ6ZnVuY3Rpb24odCl7ZmUodC5fcGF0aCl9LF9icmluZ1RvQmFjazpmdW5jdGlvbih0KXtnZSh0Ll9wYXRoKX19KTtmdW5jdGlvbiBLaSh0KXtyZXR1cm4gYi5zdmd8fGIudm1sP25ldyBHaSh0KTpudWxsfWIudm1sJiZHaS5pbmNsdWRlKHp0KSxBLmluY2x1ZGUoe2dldFJlbmRlcmVyOmZ1bmN0aW9uKHQpe3Q9KHQ9dC5vcHRpb25zLnJlbmRlcmVyfHx0aGlzLl9nZXRQYW5lUmVuZGVyZXIodC5vcHRpb25zLnBhbmUpfHx0aGlzLm9wdGlvbnMucmVuZGVyZXJ8fHRoaXMuX3JlbmRlcmVyKXx8KHRoaXMuX3JlbmRlcmVyPXRoaXMuX2NyZWF0ZVJlbmRlcmVyKCkpO3JldHVybiB0aGlzLmhhc0xheWVyKHQpfHx0aGlzLmFkZExheWVyKHQpLHR9LF9nZXRQYW5lUmVuZGVyZXI6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuXCJvdmVybGF5UGFuZVwiIT09dCYmdm9pZCAwIT09dCYmKHZvaWQgMD09PShlPXRoaXMuX3BhbmVSZW5kZXJlcnNbdF0pJiYoZT10aGlzLl9jcmVhdGVSZW5kZXJlcih7cGFuZTp0fSksdGhpcy5fcGFuZVJlbmRlcmVyc1t0XT1lKSxlKX0sX2NyZWF0ZVJlbmRlcmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZmVyQ2FudmFzJiZVaSh0KXx8S2kodCl9fSk7dmFyIFlpPXhpLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe3hpLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyx0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCksZSl9LHNldEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXRMYXRMbmdzKHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSl9LF9ib3VuZHNUb0xhdExuZ3M6ZnVuY3Rpb24odCl7cmV0dXJuWyh0PWcodCkpLmdldFNvdXRoV2VzdCgpLHQuZ2V0Tm9ydGhXZXN0KCksdC5nZXROb3J0aEVhc3QoKSx0LmdldFNvdXRoRWFzdCgpXX19KTtHaS5jcmVhdGU9cWksR2kucG9pbnRzVG9QYXRoPWR0LHdpLmdlb21ldHJ5VG9MYXllcj1iaSx3aS5jb29yZHNUb0xhdExuZz1MaSx3aS5jb29yZHNUb0xhdExuZ3M9VGksd2kubGF0TG5nVG9Db29yZHM9TWksd2kubGF0TG5nc1RvQ29vcmRzPXppLHdpLmdldEZlYXR1cmU9Q2ksd2kuYXNGZWF0dXJlPVppLEEubWVyZ2VPcHRpb25zKHtib3hab29tOiEwfSk7dmFyIF90PW4uZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj10Ll9jb250YWluZXIsdGhpcy5fcGFuZT10Ll9wYW5lcy5vdmVybGF5UGFuZSx0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHQub24oXCJ1bmxvYWRcIix0aGlzLl9kZXN0cm95LHRoaXMpfSxhZGRIb29rczpmdW5jdGlvbigpe1ModGhpcy5fY29udGFpbmVyLFwibW91c2Vkb3duXCIsdGhpcy5fb25Nb3VzZURvd24sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7ayh0aGlzLl9jb250YWluZXIsXCJtb3VzZWRvd25cIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0sbW92ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW92ZWR9LF9kZXN0cm95OmZ1bmN0aW9uKCl7VCh0aGlzLl9wYW5lKSxkZWxldGUgdGhpcy5fcGFuZX0sX3Jlc2V0U3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHRoaXMuX21vdmVkPSExfSxfY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGU6ZnVuY3Rpb24oKXswIT09dGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQpLHRoaXMuX3Jlc2V0U3RhdGVUaW1lb3V0PTApfSxfb25Nb3VzZURvd246ZnVuY3Rpb24odCl7aWYoIXQuc2hpZnRLZXl8fDEhPT10LndoaWNoJiYxIT09dC5idXR0b24pcmV0dXJuITE7dGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSx0aGlzLl9yZXNldFN0YXRlKCkscmUoKSxMZSgpLHRoaXMuX3N0YXJ0UG9pbnQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLFMoZG9jdW1lbnQse2NvbnRleHRtZW51OlJlLG1vdXNlbW92ZTp0aGlzLl9vbk1vdXNlTW92ZSxtb3VzZXVwOnRoaXMuX29uTW91c2VVcCxrZXlkb3duOnRoaXMuX29uS2V5RG93bn0sdGhpcyl9LF9vbk1vdXNlTW92ZTpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlZHx8KHRoaXMuX21vdmVkPSEwLHRoaXMuX2JveD1QKFwiZGl2XCIsXCJsZWFmbGV0LXpvb20tYm94XCIsdGhpcy5fY29udGFpbmVyKSxNKHRoaXMuX2NvbnRhaW5lcixcImxlYWZsZXQtY3Jvc3NoYWlyXCIpLHRoaXMuX21hcC5maXJlKFwiYm94em9vbXN0YXJ0XCIpKSx0aGlzLl9wb2ludD10aGlzLl9tYXAubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCk7dmFyIHQ9bmV3IGYodGhpcy5fcG9pbnQsdGhpcy5fc3RhcnRQb2ludCksZT10LmdldFNpemUoKTtaKHRoaXMuX2JveCx0Lm1pbiksdGhpcy5fYm94LnN0eWxlLndpZHRoPWUueCtcInB4XCIsdGhpcy5fYm94LnN0eWxlLmhlaWdodD1lLnkrXCJweFwifSxfZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZWQmJihUKHRoaXMuX2JveCkseih0aGlzLl9jb250YWluZXIsXCJsZWFmbGV0LWNyb3NzaGFpclwiKSksYWUoKSxUZSgpLGsoZG9jdW1lbnQse2NvbnRleHRtZW51OlJlLG1vdXNlbW92ZTp0aGlzLl9vbk1vdXNlTW92ZSxtb3VzZXVwOnRoaXMuX29uTW91c2VVcCxrZXlkb3duOnRoaXMuX29uS2V5RG93bn0sdGhpcyl9LF9vbk1vdXNlVXA6ZnVuY3Rpb24odCl7MSE9PXQud2hpY2gmJjEhPT10LmJ1dHRvbnx8KHRoaXMuX2ZpbmlzaCgpLHRoaXMuX21vdmVkJiYodGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSx0aGlzLl9yZXNldFN0YXRlVGltZW91dD1zZXRUaW1lb3V0KGEodGhpcy5fcmVzZXRTdGF0ZSx0aGlzKSwwKSx0PW5ldyBzKHRoaXMuX21hcC5jb250YWluZXJQb2ludFRvTGF0TG5nKHRoaXMuX3N0YXJ0UG9pbnQpLHRoaXMuX21hcC5jb250YWluZXJQb2ludFRvTGF0TG5nKHRoaXMuX3BvaW50KSksdGhpcy5fbWFwLmZpdEJvdW5kcyh0KS5maXJlKFwiYm94em9vbWVuZFwiLHtib3hab29tQm91bmRzOnR9KSkpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpezI3PT09dC5rZXlDb2RlJiYodGhpcy5fZmluaXNoKCksdGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSx0aGlzLl9yZXNldFN0YXRlKCkpfX0pLEN0PShBLmFkZEluaXRIb29rKFwiYWRkSGFuZGxlclwiLFwiYm94Wm9vbVwiLF90KSxBLm1lcmdlT3B0aW9ucyh7ZG91YmxlQ2xpY2tab29tOiEwfSksbi5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9uKFwiZGJsY2xpY2tcIix0aGlzLl9vbkRvdWJsZUNsaWNrLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vZmYoXCJkYmxjbGlja1wiLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LF9vbkRvdWJsZUNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPWUuZ2V0Wm9vbSgpLG49ZS5vcHRpb25zLnpvb21EZWx0YSxpPXQub3JpZ2luYWxFdmVudC5zaGlmdEtleT9pLW46aStuO1wiY2VudGVyXCI9PT1lLm9wdGlvbnMuZG91YmxlQ2xpY2tab29tP2Uuc2V0Wm9vbShpKTplLnNldFpvb21Bcm91bmQodC5jb250YWluZXJQb2ludCxpKX19KSksWnQ9KEEuYWRkSW5pdEhvb2soXCJhZGRIYW5kbGVyXCIsXCJkb3VibGVDbGlja1pvb21cIixDdCksQS5tZXJnZU9wdGlvbnMoe2RyYWdnaW5nOiEwLGluZXJ0aWE6ITAsaW5lcnRpYURlY2VsZXJhdGlvbjozNDAwLGluZXJ0aWFNYXhTcGVlZDoxLzAsZWFzZUxpbmVhcml0eTouMix3b3JsZENvcHlKdW1wOiExLG1heEJvdW5kc1Zpc2Nvc2l0eTowfSksbi5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5fZHJhZ2dhYmxlfHwodD10aGlzLl9tYXAsdGhpcy5fZHJhZ2dhYmxlPW5ldyBYZSh0Ll9tYXBQYW5lLHQuX2NvbnRhaW5lciksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5vbihcInByZWRyYWdcIix0aGlzLl9vblByZURyYWdMaW1pdCx0aGlzKSx0Lm9wdGlvbnMud29ybGRDb3B5SnVtcCYmKHRoaXMuX2RyYWdnYWJsZS5vbihcInByZWRyYWdcIix0aGlzLl9vblByZURyYWdXcmFwLHRoaXMpLHQub24oXCJ6b29tZW5kXCIsdGhpcy5fb25ab29tRW5kLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX29uWm9vbUVuZCx0aGlzKSkpLE0odGhpcy5fbWFwLl9jb250YWluZXIsXCJsZWFmbGV0LWdyYWIgbGVhZmxldC10b3VjaC1kcmFnXCIpLHRoaXMuX2RyYWdnYWJsZS5lbmFibGUoKSx0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W119LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7eih0aGlzLl9tYXAuX2NvbnRhaW5lcixcImxlYWZsZXQtZ3JhYlwiKSx6KHRoaXMuX21hcC5fY29udGFpbmVyLFwibGVhZmxldC10b3VjaC1kcmFnXCIpLHRoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCl9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sbW92aW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3Zpbmd9LF9vbkRyYWdTdGFydDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fbWFwO2UuX3N0b3AoKSx0aGlzLl9tYXAub3B0aW9ucy5tYXhCb3VuZHMmJnRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kc1Zpc2Nvc2l0eT8odD1nKHRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kcyksdGhpcy5fb2Zmc2V0TGltaXQ9Xyh0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludCh0LmdldE5vcnRoV2VzdCgpKS5tdWx0aXBseUJ5KC0xKSx0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludCh0LmdldFNvdXRoRWFzdCgpKS5tdWx0aXBseUJ5KC0xKS5hZGQodGhpcy5fbWFwLmdldFNpemUoKSkpLHRoaXMuX3Zpc2Nvc2l0eT1NYXRoLm1pbigxLE1hdGgubWF4KDAsdGhpcy5fbWFwLm9wdGlvbnMubWF4Qm91bmRzVmlzY29zaXR5KSkpOnRoaXMuX29mZnNldExpbWl0PW51bGwsZS5maXJlKFwibW92ZXN0YXJ0XCIpLmZpcmUoXCJkcmFnc3RhcnRcIiksZS5vcHRpb25zLmluZXJ0aWEmJih0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W10pfSxfb25EcmFnOmZ1bmN0aW9uKHQpe3ZhciBlLGk7dGhpcy5fbWFwLm9wdGlvbnMuaW5lcnRpYSYmKGU9dGhpcy5fbGFzdFRpbWU9K25ldyBEYXRlLGk9dGhpcy5fbGFzdFBvcz10aGlzLl9kcmFnZ2FibGUuX2Fic1Bvc3x8dGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MsdGhpcy5fcG9zaXRpb25zLnB1c2goaSksdGhpcy5fdGltZXMucHVzaChlKSx0aGlzLl9wcnVuZVBvc2l0aW9ucyhlKSksdGhpcy5fbWFwLmZpcmUoXCJtb3ZlXCIsdCkuZmlyZShcImRyYWdcIix0KX0sX3BydW5lUG9zaXRpb25zOmZ1bmN0aW9uKHQpe2Zvcig7MTx0aGlzLl9wb3NpdGlvbnMubGVuZ3RoJiY1MDx0LXRoaXMuX3RpbWVzWzBdOyl0aGlzLl9wb3NpdGlvbnMuc2hpZnQoKSx0aGlzLl90aW1lcy5zaGlmdCgpfSxfb25ab29tRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLmdldFNpemUoKS5kaXZpZGVCeSgyKSxlPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoWzAsMF0pO3RoaXMuX2luaXRpYWxXb3JsZE9mZnNldD1lLnN1YnRyYWN0KHQpLngsdGhpcy5fd29ybGRXaWR0aD10aGlzLl9tYXAuZ2V0UGl4ZWxXb3JsZEJvdW5kcygpLmdldFNpemUoKS54fSxfdmlzY291c0xpbWl0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtKHQtZSkqdGhpcy5fdmlzY29zaXR5fSxfb25QcmVEcmFnTGltaXQ6ZnVuY3Rpb24oKXt2YXIgdCxlO3RoaXMuX3Zpc2Nvc2l0eSYmdGhpcy5fb2Zmc2V0TGltaXQmJih0PXRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLnN1YnRyYWN0KHRoaXMuX2RyYWdnYWJsZS5fc3RhcnRQb3MpLGU9dGhpcy5fb2Zmc2V0TGltaXQsdC54PGUubWluLngmJih0Lng9dGhpcy5fdmlzY291c0xpbWl0KHQueCxlLm1pbi54KSksdC55PGUubWluLnkmJih0Lnk9dGhpcy5fdmlzY291c0xpbWl0KHQueSxlLm1pbi55KSksdC54PmUubWF4LngmJih0Lng9dGhpcy5fdmlzY291c0xpbWl0KHQueCxlLm1heC54KSksdC55PmUubWF4LnkmJih0Lnk9dGhpcy5fdmlzY291c0xpbWl0KHQueSxlLm1heC55KSksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3M9dGhpcy5fZHJhZ2dhYmxlLl9zdGFydFBvcy5hZGQodCkpfSxfb25QcmVEcmFnV3JhcDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dvcmxkV2lkdGgsZT1NYXRoLnJvdW5kKHQvMiksaT10aGlzLl9pbml0aWFsV29ybGRPZmZzZXQsbj10aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy54LG89KG4tZStpKSV0K2UtaSxuPShuK2UraSkldC1lLWksdD1NYXRoLmFicyhvK2kpPE1hdGguYWJzKG4raSk/bzpuO3RoaXMuX2RyYWdnYWJsZS5fYWJzUG9zPXRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLmNsb25lKCksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueD10fSxfb25EcmFnRW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHM9dGhpcy5fbWFwLHI9cy5vcHRpb25zLGE9IXIuaW5lcnRpYXx8dC5ub0luZXJ0aWF8fHRoaXMuX3RpbWVzLmxlbmd0aDwyO3MuZmlyZShcImRyYWdlbmRcIix0KSwhYSYmKHRoaXMuX3BydW5lUG9zaXRpb25zKCtuZXcgRGF0ZSksdD10aGlzLl9sYXN0UG9zLnN1YnRyYWN0KHRoaXMuX3Bvc2l0aW9uc1swXSksYT0odGhpcy5fbGFzdFRpbWUtdGhpcy5fdGltZXNbMF0pLzFlMyxlPXIuZWFzZUxpbmVhcml0eSxhPSh0PXQubXVsdGlwbHlCeShlL2EpKS5kaXN0YW5jZVRvKFswLDBdKSxpPU1hdGgubWluKHIuaW5lcnRpYU1heFNwZWVkLGEpLHQ9dC5tdWx0aXBseUJ5KGkvYSksbj1pLyhyLmluZXJ0aWFEZWNlbGVyYXRpb24qZSksKG89dC5tdWx0aXBseUJ5KC1uLzIpLnJvdW5kKCkpLnh8fG8ueSk/KG89cy5fbGltaXRPZmZzZXQobyxzLm9wdGlvbnMubWF4Qm91bmRzKSx4KGZ1bmN0aW9uKCl7cy5wYW5CeShvLHtkdXJhdGlvbjpuLGVhc2VMaW5lYXJpdHk6ZSxub01vdmVTdGFydDohMCxhbmltYXRlOiEwfSl9KSk6cy5maXJlKFwibW92ZWVuZFwiKX19KSksU3Q9KEEuYWRkSW5pdEhvb2soXCJhZGRIYW5kbGVyXCIsXCJkcmFnZ2luZ1wiLFp0KSxBLm1lcmdlT3B0aW9ucyh7a2V5Ym9hcmQ6ITAsa2V5Ym9hcmRQYW5EZWx0YTo4MH0pLG4uZXh0ZW5kKHtrZXlDb2Rlczp7bGVmdDpbMzddLHJpZ2h0OlszOV0sZG93bjpbNDBdLHVwOlszOF0sem9vbUluOlsxODcsMTA3LDYxLDE3MV0sem9vbU91dDpbMTg5LDEwOSw1NCwxNzNdfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX3NldFBhbkRlbHRhKHQub3B0aW9ucy5rZXlib2FyZFBhbkRlbHRhKSx0aGlzLl9zZXRab29tRGVsdGEodC5vcHRpb25zLnpvb21EZWx0YSl9LGFkZEhvb2tzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLl9jb250YWluZXI7dC50YWJJbmRleDw9MCYmKHQudGFiSW5kZXg9XCIwXCIpLFModCx7Zm9jdXM6dGhpcy5fb25Gb2N1cyxibHVyOnRoaXMuX29uQmx1cixtb3VzZWRvd246dGhpcy5fb25Nb3VzZURvd259LHRoaXMpLHRoaXMuX21hcC5vbih7Zm9jdXM6dGhpcy5fYWRkSG9va3MsYmx1cjp0aGlzLl9yZW1vdmVIb29rc30sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlSG9va3MoKSxrKHRoaXMuX21hcC5fY29udGFpbmVyLHtmb2N1czp0aGlzLl9vbkZvY3VzLGJsdXI6dGhpcy5fb25CbHVyLG1vdXNlZG93bjp0aGlzLl9vbk1vdXNlRG93bn0sdGhpcyksdGhpcy5fbWFwLm9mZih7Zm9jdXM6dGhpcy5fYWRkSG9va3MsYmx1cjp0aGlzLl9yZW1vdmVIb29rc30sdGhpcyl9LF9vbk1vdXNlRG93bjpmdW5jdGlvbigpe3ZhciB0LGUsaTt0aGlzLl9mb2N1c2VkfHwoaT1kb2N1bWVudC5ib2R5LHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9aS5zY3JvbGxUb3B8fHQuc2Nyb2xsVG9wLGk9aS5zY3JvbGxMZWZ0fHx0LnNjcm9sbExlZnQsdGhpcy5fbWFwLl9jb250YWluZXIuZm9jdXMoKSx3aW5kb3cuc2Nyb2xsVG8oaSxlKSl9LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMCx0aGlzLl9tYXAuZmlyZShcImZvY3VzXCIpfSxfb25CbHVyOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMSx0aGlzLl9tYXAuZmlyZShcImJsdXJcIil9LF9zZXRQYW5EZWx0YTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fcGFuS2V5cz17fSxpPXRoaXMua2V5Q29kZXMsbj0wLG89aS5sZWZ0Lmxlbmd0aDtuPG87bisrKWVbaS5sZWZ0W25dXT1bLTEqdCwwXTtmb3Iobj0wLG89aS5yaWdodC5sZW5ndGg7bjxvO24rKyllW2kucmlnaHRbbl1dPVt0LDBdO2ZvcihuPTAsbz1pLmRvd24ubGVuZ3RoO248bztuKyspZVtpLmRvd25bbl1dPVswLHRdO2ZvcihuPTAsbz1pLnVwLmxlbmd0aDtuPG87bisrKWVbaS51cFtuXV09WzAsLTEqdF19LF9zZXRab29tRGVsdGE6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX3pvb21LZXlzPXt9LGk9dGhpcy5rZXlDb2RlcyxuPTAsbz1pLnpvb21Jbi5sZW5ndGg7bjxvO24rKyllW2kuem9vbUluW25dXT10O2ZvcihuPTAsbz1pLnpvb21PdXQubGVuZ3RoO248bztuKyspZVtpLnpvb21PdXRbbl1dPS10fSxfYWRkSG9va3M6ZnVuY3Rpb24oKXtTKGRvY3VtZW50LFwia2V5ZG93blwiLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7ayhkb2N1bWVudCxcImtleWRvd25cIix0aGlzLl9vbktleURvd24sdGhpcyl9LF9vbktleURvd246ZnVuY3Rpb24odCl7aWYoISh0LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXkpKXt2YXIgZSxpLG49dC5rZXlDb2RlLG89dGhpcy5fbWFwO2lmKG4gaW4gdGhpcy5fcGFuS2V5cylvLl9wYW5BbmltJiZvLl9wYW5BbmltLl9pblByb2dyZXNzfHwoaT10aGlzLl9wYW5LZXlzW25dLHQuc2hpZnRLZXkmJihpPW0oaSkubXVsdGlwbHlCeSgzKSksby5vcHRpb25zLm1heEJvdW5kcyYmKGk9by5fbGltaXRPZmZzZXQobShpKSxvLm9wdGlvbnMubWF4Qm91bmRzKSksby5vcHRpb25zLndvcmxkQ29weUp1bXA/KGU9by53cmFwTGF0TG5nKG8udW5wcm9qZWN0KG8ucHJvamVjdChvLmdldENlbnRlcigpKS5hZGQoaSkpKSxvLnBhblRvKGUpKTpvLnBhbkJ5KGkpKTtlbHNlIGlmKG4gaW4gdGhpcy5fem9vbUtleXMpby5zZXRab29tKG8uZ2V0Wm9vbSgpKyh0LnNoaWZ0S2V5PzM6MSkqdGhpcy5fem9vbUtleXNbbl0pO2Vsc2V7aWYoMjchPT1ufHwhby5fcG9wdXB8fCFvLl9wb3B1cC5vcHRpb25zLmNsb3NlT25Fc2NhcGVLZXkpcmV0dXJuO28uY2xvc2VQb3B1cCgpfVJlKHQpfX19KSksRXQ9KEEuYWRkSW5pdEhvb2soXCJhZGRIYW5kbGVyXCIsXCJrZXlib2FyZFwiLFN0KSxBLm1lcmdlT3B0aW9ucyh7c2Nyb2xsV2hlZWxab29tOiEwLHdoZWVsRGVib3VuY2VUaW1lOjQwLHdoZWVsUHhQZXJab29tTGV2ZWw6NjB9KSxuLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtTKHRoaXMuX21hcC5fY29udGFpbmVyLFwid2hlZWxcIix0aGlzLl9vbldoZWVsU2Nyb2xsLHRoaXMpLHRoaXMuX2RlbHRhPTB9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7ayh0aGlzLl9tYXAuX2NvbnRhaW5lcixcIndoZWVsXCIsdGhpcy5fb25XaGVlbFNjcm9sbCx0aGlzKX0sX29uV2hlZWxTY3JvbGw6ZnVuY3Rpb24odCl7dmFyIGU9SGUodCksaT10aGlzLl9tYXAub3B0aW9ucy53aGVlbERlYm91bmNlVGltZSxlPSh0aGlzLl9kZWx0YSs9ZSx0aGlzLl9sYXN0TW91c2VQb3M9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLHRoaXMuX3N0YXJ0VGltZXx8KHRoaXMuX3N0YXJ0VGltZT0rbmV3IERhdGUpLE1hdGgubWF4KGktKCtuZXcgRGF0ZS10aGlzLl9zdGFydFRpbWUpLDApKTtjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLHRoaXMuX3RpbWVyPXNldFRpbWVvdXQoYSh0aGlzLl9wZXJmb3JtWm9vbSx0aGlzKSxlKSxSZSh0KX0sX3BlcmZvcm1ab29tOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dC5nZXRab29tKCksaT10aGlzLl9tYXAub3B0aW9ucy56b29tU25hcHx8MCxuPSh0Ll9zdG9wKCksdGhpcy5fZGVsdGEvKDQqdGhpcy5fbWFwLm9wdGlvbnMud2hlZWxQeFBlclpvb21MZXZlbCkpLG49NCpNYXRoLmxvZygyLygxK01hdGguZXhwKC1NYXRoLmFicyhuKSkpKS9NYXRoLkxOMixpPWk/TWF0aC5jZWlsKG4vaSkqaTpuLG49dC5fbGltaXRab29tKGUrKDA8dGhpcy5fZGVsdGE/aTotaSkpLWU7dGhpcy5fZGVsdGE9MCx0aGlzLl9zdGFydFRpbWU9bnVsbCxuJiYoXCJjZW50ZXJcIj09PXQub3B0aW9ucy5zY3JvbGxXaGVlbFpvb20/dC5zZXRab29tKGUrbik6dC5zZXRab29tQXJvdW5kKHRoaXMuX2xhc3RNb3VzZVBvcyxlK24pKX19KSksa3Q9KEEuYWRkSW5pdEhvb2soXCJhZGRIYW5kbGVyXCIsXCJzY3JvbGxXaGVlbFpvb21cIixFdCksQS5tZXJnZU9wdGlvbnMoe3RhcEhvbGQ6Yi50b3VjaE5hdGl2ZSYmYi5zYWZhcmkmJmIubW9iaWxlLHRhcFRvbGVyYW5jZToxNX0pLG4uZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe1ModGhpcy5fbWFwLl9jb250YWluZXIsXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fb25Eb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe2sodGhpcy5fbWFwLl9jb250YWluZXIsXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fb25Eb3duLHRoaXMpfSxfb25Eb3duOmZ1bmN0aW9uKHQpe3ZhciBlO2NsZWFyVGltZW91dCh0aGlzLl9ob2xkVGltZW91dCksMT09PXQudG91Y2hlcy5sZW5ndGgmJihlPXQudG91Y2hlc1swXSx0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9bmV3IHAoZS5jbGllbnRYLGUuY2xpZW50WSksdGhpcy5faG9sZFRpbWVvdXQ9c2V0VGltZW91dChhKGZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsKCksdGhpcy5faXNUYXBWYWxpZCgpJiYoUyhkb2N1bWVudCxcInRvdWNoZW5kXCIsTyksUyhkb2N1bWVudCxcInRvdWNoZW5kIHRvdWNoY2FuY2VsXCIsdGhpcy5fY2FuY2VsQ2xpY2tQcmV2ZW50KSx0aGlzLl9zaW11bGF0ZUV2ZW50KFwiY29udGV4dG1lbnVcIixlKSl9LHRoaXMpLDYwMCksUyhkb2N1bWVudCxcInRvdWNoZW5kIHRvdWNoY2FuY2VsIGNvbnRleHRtZW51XCIsdGhpcy5fY2FuY2VsLHRoaXMpLFMoZG9jdW1lbnQsXCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUsdGhpcykpfSxfY2FuY2VsQ2xpY2tQcmV2ZW50OmZ1bmN0aW9uIHQoKXtrKGRvY3VtZW50LFwidG91Y2hlbmRcIixPKSxrKGRvY3VtZW50LFwidG91Y2hlbmQgdG91Y2hjYW5jZWxcIix0KX0sX2NhbmNlbDpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl9ob2xkVGltZW91dCksayhkb2N1bWVudCxcInRvdWNoZW5kIHRvdWNoY2FuY2VsIGNvbnRleHRtZW51XCIsdGhpcy5fY2FuY2VsLHRoaXMpLGsoZG9jdW1lbnQsXCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUsdGhpcyl9LF9vbk1vdmU6ZnVuY3Rpb24odCl7dD10LnRvdWNoZXNbMF07dGhpcy5fbmV3UG9zPW5ldyBwKHQuY2xpZW50WCx0LmNsaWVudFkpfSxfaXNUYXBWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZXdQb3MuZGlzdGFuY2VUbyh0aGlzLl9zdGFydFBvcyk8PXRoaXMuX21hcC5vcHRpb25zLnRhcFRvbGVyYW5jZX0sX3NpbXVsYXRlRXZlbnQ6ZnVuY3Rpb24odCxlKXt0PW5ldyBNb3VzZUV2ZW50KHQse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCx2aWV3OndpbmRvdyxzY3JlZW5YOmUuc2NyZWVuWCxzY3JlZW5ZOmUuc2NyZWVuWSxjbGllbnRYOmUuY2xpZW50WCxjbGllbnRZOmUuY2xpZW50WX0pO3QuX3NpbXVsYXRlZD0hMCxlLnRhcmdldC5kaXNwYXRjaEV2ZW50KHQpfX0pKSxPdD0oQS5hZGRJbml0SG9vayhcImFkZEhhbmRsZXJcIixcInRhcEhvbGRcIixrdCksQS5tZXJnZU9wdGlvbnMoe3RvdWNoWm9vbTpiLnRvdWNoLGJvdW5jZUF0Wm9vbUxpbWl0czohMH0pLG4uZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe00odGhpcy5fbWFwLl9jb250YWluZXIsXCJsZWFmbGV0LXRvdWNoLXpvb21cIiksUyh0aGlzLl9tYXAuX2NvbnRhaW5lcixcInRvdWNoc3RhcnRcIix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7eih0aGlzLl9tYXAuX2NvbnRhaW5lcixcImxlYWZsZXQtdG91Y2gtem9vbVwiKSxrKHRoaXMuX21hcC5fY29udGFpbmVyLFwidG91Y2hzdGFydFwiLHRoaXMuX29uVG91Y2hTdGFydCx0aGlzKX0sX29uVG91Y2hTdGFydDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fbWFwOyF0LnRvdWNoZXN8fDIhPT10LnRvdWNoZXMubGVuZ3RofHxuLl9hbmltYXRpbmdab29tfHx0aGlzLl96b29taW5nfHwoZT1uLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1swXSksaT1uLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1sxXSksdGhpcy5fY2VudGVyUG9pbnQ9bi5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpLHRoaXMuX3N0YXJ0TGF0TG5nPW4uY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9jZW50ZXJQb2ludCksXCJjZW50ZXJcIiE9PW4ub3B0aW9ucy50b3VjaFpvb20mJih0aGlzLl9waW5jaFN0YXJ0TGF0TG5nPW4uY29udGFpbmVyUG9pbnRUb0xhdExuZyhlLmFkZChpKS5fZGl2aWRlQnkoMikpKSx0aGlzLl9zdGFydERpc3Q9ZS5kaXN0YW5jZVRvKGkpLHRoaXMuX3N0YXJ0Wm9vbT1uLmdldFpvb20oKSx0aGlzLl9tb3ZlZD0hMSx0aGlzLl96b29taW5nPSEwLG4uX3N0b3AoKSxTKGRvY3VtZW50LFwidG91Y2htb3ZlXCIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksUyhkb2N1bWVudCxcInRvdWNoZW5kIHRvdWNoY2FuY2VsXCIsdGhpcy5fb25Ub3VjaEVuZCx0aGlzKSxPKHQpKX0sX29uVG91Y2hNb3ZlOmZ1bmN0aW9uKHQpe2lmKHQudG91Y2hlcyYmMj09PXQudG91Y2hlcy5sZW5ndGgmJnRoaXMuX3pvb21pbmcpe3ZhciBlPXRoaXMuX21hcCxpPWUubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodC50b3VjaGVzWzBdKSxuPWUubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodC50b3VjaGVzWzFdKSxvPWkuZGlzdGFuY2VUbyhuKS90aGlzLl9zdGFydERpc3Q7aWYodGhpcy5fem9vbT1lLmdldFNjYWxlWm9vbShvLHRoaXMuX3N0YXJ0Wm9vbSksIWUub3B0aW9ucy5ib3VuY2VBdFpvb21MaW1pdHMmJih0aGlzLl96b29tPGUuZ2V0TWluWm9vbSgpJiZvPDF8fHRoaXMuX3pvb20+ZS5nZXRNYXhab29tKCkmJjE8bykmJih0aGlzLl96b29tPWUuX2xpbWl0Wm9vbSh0aGlzLl96b29tKSksXCJjZW50ZXJcIj09PWUub3B0aW9ucy50b3VjaFpvb20pe2lmKHRoaXMuX2NlbnRlcj10aGlzLl9zdGFydExhdExuZywxPT1vKXJldHVybn1lbHNle2k9aS5fYWRkKG4pLl9kaXZpZGVCeSgyKS5fc3VidHJhY3QodGhpcy5fY2VudGVyUG9pbnQpO2lmKDE9PW8mJjA9PT1pLngmJjA9PT1pLnkpcmV0dXJuO3RoaXMuX2NlbnRlcj1lLnVucHJvamVjdChlLnByb2plY3QodGhpcy5fcGluY2hTdGFydExhdExuZyx0aGlzLl96b29tKS5zdWJ0cmFjdChpKSx0aGlzLl96b29tKX10aGlzLl9tb3ZlZHx8KGUuX21vdmVTdGFydCghMCwhMSksdGhpcy5fbW92ZWQ9ITApLHIodGhpcy5fYW5pbVJlcXVlc3QpO249YShlLl9tb3ZlLGUsdGhpcy5fY2VudGVyLHRoaXMuX3pvb20se3BpbmNoOiEwLHJvdW5kOiExfSx2b2lkIDApO3RoaXMuX2FuaW1SZXF1ZXN0PXgobix0aGlzLCEwKSxPKHQpfX0sX29uVG91Y2hFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tb3ZlZCYmdGhpcy5fem9vbWluZz8odGhpcy5fem9vbWluZz0hMSxyKHRoaXMuX2FuaW1SZXF1ZXN0KSxrKGRvY3VtZW50LFwidG91Y2htb3ZlXCIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksayhkb2N1bWVudCxcInRvdWNoZW5kIHRvdWNoY2FuY2VsXCIsdGhpcy5fb25Ub3VjaEVuZCx0aGlzKSx0aGlzLl9tYXAub3B0aW9ucy56b29tQW5pbWF0aW9uP3RoaXMuX21hcC5fYW5pbWF0ZVpvb20odGhpcy5fY2VudGVyLHRoaXMuX21hcC5fbGltaXRab29tKHRoaXMuX3pvb20pLCEwLHRoaXMuX21hcC5vcHRpb25zLnpvb21TbmFwKTp0aGlzLl9tYXAuX3Jlc2V0Vmlldyh0aGlzLl9jZW50ZXIsdGhpcy5fbWFwLl9saW1pdFpvb20odGhpcy5fem9vbSkpKTp0aGlzLl96b29taW5nPSExfX0pKSxYaT0oQS5hZGRJbml0SG9vayhcImFkZEhhbmRsZXJcIixcInRvdWNoWm9vbVwiLE90KSxBLkJveFpvb209X3QsQS5Eb3VibGVDbGlja1pvb209Q3QsQS5EcmFnPVp0LEEuS2V5Ym9hcmQ9U3QsQS5TY3JvbGxXaGVlbFpvb209RXQsQS5UYXBIb2xkPWt0LEEuVG91Y2hab29tPU90LHQuQm91bmRzPWYsdC5Ccm93c2VyPWIsdC5DUlM9b3QsdC5DYW52YXM9RmksdC5DaXJjbGU9dmksdC5DaXJjbGVNYXJrZXI9Z2ksdC5DbGFzcz1ldCx0LkNvbnRyb2w9Qix0LkRpdkljb249UmksdC5EaXZPdmVybGF5PUFpLHQuRG9tRXZlbnQ9bXQsdC5Eb21VdGlsPXB0LHQuRHJhZ2dhYmxlPVhlLHQuRXZlbnRlZD1pdCx0LkZlYXR1cmVHcm91cD1jaSx0Lkdlb0pTT049d2ksdC5HcmlkTGF5ZXI9TmksdC5IYW5kbGVyPW4sdC5JY29uPWRpLHQuSW1hZ2VPdmVybGF5PUVpLHQuTGF0TG5nPXYsdC5MYXRMbmdCb3VuZHM9cyx0LkxheWVyPW8sdC5MYXllckdyb3VwPXVpLHQuTGluZVV0aWw9dnQsdC5NYXA9QSx0Lk1hcmtlcj1taSx0Lk1peGluPWZ0LHQuUGF0aD1maSx0LlBvaW50PXAsdC5Qb2x5VXRpbD1ndCx0LlBvbHlnb249eGksdC5Qb2x5bGluZT15aSx0LlBvcHVwPUJpLHQuUG9zQW5pbWF0aW9uPUZlLHQuUHJvamVjdGlvbj13dCx0LlJlY3RhbmdsZT1ZaSx0LlJlbmRlcmVyPVdpLHQuU1ZHPUdpLHQuU1ZHT3ZlcmxheT1PaSx0LlRpbGVMYXllcj1EaSx0LlRvb2x0aXA9SWksdC5UcmFuc2Zvcm1hdGlvbj1hdCx0LlV0aWw9dHQsdC5WaWRlb092ZXJsYXk9a2ksdC5iaW5kPWEsdC5ib3VuZHM9Xyx0LmNhbnZhcz1VaSx0LmNpcmNsZT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG5ldyB2aSh0LGUsaSl9LHQuY2lyY2xlTWFya2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBnaSh0LGUpfSx0LmNvbnRyb2w9VWUsdC5kaXZJY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUmkodCl9LHQuZXh0ZW5kPWwsdC5mZWF0dXJlR3JvdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGNpKHQsZSl9LHQuZ2VvSlNPTj1TaSx0Lmdlb0pzb249TXQsdC5ncmlkTGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBOaSh0KX0sdC5pY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZGkodCl9LHQuaW1hZ2VPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IEVpKHQsZSxpKX0sdC5sYXRMbmc9dyx0LmxhdExuZ0JvdW5kcz1nLHQubGF5ZXJHcm91cD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgdWkodCxlKX0sdC5tYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEEodCxlKX0sdC5tYXJrZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG1pKHQsZSl9LHQucG9pbnQ9bSx0LnBvbHlnb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHhpKHQsZSl9LHQucG9seWxpbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHlpKHQsZSl9LHQucG9wdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEJpKHQsZSl9LHQucmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBZaSh0LGUpfSx0LnNldE9wdGlvbnM9Yyx0LnN0YW1wPWgsdC5zdmc9S2ksdC5zdmdPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IE9pKHQsZSxpKX0sdC50aWxlTGF5ZXI9amksdC50b29sdGlwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBJaSh0LGUpfSx0LnRyYW5zZm9ybWF0aW9uPWh0LHQudmVyc2lvbj1cIjEuOS40XCIsdC52aWRlb092ZXJsYXk9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcga2kodCxlLGkpfSx3aW5kb3cuTCk7dC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5MPVhpLHRoaXN9LHdpbmRvdy5MPXR9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxlYWZsZXQuanMubWFwIl0sIm5hbWVzIjpbInQiLCJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsImdsb2JhbFRoaXMiLCJzZWxmIiwibGVhZmxldCIsImwiLCJpIiwibiIsIm8iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJSIiwiT2JqZWN0IiwiY3JlYXRlIiwiTiIsInByb3RvdHlwZSIsImEiLCJBcnJheSIsInNsaWNlIiwiYmluZCIsImFwcGx5IiwiY2FsbCIsImNvbmNhdCIsIkQiLCJoIiwiX2xlYWZsZXRfaWQiLCJqIiwicyIsInIiLCJzZXRUaW1lb3V0IiwiSCIsInUiLCJNYXRoIiwicG93Iiwicm91bmQiLCJXIiwidHJpbSIsInJlcGxhY2UiLCJGIiwic3BsaXQiLCJjIiwiaGFzT3duUHJvcGVydHkiLCJvcHRpb25zIiwiVSIsInB1c2giLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0b1VwcGVyQ2FzZSIsImluZGV4T2YiLCJqb2luIiwiViIsInEiLCJFcnJvciIsImQiLCJpc0FycmF5IiwidG9TdHJpbmciLCJHIiwiSyIsIlkiLCJ3aW5kb3ciLCJYIiwiSiIsIkRhdGUiLCJtYXgiLCIkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiUSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiY2xlYXJUaW1lb3V0IiwieCIsInR0IiwiX19wcm90b19fIiwiZXh0ZW5kIiwibGFzdElkIiwic3RhbXAiLCJ0aHJvdHRsZSIsIndyYXBOdW0iLCJmYWxzZUZuIiwiZm9ybWF0TnVtIiwic3BsaXRXb3JkcyIsInNldE9wdGlvbnMiLCJnZXRQYXJhbVN0cmluZyIsInRlbXBsYXRlIiwiZW1wdHlJbWFnZVVybCIsInJlcXVlc3RGbiIsImNhbmNlbEZuIiwicmVxdWVzdEFuaW1GcmFtZSIsImNhbmNlbEFuaW1GcmFtZSIsImV0IiwiaW5pdGlhbGl6ZSIsImNhbGxJbml0SG9va3MiLCJfX3N1cGVyX18iLCJjb25zdHJ1Y3RvciIsInN0YXRpY3MiLCJpbmNsdWRlcyIsIkwiLCJNaXhpbiIsIkV2ZW50cyIsImNvbnNvbGUiLCJ3YXJuIiwic3RhY2siLCJfaW5pdEhvb2tzIiwiX2luaXRIb29rc0NhbGxlZCIsImluY2x1ZGUiLCJtZXJnZU9wdGlvbnMiLCJhZGRJbml0SG9vayIsIm9uIiwiX29uIiwib2ZmIiwiX29mZiIsIl9ldmVudHMiLCJfbGlzdGVucyIsImZuIiwiY3R4Iiwib25jZSIsIl9maXJpbmdDb3VudCIsInNwbGljZSIsImZpcmUiLCJsaXN0ZW5zIiwidHlwZSIsInRhcmdldCIsInNvdXJjZVRhcmdldCIsIl9wcm9wYWdhdGVFdmVudCIsIl9ldmVudFBhcmVudHMiLCJhZGRFdmVudFBhcmVudCIsInJlbW92ZUV2ZW50UGFyZW50IiwibGF5ZXIiLCJwcm9wYWdhdGVkRnJvbSIsIml0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjbGVhckFsbEV2ZW50TGlzdGVuZXJzIiwiYWRkT25lVGltZUV2ZW50TGlzdGVuZXIiLCJmaXJlRXZlbnQiLCJoYXNFdmVudExpc3RlbmVycyIsInAiLCJ5IiwibnQiLCJ0cnVuYyIsImZsb29yIiwiY2VpbCIsIm0iLCJmIiwiXyIsImciLCJ2IiwiaXNOYU4iLCJsYXQiLCJsbmciLCJhbHQiLCJ3IiwibG9uIiwiY2xvbmUiLCJhZGQiLCJfYWRkIiwic3VidHJhY3QiLCJfc3VidHJhY3QiLCJkaXZpZGVCeSIsIl9kaXZpZGVCeSIsIm11bHRpcGx5QnkiLCJfbXVsdGlwbHlCeSIsInNjYWxlQnkiLCJ1bnNjYWxlQnkiLCJfcm91bmQiLCJfZmxvb3IiLCJfY2VpbCIsIl90cnVuYyIsImRpc3RhbmNlVG8iLCJzcXJ0IiwiZXF1YWxzIiwiY29udGFpbnMiLCJhYnMiLCJtaW4iLCJnZXRDZW50ZXIiLCJnZXRCb3R0b21MZWZ0IiwiZ2V0VG9wUmlnaHQiLCJnZXRUb3BMZWZ0IiwiZ2V0Qm90dG9tUmlnaHQiLCJnZXRTaXplIiwiaW50ZXJzZWN0cyIsIm92ZXJsYXBzIiwiaXNWYWxpZCIsInBhZCIsIl9zb3V0aFdlc3QiLCJfbm9ydGhFYXN0IiwiZ2V0U291dGhXZXN0IiwiZ2V0Tm9ydGhFYXN0IiwiZ2V0Tm9ydGhXZXN0IiwiZ2V0Tm9ydGgiLCJnZXRXZXN0IiwiZ2V0U291dGhFYXN0IiwiZ2V0U291dGgiLCJnZXRFYXN0IiwidG9CQm94U3RyaW5nIiwib3QiLCJsYXRMbmdUb1BvaW50IiwicHJvamVjdGlvbiIsInByb2plY3QiLCJzY2FsZSIsInRyYW5zZm9ybWF0aW9uIiwiX3RyYW5zZm9ybSIsInBvaW50VG9MYXRMbmciLCJ1bnRyYW5zZm9ybSIsInVucHJvamVjdCIsInpvb20iLCJsb2ciLCJMTjIiLCJnZXRQcm9qZWN0ZWRCb3VuZHMiLCJpbmZpbml0ZSIsImJvdW5kcyIsInRyYW5zZm9ybSIsInN0IiwiZGlzdGFuY2UiLCJ3cmFwIiwid3JhcExhdExuZyIsInRvQm91bmRzIiwiY29zIiwiUEkiLCJ3cmFwTG5nIiwid3JhcExhdCIsIndyYXBMYXRMbmdCb3VuZHMiLCJzaW4iLCJhdGFuMiIsInJ0IiwiTUFYX0xBVElUVURFIiwiYXRhbiIsImV4cCIsImF0IiwiX2EiLCJfYiIsIl9jIiwiX2QiLCJodCIsImx0IiwiY29kZSIsInV0IiwiY3QiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnROUyIsImR0IiwiYiIsInN2ZyIsIl90IiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJwdCIsIm10IiwibmF2aWdhdG9yIiwiZnQiLCJndCIsInZ0IiwieXQiLCJwYXJzZUludCIsImV4ZWMiLCJ1c2VyQWdlbnQiLCJ4dCIsIm9wZXJhIiwid3QiLCJidCIsIlB0IiwiTHQiLCJUdCIsInBsYXRmb3JtIiwiTXQiLCJ6dCIsIldlYktpdENTU01hdHJpeCIsIkN0IiwiTF9ESVNBQkxFXzNEIiwiWnQiLCJvcmllbnRhdGlvbiIsIlN0IiwiRXQiLCJrdCIsIlBvaW50ZXJFdmVudCIsIk1TUG9pbnRlckV2ZW50IiwiT3QiLCJBdCIsIlRvdWNoRXZlbnQiLCJCdCIsIkxfTk9fVE9VQ0giLCJJdCIsIlJ0IiwiTnQiLCJkZXZpY2VQaXhlbFJhdGlvIiwic2NyZWVuIiwiZGV2aWNlWERQSSIsImxvZ2ljYWxYRFBJIiwiRHQiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImp0IiwiY3JlYXRlRWxlbWVudCIsImdldENvbnRleHQiLCJIdCIsImNyZWF0ZVNWR1JlY3QiLCJXdCIsImlubmVySFRNTCIsImZpcnN0Q2hpbGQiLCJuYW1lc3BhY2VVUkkiLCJ0b0xvd2VyQ2FzZSIsImllIiwiaWVsdDkiLCJlZGdlIiwid2Via2l0IiwiYW5kcm9pZCIsImFuZHJvaWQyMyIsImFuZHJvaWRTdG9jayIsImNocm9tZSIsImdlY2tvIiwic2FmYXJpIiwicGhhbnRvbSIsIm9wZXJhMTIiLCJ3aW4iLCJpZTNkIiwid2Via2l0M2QiLCJnZWNrbzNkIiwiYW55M2QiLCJtb2JpbGUiLCJtb2JpbGVXZWJraXQiLCJtb2JpbGVXZWJraXQzZCIsIm1zUG9pbnRlciIsInBvaW50ZXIiLCJ0b3VjaCIsInRvdWNoTmF0aXZlIiwibW9iaWxlT3BlcmEiLCJtb2JpbGVHZWNrbyIsInJldGluYSIsInBhc3NpdmVFdmVudHMiLCJjYW52YXMiLCJ2bWwiLCJiZWhhdmlvciIsImFkaiIsImlubGluZVN2ZyIsIm1hYyIsImxpbnV4IiwiRnQiLCJVdCIsIlZ0IiwicXQiLCJHdCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiS3QiLCJNU1BPSU5URVJfVFlQRV9UT1VDSCIsInBvaW50ZXJUeXBlIiwiTyIsImVlIiwiWXQiLCJYdCIsIkp0IiwiJHQiLCJRdCIsInRlIiwicG9pbnRlcklkIiwiTVNQT0lOVEVSX1RZUEVfTU9VU0UiLCJ0b3VjaGVzIiwiY2hhbmdlZFRvdWNoZXMiLCJuZSIsImRldGFpbCIsInNvdXJjZUNhcGFiaWxpdGllcyIsImZpcmVzVG91Y2hFdmVudHMiLCJOZSIsInNvbWUiLCJIVE1MTGFiZWxFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvciIsIkhUTUxJbnB1dEVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIm5vdyIsImlzVHJ1c3RlZCIsIl9zaW11bGF0ZWQiLCJkYmxjbGljayIsInNpbURibGNsaWNrIiwib2UiLCJzZSIsInJlIiwiYWUiLCJoZSIsImxlIiwidWUiLCJ3ZSIsImNlIiwiZGUiLCJfZSIsImdldEVsZW1lbnRCeUlkIiwicGUiLCJjdXJyZW50U3R5bGUiLCJkZWZhdWx0VmlldyIsImdldENvbXB1dGVkU3R5bGUiLCJQIiwiY2xhc3NOYW1lIiwiYXBwZW5kQ2hpbGQiLCJUIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwibWUiLCJmZSIsImxhc3RDaGlsZCIsImdlIiwiaW5zZXJ0QmVmb3JlIiwidmUiLCJjbGFzc0xpc3QiLCJ4ZSIsIlJlZ0V4cCIsInRlc3QiLCJNIiwieWUiLCJ6IiwicmVtb3ZlIiwiYmFzZVZhbCIsImNvcnJlc3BvbmRpbmdFbGVtZW50IiwiQyIsIm9wYWNpdHkiLCJmaWx0ZXJzIiwiaXRlbSIsIkVuYWJsZWQiLCJPcGFjaXR5IiwiZmlsdGVyIiwiYmUiLCJaIiwiX2xlYWZsZXRfcG9zIiwibGVmdCIsInRvcCIsIlBlIiwiTGUiLCJTIiwiVGUiLCJrIiwiTWUiLCJ0YWJJbmRleCIsInplIiwib3V0bGluZVN0eWxlIiwiQ2UiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsImJvZHkiLCJaZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiYm91bmRpbmdDbGllbnRSZWN0IiwiVFJBTlNGT1JNIiwiVFJBTlNJVElPTiIsIlRSQU5TSVRJT05fRU5EIiwiZ2V0U3R5bGUiLCJlbXB0eSIsInRvRnJvbnQiLCJ0b0JhY2siLCJoYXNDbGFzcyIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJzZXRDbGFzcyIsImdldENsYXNzIiwic2V0T3BhY2l0eSIsInRlc3RQcm9wIiwic2V0VHJhbnNmb3JtIiwic2V0UG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsImRpc2FibGVUZXh0U2VsZWN0aW9uIiwiZW5hYmxlVGV4dFNlbGVjdGlvbiIsImRpc2FibGVJbWFnZURyYWciLCJlbmFibGVJbWFnZURyYWciLCJwcmV2ZW50T3V0bGluZSIsInJlc3RvcmVPdXRsaW5lIiwiZ2V0U2l6ZWRQYXJlbnROb2RlIiwiZ2V0U2NhbGUiLCJrZSIsIkUiLCJTZSIsIk9lIiwiRWUiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIndoZWVsIiwiZXZlbnQiLCJwYXNzaXZlIiwiV2UiLCJhdHRhY2hFdmVudCIsImRldGFjaEV2ZW50IiwiQWUiLCJzdG9wUHJvcGFnYXRpb24iLCJvcmlnaW5hbEV2ZW50IiwiX3N0b3BwZWQiLCJjYW5jZWxCdWJibGUiLCJCZSIsIkllIiwiX2xlYWZsZXRfZGlzYWJsZV9jbGljayIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJSZSIsImNvbXBvc2VkUGF0aCIsIkRlIiwiY2xpZW50WCIsImNsaWVudExlZnQiLCJjbGllbnRZIiwiY2xpZW50VG9wIiwiamUiLCJIZSIsIndoZWVsRGVsdGFZIiwiZGVsdGFZIiwiZGVsdGFNb2RlIiwiZGVsdGFYIiwiZGVsdGFaIiwid2hlZWxEZWx0YSIsInJlbGF0ZWRUYXJnZXQiLCJkaXNhYmxlU2Nyb2xsUHJvcGFnYXRpb24iLCJkaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbiIsInN0b3AiLCJnZXRQcm9wYWdhdGlvblBhdGgiLCJnZXRNb3VzZVBvc2l0aW9uIiwiZ2V0V2hlZWxEZWx0YSIsImlzRXh0ZXJuYWxUYXJnZXQiLCJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwiRmUiLCJydW4iLCJfZWwiLCJfaW5Qcm9ncmVzcyIsIl9kdXJhdGlvbiIsIl9lYXNlT3V0UG93ZXIiLCJfc3RhcnRQb3MiLCJfb2Zmc2V0IiwiX3N0YXJ0VGltZSIsIl9hbmltYXRlIiwiX3N0ZXAiLCJfY29tcGxldGUiLCJfYW5pbUlkIiwiX3J1bkZyYW1lIiwiX2Vhc2VPdXQiLCJBIiwiY3JzIiwiY2VudGVyIiwibWluWm9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJtYXhCb3VuZHMiLCJyZW5kZXJlciIsInpvb21BbmltYXRpb24iLCJ6b29tQW5pbWF0aW9uVGhyZXNob2xkIiwiZmFkZUFuaW1hdGlvbiIsIm1hcmtlclpvb21BbmltYXRpb24iLCJ0cmFuc2Zvcm0zRExpbWl0Iiwiem9vbVNuYXAiLCJ6b29tRGVsdGEiLCJ0cmFja1Jlc2l6ZSIsIl9oYW5kbGVycyIsIl9sYXllcnMiLCJfem9vbUJvdW5kTGF5ZXJzIiwiX3NpemVDaGFuZ2VkIiwiX2luaXRDb250YWluZXIiLCJfaW5pdExheW91dCIsIl9vblJlc2l6ZSIsIl9pbml0RXZlbnRzIiwic2V0TWF4Qm91bmRzIiwiX3pvb20iLCJfbGltaXRab29tIiwic2V0VmlldyIsInJlc2V0IiwiX3pvb21BbmltYXRlZCIsIl9jcmVhdGVBbmltUHJveHkiLCJfcHJveHkiLCJfY2F0Y2hUcmFuc2l0aW9uRW5kIiwiX2FkZExheWVycyIsIl9saW1pdENlbnRlciIsIl9zdG9wIiwiX2xvYWRlZCIsImFuaW1hdGUiLCJwYW4iLCJkdXJhdGlvbiIsIl90cnlBbmltYXRlZFpvb20iLCJfdHJ5QW5pbWF0ZWRQYW4iLCJfc2l6ZVRpbWVyIiwiX3Jlc2V0VmlldyIsIm5vTW92ZVN0YXJ0Iiwic2V0Wm9vbSIsInpvb21JbiIsInpvb21PdXQiLCJzZXRab29tQXJvdW5kIiwiZ2V0Wm9vbVNjYWxlIiwibGF0TG5nVG9Db250YWluZXJQb2ludCIsImNvbnRhaW5lclBvaW50VG9MYXRMbmciLCJfZ2V0Qm91bmRzQ2VudGVyWm9vbSIsImdldEJvdW5kcyIsInBhZGRpbmdUb3BMZWZ0IiwicGFkZGluZyIsInBhZGRpbmdCb3R0b21SaWdodCIsImdldEJvdW5kc1pvb20iLCJmaXRCb3VuZHMiLCJmaXRXb3JsZCIsInBhblRvIiwicGFuQnkiLCJfcGFuQW5pbSIsInN0ZXAiLCJfb25QYW5UcmFuc2l0aW9uU3RlcCIsImVuZCIsIl9vblBhblRyYW5zaXRpb25FbmQiLCJfbWFwUGFuZSIsIl9nZXRNYXBQYW5lUG9zIiwiZWFzZUxpbmVhcml0eSIsIl9yYXdQYW5CeSIsImdldFpvb20iLCJmbHlUbyIsIl9tb3ZlU3RhcnQiLCJfZmx5VG9GcmFtZSIsIl9tb3ZlIiwiZ2V0U2NhbGVab29tIiwiX21vdmVFbmQiLCJmbHlUb0JvdW5kcyIsIl9wYW5JbnNpZGVNYXhCb3VuZHMiLCJzZXRNaW5ab29tIiwic2V0TWF4Wm9vbSIsInBhbkluc2lkZUJvdW5kcyIsIl9lbmZvcmNpbmdCb3VuZHMiLCJwYW5JbnNpZGUiLCJnZXRQaXhlbEJvdW5kcyIsImludmFsaWRhdGVTaXplIiwiX2xhc3RDZW50ZXIiLCJkZWJvdW5jZU1vdmVlbmQiLCJvbGRTaXplIiwibmV3U2l6ZSIsImxvY2F0ZSIsIl9sb2NhdGVPcHRpb25zIiwidGltZW91dCIsIndhdGNoIiwiX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2UiLCJfaGFuZGxlR2VvbG9jYXRpb25FcnJvciIsIl9sb2NhdGlvbldhdGNoSWQiLCJnZW9sb2NhdGlvbiIsIndhdGNoUG9zaXRpb24iLCJnZXRDdXJyZW50UG9zaXRpb24iLCJtZXNzYWdlIiwic3RvcExvY2F0ZSIsImNsZWFyV2F0Y2giLCJfY29udGFpbmVyIiwiY29vcmRzIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJhY2N1cmFjeSIsImxhdGxuZyIsInRpbWVzdGFtcCIsImFkZEhhbmRsZXIiLCJlbmFibGUiLCJfY29udGFpbmVySWQiLCJfY2xlYXJDb250cm9sUG9zIiwiX3Jlc2l6ZVJlcXVlc3QiLCJfY2xlYXJIYW5kbGVycyIsIl9wYW5lcyIsIl9yZW5kZXJlciIsImNyZWF0ZVBhbmUiLCJfY2hlY2tJZkxvYWRlZCIsIl9tb3ZlZCIsImxheWVyUG9pbnRUb0xhdExuZyIsIl9nZXRDZW50ZXJMYXllclBvaW50IiwiZ2V0TWluWm9vbSIsIl9sYXllcnNNaW5ab29tIiwiZ2V0TWF4Wm9vbSIsIl9sYXllcnNNYXhab29tIiwiX3NpemUiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsIl9nZXRUb3BMZWZ0UG9pbnQiLCJnZXRQaXhlbE9yaWdpbiIsIl9waXhlbE9yaWdpbiIsImdldFBpeGVsV29ybGRCb3VuZHMiLCJnZXRQYW5lIiwiZ2V0UGFuZXMiLCJnZXRDb250YWluZXIiLCJsYXRMbmdUb0xheWVyUG9pbnQiLCJjb250YWluZXJQb2ludFRvTGF5ZXJQb2ludCIsImxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50IiwibW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQiLCJtb3VzZUV2ZW50VG9MYXllclBvaW50IiwibW91c2VFdmVudFRvTGF0TG5nIiwiX29uU2Nyb2xsIiwiX2ZhZGVBbmltYXRlZCIsInBvc2l0aW9uIiwiX2luaXRQYW5lcyIsIl9pbml0Q29udHJvbFBvcyIsIl9wYW5lUmVuZGVyZXJzIiwibWFya2VyUGFuZSIsInNoYWRvd1BhbmUiLCJfZ2V0TmV3UGl4ZWxPcmlnaW4iLCJwaW5jaCIsIl9nZXRab29tU3BhbiIsIl90YXJnZXRzIiwiX2hhbmRsZURPTUV2ZW50IiwiX29uTW92ZUVuZCIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJfZmluZEV2ZW50VGFyZ2V0cyIsInNyY0VsZW1lbnQiLCJfZHJhZ2dhYmxlTW92ZWQiLCJfaXNDbGlja0Rpc2FibGVkIiwiX2xlYWZsZXRfZGlzYWJsZV9ldmVudHMiLCJfZmlyZURPTUV2ZW50IiwiX21vdXNlRXZlbnRzIiwiZ2V0TGF0TG5nIiwiX3JhZGl1cyIsImNvbnRhaW5lclBvaW50IiwibGF5ZXJQb2ludCIsImJ1YmJsaW5nTW91c2VFdmVudHMiLCJkcmFnZ2luZyIsImVuYWJsZWQiLCJtb3ZlZCIsImJveFpvb20iLCJkaXNhYmxlIiwid2hlblJlYWR5IiwiX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCIsIl9sYXRMbmdCb3VuZHNUb05ld0xheWVyQm91bmRzIiwiX2dldENlbnRlck9mZnNldCIsIl9nZXRCb3VuZHNPZmZzZXQiLCJfbGltaXRPZmZzZXQiLCJfcmVib3VuZCIsIm1hcFBhbmUiLCJfYW5pbWF0aW5nWm9vbSIsIl9vblpvb21UcmFuc2l0aW9uRW5kIiwiX2FuaW1Nb3ZlRW5kIiwiX2Rlc3Ryb3lBbmltUHJveHkiLCJwcm9wZXJ0eU5hbWUiLCJfbm90aGluZ1RvQW5pbWF0ZSIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJfYW5pbWF0ZVpvb20iLCJfYW5pbWF0ZVRvQ2VudGVyIiwiX2FuaW1hdGVUb1pvb20iLCJub1VwZGF0ZSIsIl90ZW1wRmlyZVpvb21FdmVudCIsIlVlIiwiQiIsIl9tYXAiLCJyZW1vdmVDb250cm9sIiwiYWRkQ29udHJvbCIsImFkZFRvIiwib25BZGQiLCJfY29udHJvbENvcm5lcnMiLCJvblJlbW92ZSIsIl9yZWZvY3VzT25NYXAiLCJzY3JlZW5YIiwic2NyZWVuWSIsImZvY3VzIiwiVmUiLCJfY29udHJvbENvbnRhaW5lciIsImNvbGxhcHNlZCIsImF1dG9aSW5kZXgiLCJoaWRlU2luZ2xlQmFzZSIsInNvcnRMYXllcnMiLCJzb3J0RnVuY3Rpb24iLCJfbGF5ZXJDb250cm9sSW5wdXRzIiwiX2xhc3RaSW5kZXgiLCJfaGFuZGxpbmdDbGljayIsIl9wcmV2ZW50Q2xpY2siLCJfYWRkTGF5ZXIiLCJfdXBkYXRlIiwiX2NoZWNrRGlzYWJsZWRMYXllcnMiLCJfb25MYXllckNoYW5nZSIsIl9leHBhbmRJZk5vdENvbGxhcHNlZCIsImFkZEJhc2VMYXllciIsImFkZE92ZXJsYXkiLCJyZW1vdmVMYXllciIsIl9nZXRMYXllciIsImV4cGFuZCIsIl9zZWN0aW9uIiwib2Zmc2V0VG9wIiwiY29sbGFwc2UiLCJzZXRBdHRyaWJ1dGUiLCJfZXhwYW5kU2FmZWx5IiwiX2xheWVyc0xpbmsiLCJocmVmIiwidGl0bGUiLCJrZXlkb3duIiwia2V5Q29kZSIsImNsaWNrIiwiX2Jhc2VMYXllcnNMaXN0IiwiX3NlcGFyYXRvciIsIl9vdmVybGF5c0xpc3QiLCJuYW1lIiwib3ZlcmxheSIsInNvcnQiLCJzZXRaSW5kZXgiLCJfYWRkSXRlbSIsImRpc3BsYXkiLCJfY3JlYXRlUmFkaW9FbGVtZW50IiwiaGFzTGF5ZXIiLCJkZWZhdWx0Q2hlY2tlZCIsImxheWVySWQiLCJfb25JbnB1dENsaWNrIiwiY2hlY2tlZCIsImFkZExheWVyIiwiZGlzYWJsZWQiLCJxZSIsInpvb21JblRleHQiLCJ6b29tSW5UaXRsZSIsInpvb21PdXRUZXh0Iiwiem9vbU91dFRpdGxlIiwiX3pvb21JbkJ1dHRvbiIsIl9jcmVhdGVCdXR0b24iLCJfem9vbUluIiwiX3pvb21PdXRCdXR0b24iLCJfem9vbU91dCIsIl91cGRhdGVEaXNhYmxlZCIsIl9kaXNhYmxlZCIsInNoaWZ0S2V5IiwiR2UiLCJ6b29tQ29udHJvbCIsIm1heFdpZHRoIiwibWV0cmljIiwiaW1wZXJpYWwiLCJfYWRkU2NhbGVzIiwidXBkYXRlV2hlbklkbGUiLCJfbVNjYWxlIiwiX2lTY2FsZSIsIl91cGRhdGVTY2FsZXMiLCJfdXBkYXRlTWV0cmljIiwiX3VwZGF0ZUltcGVyaWFsIiwiX2dldFJvdW5kTnVtIiwiX3VwZGF0ZVNjYWxlIiwiS2UiLCJwcmVmaXgiLCJfYXR0cmlidXRpb25zIiwiYXR0cmlidXRpb25Db250cm9sIiwiZ2V0QXR0cmlidXRpb24iLCJhZGRBdHRyaWJ1dGlvbiIsIl9hZGRBdHRyaWJ1dGlvbiIsInJlbW92ZUF0dHJpYnV0aW9uIiwic2V0UHJlZml4IiwiTGF5ZXJzIiwiWm9vbSIsIlNjYWxlIiwiQXR0cmlidXRpb24iLCJhdHRyaWJ1dGlvbiIsIl9lbmFibGVkIiwiYWRkSG9va3MiLCJyZW1vdmVIb29rcyIsIlllIiwiWGUiLCJjbGlja1RvbGVyYW5jZSIsIl9lbGVtZW50IiwiX2RyYWdTdGFydFRhcmdldCIsIl9wcmV2ZW50T3V0bGluZSIsIl9vbkRvd24iLCJfZHJhZ2dpbmciLCJmaW5pc2hEcmFnIiwid2hpY2giLCJidXR0b24iLCJfbW92aW5nIiwiX3N0YXJ0UG9pbnQiLCJfcGFyZW50U2NhbGUiLCJfb25Nb3ZlIiwiX29uVXAiLCJfbGFzdFRhcmdldCIsIlNWR0VsZW1lbnRJbnN0YW5jZSIsImNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IiwiX25ld1BvcyIsIl9sYXN0RXZlbnQiLCJfdXBkYXRlUG9zaXRpb24iLCJub0luZXJ0aWEiLCJKZSIsIl9jb2RlIiwic2kiLCJvaSIsIiRlIiwiSSIsIlFlIiwidGkiLCJjbGlwUG9seWdvbiIsInBvbHlnb25DZW50ZXIiLCJjZW50cm9pZCIsImVpIiwiVWludDhBcnJheSIsInJpIiwiaWkiLCJuaSIsImFpIiwiaGkiLCJzaW1wbGlmeSIsInBvaW50VG9TZWdtZW50RGlzdGFuY2UiLCJjbG9zZXN0UG9pbnRPblNlZ21lbnQiLCJjbGlwU2VnbWVudCIsIl9nZXRFZGdlSW50ZXJzZWN0aW9uIiwiX2dldEJpdENvZGUiLCJfc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQiLCJpc0ZsYXQiLCJfZmxhdCIsInBvbHlsaW5lQ2VudGVyIiwiUl9NSU5PUiIsInRhbiIsIkxvbkxhdCIsIk1lcmNhdG9yIiwiU3BoZXJpY2FsTWVyY2F0b3IiLCJsaSIsIkVhcnRoIiwiRVBTRzMzOTUiLCJFUFNHMzg1NyIsIkVQU0c5MDA5MTMiLCJFUFNHNDMyNiIsIlNpbXBsZSIsInBhbmUiLCJyZW1vdmVGcm9tIiwiX21hcFRvQWRkIiwiYWRkSW50ZXJhY3RpdmVUYXJnZXQiLCJyZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCIsIl9sYXllckFkZCIsImdldEV2ZW50cyIsInVpIiwiYmVmb3JlQWRkIiwiZWFjaExheWVyIiwiX2FkZFpvb21MaW1pdCIsIl91cGRhdGVab29tTGV2ZWxzIiwiX3JlbW92ZVpvb21MaW1pdCIsImdldExheWVySWQiLCJjbGVhckxheWVycyIsImludm9rZSIsImdldExheWVyIiwiZ2V0TGF5ZXJzIiwiY2kiLCJzZXRTdHlsZSIsImJyaW5nVG9Gcm9udCIsImJyaW5nVG9CYWNrIiwiZGkiLCJwb3B1cEFuY2hvciIsInRvb2x0aXBBbmNob3IiLCJjcm9zc09yaWdpbiIsImNyZWF0ZUljb24iLCJfY3JlYXRlSWNvbiIsImNyZWF0ZVNoYWRvdyIsIl9nZXRJY29uVXJsIiwiX2NyZWF0ZUltZyIsInRhZ05hbWUiLCJfc2V0SWNvblN0eWxlcyIsInNoYWRvd0FuY2hvciIsImljb25BbmNob3IiLCJtYXJnaW5MZWZ0IiwibWFyZ2luVG9wIiwic3JjIiwiX2kiLCJpY29uVXJsIiwiaWNvblJldGluYVVybCIsInNoYWRvd1VybCIsImljb25TaXplIiwic2hhZG93U2l6ZSIsImltYWdlUGF0aCIsIl9kZXRlY3RJY29uUGF0aCIsIl9zdHJpcFVybCIsInF1ZXJ5U2VsZWN0b3IiLCJzdWJzdHJpbmciLCJwaSIsIl9tYXJrZXIiLCJfaWNvbiIsIl9kcmFnZ2FibGUiLCJkcmFnc3RhcnQiLCJfb25EcmFnU3RhcnQiLCJwcmVkcmFnIiwiX29uUHJlRHJhZyIsImRyYWciLCJfb25EcmFnIiwiZHJhZ2VuZCIsIl9vbkRyYWdFbmQiLCJfYWRqdXN0UGFuIiwiYXV0b1BhblNwZWVkIiwiYXV0b1BhblBhZGRpbmciLCJfcGFuUmVxdWVzdCIsIl9vbGRMYXRMbmciLCJjbG9zZVBvcHVwIiwiYXV0b1BhbiIsIl9zaGFkb3ciLCJfbGF0bG5nIiwib2xkTGF0TG5nIiwibWkiLCJpY29uIiwiaW50ZXJhY3RpdmUiLCJrZXlib2FyZCIsInpJbmRleE9mZnNldCIsInJpc2VPbkhvdmVyIiwicmlzZU9mZnNldCIsImF1dG9QYW5PbkZvY3VzIiwiZHJhZ2dhYmxlIiwiX2luaXRJY29uIiwidXBkYXRlIiwiX3JlbW92ZUljb24iLCJfcmVtb3ZlU2hhZG93Iiwidmlld3Jlc2V0Iiwic2V0TGF0TG5nIiwic2V0WkluZGV4T2Zmc2V0IiwiZ2V0SWNvbiIsInNldEljb24iLCJfcG9wdXAiLCJiaW5kUG9wdXAiLCJnZXRFbGVtZW50IiwiX3NldFBvcyIsIm1vdXNlb3ZlciIsIl9icmluZ1RvRnJvbnQiLCJtb3VzZW91dCIsIl9yZXNldFpJbmRleCIsIl9wYW5PbkZvY3VzIiwiX3VwZGF0ZU9wYWNpdHkiLCJfaW5pdEludGVyYWN0aW9uIiwiX3pJbmRleCIsIl91cGRhdGVaSW5kZXgiLCJ6SW5kZXgiLCJfZ2V0UG9wdXBBbmNob3IiLCJfZ2V0VG9vbHRpcEFuY2hvciIsImZpIiwic3Ryb2tlIiwiY29sb3IiLCJ3ZWlnaHQiLCJsaW5lQ2FwIiwibGluZUpvaW4iLCJkYXNoQXJyYXkiLCJkYXNoT2Zmc2V0IiwiZmlsbCIsImZpbGxDb2xvciIsImZpbGxPcGFjaXR5IiwiZmlsbFJ1bGUiLCJnZXRSZW5kZXJlciIsIl9pbml0UGF0aCIsIl9yZXNldCIsIl9hZGRQYXRoIiwiX3JlbW92ZVBhdGgiLCJyZWRyYXciLCJfdXBkYXRlUGF0aCIsIl91cGRhdGVTdHlsZSIsIl91cGRhdGVCb3VuZHMiLCJfYnJpbmdUb0JhY2siLCJfcGF0aCIsIl9wcm9qZWN0IiwiX2NsaWNrVG9sZXJhbmNlIiwidG9sZXJhbmNlIiwiZ2kiLCJyYWRpdXMiLCJzZXRSYWRpdXMiLCJnZXRSYWRpdXMiLCJfcG9pbnQiLCJfcmFkaXVzWSIsIl9weEJvdW5kcyIsIl91cGRhdGVDaXJjbGUiLCJfZW1wdHkiLCJfYm91bmRzIiwiX2NvbnRhaW5zUG9pbnQiLCJ2aSIsIl9tUmFkaXVzIiwiYWNvcyIsInlpIiwic21vb3RoRmFjdG9yIiwibm9DbGlwIiwiX3NldExhdExuZ3MiLCJnZXRMYXRMbmdzIiwiX2xhdGxuZ3MiLCJzZXRMYXRMbmdzIiwiaXNFbXB0eSIsImNsb3Nlc3RMYXllclBvaW50IiwiX3BhcnRzIiwiX2RlZmF1bHRTaGFwZSIsImFkZExhdExuZyIsIl9jb252ZXJ0TGF0TG5ncyIsIl9yaW5ncyIsIl9wcm9qZWN0TGF0bG5ncyIsIl9yYXdQeEJvdW5kcyIsIl9jbGlwUG9pbnRzIiwiX3NpbXBsaWZ5UG9pbnRzIiwiX3VwZGF0ZVBvbHkiLCJ4aSIsInBvcCIsIndpIiwiYWRkRGF0YSIsImZlYXR1cmVzIiwiZ2VvbWV0cmllcyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJiaSIsImZlYXR1cmUiLCJaaSIsImRlZmF1bHRPcHRpb25zIiwicmVzZXRTdHlsZSIsIm9uRWFjaEZlYXR1cmUiLCJfc2V0TGF5ZXJTdHlsZSIsInBvaW50VG9MYXllciIsImNvb3Jkc1RvTGF0TG5nIiwiTGkiLCJQaSIsIlRpIiwicHJvcGVydGllcyIsIm1hcmtlcnNJbmhlcml0T3B0aW9ucyIsIk1pIiwiemkiLCJDaSIsInRvR2VvSlNPTiIsIlNpIiwidG9NdWx0aVBvaW50IiwiRWkiLCJlcnJvck92ZXJsYXlVcmwiLCJfdXJsIiwiX2ltYWdlIiwiX2luaXRJbWFnZSIsInNldFVybCIsInNldEJvdW5kcyIsInpvb21hbmltIiwib25zZWxlY3RzdGFydCIsIm9ubW91c2Vtb3ZlIiwib25sb2FkIiwib25lcnJvciIsIl9vdmVybGF5T25FcnJvciIsImtpIiwiYXV0b3BsYXkiLCJsb29wIiwia2VlcEFzcGVjdFJhdGlvIiwibXV0ZWQiLCJwbGF5c0lubGluZSIsIm9ubG9hZGVkZGF0YSIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwib2JqZWN0Rml0IiwiT2kiLCJBaSIsIm9mZnNldCIsImNvbnRlbnQiLCJfc291cmNlIiwiX2NvbnRlbnQiLCJvcGVuT24iLCJjbG9zZSIsInRvZ2dsZSIsIl9wcmVwYXJlT3BlbiIsIl9yZW1vdmVUaW1lb3V0IiwiZ2V0Q29udGVudCIsInNldENvbnRlbnQiLCJ2aXNpYmlsaXR5IiwiX3VwZGF0ZUNvbnRlbnQiLCJfdXBkYXRlTGF5b3V0IiwiaXNPcGVuIiwiX2NvbnRlbnROb2RlIiwiaGFzQ2hpbGROb2RlcyIsIl9nZXRBbmNob3IiLCJfY29udGFpbmVyQm90dG9tIiwiX2NvbnRhaW5lckxlZnQiLCJfY29udGFpbmVyV2lkdGgiLCJib3R0b20iLCJCaSIsIl9pbml0T3ZlcmxheSIsIm1pbldpZHRoIiwibWF4SGVpZ2h0IiwiYXV0b1BhblBhZGRpbmdUb3BMZWZ0IiwiYXV0b1BhblBhZGRpbmdCb3R0b21SaWdodCIsImtlZXBJblZpZXciLCJjbG9zZUJ1dHRvbiIsImF1dG9DbG9zZSIsImNsb3NlT25Fc2NhcGVLZXkiLCJwb3B1cCIsImNsb3NlT25DbGljayIsImNsb3NlUG9wdXBPbkNsaWNrIiwicHJlY2xpY2siLCJtb3ZlZW5kIiwiX3dyYXBwZXIiLCJfdGlwQ29udGFpbmVyIiwiX3RpcCIsIl9jbG9zZUJ1dHRvbiIsIndoaXRlU3BhY2UiLCJfYXV0b3Bhbm5pbmciLCJJaSIsIm9wZW5Qb3B1cCIsIl9wb3B1cEhhbmRsZXJzQWRkZWQiLCJfb3BlblBvcHVwIiwia2V5cHJlc3MiLCJfb25LZXlQcmVzcyIsIm1vdmUiLCJfbW92ZVBvcHVwIiwidW5iaW5kUG9wdXAiLCJ0b2dnbGVQb3B1cCIsImlzUG9wdXBPcGVuIiwic2V0UG9wdXBDb250ZW50IiwiZ2V0UG9wdXAiLCJkaXJlY3Rpb24iLCJwZXJtYW5lbnQiLCJzdGlja3kiLCJ0b29sdGlwIiwiX3NldFBvc2l0aW9uIiwiUmkiLCJvcGVuVG9vbHRpcCIsImNsb3NlVG9vbHRpcCIsImJpbmRUb29sdGlwIiwiX3Rvb2x0aXAiLCJpc1Rvb2x0aXBPcGVuIiwidW5iaW5kVG9vbHRpcCIsIl9pbml0VG9vbHRpcEludGVyYWN0aW9ucyIsIl90b29sdGlwSGFuZGxlcnNBZGRlZCIsIl9tb3ZlVG9vbHRpcCIsIl9vcGVuVG9vbHRpcCIsIl9hZGRGb2N1c0xpc3RlbmVycyIsIm1vdXNlbW92ZSIsIl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyIiwidG9nZ2xlVG9vbHRpcCIsInNldFRvb2x0aXBDb250ZW50IiwiZ2V0VG9vbHRpcCIsIl9hZGRGb2N1c0xpc3RlbmVyc09uTGF5ZXIiLCJpZCIsIm1vdmluZyIsIl9vcGVuT25jZUZsYWciLCJodG1sIiwiYmdQb3MiLCJFbGVtZW50IiwiYmFja2dyb3VuZFBvc2l0aW9uIiwiRGVmYXVsdCIsIk5pIiwidGlsZVNpemUiLCJ1cGRhdGVXaGVuWm9vbWluZyIsInVwZGF0ZUludGVydmFsIiwibWF4TmF0aXZlWm9vbSIsIm1pbk5hdGl2ZVpvb20iLCJub1dyYXAiLCJrZWVwQnVmZmVyIiwiX2xldmVscyIsIl90aWxlcyIsIl9yZW1vdmVBbGxUaWxlcyIsIl90aWxlWm9vbSIsIl9zZXRBdXRvWkluZGV4IiwiaXNMb2FkaW5nIiwiX2xvYWRpbmciLCJfY2xhbXBab29tIiwiX3VwZGF0ZUxldmVscyIsInZpZXdwcmVyZXNldCIsIl9pbnZhbGlkYXRlQWxsIiwiY3JlYXRlVGlsZSIsImdldFRpbGVTaXplIiwiY2hpbGRyZW4iLCJpc0Zpbml0ZSIsImN1cnJlbnQiLCJsb2FkZWQiLCJlbCIsImFjdGl2ZSIsIl9vbk9wYXF1ZVRpbGUiLCJfbm9QcnVuZSIsIl9wcnVuZVRpbGVzIiwiX2ZhZGVGcmFtZSIsIk51bWJlciIsIl9vblVwZGF0ZUxldmVsIiwiX3JlbW92ZVRpbGVzQXRab29tIiwiX29uUmVtb3ZlTGV2ZWwiLCJvcmlnaW4iLCJfc2V0Wm9vbVRyYW5zZm9ybSIsIl9vbkNyZWF0ZUxldmVsIiwiX2xldmVsIiwicmV0YWluIiwiX3JldGFpblBhcmVudCIsIl9yZXRhaW5DaGlsZHJlbiIsIl9yZW1vdmVUaWxlIiwiX3RpbGVDb29yZHNUb0tleSIsIl9zZXRWaWV3IiwiX2Fib3J0TG9hZGluZyIsIl9yZXNldEdyaWQiLCJfc2V0Wm9vbVRyYW5zZm9ybXMiLCJfdGlsZVNpemUiLCJfZ2xvYmFsVGlsZVJhbmdlIiwiX3B4Qm91bmRzVG9UaWxlUmFuZ2UiLCJfd3JhcFgiLCJfd3JhcFkiLCJfZ2V0VGlsZWRQaXhlbEJvdW5kcyIsIl9pc1ZhbGlkVGlsZSIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJfYWRkVGlsZSIsIl90aWxlQ29vcmRzVG9Cb3VuZHMiLCJfa2V5VG9Cb3VuZHMiLCJfa2V5VG9UaWxlQ29vcmRzIiwiX3RpbGVDb29yZHNUb053U2UiLCJ0aWxlIiwiX2luaXRUaWxlIiwiX2dldFRpbGVQb3MiLCJfd3JhcENvb3JkcyIsIl90aWxlUmVhZHkiLCJlcnJvciIsIl9ub1RpbGVzVG9Mb2FkIiwiRGkiLCJzdWJkb21haW5zIiwiZXJyb3JUaWxlVXJsIiwiem9vbU9mZnNldCIsInRtcyIsInpvb21SZXZlcnNlIiwiZGV0ZWN0UmV0aW5hIiwicmVmZXJyZXJQb2xpY3kiLCJfb25UaWxlUmVtb3ZlIiwiX3RpbGVPbkxvYWQiLCJfdGlsZU9uRXJyb3IiLCJnZXRUaWxlVXJsIiwiX2dldFN1YmRvbWFpbiIsIl9nZXRab29tRm9yVXJsIiwiZ2V0QXR0cmlidXRlIiwiY29tcGxldGUiLCJqaSIsIkhpIiwiZGVmYXVsdFdtc1BhcmFtcyIsInNlcnZpY2UiLCJyZXF1ZXN0Iiwic3R5bGVzIiwiZm9ybWF0IiwidHJhbnNwYXJlbnQiLCJ2ZXJzaW9uIiwidXBwZXJjYXNlIiwid21zUGFyYW1zIiwiX2NycyIsIl93bXNWZXJzaW9uIiwicGFyc2VGbG9hdCIsInNldFBhcmFtcyIsIldNUyIsIndtcyIsIldpIiwiX3VwZGF0ZVBhdGhzIiwiX2Rlc3Ryb3lDb250YWluZXIiLCJfb25ab29tIiwiem9vbWVuZCIsIl9vblpvb21FbmQiLCJfb25BbmltWm9vbSIsIl91cGRhdGVUcmFuc2Zvcm0iLCJfY2VudGVyIiwiRmkiLCJfb25WaWV3UHJlUmVzZXQiLCJfcG9zdHBvbmVVcGRhdGVQYXRocyIsIl9kcmF3IiwiX29uTW91c2VNb3ZlIiwiX29uQ2xpY2siLCJfaGFuZGxlTW91c2VPdXQiLCJfY3R4IiwiX3JlZHJhd1JlcXVlc3QiLCJfcmVkcmF3Qm91bmRzIiwiX3JlZHJhdyIsInRyYW5zbGF0ZSIsIl91cGRhdGVEYXNoQXJyYXkiLCJfb3JkZXIiLCJwcmV2IiwiX2RyYXdMYXN0IiwibmV4dCIsIl9kcmF3Rmlyc3QiLCJfcmVxdWVzdFJlZHJhdyIsIl9leHRlbmRSZWRyYXdCb3VuZHMiLCJfZGFzaEFycmF5IiwiX2NsZWFyIiwiY2xlYXJSZWN0Iiwic2F2ZSIsInJlc3RvcmUiLCJiZWdpblBhdGgiLCJyZWN0IiwiY2xpcCIsIl9kcmF3aW5nIiwiY2xvc2VQYXRoIiwiX2ZpbGxTdHJva2UiLCJhcmMiLCJnbG9iYWxBbHBoYSIsImZpbGxTdHlsZSIsInNldExpbmVEYXNoIiwibGluZVdpZHRoIiwic3Ryb2tlU3R5bGUiLCJfZmlyZUV2ZW50IiwiX2hhbmRsZU1vdXNlSG92ZXIiLCJfaG92ZXJlZExheWVyIiwiX21vdXNlSG92ZXJUaHJvdHRsZWQiLCJVaSIsIlZpIiwibmFtZXNwYWNlcyIsImNvb3Jkc2l6ZSIsIl9zdHJva2UiLCJfZmlsbCIsInN0cm9rZWQiLCJmaWxsZWQiLCJkYXNoU3R5bGUiLCJlbmRjYXAiLCJqb2luc3R5bGUiLCJfc2V0UGF0aCIsInFpIiwiR2kiLCJfcm9vdEdyb3VwIiwiX3N2Z1NpemUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJLaSIsIl9nZXRQYW5lUmVuZGVyZXIiLCJfY3JlYXRlUmVuZGVyZXIiLCJwcmVmZXJDYW52YXMiLCJZaSIsIl9ib3VuZHNUb0xhdExuZ3MiLCJwb2ludHNUb1BhdGgiLCJnZW9tZXRyeVRvTGF5ZXIiLCJjb29yZHNUb0xhdExuZ3MiLCJsYXRMbmdUb0Nvb3JkcyIsImxhdExuZ3NUb0Nvb3JkcyIsImdldEZlYXR1cmUiLCJhc0ZlYXR1cmUiLCJfcGFuZSIsIm92ZXJsYXlQYW5lIiwiX3Jlc2V0U3RhdGVUaW1lb3V0IiwiX2Rlc3Ryb3kiLCJfb25Nb3VzZURvd24iLCJfcmVzZXRTdGF0ZSIsIl9jbGVhckRlZmVycmVkUmVzZXRTdGF0ZSIsImNvbnRleHRtZW51IiwibW91c2V1cCIsIl9vbk1vdXNlVXAiLCJfb25LZXlEb3duIiwiX2JveCIsIl9maW5pc2giLCJib3hab29tQm91bmRzIiwiZG91YmxlQ2xpY2tab29tIiwiX29uRG91YmxlQ2xpY2siLCJpbmVydGlhIiwiaW5lcnRpYURlY2VsZXJhdGlvbiIsImluZXJ0aWFNYXhTcGVlZCIsIndvcmxkQ29weUp1bXAiLCJtYXhCb3VuZHNWaXNjb3NpdHkiLCJfb25QcmVEcmFnTGltaXQiLCJfb25QcmVEcmFnV3JhcCIsIl9wb3NpdGlvbnMiLCJfdGltZXMiLCJfb2Zmc2V0TGltaXQiLCJfdmlzY29zaXR5IiwiX2xhc3RUaW1lIiwiX2xhc3RQb3MiLCJfYWJzUG9zIiwiX3BydW5lUG9zaXRpb25zIiwic2hpZnQiLCJfaW5pdGlhbFdvcmxkT2Zmc2V0IiwiX3dvcmxkV2lkdGgiLCJfdmlzY291c0xpbWl0Iiwia2V5Ym9hcmRQYW5EZWx0YSIsImtleUNvZGVzIiwicmlnaHQiLCJkb3duIiwidXAiLCJfc2V0UGFuRGVsdGEiLCJfc2V0Wm9vbURlbHRhIiwiX29uRm9jdXMiLCJibHVyIiwiX29uQmx1ciIsIm1vdXNlZG93biIsIl9hZGRIb29rcyIsIl9yZW1vdmVIb29rcyIsIl9mb2N1c2VkIiwic2Nyb2xsVG8iLCJfcGFuS2V5cyIsIl96b29tS2V5cyIsImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5Iiwic2Nyb2xsV2hlZWxab29tIiwid2hlZWxEZWJvdW5jZVRpbWUiLCJ3aGVlbFB4UGVyWm9vbUxldmVsIiwiX29uV2hlZWxTY3JvbGwiLCJfZGVsdGEiLCJfbGFzdE1vdXNlUG9zIiwiX3RpbWVyIiwiX3BlcmZvcm1ab29tIiwidGFwSG9sZCIsInRhcFRvbGVyYW5jZSIsIl9ob2xkVGltZW91dCIsIl9jYW5jZWwiLCJfaXNUYXBWYWxpZCIsIl9jYW5jZWxDbGlja1ByZXZlbnQiLCJfc2ltdWxhdGVFdmVudCIsIk1vdXNlRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsInZpZXciLCJkaXNwYXRjaEV2ZW50IiwidG91Y2hab29tIiwiYm91bmNlQXRab29tTGltaXRzIiwiX29uVG91Y2hTdGFydCIsIl96b29taW5nIiwiX2NlbnRlclBvaW50IiwiX3N0YXJ0TGF0TG5nIiwiX3BpbmNoU3RhcnRMYXRMbmciLCJfc3RhcnREaXN0IiwiX3N0YXJ0Wm9vbSIsIl9vblRvdWNoTW92ZSIsIl9vblRvdWNoRW5kIiwiX2FuaW1SZXF1ZXN0IiwiWGkiLCJCb3hab29tIiwiRG91YmxlQ2xpY2tab29tIiwiRHJhZyIsIktleWJvYXJkIiwiU2Nyb2xsV2hlZWxab29tIiwiVGFwSG9sZCIsIlRvdWNoWm9vbSIsIkJvdW5kcyIsIkJyb3dzZXIiLCJDUlMiLCJDYW52YXMiLCJDaXJjbGUiLCJDaXJjbGVNYXJrZXIiLCJDbGFzcyIsIkNvbnRyb2wiLCJEaXZJY29uIiwiRGl2T3ZlcmxheSIsIkRvbUV2ZW50IiwiRG9tVXRpbCIsIkRyYWdnYWJsZSIsIkV2ZW50ZWQiLCJGZWF0dXJlR3JvdXAiLCJHZW9KU09OIiwiR3JpZExheWVyIiwiSGFuZGxlciIsIkljb24iLCJJbWFnZU92ZXJsYXkiLCJMYXRMbmciLCJMYXRMbmdCb3VuZHMiLCJMYXllciIsIkxheWVyR3JvdXAiLCJMaW5lVXRpbCIsIk1hcCIsIk1hcmtlciIsIlBhdGgiLCJQb2ludCIsIlBvbHlVdGlsIiwiUG9seWdvbiIsIlBvbHlsaW5lIiwiUG9wdXAiLCJQb3NBbmltYXRpb24iLCJQcm9qZWN0aW9uIiwiUmVjdGFuZ2xlIiwiUmVuZGVyZXIiLCJTVkciLCJTVkdPdmVybGF5IiwiVGlsZUxheWVyIiwiVG9vbHRpcCIsIlRyYW5zZm9ybWF0aW9uIiwiVXRpbCIsIlZpZGVvT3ZlcmxheSIsImNpcmNsZSIsImNpcmNsZU1hcmtlciIsImNvbnRyb2wiLCJkaXZJY29uIiwiZmVhdHVyZUdyb3VwIiwiZ2VvSlNPTiIsImdlb0pzb24iLCJncmlkTGF5ZXIiLCJpbWFnZU92ZXJsYXkiLCJsYXRMbmciLCJsYXRMbmdCb3VuZHMiLCJsYXllckdyb3VwIiwibWFwIiwibWFya2VyIiwicG9pbnQiLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyZWN0YW5nbGUiLCJzdmdPdmVybGF5IiwidGlsZUxheWVyIiwidmlkZW9PdmVybGF5Iiwibm9Db25mbGljdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///741\n')},610:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";eval("\n;// CONCATENATED MODULE: ./js/Bpost-utils.js\n/** \n * Singleton object we can use for platform independent stuff \n */\nclass BpostUtils {\n constructor() {}\n\n /** \n * Inject Script into the page \n * @param string src \n */\n injectExternalScript(src) {\n let s = document.createElement(\"script\");\n s.setAttribute(\"src\", src);\n document.body.appendChild(s);\n }\n\n /** \n * Inject a script string \n */\n injectScript(contents) {\n let e = document.createElement(\"script\");\n e.value = contents;\n document.body.appendChild(e);\n }\n\n /** \n * Removes all not numeric chars from the string \n *\n * @param string string - the input string \n * @return the string without chars that are not numbers \n */\n removeNonNumeric(string) {\n return string.replace(/\\D/g, '');\n }\n\n /** \n * Check if the given url exists and is valid\n * We use this to check if the carrier icon exists given \n * a url path and the naming convention {carrier_id}.svg \n * Make sure the correct protocol is appended to the url http != https \n * \n * @return true it the url exists and is valid \n */\n isUrlValid(url) {\n var http = new XMLHttpRequest();\n http.open('HEAD', url, false);\n http.send();\n return http.status == 200;\n }\n\n /** \n * Open a new window with the provided URL \n * @string url \n * @return bool if the window was opened, false if popup blocker enabled \n */\n openNewWindow(url, options) {\n let newWin = window.open(url, '_blank', options);\n let blocked = !newWin || newWin.closed || typeof newWin.closed == 'undefined';\n return !blocked;\n }\n}\nlet utils = new BpostUtils();\n/* harmony default export */ const Bpost_utils = (utils);\n;// CONCATENATED MODULE: ./js/Bpost-woo-commerce.js\n\nclass Woocommerce {\n constructor(ajax_url = \"\") {\n this.ajax_url = ajax_url;\n }\n\n /** \n * @return true if this is the checkout page \n */\n isCheckout() {\n console.log(\"Checkout\");\n return jQuery(\"body\").hasClass('woocommerce-checkout');\n }\n\n /* \n * If there is only one method available woo will use a hidden field for the selected carrier \n * + Generic Methods do not have an instance id \n */\n getShippingMethodId() {\n let eCheckbox = jQuery(\"input[name='shipping_method[0]']:checked\");\n let eHidden = jQuery(\"input[name='shipping_method[0]']\");\n\n // eCheckboxes.addEventListener('change', function(event) {\n // console.log(\"Caooooo\")\n // });\n let shippingMethod = eCheckbox.length > 0 ? eCheckbox.val() : eHidden.val();\n if (shippingMethod.indexOf(':') > 0) {\n var method_parts = shippingMethod.split(':');\n return Bpost_utils.removeNonNumeric(method_parts[0]);\n } else {\n return shippingMethod;\n }\n }\n\n /** \n * Wordpress won't send session cookies to wp-admin and the session handling in woocommerce is so poorly documented we are better off \n * extracting necessary info client side our selves. We're emulating their checkout.js \n * @return an object containing address parts \n */\n getShippingData() {\n // ##DJDJ Verovatno samo ovde treba da se izmeni i povuku podaci sa pravih idjeva za input text\n var country = jQuery('#billing_country').val(),\n state = jQuery('#billing_state').val(),\n postcode = jQuery('input#billing_postcode').val(),\n city = jQuery('#billing_city').val(),\n address = jQuery('input#billing_address_1').val(),\n address_2 = jQuery('input#billing_address_2').val(),\n s_country = country,\n s_state = state,\n s_postcode = postcode,\n s_city = city,\n s_address = address,\n s_address_2 = address_2;\n if (jQuery('#ship-to-different-address').find('input').is(':checked')) {\n s_country = jQuery('#shipping_country').val();\n s_state = jQuery('#shipping_state').val();\n s_postcode = jQuery('input#shipping_postcode').val();\n s_city = jQuery('#shipping_city').val();\n s_address = jQuery('input#shipping_address_1').val();\n s_address_2 = jQuery('input#shipping_address_2').val();\n }\n if (s_country == \"\") {\n console.log(\"COUNTRY EMPTY\");\n jQuery('input[aria-label*=\"Country/Region\"]').each(function () {\n s_country = jQuery(this).val();\n });\n } else if (s_country == \"\") {\n console.log(\"COUNTRY EMPTY AGAIN\");\n jQuery('#shipping-country option:selected').text();\n }\n window.Bpost_shipping_address = {\n \"Address\": {\n \"Lat\": \"\",\n \"Long\": \"\",\n \"Streetname1\": s_address,\n \"Streetname2\": s_address_2,\n \"HouseNumber\": '',\n \"NumberExtension\": '',\n \"PostalCode\": s_postcode,\n \"s_postcode\": s_postcode,\n \"City\": s_city,\n \"Country\": s_country,\n \"State\": s_state\n },\n post_data: jQuery('form.checkout').serialize(),\n \"CarrierId\": jQuery(\"#shipping_carrier_id\").val()\n };\n return {\n \"Address\": {\n \"Lat\": \"\",\n \"Long\": \"\",\n \"Streetname1\": s_address,\n \"Streetname2\": s_address_2,\n \"HouseNumber\": '',\n \"NumberExtension\": '',\n \"PostalCode\": s_postcode,\n \"s_postcode\": s_postcode,\n \"City\": s_city,\n \"Country\": s_country,\n \"State\": s_state\n },\n post_data: jQuery('form.checkout').serialize(),\n \"CarrierId\": jQuery(\"#shipping_carrier_id\").val()\n };\n }\n\n /** \n * We must run this onload \n * And on method change \n * because people may never change the carrier or select a pickup point \n */\n setCarrier(carrier_id) {\n console.log(\"Set carrier id\");\n console.log(carrier_id);\n this.carrier_id = typeof carrier_id != 'undefined' ? carrier_id : this.getShippingMethodId();\n jQuery(\"#shipping_carrier_id\").val(this.carrier_id);\n }\n\n /** \n * @param Pickup pickup \n */\n setPickupPoint(pickup) {\n console.log(\"SET PICKUP POINT @#@#\");\n console.log(pickup);\n let pickup_label = pickup.Information.Name + \" \" + pickup.Information.Address;\n let req = {\n 'action': 'Bpost_set_pickup_point',\n 'shipping_pickup_label': pickup_label,\n 'Bpost_pickup_extended': jQuery('.Bpost_mapfields' + pickup.PointId).val(),\n 'Bpost-pickup__description': pickup_label,\n 'shipping_pickup_id': pickup.PointId,\n 'shipping_carrier_id': window.carrier_id\n };\n jQuery.getJSON(this.ajax_url, req, data => {\n console.log(\"Uspeooooo sam zemo\");\n console.log(data);\n }).fail(err => {\n console.log(\"Fatal error widget requesting points do we have an API bug?\", err.responseText);\n });\n\n // ##DJDJ Ovdeee\n // jQuery(\"#Bpost-pickup__description\").html(\"Selecetd pickup\" + \" : \" +pickup_label);\n jQuery(\"#Bpost-pickup__description\").html(Bpost_select + \" : \" + pickup_label);\n jQuery(\"#shipping_pickup_id\").val(pickup.PointId);\n jQuery(\"#shipping_pickup_label\").val(pickup_label);\n jQuery(\"#Bpostpickup\").val(pickup.PointId);\n\n // Is there extra info ? \n if (jQuery('.Bpost_mapfields' + pickup.PointId).length > 0) {\n jQuery('#shipping_pickup_extended').val(jQuery('.Bpost_mapfields' + pickup.PointId).val());\n }\n }\n}\n// EXTERNAL MODULE: ./js/leaflet-1.4.0.js\nvar leaflet_1_4_0 = __webpack_require__(741);\nvar leaflet_1_4_0_default = /*#__PURE__*/__webpack_require__.n(leaflet_1_4_0);\n;// CONCATENATED MODULE: ./js/Bpost-open-map.js\n\n\nclass BpostOpenMap {\n constructor(options, Bpost) {\n console.log(\"OPENMAPCONSTRUCT2222\");\n this.Bpost = Bpost;\n this.options = options;\n this.map = null;\n this.host = options.host || 'https://my.Bpost.me';\n this.icon_folder = typeof Bpost_icon_folder !== 'undefined' ? Bpost_icon_folder : '';\n this.mapWrapper = null;\n this.stylePath = options.stylePath || this.host + '/shopsystems/v2/assets/Bpostwidget.css';\n this.markers = [];\n this.pickupPoints = [];\n this.carrier_icon_config = {\n 30: {\n extension: 'svg',\n selectedState: true,\n iconSize: [32, 32]\n },\n 68: {\n extension: 'svg',\n selectedState: true,\n iconSize: [57, 92]\n },\n 71: {\n extension: 'svg',\n selectedState: true,\n iconSize: [57, 92]\n }\n };\n this.selectedPointIdx = null;\n this.moveListeners = [];\n this.isMoving = false; /* The map is loading points */\n this.isUserMoving = false; /* The user is moving the map */\n this.bounds = null;\n }\n setCarrierId(carrier_id) {\n console.log(\"OPENMAPCARRIERID\");\n this.carrier_id = carrier_id;\n this.current_icon = this.getCarrierIconOfType(this.carrier_id);\n }\n selectPoint(idx) {\n console.log(\"Select point\");\n console.log(idx);\n if (this.selectedPointIdx != null) {\n this.markers[this.selectedPointIdx].setIcon(this.getCarrierIconOfType(this.carrier_id, this.pickupPoints[this.selectedPointIdx].Type, 0));\n }\n this.selectedPointIdx = idx;\n this.markers[idx].setIcon(this.getCarrierIconOfType(this.carrier_id, this.pickupPoints[idx].Type, 1));\n }\n /**\n *\n * @param string imageUrl - full url to the icon\n * @return L.icon object\n */\n createIcon(imageUrl) {\n let iconSize = typeof this.carrier_icon_config[this.carrier_id] != \"undefined\" ? this.carrier_icon_config[this.carrier_id].iconSize : 50;\n return leaflet_1_4_0_default().icon({\n iconUrl: imageUrl,\n iconSize: [iconSize, iconSize],\n /* size of the icon */\n iconAnchor: [iconSize / 2, iconSize],\n /* point of the icon which will correspond to marker's location */\n popupAnchor: [-1 * iconSize / 2, -1 * iconSize / 2] /* point from which the popup should open relative to the iconAnchor */\n });\n }\n setZoom = function (zoom) {\n this.map.setZoom(zoom);\n };\n isMapMoving() {\n return this.isMoving || this.isUserMoving;\n }\n /**\n * @param decimal lat\n * @param decimal lng\n */\n centerMap(lat, lng) {\n let latlng = leaflet_1_4_0_default().latLng(lat, lng);\n }\n\n /**\n * if the script has not been loaded , load it.\n * We use this function because we only want to load the script when the user clicks the button\n */\n // ##DJDJ Proveri radi li bez ovoga\n grantReady() {\n if (!this.isScriptLoaded) {\n this.loadScript();\n }\n }\n\n // ##DJDJ Bpost stuff\n geocodeBpost(queryparts, fcallback) {\n console.log(\"BPOSTGEOCODE\");\n this._geocode(queryparts.address, fcallback);\n }\n _geocode(queryparts, fcallback) {\n jQuery.getJSON('https://plugins.bpost.be/shopsystems/v2/shopify/bpostgeocode?searchText=' + queryparts, {}, function (resp) {\n console.log(resp.response);\n let results = [];\n let index = 0;\n if (resp.response && resp.response.topSuggestions) {\n console.log(1);\n console.log(resp);\n let places = resp.response.topSuggestions;\n for (let i = 0; i < places.length; ++i) {\n index++;\n // ##DJDJ Vrati ovo kako je bilo mozda?\n if (places[i].address.searchBarString) {\n // if (index == 1) {\n console.log(2);\n results.push({\n \"display_name\": places[i].address.searchBarString,\n \"address\": {\n City: places[i].address.municipalityName,\n Country: 'be',\n PostalCode: places[i].address.postalCode,\n // ##DJDJ Ovo isto\n Streetname1: places[i].address.searchBarString\n },\n \"lat\": places[i].address.latitude,\n \"lng\": places[i].address.longitude\n });\n }\n }\n }\n console.log(\"Rezultati\");\n console.log(results);\n fcallback && fcallback(results);\n });\n }\n // ##DJDJ Bpost part\n geocode(queryparts, fcallback) {\n console.log(\"GEOCODE FUNCTION\");\n console.log(queryparts);\n let queryval = queryparts.address;\n let query = \"\";\n const country = queryparts.country ? queryparts.country.toLowerCase() : null;\n if (queryval.match(/^([0-9\\-]+)$/)) {\n if (queryparts.country == 'Portugal' && typeof missingZipPT != 'undefined') {\n /* Is this a postal code we know is not geocodable in nominatim? */\n let zip4dig = queryval.substring(0, 4);\n for (let i = 0; i < missingZipPT.length; ++i) {\n if (missingZipPT[i].zipcode == zip4dig) {\n this.queryResults = {\n \"display_name\": missingZipPT[i].display_name,\n \"lat\": missingZipPT[i].lat,\n \"lon\": missingZipPT[i].lng\n };\n return fcallback([this.queryResults]);\n }\n }\n }\n query = 'postalcode=' + queryval + '&country=' + country;\n } else if (country) {\n query = 'q=' + queryval;\n }\n console.log(query);\n jQuery(\"#sw-query-results\").html('<div class=\"sw-loader\"><div></div><div></div><div></div></div>');\n jQuery.getJSON(\"https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&\" + query, res => {\n console.log(\"Rezultat\");\n console.log(res);\n if (res.length == 0 && queryval.match(/^([0-9\\-]+)$/) && (country.toUpperCase() == 'PT' || country.toLowerCase() == 'portugal')) {\n jQuery(\"#sw-query\").val(queryval.substring(0, 4));\n // ##DJDJ This is missing\n this.geocodeQuery();\n return;\n }\n this.queryResults = [];\n console.log(\"TESTTESTOVDE\");\n for (let i = 0; i < res.length; ++i) {\n console.log(\"OVAJ RESPONSE\");\n console.log(res[i]);\n const wanted = res[i].address.postcode || res[i].address.city || res[i].address.county;\n if (wanted) {\n console.log(\"IF WANTED\");\n let nomAddr = res[i];\n const street = typeof nomAddr.address.road != 'undefined' ? nomAddr.address.road : nomAddr.display_name;\n let display_name = (street ? street : '') + ' ' + (nomAddr.address.postcode ? nomAddr.address.postcode : '');\n if (typeof nomAddr.address.city !== 'undefined') {\n console.log(\"IMA GRAD\");\n display_name += ' ' + nomAddr.address.city;\n }\n if (typeof nomAddr.address.region !== 'undefined') {\n console.log(\"IMA REGION\");\n display_name += ' ' + nomAddr.address.region;\n }\n if (nomAddr.address.county) {\n console.log(\"IMA COUNTY\");\n display_name += ' ' + nomAddr.address.county;\n }\n if (queryparts.country.toLowerCase() !== nomAddr.address.country.toLowerCase()) {\n display_name += \" \" + nomAddr.address.country_code;\n }\n this.queryResults.push({\n \"display_name\": display_name,\n \"address\": {\n City: nomAddr.address.city,\n Country: nomAddr.address.country_code,\n PostalCode: nomAddr.address.postcode,\n Streetname1: street,\n State: nomAddr.address.region\n },\n \"lat\": nomAddr.lat,\n \"lng\": nomAddr.lon\n });\n }\n }\n console.log(fcallback);\n console.log(this.queryResults);\n fcallback && fcallback(this.queryResults);\n });\n }\n /**\n * @param f_callback what function to call when the request resolves\n * @param city - city name\n * @param country - country in iso2 uppercase\n * @param postalcode - the postal code\n * @param streetname - the streetname\n */\n geocodeAddress(f_callback, city, country, postalcode, streetname) {\n var queryString = \"https://nominatim.openstreetmap.org/search?format=json&addressdetails=1\" + \"&city=\" + city + \"&country=\" + country;\n if (typeof postalcode !== 'undefined') {\n if (country == 'PT' || country == 'Portugal') {\n postalcode = postalcode.substr(0, 4);\n }\n queryString += \"&postalcode=\" + postalcode;\n }\n if (typeof streetname !== 'undefined') {\n queryString += \"&street=\" + streetname;\n }\n if (typeof btoa !== 'undefined' && typeof this.address_cache[btoa(queryString)] !== 'undefined') {\n f_callback(this.address_cache[btoa(queryString)]);\n } else {\n jQuery.getJSON(queryString, {}, response => {\n let geocode = {\n 'iso2': '',\n 'lat': '',\n 'lng': ''\n };\n if (response.length > 0) {\n let location = response[0];\n geocode.iso2 = location.address.country_code;\n geocode.lat = location.lat;\n geocode.lng = location.lon;\n }\n this.address_cache[btoa(queryString)] = geocode;\n f_callback(geocode);\n console.log(response);\n });\n }\n }\n // ##DJDJ Bpost\n geocodeAddressPartsBpost(fcallback, city, country, postalcode, streetname) {\n let queryString = '';\n console.log(\"Address parts bpost\");\n if (typeof streetname != 'undefined') {\n queryString += encodeURI(streetname);\n }\n if (typeof postalcode != 'undefined') {\n queryString += \",\" + postalcode;\n }\n this._geocode(queryString, function (results) {\n let latln = {\n lat: 0,\n lng: 0\n };\n if (results.length > 0) {\n latln = {\n lat: results[0].latitude,\n lng: results[0].longitude\n };\n }\n fcallback && fcallback(latln);\n });\n }\n // ##DJDJ Bpost code\n geocodeAddressParts(f_callback, city, country, postalcode, streetname) {\n console.log(\"ADDRESSPARTS MICO\");\n console.log(city);\n var queryString = \"https://nominatim.openstreetmap.org/search?format=json&addressdetails=1\" + \"&city=\" + city + \"&country_code=\" + country;\n if (typeof postalcode != 'undefined') {\n if (country == 'PT' || country == 'Portugal') {\n postalcode = postalcode.substr(0, 4);\n }\n queryString += \"&postalcode=\" + postalcode;\n }\n if (typeof streetname != 'undefined') {\n queryString += \"&street=\" + encodeURI(streetname);\n }\n jQuery.getJSON(queryString, {}, function (response) {\n let geocode = {\n 'iso2': '',\n 'lat': '',\n 'lng': ''\n };\n if (response.length > 0) {\n let location = response[0];\n geocode.iso2 = location.address.country_code;\n geocode.lat = location.lat;\n geocode.lng = location.lon;\n }\n console.log(\"geocode \" + response.length + 'results');\n if (geocode.lan) {\n console.log(\"returning \", geocode);\n }\n f_callback(geocode);\n });\n }\n loadScript() {\n Bpost_utils.injectExternalScript(BPOST_PLUGIN_URL + \"views/js/leaflet-1.4.0.js\");\n this.isScriptLoaded = true;\n return;\n }\n\n /**\n * Leaflet does not receive a callback so we wait here for the script to be loaded\n */\n initMap() {\n console.log(\"Load map\");\n // this.mapWrapper = jQuery(this.options.mapParentContainer);\n this.mapWrapper = jQuery(\"body\");\n if (this.mapWrapper.hasClass('leaflet-container')) {\n console.log(\"map was already loaded\");\n return;\n }\n this.icon_selected = this.createIcon(this.icon_folder + 'selected.png');\n this.icon_default = this.createIcon(this.icon_folder + 'default.png');\n if (!this.current_icon) {\n this.current_icon = this.icon_default;\n }\n this.map = new (leaflet_1_4_0_default()).map('sw-map', {\n \"zoom\": 16,\n \"center\": [51.505, -0.09]\n });\n leaflet_1_4_0_default().tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n \"attribution\": '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n }).addTo(this.map);\n this.options.onmapready && this.options.onmapready();\n this.map.on('click', () => {\n jQuery(\".sw-map-selected-point\").html(\"\");\n });\n this.map.on('moveend', () => {\n let center = this.getCenter();\n if (!this.isInBounds(center.lat, center.lng)) {\n this.moveEnd();\n }\n });\n }\n async moveEnd() {\n if (this.isMapMoving()) {\n return;\n }\n this.isUserMoving = true;\n let mapCenter = this.map.getCenter();\n for (let i = 0; this.moveListeners && i < this.moveListeners.length; ++i) {\n await this.moveListeners[i](mapCenter);\n }\n console.log(\"MOVE LISTENERS ENDED\");\n this.isUserMoving = false;\n }\n addMapMoveListener(fcallback) {\n this.moveListeners.push(fcallback);\n }\n getCenter() {\n return this.map.getCenter();\n }\n isInBounds(lat, lng) {\n if (!this.bounds) {\n return false;\n }\n let inLat = lat > this.bounds.bottomLeft.lat && lat < this.bounds.topRight.lat;\n let eastBound = lng < this.bounds.topRight.lng;\n let westBound = lng > this.bounds.bottomLeft.lng;\n let inLng;\n if (this.bounds.topRight.lng < this.bounds.bottomLeft.lng) {\n inLng = eastBound || westBound;\n } else {\n inLng = eastBound && westBound;\n }\n return inLng && inLat;\n }\n clearMarkers() {\n console.log(\"Clear markers\");\n console.log(this.map);\n this.bounds = null;\n this.selectedPointIdx = null;\n if (this.markers.length > 0) {\n for (let i = 0; i < this.markers.length; ++i) {\n this.map.removeLayer(this.markers[i]);\n }\n }\n this.markers = [];\n if (!this.isMoving) {\n this.map.setMinZoom(0);\n }\n }\n\n /**\n * Add the markers to map\n * @param array pickupPoints - an array of pickupPoints\n * @param function callback\n */\n addMarkers(pickupPoints, callback) {\n console.log(\"ADD MARKERS 232323\");\n this.isMoving = true;\n this.pickupPoints = pickupPoints;\n for (let x = 0; x < pickupPoints.length; ++x) {\n this.markers[x] = this.getMarker(pickupPoints[x]);\n /* we need to do this because the values for lat,lng we have are rounded, so they will not match the ones returned by google */\n this.pickupPoints[x].marker = this.markers[x];\n this.markers[x].on('click', function () {\n if (typeof callback == 'function') {\n callback(x);\n }\n });\n }\n this.fitBounds();\n console.log(\"Gotov fit bounds\");\n }\n resetMarker(marker) {\n marker.setIcon(this.icon_default);\n }\n selectMarker(marker) {\n marker.setIcon(this.icon_selected);\n }\n\n /**\n * Adjust the zoom in the map to display all the markers\n * There's a fit bounds that receives 2 corners, but calculating them is up to us.\n * corners: top left, bottom right\n * then we center the map at the center of the square\n */\n fitBounds = function () {\n jQuery('html,body').scrollTop(0);\n this.map.invalidateSize();\n\n /*this function changes the map center*/\n this.isMoving = true;\n let bottomLeft = [parseFloat(this.pickupPoints[0].Lat), parseFloat(this.pickupPoints[0].Long)];\n let topRight = [parseFloat(this.pickupPoints[0].Lat), parseFloat(this.pickupPoints[0].Long)];\n for (let i = 0; i < this.pickupPoints.length; ++i) {\n let lat = parseFloat(this.pickupPoints[i].Lat);\n let lng = parseFloat(this.pickupPoints[i].Long);\n if (lat < bottomLeft[0]) {\n bottomLeft[0] = lat;\n }\n if (lat > topRight[0]) {\n topRight[0] = lat;\n }\n if (lng > topRight[1]) {\n topRight[1] = lng;\n }\n if (lng < bottomLeft[1]) {\n bottomLeft[1] = lng;\n }\n }\n let centerX = bottomLeft[0] + (topRight[0] - bottomLeft[0]) / 2;\n let centerY = bottomLeft[1] + (topRight[1] - bottomLeft[1]) / 2;\n this.center = [centerX, centerY];\n this.centerMap(centerX, centerY);\n this.map.fitBounds([bottomLeft, topRight]);\n this.bounds = {\n \"bottomLeft\": {\n lat: bottomLeft[0],\n lng: bottomLeft[1]\n },\n \"topRight\": {\n lat: topRight[0],\n lng: topRight[1]\n }\n };\n\n /* Grant changes are applied before we state we're no longer moving the map around via js */\n setTimeout(() => {\n this.isMoving = false;\n let zoom = 10;\n if (zoom > 16 || zoom < 10) {\n zoom = 10;\n }\n this.map.setMinZoom(zoom);\n console.log(\"map zoom is \", zoom);\n }, 1000);\n return false;\n };\n getIcon(pickupPoint) {\n return pickupPoint.Type > 0 ? this.getCarrierIconOfType(this.carrier_id, pickupPoint.Type) : this.current_icon;\n }\n\n /**\n * Return a marker for the openLayers\n * IconAnchor: The coordinates of the \"tip\" of the icon (relative to its top left corner).\n * The icon will be aligned so that this point is at the marker's geographical location.\n * Centered by default if size is specified, also can be set in CSS with negative margins.\n */\n getMarker(pickupPoint) {\n let marker = leaflet_1_4_0_default().marker([pickupPoint.Lat, pickupPoint.Long], {\n \"icon\": this.getIcon(pickupPoint),\n \"title\": pickupPoint.Information.Name + \"\\n\" + pickupPoint.Information.Address\n });\n marker.addTo(this.map);\n return marker;\n }\n getCarrierIconOfType(carrier_id, type, selected) {\n var allowedTypes = [1, 2, 4, 16, 990];\n let carrier_icon_url;\n let file_extension = '.' + (typeof this.carrier_icon_config[carrier_id] != 'undefined' ? this.carrier_icon_config[carrier_id].extension : \"png\");\n let selectedextension = typeof this.carrier_icon_config[carrier_id] != 'undefined' && this.carrier_icon_config[carrier_id].selectedState && selected ? '_s' : '';\n if (selected && !selectedextension) {\n return this.icon_selected;\n }\n\n // ##DJDJ\n // ##This is for the _1 or the _2 and stuff added to the img, will need to define some way to do it without the carrier folder\n if (type && allowedTypes.includes(type)) {\n carrier_icon_url = this.icon_folder + '' + carrier_id + '_' + type + selectedextension + file_extension;\n } else {\n carrier_icon_url = this.icon_folder + carrier_id + selectedextension + file_extension;\n }\n return this.createIcon(carrier_icon_url);\n }\n /**\n * Checks if we have an icon for this carrier.\n * If yes then change the carrier icon\n * If not then use the default icon\n *\n * @param int carrier_id - the carrier id\n */\n setCarrierIcon(carrier_id) {\n console.log(\"SetCarrierIcon\");\n if (typeof (leaflet_1_4_0_default()) === 'undefined') {\n setTimeout(() => {\n this.setCarrierIcon(carrier_id);\n }, 200);\n return;\n }\n this.carrier_id = carrier_id;\n let carrier_icon_url = this.icon_folder + '' + carrier_id + '.png';\n if (typeof this.cache_icon_valid[carrier_icon_url] === 'undefined') {\n this.cache_icon_valid[carrier_icon_url] = Bpost_utils.carrierIconExists(carrier_id, '', this.icon_folder);\n }\n this.current_icon = this.cache_icon_valid[carrier_icon_url] ? this.createIcon(carrier_icon_url) : this.icon_default;\n }\n}\n;// CONCATENATED MODULE: ./js/Bpost-gmaps.js\n\nclass BpostGmaps {\n constructor(options) {\n console.log(\"Entered\");\n this.isScriptLoaded = false;\n this.markers = [];\n this.map = null;\n this.pickupPoints = [];\n this.options = options;\n this.host = options.host;\n console.log(\"Icon folder\");\n console.log(Bpost_icon_folder);\n this.icon_folder = typeof Bpost_icon_folder !== 'undefined' ? Bpost_icon_folder : '';\n this.icon_selected = this.icon_folder + 'selected.png';\n this.icon_default = this.icon_folder + 'default.png';\n this.current_icon = this.icon_default;\n this.moveListeners = [];\n this.carrier_id = null;\n this.carrier_icon_config = {\n 30: {\n extension: 'svg',\n selectedState: true,\n iconSize: 98\n }\n };\n this.BpostWidget = new Bpost_widget(options);\n }\n initMap(carrier_id, f_callback) {\n this.carrier_id = carrier_id;\n let me = this;\n this.loadScript(\"https://maps.googleapis.com/maps/api/js?key=\" + this.options.gmapskey + \"&callback=\", () => {\n console.log(\"USAO U IF\");\n me.isScriptLoaded = true;\n f_callback && f_callback();\n this.loadMap();\n });\n console.log(\"Initmap Nije usao u if\");\n }\n loadScript(url, callback) {\n var script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n if (script.readyState) {\n /*IE */\n script.onreadystatechange = function () {\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\n script.onreadystatechange = null;\n calback && callback();\n }\n };\n } else {\n script.onload = function () {\n callback && callback();\n };\n }\n script.src = url;\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n addMarkers(pickupPoints, callback) {\n this.pickupPoints = pickupPoints;\n for (let x = 0; x < pickupPoints.length; ++x) {\n this.markers[x] = this.getMarker(pickupPoints[x]);\n pickupPoints[x].marker = this.markers[x];\n this.markers[x].addListener('click', () => {\n if (typeof callback != 'undefined') {\n callback(x);\n }\n });\n }\n this.fitBounds();\n }\n addMapMoveListener(fcallback) {\n this.moveListeners.push(fcallback);\n }\n centerMap(lat, lng) {\n this.map.setCenter(new google.maps.LatLng(lat, lng));\n }\n clearMarkers() {\n if (this.markers.length > 0) {\n for (let i = 0; i < this.markers.length; ++i) {\n this.markers[i].setMap(null);\n }\n this.markers = [];\n }\n }\n fitBounds() {\n var bounds = new google.maps.LatLngBounds();\n for (let x = 0; x < this.markers.length; ++x) {\n bounds.extend(this.markers[x].getPosition());\n }\n this.map.fitBounds(bounds);\n this.bounds = this.map.getBounds();\n }\n getMarker(pickupPoint) {\n console.log(\"GETMARKER\");\n let url = this.getCarrierIconUrl(pickupPoint.Type, 0);\n let options = {\n position: new google.maps.LatLng(pickupPoint.Lat, pickupPoint.Long),\n map: this.map,\n icon: {\n url\n }\n };\n // ##DJDJ Ako nista odradi kao i u open map\n console.log(\"PRE IF\");\n if (typeof this.carrier_icon_config[this.carrier_id] != 'undefined') {\n console.log(\"IF GET MARKER\");\n console.log(this.carrier_icon_config);\n console.log(this.carrier_icon_config[this.carrier_id].iconSize);\n options.icon.size = new google.maps.Size(this.carrier_icon_config[this.carrier_id].iconSize, this.carrier_icon_config[this.carrier_id].iconSize);\n } else {\n console.log(\"ELSE GET MARKER\");\n options.icon.scaledSize = new google.maps.Size(50, 50);\n }\n console.log(\"POSLE IF\");\n let marker = new google.maps.Marker(options);\n return marker;\n }\n isMapMoving() {\n return this.isMoving || this.isUserMoving;\n }\n async moveEnd() {\n if (this.isMapMoving()) {\n return;\n }\n this.isUserMoving = true;\n let mapCenter = this.map.getCenter();\n for (let i = 0; this.moveListeners && i < this.moveListeners.length; ++i) {\n await this.moveListeners[i]({\n \"lat\": mapCenter.lat(),\n \"lng\": mapCenter.lng()\n });\n }\n console.log(\"MOVE LISTENERS ENDED\");\n this.isUserMoving = false;\n }\n loadMap() {\n console.log(\"LOADMAP\");\n this.map = new google.maps.Map(document.getElementById(\"sw-map\"), {\n center: {\n lat: -34.397,\n lng: 150.644\n },\n zoom: 16,\n mapTypeControl: false\n });\n this.map.addListener('center_changed', () => {\n let center = this.map.getCenter();\n if (this.bounds && !this.bounds.contains(center)) {\n this.moveEnd();\n }\n });\n }\n geocode(queryparts, f_callback) {\n if (typeof google == 'undefined') {\n setTimeout(() => {\n this.geocode(shippingData, f_callback);\n }, 200);\n return;\n }\n this.clearMarkers();\n let geocoder = new google.maps.Geocoder();\n let me = this;\n console.log('geocoding ', queryparts);\n let query = \"components=country:\" + queryparts.country;\n if (queryparts.address && queryparts.address.match(/^([0-9\\-]+)$/)) {\n if (queryparts.country.toUpperCase() == 'PT' && typeof missingZipPT != 'undefined') {\n let zip4dig = queryparts.address.substring(0, 4);\n for (let i = 0; i < missingZipPT.length; ++i) {\n if (missingZipPT[i].zipcode == zip4dig) {\n let queryResults = [{\n display_name: missingZipPT[i].display_name,\n lat: missingZipPT[i].lat,\n lon: missingZipPT[i].lng\n }];\n return f_callback(queryResults);\n }\n }\n }\n }\n if (queryparts.components) {\n query += '|' + queryparts.components;\n } else if (queryparts.address.match(/^[0-9]/)) {\n query += '|postal_code:' + queryparts.address;\n } else {\n query += '&address=' + queryparts.address;\n }\n jQuery.get('https://maps.google.com/maps/api/geocode/json?sensor=false&key=' + this.options.gmapskey + '&' + query, function (response) {\n let results = response.results;\n let status = response.status;\n console.log(results);\n let geocode = {\n iso2: '',\n lat: '',\n lng: ''\n };\n if (status != 'OK') {\n console.log('Geocode was not successful for the following reason: ' + status, response.error_msg);\n f_callback(geocode);\n return;\n }\n let places = [];\n for (let i = 0; i < results.length; ++i) {\n geocode = results[i];\n let display_name = '';\n for (let j = 0; geocode.address_components && j < geocode.address_components.length; ++j) {\n display_name += (display_name ? ', ' : '') + geocode.address_components[j].long_name;\n }\n places.push({\n iso2: me.getCountryCodeFromResult(geocode),\n display_name,\n lat: geocode.geometry.location.lat,\n lng: geocode.geometry.location.lng\n });\n }\n f_callback(places);\n });\n }\n getCountryCodeFromResult(geocode) {\n if (typeof geocode.address_components == \"undefined\") {\n return \"\";\n }\n let components = geocode.address_components;\n for (let i = 0; i < components.length; ++i) {\n let types = components[i].types;\n for (let j = 0; j < types.length; ++j) {\n if (types[j] == 'country') {\n return components[i].short_name;\n }\n }\n }\n }\n geocodeAddressParts(f_callback, city, country, postalcode, streetname) {\n if (typeof postalcode != 'undefined') {\n if (country == 'PT' || country == 'Portugal') {\n postalcode = postalcode.substr(0, 4);\n }\n }\n let components = \"postal_code:\" + postalcode + \"|locality:\" + city;\n this.geocode({\n country,\n \"components\": components\n }, places => {\n f_callback(places[0]);\n });\n }\n setCarrierId(carrier_id) {\n this.carrier_id = carrier_id;\n }\n selectPoint(idx) {\n console.log(\"Selectpoint\");\n for (let i = 0; i < this.markers.length; ++i) {\n let point = this.pickupPoints[i];\n console.log(point);\n let icon = {\n url: this.getCarrierIconUrl(point.Type, idx == i)\n };\n if (typeof this.carrier_icon_config[this.carrier_id] != \"undefined\") {\n icon.size = new google.maps.Size(this.carrier_icon_config[this.carrier_id].iconSize, this.carrier_icon_config[this.carrier_id].iconSize);\n } else {\n icon.scaledSize = new google.maps.Size(50, 50);\n }\n console.log(\"SetICOD\");\n console.log(icon);\n this.markers[i].setIcon(icon);\n }\n }\n setCarrierId(carrier_id) {\n this.carrier_id = carrier_id;\n }\n getCarrierIconUrl(type, selected) {\n let carrier_icon_url;\n let file_extension = '.' + (typeof this.carrier_icon_config[this.carrier_id] != 'undefined' ? this.carrier_icon_config[this.carrier_id].extension : \"png\");\n let selectedextension = typeof this.carrier_icon_config[this.carrier_id] != 'undefined' && this.carrier_icon_config[this.carrier_id].selectedState && selected ? '_s' : '';\n if (selected && !selectedextension) {\n return this.icon_selected;\n }\n if (type && typeof Bpost_carrier_imgs != 'undefined' && Bpost_carrier_imgs.indexOf(this.carrier_id + \"_\" + type + file_extension)) {\n console.log(\"getCarrierIconUrl 1\");\n carrier_icon_url = this.icon_folder + '' + this.carrier_id + '_' + type + selectedextension + file_extension;\n } else {\n console.log(\"getCarrierIconUrl 2\");\n console.log(this.carrier_id);\n // ##DJDJ Ne znam zasto je svg, pogledaj da vratis kako je bilo\n carrier_icon_url = this.icon_folder + this.carrier_id + selectedextension + '.png';\n }\n return carrier_icon_url;\n }\n}\n/* harmony default export */ const Bpost_gmaps = (BpostGmaps);\n;// CONCATENATED MODULE: ./js/Bpost-widget.js\n// eslint-disable-next-line prop-types\n\n\n\n\nclass BpostWidget {\n constructor(options) {\n this.pickupPoints = [];\n this.selectedPoint = null;\n this.options = options;\n this.markers = [];\n this.host = options.host || 'https://Bpost.me';\n this.debug = options.debug || 0;\n this.mapParentContainer = options.mapParentContainer || 'body';\n this.buttonParentContainer = options.buttonParentContainer || '';\n this.isScriptLoaded = false;\n this.buttonClass = this.options.button_class || '';\n this.labels = this.options.labels || {};\n this.platform = new Woocommerce(options.ajax_url);\n this.timeoutKeyDown = null;\n this.searchRunning = false;\n this.address = this.options.address || null;\n this.carrier_id = this.options.carrierId || 0;\n this.lang = 'en';\n this.weekdaynames = [Bpost_monday, Bpost_tuesday, Bpost_wednesday, Bpost_thursday, Bpost_friday, Bpost_saturday, Bpost_sunday];\n this.selectedDisplayOption = 0;\n this.cacheResults = {};\n console.log(\"Jeste checkout ili nije\");\n jQuery(document).ready(() => {\n let hasRunCheckVisibility = false; // Ensure the visibility check only runs once\n let hasRunPlaceOrderCheck = false;\n\n // Check visibility for shipping options (run only once)\n const checkVisibility = setInterval(() => {\n const inputElement = jQuery(\".wc-block-components-shipping-rates-control__package\");\n if (inputElement.is(':visible') && !hasRunCheckVisibility) {\n hasRunCheckVisibility = true;\n clearInterval(checkVisibility); // Clear interval after first successful check\n\n console.log(\"Ovdeeee sam\");\n window.selectedText = \"\";\n window.selectedText = jQuery(\"fieldset.wc-block-checkout__shipping-option\").find(\".wc-block-components-radio-control__input:checked\").closest(\"label\").find(\".wc-block-components-radio-control__label\").text();\n if (window.selectedText === \"\") {\n console.log(\"Prazan\");\n jQuery(\"fieldset.wc-block-checkout__shipping-option\").find(\".wc-block-components-radio-control__option-layout\").each(function () {\n window.selectedText = jQuery(this).find(\".wc-block-components-radio-control__label\").text();\n });\n }\n if (typeof this.isBlockCheckout === \"function\" && this.isBlockCheckout()) {\n this.getSelectedCarrier();\n this.getFormChange();\n }\n this.getOnClick();\n }\n }, 500); // Interval delay in milliseconds\n\n // Check visibility for \"Place Order\" button (run only once)\n const placeOrderCheck = setInterval(() => {\n const placeOrderButton = jQuery(\"#place_order\");\n if (placeOrderButton.is(':visible') && !hasRunPlaceOrderCheck) {\n hasRunPlaceOrderCheck = true;\n clearInterval(placeOrderCheck); // Clear interval after first successful check\n\n console.log(\"Ovdeeee sam visible checkout\");\n placeOrderButton.on('click', function (e) {\n let shipping_pickup_id = jQuery(\"#shipping_pickup_id\").val();\n console.log(\"Clicked\");\n console.log(window.carrier_id);\n console.log(window.mandatoryData);\n if (window.mandatoryData !== \"\" && window.mandatoryData.pickupMandatory && shipping_pickup_id === \"\") {\n console.log(\"USAO IF\");\n e.preventDefault(); // Prevent default form submission\n\n // Modal creation\n const modal = jQuery('<div>', {\n id: 'myModal',\n css: {\n 'display': 'none',\n 'position': 'fixed',\n 'z-index': '1',\n 'left': '0',\n 'top': '0',\n 'width': '100%',\n 'height': '100%',\n 'overflow': 'auto',\n 'background-color': 'rgba(0,0,0,0.4)'\n }\n });\n const modalContent = jQuery('<div>', {\n css: {\n 'background-color': '#fefefe',\n 'margin': '15% auto',\n 'padding': '20px',\n 'border': '1px solid #888',\n 'width': '80%'\n }\n });\n const closeButton = jQuery('<span>', {\n text: '×',\n css: {\n 'color': '#aaa',\n 'float': 'right',\n 'font-size': '28px',\n 'font-weight': 'bold',\n 'cursor': 'pointer'\n }\n });\n const message = jQuery('<p>', {\n text: Bpost_mandatory_point\n });\n let button = jQuery(\"<button class='button alt Bpost-pick-location' id='Bpost_pickup_button' type='button' onClick='Bpost.getPickupLocations(event)'>\" + Bpost_choose_pickup_location + \"</button>\");\n\n // Append the elements\n modalContent.append(closeButton);\n modalContent.append(message);\n modal.append(modalContent);\n modalContent.append(button);\n jQuery('body').append(modal);\n\n // Show the modal\n modal.show();\n\n // Close modal handlers\n closeButton.on('click', function () {\n modal.hide();\n });\n jQuery(window).on('click', function (event) {\n if (jQuery(event.target).is(modal)) {\n modal.hide();\n }\n });\n return false; // Prevent submission\n }\n });\n }\n }, 500); // Interval delay in milliseconds\n });\n this.getOnSubmitButtonBlockClickNoTheme();\n this.getThemeShippingMethod(options);\n }\n getThemeShippingMethod(options) {\n console.log(\"Options\");\n console.log(options);\n if (jQuery('.woocommerce-checkout-payment').length > 0) {\n jQuery(document).ajaxComplete((event, xhr, settings) => {\n if (settings.url.includes(\"update_order_review\")) {\n console.log(\"Complete request\");\n console.log('Request made to wc-ajax=update_order_review');\n console.log(jQuery('.Bpost-pick-location'));\n var checkedRadio = jQuery('#shipping_method input[type=\"radio\"]:checked');\n\n // Get the associated label text of the checked radio button\n var selectedText = checkedRadio.siblings('label').text().split(':')[0].trim();\n\n // Log or use the selected shipping method\n console.log('Selected shipping method: ' + selectedText);\n if (selectedText == '') {\n // Select the parent element containing the list of shipping methods\n const shippingMethodsList = document.querySelector('#shipping_method');\n\n // Check if the list exists\n if (shippingMethodsList) {\n // Traverse the list items\n const shippingMethodItems = shippingMethodsList.querySelectorAll('li');\n\n // Iterate over each list item\n shippingMethodItems.forEach(item => {\n // Find the <label> element inside the <li>\n const labelElement = item.querySelector('label');\n if (labelElement) {\n // Extract the text content before the colon (:) to get the dynamic title\n const labelText = labelElement.textContent.trim();\n selectedText = labelText.split(':')[0].trim();\n console.log('Shipping Method Title:', selectedText);\n }\n });\n }\n }\n let req = {\n 'action': 'Bpost_selected_carrier',\n 'carrier': selectedText\n };\n console.log(\"Dosao si dovde\");\n console.log(req);\n jQuery.getJSON(window.location.origin + '/wp-admin/admin-ajax.php?', req, data => {\n console.log(\"Caoaooo nasaooo22\");\n console.log(data.status);\n if (data.status == 1) {\n console.log(\"Caooooo status 123\");\n if (data.pickupMandatory == true) {\n window.mandatoryData = data;\n }\n this.carrier_id = data.carrier_id;\n window.carrier_id = data.carrier_id;\n jQuery(document).ready(() => {\n var checkVisibility = setInterval(() => {\n var inputElement = jQuery(\".woocommerce-checkout-payment\");\n if (inputElement.is(':visible')) {\n // The input element is visible, you can proceed with your script\n clearInterval(checkVisibility); // Stop checking\n // Your code here\n console.log(\"ITS VISIBLE 222\");\n jQuery('#place_order').prop('disabled', true);\n if (jQuery(\"#pickupText\").length == 0) {\n jQuery('#place_order').after('<p id=\"pickupText\" style=\"color:red;\">Select pickup point</p>');\n } else if (jQuery(\"#pickupText\").length > 0) {\n jQuery(\"#pickupText\").show();\n }\n jQuery('.Bpost-pick-location').show();\n }\n }, 100); // Check every 100 milliseconds\n });\n } else {\n console.log(\"Else nema pickup\");\n jQuery('.Bpost-pick-location').hide();\n jQuery('#shipping_pickup_id').val('');\n jQuery('#shipping_pickup_label').val('');\n jQuery('#shipping_pickup_extended').val('');\n\n // Hide the span element\n jQuery('.Bpost-pickup__description').hide();\n if (jQuery('.Bpost-pickup__description').length > 0) {\n console.log(\"Usao iako nema\");\n jQuery('.Bpost-pickup__description').hide();\n }\n jQuery('#place_order').prop('disabled', false);\n jQuery('#pickupText').hide();\n }\n }).fail(err => {\n console.log(\"Fatal error widget requesting points do we have an API bug?\");\n });\n }\n });\n (function (open) {\n XMLHttpRequest.prototype.open = function (method, url, async, user, pass) {\n // Check if the request URL contains 'wc-ajax=update_order_review'\n if (url.indexOf('wc-ajax=update_order_review') !== -1) {\n console.log('Request made to wc-ajax=update_order_review');\n console.log(jQuery('.Bpost-pick-location'));\n var checkedRadio = jQuery('#shipping_method input[type=\"radio\"]:checked');\n\n // Get the associated label text of the checked radio button\n var selectedText = checkedRadio.siblings('label').text().split(':')[0].trim();\n\n // Log or use the selected shipping method\n console.log('Selected shipping method: ' + selectedText);\n let req = {\n 'action': 'Bpost_selected_carrier',\n 'carrier': selectedText\n };\n console.log(\"Dosao si dovde\");\n console.log(req);\n jQuery.getJSON(window.location.origin + '/wp-admin/admin-ajax.php?', req, data => {\n console.log(\"Caoaooo nasaooo22\");\n console.log(data.status);\n if (data.status == 1) {\n console.log(\"Caooooo status 123\");\n if (data.pickupMandatory == true) {\n window.mandatoryData = data;\n }\n this.carrier_id = data.carrier_id;\n window.carrier_id = data.carrier_id;\n jQuery(document).ready(() => {\n var checkVisibility = setInterval(() => {\n var inputElement = jQuery(\".woocommerce-checkout-payment\");\n if (inputElement.is(':visible')) {\n // The input element is visible, you can proceed with your script\n clearInterval(checkVisibility); // Stop checking\n // Your code here\n console.log(\"ITS VISIBLE 222\");\n jQuery('#place_order').prop('disabled', true);\n if (jQuery(\"#pickupText\").length == 0) {\n jQuery('#place_order').after('<p id=\"pickupText\" style=\"color:red;\">Select pickup point</p>');\n } else if (jQuery(\"#pickupText\").length > 0) {\n jQuery(\"#pickupText\").show();\n }\n jQuery('.Bpost-pick-location').show();\n }\n }, 100); // Check every 100 milliseconds\n });\n } else {\n console.log(\"Else nema pickup\");\n jQuery('.Bpost-pick-location').hide();\n\n // Remove values from hidden inputs\n jQuery('#shipping_pickup_id').val('');\n jQuery('#shipping_pickup_label').val('');\n jQuery('#shipping_pickup_extended').val('');\n\n // Hide the span element\n jQuery('.Bpost-pickup__description').hide();\n if (jQuery('.Bpost-pickup__description').length > 0) {\n console.log(\"Usao iako nema\");\n jQuery('.Bpost-pickup__description').hide();\n }\n jQuery('#place_order').prop('disabled', false);\n jQuery('#pickupText').hide();\n }\n }).fail(err => {\n console.log(\"Fatal error widget requesting points do we have an API bug?\");\n });\n }\n\n // Call the original open method\n open.apply(this, arguments);\n };\n })(XMLHttpRequest.prototype.open);\n }\n }\n getFormChange() {\n jQuery(\".wc-block-checkout__form\").on('change', () => {\n // This function will be triggered when any form field inside the \"checkout\" form is changed\n console.log(\"Form changed! block block\");\n const loaderText = jQuery('<div id=\"shipping-loader\">Loading shipping method data...</div>').css({\n 'display': 'flex',\n 'align-items': 'center',\n 'font-size': '14px',\n 'color': '#333',\n 'margin-top': '10px'\n });\n\n // Append the loader text to the bottom of the #shipping-option element\n jQuery('#shipping-option').append(loaderText);\n this.disableButton();\n setTimeout(() => {\n window.selectedText = jQuery(\"fieldset.wc-block-checkout__shipping-option\").find(\".wc-block-components-radio-control__input:checked\").closest(\"label\").find(\".wc-block-components-radio-control__label\").text();\n if (window.selectedText === undefined) {\n console.log(\"Prazan\");\n jQuery(\"fieldset.wc-block-checkout__shipping-option\").find(\".wc-block-components-radio-control__option-layout\").each(function () {\n window.selectedText = jQuery(this).find(\".wc-block-components-radio-control__label\").text();\n });\n }\n\n // You can perform your desired actions here\n this.getSelectedCarrier();\n }, 2000);\n });\n this.enableButton();\n }\n getOnSubmitButtonBlockClickNoTheme() {\n console.log(\"Submitted no theme\");\n var checkVisibility = setInterval(() => {\n var inputElement = jQuery('.wc-block-components-checkout-place-order-button');\n if (inputElement.is(':visible')) {\n // The input element is visible, you can proceed with your script\n clearInterval(checkVisibility); // Stop checking\n // Your code here\n\n inputElement.on('click', function (e) {\n let shipping_pickup_id = jQuery(\"#shipping_pickup_id\").val();\n console.log(\"Clicked\");\n console.log(carrier_id);\n console.log(window.mandatoryData);\n if (window.mandatoryData != \"\" && window.mandatoryData.pickupMandatory && shipping_pickup_id == \"\") {\n var modal = jQuery('<div>', {\n id: 'myModal',\n css: {\n 'display': 'none',\n 'position': 'fixed',\n 'z-index': '1',\n 'left': '0',\n 'top': '0',\n 'width': '100%',\n 'height': '100%',\n 'overflow': 'auto',\n 'background-color': 'rgba(0,0,0,0.4)'\n }\n });\n var modalContent = jQuery('<div>', {\n css: {\n 'background-color': '#fefefe',\n 'margin': '15% auto',\n 'padding': '20px',\n 'border': '1px solid #888',\n 'width': '80%'\n }\n });\n var closeButton = jQuery('<span>', {\n text: '×',\n css: {\n 'color': '#aaa',\n 'float': 'right',\n 'font-size': '28px',\n 'font-weight': 'bold',\n 'cursor': 'pointer'\n }\n });\n var message = jQuery('<p>', {\n text: Bpost_mandatory_point\n });\n let button = jQuery(\"<button class='button alt Bpost-pick-location' id='Bpost_pickup_button' type='button' onClick='Bpost.getPickupLocations(event)'>\" + Bpost_choose_pickup_location + \"</button>\");\n\n // Append the elements\n modalContent.append(closeButton);\n modalContent.append(message);\n modal.append(modalContent);\n modalContent.append(button);\n jQuery('body').append(modal);\n\n // Show the modal\n modal.show();\n\n // Close the modal when the user clicks on <span> (x)\n closeButton.on('click', function () {\n modal.hide();\n });\n\n // Close the modal when the user clicks anywhere outside of the modal content\n jQuery(window).on('click', function (event) {\n if (jQuery(event.target).is(modal)) {\n modal.hide();\n }\n });\n return false;\n }\n });\n }\n }, 100); // Check every 100 milliseconds\n\n // jQuery('#place_order')\n }\n getSelectedCarrier() {\n console.log(\"selectedCarrier\");\n if (jQuery('#shipping-loader').length) {\n jQuery('#shipping-loader').remove();\n }\n console.log(window.selectedText);\n window.mandatoryData = \"\";\n jQuery(\"#Bpost_pickup_button\").remove();\n let req = {\n 'action': 'Bpost_selected_carrier',\n 'carrier': window.selectedText\n };\n jQuery.getJSON(this.options.ajax_url, req, data => {\n console.log(\"Caoaooo nasaooo22\");\n this.disableButton();\n jQuery('#Bpost-pickup__description').hide();\n console.log(data.status);\n if (data.status == 1) {\n console.log(\"Caooooo status 123\");\n if (data.pickupMandatory == true) {\n window.mandatoryData = data;\n }\n this.carrier_id = data.carrier_id;\n window.carrier_id = data.carrier_id;\n jQuery(document).ready(() => {\n var checkVisibility = setInterval(() => {\n var inputElement = jQuery(\".wc-block-components-shipping-rates-control__package\");\n if (inputElement.is(':visible')) {\n // The input element is visible, you can proceed with your script\n clearInterval(checkVisibility); // Stop checking\n // Your code here\n console.log(\"ITS VISIBLE 222\");\n this.getBlockShippingData();\n console.log(inputElement);\n let button = jQuery(\"<button class='button alt Bpost-pick-location' type='button' id='Bpost_pickup_button' onClick='Bpost.getPickupLocations(event)'>\" + Bpost_choose_pickup_location + \"</button>\");\n let shipping_pickup_id = jQuery(\"<input type='hidden' name='shipping_pickup_id' id='shipping_pickup_id'/>\");\n let shipping_pickup_label = jQuery(\"<input type='hidden' name='shipping_pickup_label' id='shipping_pickup_label'/>\");\n let Bpost_pickup_extended = jQuery(\"<input type='hidden' name='Bpost_pickup_extended' id='shipping_pickup_extended'/>\");\n let Bpost_pickup_description = jQuery(\"<span className='Bpost-pickup__description' id='Bpost-pickup__description'></span>\");\n let shipping_carrier_id = jQuery(\"<tr style='display: none'><td><input type='hidden' name='shipping_carrier_id' id='shipping_carrier_id'/>\");\n console.log(button);\n inputElement[0].append(button[0]);\n inputElement[0].append(shipping_pickup_id[0]);\n inputElement[0].append(shipping_pickup_label[0]);\n inputElement[0].append(Bpost_pickup_extended[0]);\n inputElement[0].append(Bpost_pickup_description[0]);\n inputElement[0].append(shipping_carrier_id[0]);\n this.mapinterface.setCarrierId(this.carrier_id);\n if (jQuery('#Bpost_pickup_button').is(':visible')) {\n console.log('Button is visible so we can enable');\n setTimeout(function () {\n // Code to run after 300 milliseconds\n console.log('400 milliseconds have passed');\n jQuery('.wc-block-components-checkout-place-order-button').prop('disabled', false);\n\n // Reset CSS styles for the enabled state\n jQuery('.wc-block-components-checkout-place-order-button').css({\n 'background-color': 'black',\n 'cursor': 'pointer',\n 'opacity': '1' // Reset opacity to make it fully visible\n });\n }, 300);\n }\n }\n }, 100); // Check every 100 milliseconds\n });\n } else {\n console.log(\"BUTTON ENABLED GET SELECTED CARRIER\");\n if (jQuery('#Bpost-pickup__description').length > 0) {\n jQuery('#Bpost-pickup__description').hide();\n }\n this.enableButton();\n }\n }).fail(err => {\n console.log(\"Fatal error widget requesting points do we have an API bug?\");\n });\n }\n isBlockCheckout() {\n if (jQuery(\".wc-block-checkout\").length > 0) {\n return true;\n }\n return false;\n }\n getOnClick() {\n jQuery(\"#sw-query-btn\").on('click', () => {\n this.geocodeQuery();\n });\n jQuery('form[name=\"checkout\"]').on('change', () => {\n // This function will be triggered when any form field inside the \"checkout\" form is changed\n console.log(\"Form changed!\");\n this.getFormShippingData();\n // You can perform your desired actions here\n });\n }\n getFormShippingData() {\n var country = jQuery('#billing_country').val(),\n state = jQuery('#billing_state').val(),\n postcode = jQuery('input#billing_postcode').val(),\n city = jQuery('#billing_city').val(),\n address = jQuery('input#billing_address_1').val(),\n address_2 = jQuery('input#billing_address_2').val(),\n s_country = country,\n s_state = state,\n s_postcode = postcode,\n s_city = city,\n s_address = address,\n s_address_2 = address_2;\n if (jQuery('#ship-to-different-address').find('input').is(':checked')) {\n s_country = jQuery('#shipping_country').val();\n s_state = jQuery('#shipping_state').val();\n s_postcode = jQuery('input#shipping_postcode').val();\n s_city = jQuery('#shipping_city').val();\n s_address = jQuery('input#shipping_address_1').val();\n s_address_2 = jQuery('input#shipping_address_2').val();\n }\n jQuery('input[aria-label*=\"Country/Region\"]').each(function () {\n var s_country = jQuery(this).val();\n });\n window.Bpost_shipping_address = {\n \"Address\": {\n \"Lat\": \"\",\n \"Long\": \"\",\n \"Streetname1\": s_address,\n \"Streetname2\": s_address_2,\n \"HouseNumber\": '',\n \"NumberExtension\": '',\n \"PostalCode\": s_postcode,\n \"s_postcode\": s_postcode,\n \"City\": s_city,\n \"Country\": s_country,\n \"State\": s_state\n },\n post_data: jQuery('form.checkout').serialize(),\n \"CarrierId\": jQuery(\"#shipping_carrier_id\").val()\n };\n this.options.address = window.Bpost_shipping_address.Address;\n }\n getBpostId(mage_id) {\n var carrier_id = mage_id.match(/([\\d]+)_pickup/);\n if (carrier_id != null) {\n return carrier_id[1];\n }\n for (let x = 0; x < Bpost_carriers.length; ++x) {\n if (Bpost_carriers[x].ClassName === mage_id) {\n return typeof Bpost_carriers[x].Id == 'object' ? Bpost_carriers[x].Id['0'] : Bpost_carriers[x].Id;\n }\n }\n return 0;\n }\n\n /*\n * Adds the map to the page\n */\n init() {\n this.options.address && this.setAddress(this.options.address);\n this.loadScripts();\n !this.options.address && localStorage.getItem('BpostAddress') && this.setAddress(JSON.parse(localStorage.getItem('BpostAddress')));\n }\n addPointInfo(p, selected, extra_class, parentContainer) {\n if (typeof extra_class == 'undefined') {\n extra_class = '';\n }\n let open = typeof p.WorkingHoursRaw != 'undefined' && p.WorkingHoursRaw ? JSON.parse(p.WorkingHoursRaw) : [];\n let openhtml = '';\n let m2f = '';\n let wkd = '';\n let local = p.Information.Address;\n\n /* ----------------------\n / To replace when we have an actual format for it */\n let openHours = [];\n\n /* LEGACY code that we are using to transform the raw data into something we can work with ----------- */\n let regexFormatDev = new RegExp(/([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)/, 'g');\n let regexFormatLive = new RegExp(/([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)\\_([a-zA-Z0-9]+)/, 'g');\n let regexFormat = regexFormatLive;\n let regDay = 1; /* Monday, Tuesday ..*/\n let regOpenIdx = 4; /* 1,2,... */\n let regTypeIdx = 2; /* Open | closing */\n\n if (Object.keys(open).length > 0 && Object.keys(open).shift().match(regexFormatDev)) {\n regexFormat = regexFormatDev;\n regTypeIdx = 3;\n regOpenIdx = 7;\n }\n for (key in open) {\n let value = open[key];\n if (key.match(regexFormat)) {\n let res = regexFormat.exec(key);\n let dayname = res[regDay];\n let openidx = parseInt(res[regOpenIdx]) - 1;\n let dayidx = this.weekdaynames.indexOf(dayname);\n if (typeof openHours[dayidx] == 'undefined') {\n openHours[dayidx] = [];\n }\n if (typeof openHours[dayidx][openidx] == 'undefined') {\n openHours[dayidx][openidx] = {\n OpenTime: '',\n CloseTime: ''\n };\n }\n openHours[dayidx][openidx][res[regTypeIdx] == 'Closing' ? 'CloseTime' : 'OpenTime'] = value;\n }\n }\n\n /* Make sure it's sorted */\n for (let i = 0; i < openHours.length; ++i) {\n /* Sometimes it's closed on monday meaning there's nothing at idx 0*/\n if (typeof openHours[i] != \"undefined\") {\n let schedule = openHours[i];\n schedule.sort((a, b) => {\n let aopen = parseInt(a.OpenTime.substring(0, 2));\n let bopen = parseInt(b.OpenTime.substring(0, 2));\n return aopen - bopen;\n });\n }\n }\n\n /* Group data set\n Label can be:\n First day - last day with same schedule\n Every day */\n\n open = typeof p.WorkingHours != 'undefined' ? p.WorkingHours : openHours;\n /** It's a hash, not an array **/\n let ndaysopen = Object.keys(open).length;\n let fromday = this.weekdaynames[0];\n let previousTime = '';\n let hourshtml = '';\n let fromdayidx = 0;\n let toDay = '';\n /*-------*/\n\n for (let i = 0; i < 7; ++i) {\n let day = open[i];\n let dayhtml = '';\n let today = this.weekdaynames[i];\n dayhtml += `<div class=\"sw-point-info-day\">`;\n hourshtml = '';\n for (let j = 0; day && j < day.length; ++j) {\n let hours = day[j];\n if (hours.OpenTime == null && hours.CloseTime == '23:59') {\n hourshtml += '24h';\n } else {\n hourshtml += (hourshtml ? ' | ' : '') + `<span>${hours.OpenTime ? hours.OpenTime : ''} - ${hours.CloseTime ? hours.CloseTime : ''}</span>`;\n }\n }\n\n /** last day or different time, print last **/\n if (previousTime && previousTime != hourshtml || i == 6) {\n /** not a lot of sense in mon-mon*/\n let isinterval = i - fromdayidx > 2;\n let islast = i == 6;\n if (previousTime) {\n toDay = islast && hourshtml == previousTime ? this.weekdaynames[i] : this.weekdaynames[i - 1];\n dayhtml += `<label>${(isinterval && fromday ? fromday + ' - ' : '') + toDay}:</label><span>${previousTime}</span></div>`;\n openhtml += dayhtml;\n }\n if (islast && hourshtml && hourshtml != previousTime) {\n openhtml += `<div class=\"sw-point-info-day\"><label>${this.weekdaynames[i]}:</label><span>${hourshtml}</span></div></div>`;\n }\n fromday = i < ndaysopen - 1 ? this.weekdaynames[i] : '';\n fromdayidx = i;\n previousTime = hourshtml;\n } else {\n previousTime = hourshtml;\n }\n }\n if (!openhtml && previousTime) {\n openhtml = `<label>${fromday} - ${this.weekdaynames[ndaysopen - 1]}: </label><span>${previousTime}</span></div>`;\n }\n\n /* / END LEGACY code ----------- */\n\n let ePointInfo = jQuery(`<div class=\"sw-point-info ${extra_class}\">\n <h4 class='sw-point-info-name'>${p.Information.Name}</h4>\n <div class='sw-point-info-addr'>${local}</div>\n <div class='sw-point-info-open'>${openhtml}</div>\n </div>`);\n\n /* Is there aditional information required? */\n if (typeof p.MapFieldsSelect != 'undefined') {\n let moreFields = p.MapFieldsSelect;\n for (let k = 0; k < moreFields.length; ++k) {\n ePointInfo.append(`<div class=\"sw-point-info-additional\"><label>${moreFields[k]}</label><input data-id=\"${moreFields[k]}\" class=\"Bpost_mapfields${p.PointId}\" type=\"text\" id=\"${moreFields[k]}${p.PointId}\"/></div>`);\n }\n }\n let btn = jQuery(`<button class=\"sw-point-info-btn ${selected ? 'selected' : ''}\">${selected ? Bpost_selected : Bpost_select}</button>`);\n btn.on('click', () => {\n this.selectPoint(p);\n });\n ePointInfo.append(btn);\n parentContainer.append(ePointInfo);\n }\n /**\n * Append custom style\n * @param string css - a string with the style to inject\n */\n addCustomStyle(css) {\n var style = document.createElement(\"style\");\n style.type = \"text/css\";\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n document.getElementsByTagName(\"head\")[0].appendChild(style);\n }\n addMapHtml() {\n console.log(\"ADD MAP HTML Options address\");\n let addresstr = '';\n /* Ireland does not have postal codes */\n if (this.options.address.Streetname1) {\n addresstr = this.options.address.PostalCode ? this.options.address.PostalCode : this.options.address.Streetname1;\n }\n let maphtml = `<div id=\"sw\">\n <div id=\"sw__overlay\"></div>\n <div id=\"sw__container\">\n <div id=\"sw-search\">\n <div id=\"sw-query-wrapper\">\n <input type=\"text\" id=\"sw-query\" placeholder=\"${addresstr}\">\n </div>\n <div id=\"sw-query-results\"></div>\n <div id=\"query-options\">\n </div>\n </div>\n <div id=\"sw-display-options\">\n </div> \n <div id=\"sw-map-wrapper\" class=\"sw-tab selected\">\n <div class=\"sw-query-results-description\"></div>\n <div id=\"sw-map\" class=\"Bpost-pickup__map\"></div>\n <div id=\"sw-map-error\"></div> \n <div id=\"sw-map-selected-point\"></div>\n </div> \n <div class='sw-tab'>\n <div class=\"sw-query-results-description\"></div>\n <div id=\"sw-list-points\"></div>\n </div>\n <div id=\"sw-map-message\"></div>\n <div id=\"sw-search-status\">\n <div class=\"sw-loader\"><div></div><div></div><div></div></div>\n </div>\n </div>\n </div>`;\n jQuery(this.mapParentContainer).append(maphtml);\n let displayOptions = jQuery(\"#sw-display-options\");\n let optMap = jQuery(`<span class='sw-display-option selected'>`+ Bpost_map + `</span>`);\n let optList = jQuery(`<span class='sw-display-option'\">` + Bpost_list + `</span>`);\n optMap.on('click', () => {\n this.selectDisplayOption(0);\n });\n optList.on('click', () => {\n this.selectDisplayOption(1);\n });\n displayOptions.append(optMap);\n displayOptions.append(optList);\n let queryopt = jQuery(\"#sw-query-wrapper\");\n let searchbtn = jQuery(`<button id=\"sw-query-btn\"\>`+ Bpost_search+`</button>`);\n queryopt.append(searchbtn);\n searchbtn.on('click', () => {\n this.geocodeQuery();\n });\n let queryinput = jQuery(\"#sw-query\");\n queryinput.on('keyup', evt => {\n if (evt.keyCode == 13) {\n this.geocodeQuery();\n }\n this.timeoutKeyDown && clearTimeout(this.timeoutKeyDown);\n this.timeoutKeyDown = setTimeout(() => {\n this.geocodeQuery();\n }, 300);\n });\n jQuery(\"#sw__overlay\").click(() => {\n this.closeMap();\n });\n }\n /**\n * @param decimal lat\n * @param decimal lng\n */\n centerMap(lat, lng) {\n this.mapinterface.centerMap(lat, lng);\n }\n /**\n * Hide the map\n */\n closeMap() {\n jQuery(\"#sw\").removeClass(\"open\");\n jQuery('html,body').scrollTop(this.userScroll);\n }\n displayMessage(msg) {\n jQuery('#sw-map-message').addClass(\"open\");\n jQuery('#sw-map-message').html(msg);\n }\n /**\n * Display the possible option to the user in a list under the search input\n */\n\n //\n // ##DJDJ Bpost stuff\n displayPlaces(places) {\n console.log(11);\n jQuery(\".sw-query-results-description\").html('');\n this.queryResults = places;\n let resultsContainer = jQuery(\"#sw-query-results\");\n\n // ##DJDJ Ovde verovatno treba izmena da se odradi\n console.log(\"Display places\");\n console.log(places);\n let html = '';\n for (let i = 0; i < places.length; ++i) {\n if (typeof places[i].address.PostalCode != 'undefined') {\n html += `<div class=\"sw-query-result\" data-idx=\"${i}\">${places[i].display_name}</div>`;\n }\n }\n if (!html) {\n html = 'Could not geolocate your address, please confirm that the address is correct';\n }\n console.log(22);\n resultsContainer.html(html);\n jQuery(\".sw-query-result\").on('click', evt => {\n console.log(33);\n let idx = jQuery(evt.target).attr(\"data-idx\");\n if (parseInt(idx) == 'isNaN' || idx > this.queryResults.length) {\n console.log(\"invalid idx selected: \", idx);\n return;\n }\n let place = this.queryResults[idx];\n this.options.address.Lat = place.lat;\n this.options.address.Long = place.lng;\n console.log(\"selected \", this.queryResults[idx]);\n jQuery(\"#sw-query-results\").html('');\n jQuery(\"#sw-query\").val(place.display_name);\n if (typeof place.address != 'undefined') {\n for (let prop in place.address) {\n if (place.address[prop] && place.address[prop].length > 0) {\n this.options.address[prop] = place.address[prop];\n }\n }\n }\n this.options.address.Streetname1 = place.address.Streetname1;\n console.log(place.address, \"Address is now \", this.options.address);\n this.fetchPoints(this.options.address);\n });\n }\n hashLatLng(point) {\n let latstr = (point.lat + '').replace('.', '-');\n let lngstr = (point.lng + '').replace('.', '-');\n return 'r' + latstr + '_' + lngstr;\n }\n displayResults(data) {\n console.log(\"DisplayPoints22322\");\n console.log(data);\n this.mapinterface.clearMarkers();\n jQuery(\"#sw__container\").removeClass('searching');\n this.pickupPointsLoadStop();\n jQuery(\".sw-query-results-description\").html(\"<div class='sw-query-results-description'>\" + \"Displaying the \" + data.Count + \" closest points to the given location\" + \"</div>\");\n\n // ##DJDJ WP exclusive issue because of this\n setTimeout(() => {\n this.pickupPoints = data.Point;\n this.mapChanged = Date.now();\n this.updateList(this.pickupPoints);\n this.mapinterface.addMarkers(this.pickupPoints, idx => {\n console.log(\"Added markers\");\n let parent = jQuery(\"#sw-map-selected-point\");\n parent.html(\"\");\n this.addPointInfo(this.pickupPoints[idx], 0, '', parent);\n console.log(\"added point info\");\n this.mapinterface.selectPoint(idx);\n console.log(\"After select point break\");\n });\n }, 100);\n }\n /***\n * Get Points from the API and display them\n **/\n fetchPoints(address, fresolve) {\n // ##DJDJ Ako je block ovo ne treba, ako nije onda treba\n if (!this.isBlockCheckout()) {\n this.carrier_id = jQuery('#shipping_carrier_id').val();\n this.setCarrierId(jQuery('#shipping_carrier_id').val());\n }\n address.Country = jQuery('#shipping-country').val();\n\n // ##DJDJ Ovo dole u else je visak izgleda\n // else {\n // this.setCarrierId(this.carrier_id);\n // }\n console.log(\"FetchPoints232222\");\n // ##DJDJ Ovde si stao, treba se proslediti carrier id nekako\n console.log(address);\n console.log(this.carrier_id);\n this.selectedPoint = null;\n jQuery(\"#sw-map-selected-point\").html('');\n jQuery('#sw-map-message').removeClass('open');\n jQuery(\".sw-query-results-description\").html('');\n if (!this.mapinterface.isMapMoving()) {\n jQuery(\"#sw__container\").addClass('searching');\n }\n if (typeof this.cacheResults[this.hashLatLng({\n lat: this.options.address.Lat,\n lng: this.options.address.Long\n })] != \"undefined\") {\n console.log(\"OVDEEEEE\");\n this.displayResults(this.cacheResults[this.hashLatLng({\n lat: this.options.address.Lat,\n lng: this.options.address.Long\n })]);\n }\n let req = {\n \"Address\": address,\n \"CarrierId\": this.carrier_id,\n 'action': 'Bpost_pickup_locations'\n };\n jQuery.getJSON(this.options.ajax_url, req, data => {\n console.log(\"Caoaooo nasaooo\");\n console.log(this.options.ajax_url);\n this.mapinterface.clearMarkers();\n console.log(data);\n /* We have the points remove the loader */\n this.pickupPointsLoadStop();\n jQuery(\"#sw-map-wrapper\").removeClass('loading');\n this.searchRunning = false;\n jQuery(\"#sw__container\").removeClass('searching');\n this.searchRunning = false;\n if (data.error) {\n this.displayMessage(data.error);\n }\n if (data.Point) {\n if (data.Point.length > 0) {\n this.cacheResults[this.hashLatLng({\n lat: this.options.address.Lat,\n lng: this.options.address.Long\n })] = data;\n this.displayResults(data);\n } else {\n this.displayMessage(this.options.labels.nopoints);\n }\n }\n if (typeof fresolve != 'undefined') {\n /* We want to make sure changes are commited to the dom before we declare we're done */\n setTimeout(() => {\n fresolve();\n }, 300);\n }\n }).fail(err => {\n this.displayMessage(this.options.labels.nopoints);\n console.log(\"Fatal error widget requesting points do we have an API bug?\", err.responseText);\n });\n }\n geocodeQuery() {\n jQuery(\"#sw-query-results\").html('');\n console.log(\"Geocode query\");\n let queryval = jQuery(\"#sw-query\").val();\n console.log(queryval);\n this.options.address.Lat = null;\n this.options.address.Long = null;\n if (queryval.length < 4) {\n return;\n }\n console.log(\"OVOTITREBA\");\n console.log(this.options.address);\n console.log(this.mapinterface);\n console.log(\"OVDE COUNTRY\");\n if (jQuery('#components-form-token-input-0').length) {\n this.options.address.Country = jQuery('#components-form-token-input-0').val();\n } else if (jQuery(\"#shipping-country option:selected\").length) {\n this.options.address.Country = jQuery(\"#shipping-country option:selected\").text();\n } else if (jQuery('#shipping-country').length > 0) {\n this.options.address.Country = jQuery('#shipping-country option:selected').text();\n } else if (jQuery('#select2-billing_country-container').length > 0) {\n this.options.address.Country = jQuery('#select2-billing_country-container').text();\n }\n if (this.options.address.Country == 'BE' || this.options.address.Country == 'be' || this.options.address.Country == 'Belgium' || this.options.address.Country == 'België' || this.options.address.Country == 'Belgique') {\n this.mapinterface.geocodeBpost({\n \"address\": queryval,\n \"country\": 'BE'\n }, resp => {\n console.log(\"Geocodeeee\");\n console.log(resp);\n this.displayPlaces(resp);\n });\n } else {\n this.mapinterface.geocode({\n \"address\": queryval,\n \"country\": this.options.address.Country\n }, resp => {\n console.log(\"Geocodeeee\");\n console.log(resp);\n this.displayPlaces(resp);\n });\n }\n }\n /**\n *\n * @param shippingData, the address parts\n * @param f_callback , the function to call when all mighty google returns a result\n */\n geocodeAddress(address, f_callback) {\n console.log(address);\n console.log(\"GEOCODEADDRESS\");\n if (address.country == 'Portugal' && typeof missingZipPT != 'undefined') {\n /* Is this a postal code we know is not geocodable in nominatim? */\n let zip4dig = address.postcode.substring(0, 4);\n for (let i = 0; i < missingZipPT.length; ++i) {\n if (missingZipPT[i].zipcode == zip4dig) {\n this.queryResults = [{\n display_name: missingZipPT[i].display_name,\n lat: missingZipPT[i].lat,\n lng: missingZipPT[i].lng,\n address: {\n street: \"street\",\n postcode: address.postcode,\n city: missingZipPT[i].display_name,\n country_code: address.country\n }\n }];\n console.log(this.queryResults);\n f_callback(this.queryResults);\n return;\n }\n }\n }\n console.log(\"Nije reseno\");\n console.log(this.mapinterface);\n console.log(\"ADRESA\");\n console.log(address);\n if (address.Country == 'BE' || address.Country == 'be' || address.Country == 'Belgium' || this.options.address.Country == 'België' || this.options.address.Country == 'Belgique') {\n this.mapinterface.geocodeAddressPartsBpost(geocode => {\n if (!geocode.lat) {\n return this.mapinterface.geocodeAddressPartsBpost(geocode => {\n f_callback(geocode);\n }, address.City, address.Country);\n }\n f_callback(geocode);\n }, address.City, address.Country, address.PostalCode, address.Streetname1);\n } else {\n this.mapinterface.geocodeAddressParts(geocode => {\n if (!geocode.lat) {\n return this.mapinterface.geocodeAddressParts(geocode => {\n f_callback(geocode);\n }, address.City, address.Country);\n }\n f_callback(geocode);\n }, address.City, address.Country, address.PostalCode, address.Streetname1);\n }\n }\n mapMoved(mapcenter) {\n jQuery(\"#sw-point-info\").html(\"\");\n return new Promise((resolve, reject) => {\n this.options.address.Lat = mapcenter.lat;\n this.options.address.Long = mapcenter.lng;\n this.fetchPoints(this.options.address, resolve);\n });\n }\n loadLabels(fcallback) {\n jQuery.getJSON(this.options.ajaxLoadLabels, resp => {\n this.options.labels = resp;\n fcallback(resp);\n }).fail(err => {\n console.log(\"error fetching widget labels at \" + this.options.ajaxLoadLabels, err);\n });\n }\n loadScripts() {\n console.log(\"Load scripts widget\");\n /* not defined or version < 1.7 compare only subversion for simplicity **/\n if (typeof jQuery == 'undefined' || parseInt(jQuery.fn.jquery.substring(2, 2)) < 7) {\n console.log(\"Load scripts widget if\");\n var me = this;\n this.loadScript('https://code.jquery.com/jquery-3.7.0.min.js', function () {\n me.scriptsLoaded();\n if (me.options.oninit) {\n me.options.oninit();\n }\n });\n } else {\n console.log(\"jquery is widget loaded bootstrap\");\n this.scriptsLoaded();\n if (this.options.oninit) {\n this.options.oninit();\n }\n }\n }\n /**\n * @param String url - the url of the script to load\n * @param String callback - the name of the function to call after the script is loaded\n */\n loadScript(url, callback) {\n console.log(\"Load Script widget singular\");\n var script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n if (script.readyState) {\n /*IE */\n script.onreadystatechange = () => {\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\n script.onreadystatechange = null;\n calback && callback();\n }\n };\n } else {\n script.onload = () => {\n callback && callback();\n };\n }\n script.src = url;\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n /**\n * @param string url\n */\n static loadStyle(url) {\n console.log(\"LOADDDDD TESTTTTTTT\");\n var style = document.createElement('link');\n style.rel = 'stylesheet';\n style.href = url;\n document.getElementsByTagName('head')[0].appendChild(style);\n }\n log(msg, force) {\n if (!force && !this.options.debug) {\n return;\n }\n console.log(msg);\n }\n /**\n * clear any ui elements that result from selection and other state variables\n */\n resetMapElements() {\n this.selectedPoint = null;\n jQuery(\"#sw-map-selected-point\").html('');\n jQuery('#sw-map-message').removeClass('open');\n jQuery(\".sw-query-results-description\").html('');\n }\n openMap() {\n console.log(\"Open map widget23222222666666\");\n if (!this.isBlockCheckout()) {\n var platform = new Woocommerce();\n this.options.address = platform.getShippingData().Address;\n }\n\n // console.log(this.carrier_id);\n this.userScroll = jQuery('html,body').scrollTop();\n jQuery('html,body').scrollTop(0);\n jQuery(\"#sw\").addClass(\"open\");\n jQuery(\"#sw-map-wrapper\").addClass('loading');\n console.log(\"Ovdeee 1\");\n jQuery(\"#sw-query\").val(this.options.address.Streetname1);\n this.selectDisplayOption(0);\n console.log(\"Ovdeee 3\");\n console.log(this.options.address);\n if (this.options.address.Streetname1) {\n console.log(\"Ima ulicu\");\n if (!this.options.address.lat) {\n console.log(\"Nema lat\");\n this.geocodeAddress(this.options.address, geo => {\n console.log(\"GEOOOOOOOO\");\n console.log(geo);\n geo.length && (geo = geo[0]);\n this.options.address.Lat = geo.lat;\n this.options.address.Long = geo.lng;\n console.log(\"GEOCODE222\");\n console.log(this.options.address);\n this.fetchPoints(this.options.address);\n });\n } else {\n console.log(\"Nema ulicu i ide u fetch\");\n this.fetchPoints(this.options.address);\n }\n }\n }\n getShippingData() {\n let shippingData = [];\n this.getBlockShippingData();\n shippingData[\"Address\"] = this.options.address;\n // shippingData[\"CarrierId\"] = this.carrier_id;\n return shippingData;\n }\n getBlockShippingData() {\n var address = jQuery('#shipping-address_1').val();\n var apartment = jQuery('#shipping-address_2').val();\n var city = jQuery('#shipping-city').val();\n var postalCode = jQuery('#shipping-postcode').val();\n\n // Extracting Country\n var country = jQuery('#shipping-country option:selected').text();\n console.log(\"New Country\"); console.log(country); if (country == \"\" || country == 'undefined') {\n console.log(\"COUNTRY EMPTY\");\n jQuery('input[aria-label*=\"Country/Region\"]').each(function () {\n country = jQuery(this).val();\n });\n } else if (country == \"\" || country == 'undefined') {\n country = jQuery('#components-form-token-input-0').val();\n }\n console.log(\"BLOCK SHIPPING DATA ON GET BLOCK SHIPPING DATA\");\n console.log(country);\n window.Bpost_shipping_address = {\n \"Address\": {\n \"Lat\": \"\",\n \"Long\": \"\",\n \"Streetname1\": address,\n \"Streetname2\": '',\n \"HouseNumber\": apartment,\n \"NumberExtension\": '',\n \"PostalCode\": postalCode,\n \"s_postcode\": postalCode,\n \"City\": city,\n \"Country\": country,\n \"State\": ''\n }\n };\n this.options.address = window.Bpost_shipping_address.Address;\n }\n pickupPointsLoadStop() {\n jQuery(\"#sw-map-wrapper\").removeClass('loading');\n this.searchRunning = false;\n }\n /**\n * Resets the selected point to null\n **/\n resetSelection() {\n this.selectedPoint = null;\n }\n selectPoint(pickup) {\n console.log(\"Select POINT\");\n console.log(pickup);\n this.selectedPoint = pickup;\n if (jQuery('#Bpost-pickup__description').length && jQuery('#Bpost-pickup__description').is(':hidden')) {\n jQuery('#Bpost-pickup__description').show();\n }\n if (jQuery('.Bpost-pickup__description').length && jQuery('.Bpost-pickup__description').is(':hidden')) {\n jQuery('.Bpost-pickup__description').show();\n }\n localStorage.setItem('BpostPointId', pickup.PointId);\n localStorage.setItem('BpostPointLabel', pickup.Information.Name);\n\n /** What view are we on ? **/\n let eFieldInfo = jQuery(\"#sw-map-selected-point\");\n if (this.selectedDisplayOption == 1) {\n eFieldInfo = jQuery(\"#sw-list-points\");\n }\n /* Validate if this point requires aditional info that's not present fail here */\n if (typeof pickup.MapFieldsSelect != 'undefined' && pickup.MapFieldsSelect.length > 0) {\n let extrasValid = true;\n eFieldInfo.find('.Bpost_mapfields' + pickup.PointId).each((idx, elem) => {\n let eExtra = jQuery(elem);\n if (!eExtra.val()) {\n alert(jQuery(jQuery('.Bpost_mapfieldslabel' + pickup.PointId).get(idx)).text() + ': ' + this.options.labels.mapfieldmandatory);\n extrasValid = false;\n }\n });\n if (!extrasValid) {\n console.log(\"point selection widget is not valid, ignoring\");\n return false;\n }\n }\n console.log(jQuery(\".Bpost-pickup__description\"));\n jQuery(\".Bpost-pickup__description\").html(pickup.Information.Name + \" \" + pickup.Information.Address);\n const pickupPoint = {\n id_carrier: this.carrier_id,\n pickup_id: this.selectedPoint.PointId,\n pickup_label: (this.selectedPoint.Information.Name ? this.selectedPoint.Information.Name + '<br/>' : '') + this.selectedPoint.Information.Address,\n action: 'Bpost_save_pickup'\n };\n\n /*Is there extra info we want to append? */\n eFieldInfo.find(\".Bpost_mapfields\" + this.selectedPoint.PointId).each(function (idx, elem) {\n let fieldid = jQuery(elem).attr('data-id');\n let fieldvalue = jQuery(elem).val();\n pickupPoint['OptionFields'].push({\n Id: fieldid,\n Value: fieldvalue\n });\n localStorage.setItem(fieldid + 'val', fieldvalue);\n });\n if (typeof this.options.ajax_url == 'undefined') {\n console.log(\"Ovdeeee\");\n this.options.onPointSelected(pickup, '');\n } else {\n this.platform.setPickupPoint(pickup);\n }\n this.closeMap();\n jQuery(\"#myModal\").hide();\n jQuery('#place_order').prop('disabled', false);\n jQuery('#pickupText').hide();\n return true;\n }\n /**\n * A Point was selected\n * @param idx - integer the selected index\n **/\n selectPointFromList(idx) {\n if (idx > this.pickupPoints.length || idx < 0) {\n console.log(\"pointSelected invalid widget index \" + idx, 1);\n return;\n }\n this.selectPoint(this.pickupPoints[idx]);\n }\n /***\n * Select the display option\n * @param idx - int - 0: map, 1: list\n */\n selectDisplayOption(idx) {\n console.log(\"SELECTDISPOPTION\");\n console.log(idx);\n let eoptions = jQuery(\".sw-display-option, .sw-tab\");\n this.selectedDisplayOption = idx;\n eoptions.removeClass('selected');\n jQuery(eoptions.get(idx)).addClass('selected');\n jQuery(jQuery(\".sw-tab\").get(idx)).addClass('selected');\n if (idx == 0 && typeof this.mapinterface != 'undefined' && this.mapinterface.pickupPoints.length > 0) {\n this.mapinterface.fitBounds();\n }\n }\n /**\n * Reset the labels initially sent with options\n */\n setLabels(labels) {\n this.options.labels = labels;\n }\n setWeekdayNames(weekdaynames) {\n this.options.labels.weekdaynames = weekdaynames;\n }\n setCarrierId(carrier_id) {\n console.log(\"Setcarrierid\");\n console.log(carrier_id);\n this.carrier_id = carrier_id;\n console.log(this.mapinterface);\n this.mapinterface.setCarrierId(carrier_id);\n }\n /**\n * @param address - object in the same format as we send to the API\n *\n **/\n setAddress(address) {\n if (!address.Streetname1 || !address.Name) {\n console.log(\"invalid address widget \");\n return;\n }\n this.options.address = address;\n localStorage.setItem('BpostAddress', JSON.stringify(address));\n }\n /**\n * Called when load scripts ends we must grant that jquery exists\n */\n scriptsLoaded() {\n this.eSearchStatus = jQuery(\"#search-status\");\n this.addMapHtml();\n if (this.options.gmapskey) {\n this.mapinterface = new Bpost_gmaps(this.options, this);\n } else {\n this.mapinterface = new BpostOpenMap(this.options, this);\n }\n this.mapinterface.initMap();\n this.mapinterface.addMapMoveListener(mapcenter => {\n return this.mapMoved(mapcenter);\n });\n }\n updateList(points) {\n jQuery(\"#sw-list-points\").html('');\n let parent = jQuery(\"#sw-list-points\");\n for (let i = 0; i < points.length; ++i) {\n this.addPointInfo(points[i], 0, '', parent);\n }\n }\n disableButton() {\n jQuery('.wc-block-components-checkout-place-order-button').prop('disabled', true);\n\n // Add CSS styles for the disabled state\n jQuery('.wc-block-components-checkout-place-order-button').css({\n 'background-color': 'grey',\n 'cursor': 'not-allowed',\n 'opacity': '0.5' // Optional: to give it a more disabled look\n });\n }\n enableButton() {\n jQuery('.wc-block-components-checkout-place-order-button').prop('disabled', false);\n\n // Reset CSS styles for the enabled state\n jQuery('.wc-block-components-checkout-place-order-button').css({\n 'background-color': 'black',\n 'cursor': 'pointer',\n 'opacity': '1' // Reset opacity to make it fully visible\n });\n }\n getShippingMethodChenge() {\n jQuery(document).ready(() => {\n jQuery(\"#Bpost_pickup_button\").remove();\n var checkVisibility = setInterval(() => {\n var inputElement = jQuery(\"input[name='radio-control-0']\");\n if (inputElement.is(':visible')) {\n // The input element is visible, you can proceed with your script\n clearInterval(checkVisibility); //\n inputElement.on('change', () => {\n console.log(\"Shipping method changed222222222222222\");\n let aria = jQuery(\"input[name='radio-control-0']:checked\").attr('aria-describedby');\n let regex = /shipping_Bpost_[0-9]+:[0-9]+/;\n\n // Find the match using the regular expression\n let match = aria.match(regex);\n if (match == null) {\n return;\n }\n let req = {\n 'action': 'Bpost_selected_carrier_from_list',\n 'selected_carrier_code': match[0]\n };\n jQuery.getJSON(this.options.ajax_url, req, data => {\n console.log(\"Vrati ga kralju\");\n console.log(data);\n this.carrier_id = data.carrier_id;\n window.carrier_id = data.carrier_id;\n console.log(123);\n jQuery(\"#Bpost_pickup_button\").remove();\n\n // If not visible, add the button back\n let inputElement = jQuery(\".wc-block-components-shipping-rates-control__package\");\n\n // ##DJDJ Ovdeee isto trazi po variabli Bpost_choose_pickup_location ako se pokvari nesto. Proveriti sutra;\n let button = jQuery(\"<button class='button alt Bpost-pick-location' type='button' id='Bpost_pickup_button' onClick='Bpost.getPickupLocations(event)'>\" + Bpost_choose_pickup_location + \"</button>\");\n inputElement[0].append(button[0]); // Adjust the target container if necessary\n });\n });\n }\n });\n });\n }\n getNotBlockFormChange() {\n jQuery('form[name=\"checkout\"] input').change(function () {\n // var fieldName = jQuery(this).attr('name');\n var platform = new Woocommerce();\n this.options.address = platform.getShippingData();\n console.log(this.options.address);\n console.log(\"Form changed\");\n });\n }\n}\n/* harmony default export */ const Bpost_widget = (BpostWidget);\n;// CONCATENATED MODULE: ./shiptmize.js\n\n\n\n\n/** \n * Class Bpost depends on jQuery. \n * Check if we are meant to append a map \n * \n * Platform dependent functions marked with * @platformDependent \n */\nclass Bpost {\n constructor(ajax_url) {\n console.log(\"BPOSTCONSTRUCT\");\n this.markers = []; //pickup {lat, lng} \n this.isMapLoaded = false;\n this.gmaps_key = typeof Bpost_maps_key == 'undefined' ? '' : Bpost_maps_key;\n this.openMapMarkerIcons = {};\n this.ajax_url = ajax_url; // platform dependent \n\n this.platform = new Woocommerce(this.ajax_url);\n this.platform.isCheckout();\n this.init();\n }\n init() {\n console.log(\"Entered init\");\n this.BpostWidget = new Bpost_widget({\n \"host\": 'https://Bpost.me',\n \"address\": this.platform.getShippingData().Address,\n \"labels\": {},\n \"mapParentContainer\": 'body',\n \"buttonParentContainer\": 'body',\n \"buttonClass\": '',\n \"ajax_url\": this.ajax_url,\n \"carrierId\": this.platform.getShippingData().CarrierId,\n \"onPointSelected\": () => {},\n \"gmapskey\": typeof Bpost_maps_key == 'undefined' ? '' : Bpost_maps_key\n });\n this.BpostWidget.init();\n console.log(\"Finished init\");\n }\n getPickupLocations(evt) {\n this.BpostWidget.openMap();\n }\n}\njQuery(function () {\n if (typeof woocommerce_params != 'undefined') {\n window.Bpost = new Bpost(woocommerce_params.ajax_url);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LGdCQUFnQixDQUFDMEksSUFBSSxDQUFDLENBQUM7SUFDNUJ4VixPQUFPLENBQUNDLEdBQUcsQ0FBQyxlQUFlLENBQUM7RUFDaEM7RUFFQW9mLGtCQUFrQkEsQ0FBQ25GLEdBQUcsRUFBRTtJQUNwQixJQUFJLENBQUNwTixnQkFBZ0IsQ0FBQ2tRLE9BQU8sQ0FBQyxDQUFDO0VBQ25DO0FBRUo7QUFFQTljLE1BQU0sQ0FBQyxZQUFXO0VBQ2QsSUFBRyxPQUFPb2Ysa0JBQW1CLElBQUksV0FBVyxFQUFDO0lBQ3pDOWYsTUFBTSxDQUFDNEQsVUFBVSxHQUFHLElBQUkyYixVQUFVLENBQUNPLGtCQUFrQixDQUFDeGYsUUFBUSxDQUFDO0VBQ25FO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2hpcHRpbWl6ZS8uL2pzL3NoaXB0aW1pemUtdXRpbHMuanM/MDBkNCIsIndlYnBhY2s6Ly9zaGlwdGltaXplLy4vanMvc2hpcHRpbWl6ZS13b28tY29tbWVyY2UuanM/MmNmOSIsIndlYnBhY2s6Ly9zaGlwdGltaXplLy4vanMvc2hpcHRpbWl6ZS1vcGVuLW1hcC5qcz84OWMxIiwid2VicGFjazovL3NoaXB0aW1pemUvLi9qcy9zaGlwdGltaXplLWdtYXBzLmpzPzBiZjEiLCJ3ZWJwYWNrOi8vc2hpcHRpbWl6ZS8uL2pzL3NoaXB0aW1pemUtd2lkZ2V0LmpzP2RkOWEiLCJ3ZWJwYWNrOi8vc2hpcHRpbWl6ZS8uL3NoaXB0bWl6ZS5qcz82OWM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBcbiAqIFNpbmdsZXRvbiBvYmplY3Qgd2UgY2FuIHVzZSBmb3IgcGxhdGZvcm0gaW5kZXBlbmRlbnQgc3R1ZmYgXG4gKi9cbmNsYXNzIFNoaXB0aW1pemVVdGlscyB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cblxuXG4gICAgLyoqIFxuICAgICAqIEluamVjdCBTY3JpcHQgaW50byB0aGUgcGFnZSBcbiAgICAgKiBAcGFyYW0gc3RyaW5nIHNyYyBcbiAgICAgKi9cbiAgICBpbmplY3RFeHRlcm5hbFNjcmlwdChzcmMpIHtcbiAgICAgICAgbGV0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICBzLnNldEF0dHJpYnV0ZShcInNyY1wiLCBzcmMpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpO1xuICAgIH1cblxuXG4gICAgLyoqIFxuICAgICAqIEluamVjdCBhIHNjcmlwdCBzdHJpbmcgXG4gICAgICovXG4gICAgaW5qZWN0U2NyaXB0KGNvbnRlbnRzKSB7XG4gICAgICAgIGxldCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgZS52YWx1ZSA9IGNvbnRlbnRzO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO1xuICAgIH1cblxuICAgIC8qKiBcbiAgICAgKiBSZW1vdmVzIGFsbCBub3QgbnVtZXJpYyBjaGFycyBmcm9tIHRoZSBzdHJpbmcgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyaW5nIHN0cmluZyAtIHRoZSBpbnB1dCBzdHJpbmcgXG4gICAgICogQHJldHVybiB0aGUgc3RyaW5nIHdpdGhvdXQgY2hhcnMgdGhhdCBhcmUgbm90IG51bWJlcnMgXG4gICAgICovXG4gICAgcmVtb3ZlTm9uTnVtZXJpYyhzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIH1cblxuICAgIC8qKiBcbiAgICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gdXJsIGV4aXN0cyBhbmQgaXMgdmFsaWRcbiAgICAgKiBXZSB1c2UgdGhpcyB0byBjaGVjayBpZiB0aGUgY2FycmllciBpY29uIGV4aXN0cyBnaXZlbiBcbiAgICAgKiBhIHVybCBwYXRoIGFuZCB0aGUgbmFtaW5nIGNvbnZlbnRpb24ge2NhcnJpZXJfaWR9LnN2ZyBcbiAgICAgKiBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgcHJvdG9jb2wgaXMgYXBwZW5kZWQgdG8gdGhlIHVybCBodHRwICE9IGh0dHBzIFxuICAgICAqIFxuICAgICAqIEByZXR1cm4gdHJ1ZSBpdCB0aGUgdXJsIGV4aXN0cyBhbmQgaXMgdmFsaWQgXG4gICAgICovIFxuICAgIGlzVXJsVmFsaWQodXJsKSB7XG4gICAgICAgIHZhciBodHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIGh0dHAub3BlbignSEVBRCcsIHVybCwgZmFsc2UpO1xuICAgICAgICBodHRwLnNlbmQoKTtcbiAgICAgICAgcmV0dXJuIGh0dHAuc3RhdHVzID09IDIwMDtcbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogT3BlbiBhIG5ldyB3aW5kb3cgd2l0aCB0aGUgcHJvdmlkZWQgVVJMIFxuICAgICAqIEBzdHJpbmcgdXJsIFxuICAgICAqIEByZXR1cm4gYm9vbCBpZiB0aGUgd2luZG93IHdhcyBvcGVuZWQsIGZhbHNlIGlmIHBvcHVwIGJsb2NrZXIgZW5hYmxlZCBcbiAgICAgKi8gIFxuICAgIG9wZW5OZXdXaW5kb3codXJsLCBvcHRpb25zKXtcbiAgICAgICAgbGV0IG5ld1dpbiA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsIG9wdGlvbnMpOyBcbiAgICAgICAgbGV0IGJsb2NrZWQgPSAhbmV3V2luIHx8IG5ld1dpbi5jbG9zZWQgfHwgdHlwZW9mIG5ld1dpbi5jbG9zZWQ9PSd1bmRlZmluZWQnOyBcblxuICAgICAgICByZXR1cm4gIWJsb2NrZWQ7IFxuICAgIH1cbn1cblxuXG5sZXQgdXRpbHMgPSBuZXcgU2hpcHRpbWl6ZVV0aWxzKCk7XG5leHBvcnQgZGVmYXVsdCB1dGlsczsiLCJpbXBvcnQgVXRpbHMgZnJvbSAnLi9zaGlwdGltaXplLXV0aWxzLmpzJzsgXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvb2NvbW1lcmNlIHtcblxuICAgIGNvbnN0cnVjdG9yKGFqYXhfdXJsID0gXCJcIikge1xuICAgICAgICB0aGlzLmFqYXhfdXJsID0gYWpheF91cmw7XG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIHRoZSBjaGVja291dCBwYWdlIFxuICAgICAqL1xuICAgIGlzQ2hlY2tvdXQoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ2hlY2tvdXRcIik7XG4gICAgICAgIHJldHVybiBqUXVlcnkoXCJib2R5XCIpLmhhc0NsYXNzKCd3b29jb21tZXJjZS1jaGVja291dCcpO1xuICAgIH1cblxuICAgIC8qIFxuICAgICAqIElmIHRoZXJlIGlzIG9ubHkgb25lIG1ldGhvZCBhdmFpbGFibGUgd29vIHdpbGwgdXNlIGEgaGlkZGVuIGZpZWxkIGZvciB0aGUgc2VsZWN0ZWQgY2FycmllciBcbiAgICAgKiAgKyBHZW5lcmljIE1ldGhvZHMgZG8gbm90IGhhdmUgYW4gaW5zdGFuY2UgaWQgXG4gICAgICovIFxuICAgIGdldFNoaXBwaW5nTWV0aG9kSWQoKXtcblxuICAgICAgICBsZXQgZUNoZWNrYm94ID0galF1ZXJ5KFwiaW5wdXRbbmFtZT0nc2hpcHBpbmdfbWV0aG9kWzBdJ106Y2hlY2tlZFwiKTtcbiAgICAgICAgbGV0IGVIaWRkZW4gPSBqUXVlcnkoXCJpbnB1dFtuYW1lPSdzaGlwcGluZ19tZXRob2RbMF0nXVwiKTtcblxuICAgICAgIC8vIGVDaGVja2JveGVzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgLy8gICAgIGNvbnNvbGUubG9nKFwiQ2Fvb29vb1wiKVxuICAgICAgIC8vIH0pO1xuICAgICAgICBsZXQgc2hpcHBpbmdNZXRob2QgPSAgZUNoZWNrYm94Lmxlbmd0aCA+IDAgPyBlQ2hlY2tib3gudmFsKCkgOiBlSGlkZGVuLnZhbCgpIDtcblxuXG4gICAgICAgIGlmICggc2hpcHBpbmdNZXRob2QuaW5kZXhPZignOicpID4gMCApe1xuICAgICAgICAgICAgdmFyIG1ldGhvZF9wYXJ0cyA9IHNoaXBwaW5nTWV0aG9kLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICByZXR1cm4gVXRpbHMucmVtb3ZlTm9uTnVtZXJpYyhtZXRob2RfcGFydHNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBzaGlwcGluZ01ldGhvZDtcbiAgICAgICAgfSBcbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogV29yZHByZXNzIHdvbid0IHNlbmQgc2Vzc2lvbiBjb29raWVzIHRvIHdwLWFkbWluIGFuZCB0aGUgc2Vzc2lvbiBoYW5kbGluZyBpbiB3b29jb21tZXJjZSBpcyBzbyBwb29ybHkgZG9jdW1lbnRlZCB3ZSBhcmUgYmV0dGVyIG9mZiBcbiAgICAgKiBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvIGNsaWVudCBzaWRlIG91ciBzZWx2ZXMuIFdlJ3JlIGVtdWxhdGluZyB0aGVpciBjaGVja291dC5qcyBcbiAgICAgKiBAcmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGFkZHJlc3MgcGFydHMgXG4gICAgICovXG4gICAgZ2V0U2hpcHBpbmdEYXRhKCkge1xuXG4gICAgICAgIC8vICMjREpESiBWZXJvdmF0bm8gc2FtbyBvdmRlIHRyZWJhIGRhIHNlIGl6bWVuaSBpIHBvdnVrdSBwb2RhY2kgc2EgcHJhdmloIGlkamV2YSB6YSBpbnB1dCB0ZXh0XG4gICAgICAgIHZhciBjb3VudHJ5ID0galF1ZXJ5KCcjYmlsbGluZ19jb3VudHJ5JykudmFsKCksXG4gICAgICAgICAgICBzdGF0ZSA9IGpRdWVyeSgnI2JpbGxpbmdfc3RhdGUnKS52YWwoKSxcbiAgICAgICAgICAgIHBvc3Rjb2RlID0galF1ZXJ5KCdpbnB1dCNiaWxsaW5nX3Bvc3Rjb2RlJykudmFsKCksXG4gICAgICAgICAgICBjaXR5ID0galF1ZXJ5KCcjYmlsbGluZ19jaXR5JykudmFsKCksXG4gICAgICAgICAgICBhZGRyZXNzID0galF1ZXJ5KCdpbnB1dCNiaWxsaW5nX2FkZHJlc3NfMScpLnZhbCgpLFxuICAgICAgICAgICAgYWRkcmVzc18yID0galF1ZXJ5KCdpbnB1dCNiaWxsaW5nX2FkZHJlc3NfMicpLnZhbCgpLFxuICAgICAgICAgICAgc19jb3VudHJ5ID0gY291bnRyeSxcbiAgICAgICAgICAgIHNfc3RhdGUgPSBzdGF0ZSxcbiAgICAgICAgICAgIHNfcG9zdGNvZGUgPSBwb3N0Y29kZSxcbiAgICAgICAgICAgIHNfY2l0eSA9IGNpdHksXG4gICAgICAgICAgICBzX2FkZHJlc3MgPSBhZGRyZXNzLFxuICAgICAgICAgICAgc19hZGRyZXNzXzIgPSBhZGRyZXNzXzI7XG5cblxuICAgICAgICBpZiAoalF1ZXJ5KCcjc2hpcC10by1kaWZmZXJlbnQtYWRkcmVzcycpLmZpbmQoJ2lucHV0JykuaXMoJzpjaGVja2VkJykpIHtcbiAgICAgICAgICAgIHNfY291bnRyeSA9IGpRdWVyeSgnI3NoaXBwaW5nX2NvdW50cnknKS52YWwoKTtcbiAgICAgICAgICAgIHNfc3RhdGUgPSBqUXVlcnkoJyNzaGlwcGluZ19zdGF0ZScpLnZhbCgpO1xuICAgICAgICAgICAgc19wb3N0Y29kZSA9IGpRdWVyeSgnaW5wdXQjc2hpcHBpbmdfcG9zdGNvZGUnKS52YWwoKTtcbiAgICAgICAgICAgIHNfY2l0eSA9IGpRdWVyeSgnI3NoaXBwaW5nX2NpdHknKS52YWwoKTtcbiAgICAgICAgICAgIHNfYWRkcmVzcyA9IGpRdWVyeSgnaW5wdXQjc2hpcHBpbmdfYWRkcmVzc18xJykudmFsKCk7XG4gICAgICAgICAgICBzX2FkZHJlc3NfMiA9IGpRdWVyeSgnaW5wdXQjc2hpcHBpbmdfYWRkcmVzc18yJykudmFsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc19jb3VudHJ5ID09IFwiXCIpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJDT1VOVFJZIEVNUFRZXCIpO1xuICAgICAgICAgICAgalF1ZXJ5KCdpbnB1dFthcmlhLWxhYmVsKj1cIkNvdW50cnkvUmVnaW9uXCJdJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBzX2NvdW50cnkgPSBqUXVlcnkodGhpcykudmFsKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKHNfY291bnRyeSA9PSBcIlwiKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ09VTlRSWSBFTVBUWSBBR0FJTlwiKTtcbiAgICAgICAgICAgIGpRdWVyeSgnI3NoaXBwaW5nLWNvdW50cnkgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpXG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgd2luZG93LnNoaXB0aW1pemVfc2hpcHBpbmdfYWRkcmVzcyA9IHtcbiAgICAgICAgICAgIFwiQWRkcmVzc1wiOntcbiAgICAgICAgICAgICAgICBcIkxhdFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgIFwiTG9uZ1wiOiBcIlwiLFxuICAgICAgICAgICAgICAgIFwiU3RyZWV0bmFtZTFcIjogc19hZGRyZXNzLFxuICAgICAgICAgICAgICAgIFwiU3RyZWV0bmFtZTJcIjogc19hZGRyZXNzXzIsXG4gICAgICAgICAgICAgICAgXCJIb3VzZU51bWJlclwiOiAnJyxcbiAgICAgICAgICAgICAgICBcIk51bWJlckV4dGVuc2lvblwiOiAnJyxcbiAgICAgICAgICAgICAgICBcIlBvc3RhbENvZGVcIjogc19wb3N0Y29kZSxcbiAgICAgICAgICAgICAgICBcInNfcG9zdGNvZGVcIjogc19wb3N0Y29kZSxcbiAgICAgICAgICAgICAgICBcIkNpdHlcIjogc19jaXR5LFxuICAgICAgICAgICAgICAgIFwiQ291bnRyeVwiOiBzX2NvdW50cnksXG4gICAgICAgICAgICAgICAgXCJTdGF0ZVwiOiBzX3N0YXRlLFxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9zdF9kYXRhOiBqUXVlcnkoJ2Zvcm0uY2hlY2tvdXQnKS5zZXJpYWxpemUoKSxcbiAgICAgICAgICAgIFwiQ2FycmllcklkXCI6IGpRdWVyeShcIiNzaGlwcGluZ19jYXJyaWVyX2lkXCIpLnZhbCgpXG4gICAgICAgIH07XG5cbiBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFwiQWRkcmVzc1wiOntcbiAgICAgICAgICAgICAgICBcIkxhdFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgIFwiTG9uZ1wiOiBcIlwiLFxuICAgICAgICAgICAgICAgIFwiU3RyZWV0bmFtZTFcIjogc19hZGRyZXNzLFxuICAgICAgICAgICAgICAgIFwiU3RyZWV0bmFtZTJcIjogc19hZGRyZXNzXzIsXG4gICAgICAgICAgICAgICAgXCJIb3VzZU51bWJlclwiOiAnJyxcbiAgICAgICAgICAgICAgICBcIk51bWJlckV4dGVuc2lvblwiOiAnJyxcbiAgICAgICAgICAgICAgICBcIlBvc3RhbENvZGVcIjogc19wb3N0Y29kZSxcbiAgICAgICAgICAgICAgICBcInNfcG9zdGNvZGVcIjogc19wb3N0Y29kZSxcbiAgICAgICAgICAgICAgICBcIkNpdHlcIjogc19jaXR5LFxuICAgICAgICAgICAgICAgIFwiQ291bnRyeVwiOiBzX2NvdW50cnksXG4gICAgICAgICAgICAgICAgXCJTdGF0ZVwiOiBzX3N0YXRlLFxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9zdF9kYXRhOiBqUXVlcnkoJ2Zvcm0uY2hlY2tvdXQnKS5zZXJpYWxpemUoKSxcbiAgICAgICAgICAgIFwiQ2FycmllcklkXCI6IGpRdWVyeShcIiNzaGlwcGluZ19jYXJyaWVyX2lkXCIpLnZhbCgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIFdlIG11c3QgcnVuIHRoaXMgb25sb2FkIFxuICAgICAqIEFuZCBvbiBtZXRob2QgY2hhbmdlIFxuICAgICAqIGJlY2F1c2UgcGVvcGxlIG1heSBuZXZlciBjaGFuZ2UgdGhlIGNhcnJpZXIgb3Igc2VsZWN0IGEgcGlja3VwIHBvaW50IFxuICAgICAqLyBcbiAgICBzZXRDYXJyaWVyKGNhcnJpZXJfaWQpe1xuICAgICAgICBjb25zb2xlLmxvZyhcIlNldCBjYXJyaWVyIGlkXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhjYXJyaWVyX2lkKTtcbiAgICAgICAgdGhpcy5jYXJyaWVyX2lkID0gdHlwZW9mKGNhcnJpZXJfaWQpICE9ICd1bmRlZmluZWQnID8gY2Fycmllcl9pZCA6IHRoaXMuZ2V0U2hpcHBpbmdNZXRob2RJZCgpOyAgXG4gICAgICAgIGpRdWVyeShcIiNzaGlwcGluZ19jYXJyaWVyX2lkXCIpLnZhbCh0aGlzLmNhcnJpZXJfaWQpO1xuICAgIH1cblxuICAgIC8qKiBcbiAgICAgKiBAcGFyYW0gUGlja3VwIHBpY2t1cCBcbiAgICAgKi9cbiAgICBzZXRQaWNrdXBQb2ludChwaWNrdXApIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJTRVQgUElDS1VQIFBPSU5UIEAjQCNcIilcbiAgICAgICAgY29uc29sZS5sb2cocGlja3VwKTtcbiAgICAgICAgbGV0IHBpY2t1cF9sYWJlbCA9ICBwaWNrdXAuSW5mb3JtYXRpb24uTmFtZSArIFwiIFwiICsgcGlja3VwLkluZm9ybWF0aW9uLkFkZHJlc3M7XG5cbiAgICAgICAgbGV0IHJlcSA9IHtcbiAgICAgICAgICAgICdhY3Rpb24nOiAnc2hpcHRpbWl6ZV9zZXRfcGlja3VwX3BvaW50JyxcbiAgICAgICAgICAgICdzaGlwcGluZ19waWNrdXBfbGFiZWwnOnBpY2t1cF9sYWJlbCxcbiAgICAgICAgICAgICdzaGlwdGltaXplX3BpY2t1cF9leHRlbmRlZCc6IGpRdWVyeSgnLnNoaXB0aW1pemVfbWFwZmllbGRzJyArIHBpY2t1cC5Qb2ludElkKS52YWwoKSxcbiAgICAgICAgICAgICdzaGlwdGltaXplLXBpY2t1cF9fZGVzY3JpcHRpb24nOiBwaWNrdXBfbGFiZWwsXG4gICAgICAgICAgICAnc2hpcHBpbmdfcGlja3VwX2lkJyA6IHBpY2t1cC5Qb2ludElkLFxuICAgICAgICAgICAgJ3NoaXBwaW5nX2NhcnJpZXJfaWQnIDogd2luZG93LmNhcnJpZXJfaWRcbiAgICAgICAgfTtcblxuICAgICAgICBqUXVlcnkuZ2V0SlNPTih0aGlzLmFqYXhfdXJsLCByZXEgLCAgKGRhdGEpICA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVzcGVvb29vbyBzYW0gemVtb1wiKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICB9KS5mYWlsKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRmF0YWwgZXJyb3Igd2lkZ2V0IHJlcXVlc3RpbmcgcG9pbnRzIGRvIHdlIGhhdmUgYW4gQVBJIGJ1Zz9cIixlcnIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gIyNESkRKIE92ZGVlZVxuICAgICAgICAvLyBqUXVlcnkoXCIjc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uXCIpLmh0bWwoXCJTZWxlY2V0ZCBwaWNrdXBcIiArIFwiIDogXCIgK3BpY2t1cF9sYWJlbCk7XG4gICAgICAgIGpRdWVyeShcIiNzaGlwdGltaXplLXBpY2t1cF9fZGVzY3JpcHRpb25cIikuaHRtbChzaGlwdGltaXplX3NlbGVjdCArIFwiIDogXCIgK3BpY2t1cF9sYWJlbCk7XG4gICAgICAgIGpRdWVyeShcIiNzaGlwcGluZ19waWNrdXBfaWRcIikudmFsKHBpY2t1cC5Qb2ludElkKTtcbiAgICAgICAgalF1ZXJ5KFwiI3NoaXBwaW5nX3BpY2t1cF9sYWJlbFwiKS52YWwocGlja3VwX2xhYmVsKTsgXG5cbiAgICAgICAgalF1ZXJ5KFwiI3NoaXB0aW1pemVwaWNrdXBcIikudmFsKHBpY2t1cC5Qb2ludElkKTsgXG5cbiAgICAgICAgLy8gSXMgdGhlcmUgZXh0cmEgaW5mbyA/IFxuICAgICAgICBpZiAoIGpRdWVyeSgnLnNoaXB0aW1pemVfbWFwZmllbGRzJyArIHBpY2t1cC5Qb2ludElkKS5sZW5ndGggPiAwICkgIHtcbiAgICAgICAgICAgIGpRdWVyeSgnI3NoaXBwaW5nX3BpY2t1cF9leHRlbmRlZCcpLnZhbChqUXVlcnkoJy5zaGlwdGltaXplX21hcGZpZWxkcycgKyBwaWNrdXAuUG9pbnRJZCkudmFsKCkpOyBcbiAgICAgICAgfSBcbiAgICB9XG59IiwiaW1wb3J0IFV0aWxzIGZyb20gJy4vc2hpcHRpbWl6ZS11dGlscy5qcyc7XG5pbXBvcnQgTCBmcm9tICcuL2xlYWZsZXQtMS40LjAnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGlwdGltaXplT3Blbk1hcCB7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBzaGlwdGltaXplKSB7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJPUEVOTUFQQ09OU1RSVUNUMjIyMlwiKTtcblxuICAgICAgICB0aGlzLnNoaXB0aW1pemUgPSBzaGlwdGltaXplO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLm1hcCA9IG51bGw7XG4gICAgICAgIHRoaXMuaG9zdCA9IG9wdGlvbnMuaG9zdCB8fCAnaHR0cHM6Ly9teS5zaGlwdGltaXplLm1lJztcbiAgICAgICAgdGhpcy5pY29uX2ZvbGRlciA9IHR5cGVvZiAoc2hpcHRpbWl6ZV9pY29uX2ZvbGRlcikgIT09ICd1bmRlZmluZWQnID8gc2hpcHRpbWl6ZV9pY29uX2ZvbGRlciA6ICcnO1xuICAgICAgICB0aGlzLm1hcFdyYXBwZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnN0eWxlUGF0aCA9IG9wdGlvbnMuc3R5bGVQYXRoIHx8IHRoaXMuaG9zdCArICcvc2hvcHN5c3RlbXMvdjIvYXNzZXRzL3NoaXB0aW1pemV3aWRnZXQuY3NzJztcbiAgICAgICAgdGhpcy5tYXJrZXJzID0gW107XG4gICAgICAgIHRoaXMucGlja3VwUG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuY2Fycmllcl9pY29uX2NvbmZpZyA9IHtcbiAgICAgICAgICAgIDMwIDoge1xuICAgICAgICAgICAgICAgIGV4dGVuc2lvbjonc3ZnJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGljb25TaXplOiBbMzIsMzJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNjggOiB7XG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uOidzdmcnLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemU6IFs1Nyw5Ml1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA3MToge1xuICAgICAgICAgICAgICAgIGV4dGVuc2lvbjonc3ZnJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGljb25TaXplOiBbNTcsOTJdXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQb2ludElkeCA9IG51bGw7XG4gICAgICAgIHRoaXMubW92ZUxpc3RlbmVycyA9IFtdO1xuICAgICAgICB0aGlzLmlzTW92aW5nID0gZmFsc2U7IC8qIFRoZSBtYXAgaXMgbG9hZGluZyBwb2ludHMgKi9cbiAgICAgICAgdGhpcy5pc1VzZXJNb3ZpbmcgPSBmYWxzZTsgLyogVGhlIHVzZXIgaXMgbW92aW5nIHRoZSBtYXAgKi9cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBudWxsO1xuXG4gICAgfVxuXG4gICAgc2V0Q2FycmllcklkKGNhcnJpZXJfaWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJPUEVOTUFQQ0FSUklFUklEXCIpXG4gICAgICAgIHRoaXMuY2Fycmllcl9pZCA9IGNhcnJpZXJfaWQ7XG4gICAgICAgIHRoaXMuY3VycmVudF9pY29uID0gdGhpcy5nZXRDYXJyaWVySWNvbk9mVHlwZSh0aGlzLmNhcnJpZXJfaWQpXG4gICAgfTtcblxuICAgIHNlbGVjdFBvaW50KGlkeCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlNlbGVjdCBwb2ludFwiKVxuICAgICAgICBjb25zb2xlLmxvZyhpZHgpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFBvaW50SWR4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubWFya2Vyc1t0aGlzLnNlbGVjdGVkUG9pbnRJZHhdLnNldEljb24odGhpcy5nZXRDYXJyaWVySWNvbk9mVHlwZSh0aGlzLmNhcnJpZXJfaWQsIHRoaXMucGlja3VwUG9pbnRzW3RoaXMuc2VsZWN0ZWRQb2ludElkeF0uVHlwZSwwKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkUG9pbnRJZHggPSBpZHg7XG4gICAgICAgIHRoaXMubWFya2Vyc1tpZHhdLnNldEljb24odGhpcy5nZXRDYXJyaWVySWNvbk9mVHlwZSh0aGlzLmNhcnJpZXJfaWQsIHRoaXMucGlja3VwUG9pbnRzW2lkeF0uVHlwZSwxKSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0cmluZyBpbWFnZVVybCAtIGZ1bGwgdXJsIHRvIHRoZSBpY29uXG4gICAgICogQHJldHVybiBMLmljb24gb2JqZWN0XG4gICAgICovXG4gICAgY3JlYXRlSWNvbihpbWFnZVVybCkge1xuXG4gICAgICAgIGxldCBpY29uU2l6ZSA9IHR5cGVvZih0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbdGhpcy5jYXJyaWVyX2lkXSkgIT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMuY2Fycmllcl9pY29uX2NvbmZpZ1t0aGlzLmNhcnJpZXJfaWRdLmljb25TaXplIDogNTA7XG4gICAgICAgIHJldHVybiBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogaW1hZ2VVcmwsXG4gICAgICAgICAgICBpY29uU2l6ZTogW2ljb25TaXplLCBpY29uU2l6ZV0sIC8qIHNpemUgb2YgdGhlIGljb24gKi9cbiAgICAgICAgICAgIGljb25BbmNob3I6IFtpY29uU2l6ZSAvIDIsIGljb25TaXplXSwgLyogcG9pbnQgb2YgdGhlIGljb24gd2hpY2ggd2lsbCBjb3JyZXNwb25kIHRvIG1hcmtlcidzIGxvY2F0aW9uICovXG4gICAgICAgICAgICBwb3B1cEFuY2hvcjogWy0xICogaWNvblNpemUgLyAyLCAtMSAqIGljb25TaXplIC8gMl0gLyogcG9pbnQgZnJvbSB3aGljaCB0aGUgcG9wdXAgc2hvdWxkIG9wZW4gcmVsYXRpdmUgdG8gdGhlIGljb25BbmNob3IgKi9cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBzZXRab29tID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5tYXAuc2V0Wm9vbSh6b29tKTtcbiAgICB9XG5cbiAgICBpc01hcE1vdmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb3ZpbmcgfHwgdGhpcy5pc1VzZXJNb3Zpbmc7XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRlY2ltYWwgbGF0XG4gICAgICogQHBhcmFtIGRlY2ltYWwgbG5nXG4gICAgICovXG4gICAgY2VudGVyTWFwKGxhdCwgbG5nKSB7XG5cbiAgICAgICAgbGV0IGxhdGxuZyA9IEwubGF0TG5nKGxhdCwgbG5nKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGlmIHRoZSBzY3JpcHQgaGFzIG5vdCBiZWVuIGxvYWRlZCAsIGxvYWQgaXQuXG4gICAgICogV2UgdXNlIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gbG9hZCB0aGUgc2NyaXB0IHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBidXR0b25cbiAgICAgKi9cbiAgICAvLyAjI0RKREogUHJvdmVyaSByYWRpIGxpIGJleiBvdm9nYVxuICAgIGdyYW50UmVhZHkoKSB7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzU2NyaXB0TG9hZGVkKSB7XG5cbiAgICAgICAgICAgIHRoaXMubG9hZFNjcmlwdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC8vICMjREpESiBCcG9zdCBzdHVmZlxuICAgIGdlb2NvZGVCcG9zdCAocXVlcnlwYXJ0cywgZmNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiQlBPU1RHRU9DT0RFXCIpO1xuICAgICAgICB0aGlzLl9nZW9jb2RlKHF1ZXJ5cGFydHMuYWRkcmVzcywgZmNhbGxiYWNrKTtcbiAgICB9O1xuXG4gICAgX2dlb2NvZGUgKHF1ZXJ5cGFydHMsIGZjYWxsYmFjaykge1xuXG4gICAgICAgIGpRdWVyeS5nZXRKU09OKCdodHRwczovL2Jwb3N0ZGV2LnNoaXB0aW1pemUubWUvc2hvcHN5c3RlbXMvdjIvc2hvcGlmeS9icG9zdGdlb2NvZGU/c2VhcmNoVGV4dD0nICsgcXVlcnlwYXJ0cywge30sIGZ1bmN0aW9uKHJlc3ApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3AucmVzcG9uc2UpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICAgICAgICAgIGlmIChyZXNwLnJlc3BvbnNlICYmIHJlc3AucmVzcG9uc2UudG9wU3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygxKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwKTtcbiAgICAgICAgICAgICAgICBsZXQgcGxhY2VzID0gcmVzcC5yZXNwb25zZS50b3BTdWdnZXN0aW9ucztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsYWNlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAvLyAjI0RKREogVnJhdGkgb3ZvIGtha28gamUgYmlsbyBtb3pkYT9cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWNlc1tpXS5hZGRyZXNzLnNlYXJjaEJhclN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiAoaW5kZXggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coMik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlzcGxheV9uYW1lXCI6IHBsYWNlc1tpXS5hZGRyZXNzLnNlYXJjaEJhclN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3NcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXR5OiBwbGFjZXNbaV0uYWRkcmVzcy5tdW5pY2lwYWxpdHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5OiAnYmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0YWxDb2RlOiBwbGFjZXNbaV0uYWRkcmVzcy5wb3N0YWxDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjI0RKREogT3ZvIGlzdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWV0bmFtZTE6IHBsYWNlc1tpXS5hZGRyZXNzLnNlYXJjaEJhclN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGF0XCI6IHBsYWNlc1tpXS5hZGRyZXNzLmxhdGl0dWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG5nXCI6IHBsYWNlc1tpXS5hZGRyZXNzLmxvbmdpdHVkZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmV6dWx0YXRpXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG5cbiAgICAgICAgICAgIGZjYWxsYmFjayAmJiBmY2FsbGJhY2socmVzdWx0cyk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cblxuICAgIC8vICMjREpESiBTaGlwdGltaXplIHBhcnRcbiAgICBnZW9jb2RlIChxdWVyeXBhcnRzLCBmY2FsbGJhY2spIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHRU9DT0RFIEZVTkNUSU9OXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhxdWVyeXBhcnRzKTtcbiAgICAgICAgbGV0IHF1ZXJ5dmFsID0gcXVlcnlwYXJ0cy5hZGRyZXNzO1xuICAgICAgICBsZXQgcXVlcnkgPSBcIlwiO1xuXG4gICAgICAgIGNvbnN0IGNvdW50cnkgID0gcXVlcnlwYXJ0cy5jb3VudHJ5ID8gcXVlcnlwYXJ0cy5jb3VudHJ5LnRvTG93ZXJDYXNlKCkgOiBudWxsO1xuXG4gICAgICAgIGlmKHF1ZXJ5dmFsLm1hdGNoKC9eKFswLTlcXC1dKykkLykpIHtcbiAgICAgICAgICAgIGlmIChxdWVyeXBhcnRzLmNvdW50cnkgPT0gJ1BvcnR1Z2FsJyAmJiB0eXBlb2YobWlzc2luZ1ppcFBUKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIC8qIElzIHRoaXMgYSBwb3N0YWwgY29kZSB3ZSBrbm93IGlzIG5vdCBnZW9jb2RhYmxlIGluIG5vbWluYXRpbT8gKi9cbiAgICAgICAgICAgICAgICBsZXQgemlwNGRpZyA9IHF1ZXJ5dmFsLnN1YnN0cmluZygwLDQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxtaXNzaW5nWmlwUFQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYobWlzc2luZ1ppcFBUW2ldLnppcGNvZGUgPT0gemlwNGRpZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlc3VsdHMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNwbGF5X25hbWVcIjogbWlzc2luZ1ppcFBUW2ldLmRpc3BsYXlfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxhdFwiOiBtaXNzaW5nWmlwUFRbaV0ubGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9uXCI6IG1pc3NpbmdaaXBQVFtpXS5sbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmNhbGxiYWNrKFt0aGlzLnF1ZXJ5UmVzdWx0c10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVlcnkgPSAncG9zdGFsY29kZT0nICsgcXVlcnl2YWwgKyAnJmNvdW50cnk9JyArIGNvdW50cnk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY291bnRyeSkge1xuICAgICAgICAgICAgcXVlcnkgPSAncT0nICsgcXVlcnl2YWw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2cocXVlcnkpO1xuXG4gICAgICAgIGpRdWVyeShcIiNzdy1xdWVyeS1yZXN1bHRzXCIpLmh0bWwoJzxkaXYgY2xhc3M9XCJzdy1sb2FkZXJcIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj4nKTtcbiAgICAgICAgalF1ZXJ5LmdldEpTT04oXCJodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/Zm9ybWF0PWpzb24mYWRkcmVzc2RldGFpbHM9MSZcIiArIHF1ZXJ5LCAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlenVsdGF0XCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICAgIGlmIChyZXMubGVuZ3RoID09IDAgJiYgIHF1ZXJ5dmFsLm1hdGNoKC9eKFswLTlcXC1dKykkLykgJiYgKGNvdW50cnkudG9VcHBlckNhc2UoKSA9PSAnUFQnIHx8IGNvdW50cnkudG9Mb3dlckNhc2UoKSA9PSAncG9ydHVnYWwnKSkge1xuICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzdy1xdWVyeVwiKS52YWwocXVlcnl2YWwuc3Vic3RyaW5nKDAsNCkpO1xuICAgICAgICAgICAgICAgLy8gIyNESkRKIFRoaXMgaXMgbWlzc2luZ1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VvY29kZVF1ZXJ5KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UmVzdWx0cyA9IFtdO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJURVNUVEVTVE9WREVcIik7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCByZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIk9WQUogUkVTUE9OU0VcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzW2ldKTtcbiAgICAgICAgICAgICAgICBjb25zdCB3YW50ZWQgPSByZXNbaV0uYWRkcmVzcy5wb3N0Y29kZSB8fCByZXNbaV0uYWRkcmVzcy5jaXR5IHx8IHJlc1tpXS5hZGRyZXNzLmNvdW50eTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNbaV0uYWRkcmVzcy5jb3VudHJ5LnRvTG93ZXJDYXNlKCkgPT0gY291bnRyeS50b0xvd2VyQ2FzZSgpICYmIHdhbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIklGIFdBTlRFRFwiKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vbUFkZHIgPSAgcmVzW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJlZXQgPSB0eXBlb2Yobm9tQWRkci5hZGRyZXNzLnJvYWQpICE9ICd1bmRlZmluZWQnID8gbm9tQWRkci5hZGRyZXNzLnJvYWQgOiBub21BZGRyLmRpc3BsYXlfbmFtZTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlzcGxheV9uYW1lID0gKHN0cmVldD8gc3RyZWV0IDogJycpICsgJyAnICsgKG5vbUFkZHIuYWRkcmVzcy5wb3N0Y29kZSA/IG5vbUFkZHIuYWRkcmVzcy5wb3N0Y29kZSA6ICcnKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKG5vbUFkZHIuYWRkcmVzcy5jaXR5KSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSU1BIEdSQURcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfbmFtZSArPSAgJyAnICsgbm9tQWRkci5hZGRyZXNzLmNpdHk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2Yobm9tQWRkci5hZGRyZXNzLnJlZ2lvbikgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIklNQSBSRUdJT05cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfbmFtZSArPSAnICcgKyBub21BZGRyLmFkZHJlc3MucmVnaW9uO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vbUFkZHIuYWRkcmVzcy5jb3VudHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSU1BIENPVU5UWVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9uYW1lICs9ICcgJyArIG5vbUFkZHIuYWRkcmVzcy5jb3VudHk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlwYXJ0cy5jb3VudHJ5LnRvTG93ZXJDYXNlKCkgIT09IG5vbUFkZHIuYWRkcmVzcy5jb3VudHJ5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfbmFtZSArPSBcIiBcIiArIG5vbUFkZHIuYWRkcmVzcy5jb3VudHJ5X2NvZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlzcGxheV9uYW1lXCI6IGRpc3BsYXlfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2l0eTogbm9tQWRkci5hZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRyeTogbm9tQWRkci5hZGRyZXNzLmNvdW50cnlfY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0YWxDb2RlOiBub21BZGRyLmFkZHJlc3MucG9zdGNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWV0bmFtZTE6IHN0cmVldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZTogbm9tQWRkci5hZGRyZXNzLnJlZ2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGF0XCI6IG5vbUFkZHIubGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsbmdcIjpub21BZGRyLmxvblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGZjYWxsYmFjayk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXJ5UmVzdWx0cyk7XG5cbiAgICAgICAgICAgIGZjYWxsYmFjayAmJiBmY2FsbGJhY2sodGhpcy5xdWVyeVJlc3VsdHMpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZfY2FsbGJhY2sgd2hhdCBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgcmVzb2x2ZXNcbiAgICAgKiBAcGFyYW0gY2l0eSAtIGNpdHkgbmFtZVxuICAgICAqIEBwYXJhbSBjb3VudHJ5IC0gY291bnRyeSBpbiBpc28yIHVwcGVyY2FzZVxuICAgICAqIEBwYXJhbSBwb3N0YWxjb2RlIC0gdGhlIHBvc3RhbCBjb2RlXG4gICAgICogQHBhcmFtIHN0cmVldG5hbWUgLSB0aGUgc3RyZWV0bmFtZVxuICAgICAqL1xuICAgIGdlb2NvZGVBZGRyZXNzKGZfY2FsbGJhY2ssIGNpdHksIGNvdW50cnksIHBvc3RhbGNvZGUsIHN0cmVldG5hbWUpIHtcblxuICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSBcImh0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZhZGRyZXNzZGV0YWlscz0xXCIgK1xuICAgICAgICAgICAgXCImY2l0eT1cIiArIGNpdHkgK1xuICAgICAgICAgICAgXCImY291bnRyeT1cIiArIGNvdW50cnk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiAocG9zdGFsY29kZSkgIT09ICd1bmRlZmluZWQnKSB7XG5cbiAgICAgICAgICAgIGlmIChjb3VudHJ5ID09ICdQVCcgfHwgY291bnRyeSA9PSAnUG9ydHVnYWwnKSB7XG5cbiAgICAgICAgICAgICAgICBwb3N0YWxjb2RlID0gcG9zdGFsY29kZS5zdWJzdHIoMCwgNCk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9IFwiJnBvc3RhbGNvZGU9XCIgKyBwb3N0YWxjb2RlO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIChzdHJlZXRuYW1lKSAhPT0gJ3VuZGVmaW5lZCcpIHtcblxuICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gXCImc3RyZWV0PVwiICsgc3RyZWV0bmFtZTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZihidG9hKSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mKHRoaXMuYWRkcmVzc19jYWNoZVtidG9hKHF1ZXJ5U3RyaW5nKV0pICE9PSAndW5kZWZpbmVkJykge1xuXG4gICAgICAgICAgICBmX2NhbGxiYWNrKHRoaXMuYWRkcmVzc19jYWNoZVtidG9hKHF1ZXJ5U3RyaW5nKV0pO1xuXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG5cbiAgICAgICAgICAgIGpRdWVyeS5nZXRKU09OKHF1ZXJ5U3RyaW5nLCB7fSwgKHJlc3BvbnNlKSA9PiAge1xuXG4gICAgICAgICAgICAgICAgbGV0IGdlb2NvZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICdpc28yJzogJycsXG4gICAgICAgICAgICAgICAgICAgICdsYXQnOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2xuZyc6ICcnXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmVzcG9uc2VbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgZ2VvY29kZS5pc28yID0gbG9jYXRpb24uYWRkcmVzcy5jb3VudHJ5X2NvZGU7XG5cbiAgICAgICAgICAgICAgICAgICAgZ2VvY29kZS5sYXQgPSBsb2NhdGlvbi5sYXQ7XG4gICAgICAgICAgICAgICAgICAgIGdlb2NvZGUubG5nID0gbG9jYXRpb24ubG9uO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzX2NhY2hlW2J0b2EocXVlcnlTdHJpbmcpXSA9IGdlb2NvZGU7XG4gICAgICAgICAgICAgICAgZl9jYWxsYmFjayhnZW9jb2RlKTtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIC8vICMjREpESiBCcG9zdFxuICAgIGdlb2NvZGVBZGRyZXNzUGFydHNCcG9zdCAoZmNhbGxiYWNrLCBjaXR5LCBjb3VudHJ5LCBwb3N0YWxjb2RlLCBzdHJlZXRuYW1lKSB7XG4gICAgICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkFkZHJlc3MgcGFydHMgYnBvc3RcIik7XG5cbiAgICAgICAgaWYgKHR5cGVvZihzdHJlZXRuYW1lKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gZW5jb2RlVVJJKHN0cmVldG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZihwb3N0YWxjb2RlKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gXCIsXCIgKyBwb3N0YWxjb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZ2VvY29kZShxdWVyeVN0cmluZywgZnVuY3Rpb24ocmVzdWx0cykge1xuICAgICAgICAgICAgbGV0IGxhdGxuID0geyBsYXQ6MCwgbG5nOjB9O1xuICAgICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxhdGxuID0ge2xhdDogcmVzdWx0c1swXS5sYXRpdHVkZSwgbG5nOiByZXN1bHRzWzBdLmxvbmdpdHVkZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmNhbGxiYWNrICYmIGZjYWxsYmFjayhsYXRsbik7XG4gICAgICAgIH0pO1xuXG4gICAgfTtcblxuICAgIC8vICMjREpESiBTaGlwdGltaXplIGNvZGVcbiAgICBnZW9jb2RlQWRkcmVzc1BhcnRzIChmX2NhbGxiYWNrLCBjaXR5LCBjb3VudHJ5LCBwb3N0YWxjb2RlLCBzdHJlZXRuYW1lKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiQUREUkVTU1BBUlRTIE1JQ09cIik7XG4gICAgICAgIGNvbnNvbGUubG9nKGNpdHkpO1xuICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSBcImh0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZhZGRyZXNzZGV0YWlscz0xXCIgK1xuICAgICAgICAgICAgXCImY2l0eT1cIiArIGNpdHkgK1xuICAgICAgICAgICAgXCImY291bnRyeV9jb2RlPVwiICsgY291bnRyeTtcblxuICAgICAgICBpZiAodHlwZW9mIChwb3N0YWxjb2RlKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKGNvdW50cnkgPT0gJ1BUJyB8fCBjb3VudHJ5ID09ICdQb3J0dWdhbCcpIHtcbiAgICAgICAgICAgICAgICBwb3N0YWxjb2RlID0gcG9zdGFsY29kZS5zdWJzdHIoMCwgNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSBcIiZwb3N0YWxjb2RlPVwiICsgcG9zdGFsY29kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgKHN0cmVldG5hbWUpICE9ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSBcIiZzdHJlZXQ9XCIgKyBlbmNvZGVVUkkoc3RyZWV0bmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBqUXVlcnkuZ2V0SlNPTihxdWVyeVN0cmluZywge30sIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgbGV0IGdlb2NvZGUgPSB7XG4gICAgICAgICAgICAgICAgJ2lzbzInOiAnJyxcbiAgICAgICAgICAgICAgICAnbGF0JzogJycsXG4gICAgICAgICAgICAgICAgJ2xuZyc6ICcnXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHJlc3BvbnNlWzBdO1xuXG4gICAgICAgICAgICAgICAgZ2VvY29kZS5pc28yID0gbG9jYXRpb24uYWRkcmVzcy5jb3VudHJ5X2NvZGU7XG5cbiAgICAgICAgICAgICAgICBnZW9jb2RlLmxhdCA9IGxvY2F0aW9uLmxhdDtcbiAgICAgICAgICAgICAgICBnZW9jb2RlLmxuZyA9IGxvY2F0aW9uLmxvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJnZW9jb2RlICBcIiArICByZXNwb25zZS5sZW5ndGggICsgJ3Jlc3VsdHMnKTtcbiAgICAgICAgICAgIGlmKGdlb2NvZGUubGFuKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJyZXR1cm5pbmcgXCIgLCBnZW9jb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZfY2FsbGJhY2soZ2VvY29kZSk7XG5cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGxvYWRTY3JpcHQoKSB7XG5cbiAgICAgICAgVXRpbHMuaW5qZWN0RXh0ZXJuYWxTY3JpcHQoU0hJUFRJTUlaRV9QTFVHSU5fVVJMICsgXCJ2aWV3cy9qcy9sZWFmbGV0LTEuNC4wLmpzXCIpO1xuICAgICAgICB0aGlzLmlzU2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGVhZmxldCBkb2VzIG5vdCByZWNlaXZlIGEgY2FsbGJhY2sgc28gd2Ugd2FpdCBoZXJlIGZvciB0aGUgc2NyaXB0IHRvIGJlIGxvYWRlZFxuICAgICAqL1xuICAgIGluaXRNYXAoKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJMb2FkIG1hcFwiKTtcbiAgICAgICAgLy8gdGhpcy5tYXBXcmFwcGVyID0galF1ZXJ5KHRoaXMub3B0aW9ucy5tYXBQYXJlbnRDb250YWluZXIpO1xuICAgICAgICB0aGlzLm1hcFdyYXBwZXIgPSBqUXVlcnkoXCJib2R5XCIpO1xuXG4gICAgICAgIGlmICh0aGlzLm1hcFdyYXBwZXIuaGFzQ2xhc3MoJ2xlYWZsZXQtY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibWFwIHdhcyBhbHJlYWR5IGxvYWRlZFwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5pY29uX3NlbGVjdGVkID0gdGhpcy5jcmVhdGVJY29uKHRoaXMuaWNvbl9mb2xkZXIgKyAnc2VsZWN0ZWQucG5nJyk7XG4gICAgICAgIHRoaXMuaWNvbl9kZWZhdWx0ID0gdGhpcy5jcmVhdGVJY29uKHRoaXMuaWNvbl9mb2xkZXIgKyAnZGVmYXVsdC5wbmcnKTtcblxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudF9pY29uKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRfaWNvbiA9IHRoaXMuaWNvbl9kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYXAgPSBuZXcgTC5tYXAoJ3N3LW1hcCcsIHtcbiAgICAgICAgICAgIFwiem9vbVwiOiAxNixcbiAgICAgICAgICAgIFwiY2VudGVyXCI6IFs1MS41MDUsIC0wLjA5XSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywge1xuICAgICAgICAgICAgXCJhdHRyaWJ1dGlvblwiOiAnJmNvcHk7IDxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIj5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMnXG4gICAgICAgIH0pXG4gICAgICAgIC5hZGRUbyh0aGlzLm1hcCk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLm9ubWFwcmVhZHkgJiYgdGhpcy5vcHRpb25zLm9ubWFwcmVhZHkoKTtcblxuICAgICAgICB0aGlzLm1hcC5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICBqUXVlcnkoXCIuc3ctbWFwLXNlbGVjdGVkLXBvaW50XCIpLmh0bWwoXCJcIik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFwLm9uKCdtb3ZlZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMuZ2V0Q2VudGVyKCk7XG4gICAgICAgICAgICBpZighdGhpcy5pc0luQm91bmRzKGNlbnRlci5sYXQsIGNlbnRlci5sbmcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlRW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIG1vdmVFbmQoKSB7XG4gICAgICAgIGlmICggdGhpcy5pc01hcE1vdmluZygpICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJNb3ZpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgbWFwQ2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XG5cbiAgICAgICAgZm9yKGxldCBpPTA7IHRoaXMubW92ZUxpc3RlbmVycyAmJiBpIDwgdGhpcy5tb3ZlTGlzdGVuZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1vdmVMaXN0ZW5lcnNbaV0obWFwQ2VudGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTU9WRSBMSVNURU5FUlMgRU5ERURcIik7XG4gICAgICAgIHRoaXMuaXNVc2VyTW92aW5nID0gZmFsc2U7XG4gICAgfTtcblxuICAgIGFkZE1hcE1vdmVMaXN0ZW5lcihmY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5tb3ZlTGlzdGVuZXJzLnB1c2goZmNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBnZXRDZW50ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcbiAgICB9O1xuXG4gICAgaXNJbkJvdW5kcyAobGF0LCBsbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJvdW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluTGF0ID0gbGF0ID4gdGhpcy5ib3VuZHMuYm90dG9tTGVmdC5sYXQgJiYgbGF0IDwgdGhpcy5ib3VuZHMudG9wUmlnaHQubGF0O1xuICAgICAgICBsZXQgZWFzdEJvdW5kID0gbG5nIDwgdGhpcy5ib3VuZHMudG9wUmlnaHQubG5nO1xuICAgICAgICBsZXQgd2VzdEJvdW5kID0gbG5nID4gdGhpcy5ib3VuZHMuYm90dG9tTGVmdC5sbmc7XG4gICAgICAgIGxldCBpbkxuZztcblxuICAgICAgICBpZiAodGhpcy5ib3VuZHMudG9wUmlnaHQubG5nIDwgdGhpcy5ib3VuZHMuYm90dG9tTGVmdC5sbmcpIHtcbiAgICAgICAgICAgIGluTG5nID0gZWFzdEJvdW5kIHx8IHdlc3RCb3VuZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluTG5nID0gZWFzdEJvdW5kICYmIHdlc3RCb3VuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbkxuZyAmJiBpbkxhdDtcbiAgICB9O1xuICAgIGNsZWFyTWFya2VycygpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJDbGVhciBtYXJrZXJzXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm1hcCk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUG9pbnRJZHggPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLm1hcmtlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcmtlcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcih0aGlzLm1hcmtlcnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFya2VycyA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5pc01vdmluZykge1xuICAgICAgICAgICAgdGhpcy5tYXAuc2V0TWluWm9vbSgwKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIG1hcmtlcnMgdG8gbWFwXG4gICAgICogQHBhcmFtIGFycmF5IHBpY2t1cFBvaW50cyAtIGFuIGFycmF5IG9mIHBpY2t1cFBvaW50c1xuICAgICAqIEBwYXJhbSBmdW5jdGlvbiBjYWxsYmFja1xuICAgICAqL1xuICAgIGFkZE1hcmtlcnMocGlja3VwUG9pbnRzLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkFERCBNQVJLRVJTIDIzMjMyM1wiKTtcbiAgICAgICAgdGhpcy5pc01vdmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucGlja3VwUG9pbnRzID0gcGlja3VwUG9pbnRzO1xuXG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgcGlja3VwUG9pbnRzLmxlbmd0aDsgKyt4KSB7XG4gICAgICAgICAgICB0aGlzLm1hcmtlcnNbeF0gPSB0aGlzLmdldE1hcmtlcihwaWNrdXBQb2ludHNbeF0pO1xuICAgICAgICAgICAgLyogICAgd2UgbmVlZCB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIHZhbHVlcyBmb3IgbGF0LGxuZyB3ZSBoYXZlIGFyZSByb3VuZGVkLCBzbyB0aGV5IHdpbGwgbm90IG1hdGNoIHRoZSBvbmVzIHJldHVybmVkIGJ5IGdvb2dsZSAqL1xuICAgICAgICAgICAgdGhpcy5waWNrdXBQb2ludHNbeF0ubWFya2VyID0gdGhpcy5tYXJrZXJzW3hdO1xuXG4gICAgICAgICAgICB0aGlzLm1hcmtlcnNbeF0ub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGNhbGxiYWNrKSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maXRCb3VuZHMoKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhcIkdvdG92IGZpdCBib3VuZHNcIik7XG4gICAgfVxuXG4gICAgcmVzZXRNYXJrZXIobWFya2VyKSB7XG5cbiAgICAgICAgbWFya2VyLnNldEljb24odGhpcy5pY29uX2RlZmF1bHQpO1xuXG4gICAgfVxuXG4gICAgc2VsZWN0TWFya2VyKG1hcmtlcikge1xuXG4gICAgICAgIG1hcmtlci5zZXRJY29uKHRoaXMuaWNvbl9zZWxlY3RlZCk7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGp1c3QgdGhlIHpvb20gaW4gdGhlIG1hcCB0byBkaXNwbGF5IGFsbCB0aGUgbWFya2Vyc1xuICAgICAqIFRoZXJlJ3MgYSBmaXQgYm91bmRzIHRoYXQgcmVjZWl2ZXMgMiBjb3JuZXJzLCBidXQgY2FsY3VsYXRpbmcgdGhlbSBpcyB1cCB0byB1cy5cbiAgICAgKiBjb3JuZXJzOiB0b3AgbGVmdCwgYm90dG9tIHJpZ2h0XG4gICAgICogdGhlbiB3ZSBjZW50ZXIgdGhlIG1hcCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzcXVhcmVcbiAgICAgKi9cbiAgICBmaXRCb3VuZHMgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgalF1ZXJ5KCdodG1sLGJvZHknKVxuICAgICAgICAgICAgLnNjcm9sbFRvcCgwKTtcbiAgICAgICAgdGhpcy5tYXAuaW52YWxpZGF0ZVNpemUoKTtcblxuICAgICAgICAvKnRoaXMgZnVuY3Rpb24gY2hhbmdlcyB0aGUgbWFwIGNlbnRlciovXG4gICAgICAgIHRoaXMuaXNNb3ZpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgYm90dG9tTGVmdCA9IFtwYXJzZUZsb2F0KHRoaXMucGlja3VwUG9pbnRzWzBdLkxhdCksIHBhcnNlRmxvYXQodGhpcy5waWNrdXBQb2ludHNbMF0uTG9uZyldO1xuICAgICAgICBsZXQgdG9wUmlnaHQgPSBbcGFyc2VGbG9hdCh0aGlzLnBpY2t1cFBvaW50c1swXS5MYXQpLCBwYXJzZUZsb2F0KHRoaXMucGlja3VwUG9pbnRzWzBdLkxvbmcpXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGlja3VwUG9pbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBsZXQgbGF0ID0gcGFyc2VGbG9hdCh0aGlzLnBpY2t1cFBvaW50c1tpXS5MYXQpO1xuICAgICAgICAgICAgbGV0IGxuZyA9IHBhcnNlRmxvYXQodGhpcy5waWNrdXBQb2ludHNbaV0uTG9uZyk7XG5cbiAgICAgICAgICAgIGlmIChsYXQgPCBib3R0b21MZWZ0WzBdKSB7XG4gICAgICAgICAgICAgICAgYm90dG9tTGVmdFswXSA9IGxhdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxhdCA+IHRvcFJpZ2h0WzBdKSB7XG4gICAgICAgICAgICAgICAgdG9wUmlnaHRbMF0gPSBsYXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsbmcgPiB0b3BSaWdodFsxXSkge1xuICAgICAgICAgICAgICAgIHRvcFJpZ2h0WzFdID0gbG5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobG5nIDwgYm90dG9tTGVmdFsxXSkge1xuICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRbMV0gPSBsbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBjZW50ZXJYID0gYm90dG9tTGVmdFswXSArICh0b3BSaWdodFswXSAtIGJvdHRvbUxlZnRbMF0pIC8gMjtcbiAgICAgICAgbGV0IGNlbnRlclkgPSBib3R0b21MZWZ0WzFdICsgKHRvcFJpZ2h0WzFdIC0gYm90dG9tTGVmdFsxXSkgLyAyO1xuICAgICAgICB0aGlzLmNlbnRlciA9IFtjZW50ZXJYLCBjZW50ZXJZXTtcblxuICAgICAgICB0aGlzLmNlbnRlck1hcChjZW50ZXJYLGNlbnRlclkpO1xuXG4gICAgICAgIHRoaXMubWFwLmZpdEJvdW5kcyhbXG4gICAgICAgICAgICBib3R0b21MZWZ0LFxuICAgICAgICAgICAgdG9wUmlnaHRcbiAgICAgICAgXSk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSB7XG4gICAgICAgICAgICBcImJvdHRvbUxlZnRcIjogeyBsYXQ6IGJvdHRvbUxlZnRbMF0sIGxuZzogYm90dG9tTGVmdFsxXSB9LFxuICAgICAgICAgICAgXCJ0b3BSaWdodFwiOiB7IGxhdDogdG9wUmlnaHRbMF0sIGxuZzogdG9wUmlnaHRbMV0gfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8qIEdyYW50IGNoYW5nZXMgYXJlIGFwcGxpZWQgYmVmb3JlIHdlIHN0YXRlIHdlJ3JlIG5vIGxvbmdlciBtb3ZpbmcgdGhlIG1hcCBhcm91bmQgdmlhIGpzICovXG4gICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNNb3ZpbmcgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICBsZXQgem9vbSA9IDEwO1xuICAgICAgICAgICAgaWYoem9vbSAgPiAxNiB8fCB6b29tIDwgMTApIHtcbiAgICAgICAgICAgICAgICB6b29tID0gIDEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tYXAuc2V0TWluWm9vbSh6b29tKTtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJtYXAgem9vbSBpcyBcIiAsIHpvb20pO1xuXG4gICAgICAgIH0sMTAwMCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cblxuICAgIGdldEljb24ocGlja3VwUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHBpY2t1cFBvaW50LlR5cGUgPiAwID8gdGhpcy5nZXRDYXJyaWVySWNvbk9mVHlwZSh0aGlzLmNhcnJpZXJfaWQsIHBpY2t1cFBvaW50LlR5cGUpIDogdGhpcy5jdXJyZW50X2ljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgbWFya2VyIGZvciB0aGUgb3BlbkxheWVyc1xuICAgICAqIEljb25BbmNob3I6IFRoZSBjb29yZGluYXRlcyBvZiB0aGUgXCJ0aXBcIiBvZiB0aGUgaWNvbiAocmVsYXRpdmUgdG8gaXRzIHRvcCBsZWZ0IGNvcm5lcikuXG4gICAgICogVGhlIGljb24gd2lsbCBiZSBhbGlnbmVkIHNvIHRoYXQgdGhpcyBwb2ludCBpcyBhdCB0aGUgbWFya2VyJ3MgZ2VvZ3JhcGhpY2FsIGxvY2F0aW9uLlxuICAgICAqIENlbnRlcmVkIGJ5IGRlZmF1bHQgaWYgc2l6ZSBpcyBzcGVjaWZpZWQsIGFsc28gY2FuIGJlIHNldCBpbiBDU1Mgd2l0aCBuZWdhdGl2ZSBtYXJnaW5zLlxuICAgICAqL1xuICAgIGdldE1hcmtlcihwaWNrdXBQb2ludCkge1xuXG4gICAgICAgIGxldCBtYXJrZXIgPSBMLm1hcmtlcihbcGlja3VwUG9pbnQuTGF0LCBwaWNrdXBQb2ludC5Mb25nXSwge1xuICAgICAgICAgICAgXCJpY29uXCI6IHRoaXMuZ2V0SWNvbihwaWNrdXBQb2ludCksXG4gICAgICAgICAgICBcInRpdGxlXCI6IHBpY2t1cFBvaW50LkluZm9ybWF0aW9uLk5hbWUgKyBcIlxcblwiICsgcGlja3VwUG9pbnQuSW5mb3JtYXRpb24uQWRkcmVzc1xuICAgICAgICB9KTtcbiAgICAgICAgbWFya2VyLmFkZFRvKHRoaXMubWFwKTtcbiAgICAgICAgcmV0dXJuIG1hcmtlcjtcbiAgICB9XG5cblxuICAgIGdldENhcnJpZXJJY29uT2ZUeXBlKGNhcnJpZXJfaWQsdHlwZSxzZWxlY3RlZCl7XG4gICAgICAgIHZhciBhbGxvd2VkVHlwZXMgPSBbMSwyLDQsMTYsOTkwXTtcbiAgICAgICAgbGV0IGNhcnJpZXJfaWNvbl91cmw7XG5cbiAgICAgICAgbGV0IGZpbGVfZXh0ZW5zaW9uID0gJy4nICsgKCB0eXBlb2YodGhpcy5jYXJyaWVyX2ljb25fY29uZmlnW2NhcnJpZXJfaWRdKSAhPSAndW5kZWZpbmVkJyA/IHRoaXMuY2Fycmllcl9pY29uX2NvbmZpZ1tjYXJyaWVyX2lkXS5leHRlbnNpb24gOiBcInBuZ1wiICk7XG4gICAgICAgIGxldCBzZWxlY3RlZGV4dGVuc2lvbiA9IHR5cGVvZih0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbY2Fycmllcl9pZF0pICE9ICd1bmRlZmluZWQnICAmJiB0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbY2Fycmllcl9pZF0uc2VsZWN0ZWRTdGF0ZSAgJiYgc2VsZWN0ZWQ/ICdfcycgOiAnJztcbiAgICAgICAgaWYgKHNlbGVjdGVkICYmICFzZWxlY3RlZGV4dGVuc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaWNvbl9zZWxlY3RlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICMjREpESlxuICAgICAgICAvLyAjI1RoaXMgaXMgZm9yIHRoZSBfMSBvciB0aGUgXzIgYW5kIHN0dWZmIGFkZGVkIHRvIHRoZSBpbWcsIHdpbGwgbmVlZCB0byBkZWZpbmUgc29tZSB3YXkgdG8gZG8gaXQgd2l0aG91dCB0aGUgY2FycmllciBmb2xkZXJcbiAgICAgICAgaWYgKHR5cGUgICYmIGFsbG93ZWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgY2Fycmllcl9pY29uX3VybCA9IHRoaXMuaWNvbl9mb2xkZXIgKyAnJyArIGNhcnJpZXJfaWQgKyAnXycgKyB0eXBlICsgc2VsZWN0ZWRleHRlbnNpb24gKyBmaWxlX2V4dGVuc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhcnJpZXJfaWNvbl91cmwgPSB0aGlzLmljb25fZm9sZGVyICsgY2Fycmllcl9pZCArICBzZWxlY3RlZGV4dGVuc2lvbiArIGZpbGVfZXh0ZW5zaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSWNvbihjYXJyaWVyX2ljb25fdXJsKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHdlIGhhdmUgYW4gaWNvbiBmb3IgdGhpcyBjYXJyaWVyLlxuICAgICAqIElmIHllcyB0aGVuIGNoYW5nZSB0aGUgY2FycmllciBpY29uXG4gICAgICogSWYgbm90IHRoZW4gdXNlIHRoZSBkZWZhdWx0IGljb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbnQgY2Fycmllcl9pZCAtIHRoZSBjYXJyaWVyIGlkXG4gICAgICovXG4gICAgc2V0Q2Fycmllckljb24oY2Fycmllcl9pZCkge1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU2V0Q2Fycmllckljb25cIilcblxuICAgICAgICBpZiAodHlwZW9mIChMKSA9PT0gJ3VuZGVmaW5lZCcpIHtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldENhcnJpZXJJY29uKGNhcnJpZXJfaWQpO1xuXG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYXJyaWVyX2lkID0gY2Fycmllcl9pZDtcbiAgICAgICAgbGV0IGNhcnJpZXJfaWNvbl91cmwgPSB0aGlzLmljb25fZm9sZGVyICsgJycgKyBjYXJyaWVyX2lkICsgJy5wbmcnO1xuICAgICAgICBpZih0eXBlb2YodGhpcy5jYWNoZV9pY29uX3ZhbGlkW2NhcnJpZXJfaWNvbl91cmxdKSA9PT0gJ3VuZGVmaW5lZCcpIHtcblxuICAgICAgICAgICAgdGhpcy5jYWNoZV9pY29uX3ZhbGlkW2NhcnJpZXJfaWNvbl91cmxdID0gVXRpbHMuY2Fycmllckljb25FeGlzdHMoY2Fycmllcl9pZCwgJycsIHRoaXMuaWNvbl9mb2xkZXIpO1xuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50X2ljb24gPSB0aGlzLmNhY2hlX2ljb25fdmFsaWRbY2Fycmllcl9pY29uX3VybF0gPyB0aGlzLmNyZWF0ZUljb24oY2Fycmllcl9pY29uX3VybCkgOiB0aGlzLmljb25fZGVmYXVsdDtcblxuICAgIH1cblxuXG5cbn0iLCJpbXBvcnQgU2hpcHRpbWl6ZVdpZGdldCBmcm9tIFwiLi9zaGlwdGltaXplLXdpZGdldFwiO1xuY2xhc3MgU2hpcHRpbWl6ZUdtYXBzIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRW50ZXJlZFwiKTtcbiAgICAgICAgdGhpcy5pc1NjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1hcmtlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5tYXAgPSBudWxsO1xuICAgICAgICB0aGlzLnBpY2t1cFBvaW50cyA9IFtdO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmhvc3QgPSBvcHRpb25zLmhvc3Q7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiSWNvbiBmb2xkZXJcIilcbiAgICAgICAgY29uc29sZS5sb2coc2hpcHRpbWl6ZV9pY29uX2ZvbGRlcik7XG4gICAgICAgIHRoaXMuaWNvbl9mb2xkZXIgPSB0eXBlb2YgKHNoaXB0aW1pemVfaWNvbl9mb2xkZXIpICE9PSAndW5kZWZpbmVkJyA/IHNoaXB0aW1pemVfaWNvbl9mb2xkZXIgOiAnJztcbiAgICAgICAgdGhpcy5pY29uX3NlbGVjdGVkID0gdGhpcy5pY29uX2ZvbGRlciArICdzZWxlY3RlZC5wbmcnO1xuICAgICAgICB0aGlzLmljb25fZGVmYXVsdCA9IHRoaXMuaWNvbl9mb2xkZXIgKyAnZGVmYXVsdC5wbmcnO1xuICAgICAgICB0aGlzLmN1cnJlbnRfaWNvbiA9IHRoaXMuaWNvbl9kZWZhdWx0O1xuICAgICAgICB0aGlzLm1vdmVMaXN0ZW5lcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jYXJyaWVyX2lkID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYXJyaWVyX2ljb25fY29uZmlnID0ge1xuICAgICAgICAgICAgMzA6IHtcbiAgICAgICAgICAgICAgICBleHRlbnNpb246ICdzdmcnLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemU6IDk4XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zaGlwdGltaXplV2lkZ2V0ID0gbmV3IFNoaXB0aW1pemVXaWRnZXQob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaW5pdE1hcChjYXJyaWVyX2lkLCBmX2NhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuY2Fycmllcl9pZCA9IGNhcnJpZXJfaWQ7XG4gICAgICAgIGxldCBtZSA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5sb2FkU2NyaXB0KFwiaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT1cIiArIHRoaXMub3B0aW9ucy5nbWFwc2tleSArIFwiJmNhbGxiYWNrPVwiLCAgKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJVU0FPIFUgSUZcIik7XG4gICAgICAgICAgICBtZS5pc1NjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICBmX2NhbGxiYWNrICYmIGZfY2FsbGJhY2soKTtcbiAgICAgICAgICAgIHRoaXMubG9hZE1hcCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZyhcIkluaXRtYXAgTmlqZSB1c2FvIHUgaWZcIik7XG5cbiAgICB9O1xuXG4gICAgbG9hZFNjcmlwdCh1cmwsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG5cbiAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlKSB7IC8qSUUgKi9cbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09ICdsb2FkZWQnIHx8IHNjcmlwdC5yZWFkeVN0YXRlID09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNhbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmw7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH07XG5cbiAgICBhZGRNYXJrZXJzKHBpY2t1cFBvaW50cywgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5waWNrdXBQb2ludHMgPSBwaWNrdXBQb2ludHM7XG5cbiAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCBwaWNrdXBQb2ludHMubGVuZ3RoOyArK3gpIHtcbiAgICAgICAgICAgIHRoaXMubWFya2Vyc1t4XSA9IHRoaXMuZ2V0TWFya2VyKHBpY2t1cFBvaW50c1t4XSk7XG4gICAgICAgICAgICBwaWNrdXBQb2ludHNbeF0ubWFya2VyID0gdGhpcy5tYXJrZXJzW3hdO1xuXG4gICAgICAgICAgICB0aGlzLm1hcmtlcnNbeF0uYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGNhbGxiYWNrKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZml0Qm91bmRzKCk7XG4gICAgfTtcblxuICAgIGFkZE1hcE1vdmVMaXN0ZW5lcihmY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5tb3ZlTGlzdGVuZXJzLnB1c2goZmNhbGxiYWNrKTtcbiAgICB9O1xuXG4gICAgY2VudGVyTWFwKGxhdCwgbG5nKSB7XG4gICAgICAgIHRoaXMubWFwLnNldENlbnRlcihuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGxhdCwgbG5nKSk7XG4gICAgfTtcblxuICAgIGNsZWFyTWFya2VycygpIHtcbiAgICAgICAgaWYgKHRoaXMubWFya2Vycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFya2Vycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya2Vyc1tpXS5zZXRNYXAobnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubWFya2VycyA9IFtdO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZpdEJvdW5kcygpIHtcbiAgICAgICAgdmFyIGJvdW5kcyA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKTtcbiAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLm1hcmtlcnMubGVuZ3RoOyArK3gpIHtcbiAgICAgICAgICAgIGJvdW5kcy5leHRlbmQodGhpcy5tYXJrZXJzW3hdLmdldFBvc2l0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFwLmZpdEJvdW5kcyhib3VuZHMpO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IHRoaXMubWFwLmdldEJvdW5kcygpO1xuICAgIH07XG5cbiAgICBnZXRNYXJrZXIocGlja3VwUG9pbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHRVRNQVJLRVJcIilcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuZ2V0Q2Fycmllckljb25VcmwocGlja3VwUG9pbnQuVHlwZSwgMCk7XG4gICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcocGlja3VwUG9pbnQuTGF0LCBwaWNrdXBQb2ludC5Mb25nKSxcbiAgICAgICAgICAgIG1hcDogdGhpcy5tYXAsXG4gICAgICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vICMjREpESiBBa28gbmlzdGEgb2RyYWRpIGthbyBpIHUgb3BlbiBtYXBcbiAgICAgICAgY29uc29sZS5sb2coXCJQUkUgSUZcIik7XG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuY2Fycmllcl9pY29uX2NvbmZpZ1t0aGlzLmNhcnJpZXJfaWRdKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJJRiBHRVQgTUFSS0VSXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jYXJyaWVyX2ljb25fY29uZmlnKVxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jYXJyaWVyX2ljb25fY29uZmlnW3RoaXMuY2Fycmllcl9pZF0uaWNvblNpemUpXG4gICAgICAgICAgICBvcHRpb25zLmljb24uc2l6ZSA9IG5ldyBnb29nbGUubWFwcy5TaXplKHRoaXMuY2Fycmllcl9pY29uX2NvbmZpZ1t0aGlzLmNhcnJpZXJfaWRdLmljb25TaXplLCB0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbdGhpcy5jYXJyaWVyX2lkXS5pY29uU2l6ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVMU0UgR0VUIE1BUktFUlwiKTtcbiAgICAgICAgICAgIG9wdGlvbnMuaWNvbi5zY2FsZWRTaXplID0gbmV3IGdvb2dsZS5tYXBzLlNpemUoNTAsIDUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiUE9TTEUgSUZcIik7XG4gICAgICAgIGxldCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBtYXJrZXI7XG4gICAgfTtcblxuICAgIGlzTWFwTW92aW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01vdmluZyB8fCB0aGlzLmlzVXNlck1vdmluZztcbiAgICB9O1xuXG4gICAgYXN5bmMgbW92ZUVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNYXBNb3ZpbmcoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJNb3ZpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgbWFwQ2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRoaXMubW92ZUxpc3RlbmVycyAmJiBpIDwgdGhpcy5tb3ZlTGlzdGVuZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1vdmVMaXN0ZW5lcnNbaV0oeyBcImxhdFwiOiBtYXBDZW50ZXIubGF0KCksIFwibG5nXCI6IG1hcENlbnRlci5sbmcoKSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTU9WRSBMSVNURU5FUlMgRU5ERURcIik7XG4gICAgICAgIHRoaXMuaXNVc2VyTW92aW5nID0gZmFsc2U7XG4gICAgfTtcblxuICAgIGxvYWRNYXAoKSB7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJMT0FETUFQXCIpO1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdy1tYXBcIiksIHtcbiAgICAgICAgICAgIGNlbnRlcjogeyBsYXQ6IC0zNC4zOTcsIGxuZzogMTUwLjY0NCB9LFxuICAgICAgICAgICAgem9vbTogMTYsXG4gICAgICAgICAgICBtYXBUeXBlQ29udHJvbDogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tYXAuYWRkTGlzdGVuZXIoJ2NlbnRlcl9jaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5ib3VuZHMgJiYgIXRoaXMuYm91bmRzLmNvbnRhaW5zKGNlbnRlcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVFbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGdlb2NvZGUocXVlcnlwYXJ0cywgZl9jYWxsYmFjaykge1xuICAgICAgICBpZiAodHlwZW9mIChnb29nbGUpID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5nZW9jb2RlKHNoaXBwaW5nRGF0YSwgZl9jYWxsYmFjayk7IH0sIDIwMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgICAgICBsZXQgZ2VvY29kZXIgPSBuZXcgZ29vZ2xlLm1hcHMuR2VvY29kZXIoKTtcbiAgICAgICAgbGV0IG1lID0gdGhpcztcblxuICAgICAgICBjb25zb2xlLmxvZygnZ2VvY29kaW5nICcsIHF1ZXJ5cGFydHMpO1xuXG4gICAgICAgIGxldCBxdWVyeSA9IFwiY29tcG9uZW50cz1jb3VudHJ5OlwiICsgcXVlcnlwYXJ0cy5jb3VudHJ5O1xuICAgICAgICBpZiAocXVlcnlwYXJ0cy5hZGRyZXNzICYmIHF1ZXJ5cGFydHMuYWRkcmVzcy5tYXRjaCgvXihbMC05XFwtXSspJC8pKSB7XG4gICAgICAgICAgICBpZiAocXVlcnlwYXJ0cy5jb3VudHJ5LnRvVXBwZXJDYXNlKCkgPT0gJ1BUJyAmJiB0eXBlb2YgKG1pc3NpbmdaaXBQVCkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgemlwNGRpZyA9IHF1ZXJ5cGFydHMuYWRkcmVzcy5zdWJzdHJpbmcoMCwgNCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaXNzaW5nWmlwUFQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1pc3NpbmdaaXBQVFtpXS56aXBjb2RlID09IHppcDRkaWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBxdWVyeVJlc3VsdHMgPSBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfbmFtZTogbWlzc2luZ1ppcFBUW2ldLmRpc3BsYXlfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IG1pc3NpbmdaaXBQVFtpXS5sYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uOiBtaXNzaW5nWmlwUFRbaV0ubG5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmX2NhbGxiYWNrKHF1ZXJ5UmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVlcnlwYXJ0cy5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICBxdWVyeSArPSAnfCcgKyBxdWVyeXBhcnRzLmNvbXBvbmVudHM7XG4gICAgICAgIH0gZWxzZSBpZiAocXVlcnlwYXJ0cy5hZGRyZXNzLm1hdGNoKC9eWzAtOV0vKSkge1xuICAgICAgICAgICAgcXVlcnkgKz0gJ3xwb3N0YWxfY29kZTonICsgcXVlcnlwYXJ0cy5hZGRyZXNzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVlcnkgKz0gJyZhZGRyZXNzPScgKyBxdWVyeXBhcnRzLmFkZHJlc3M7XG4gICAgICAgIH1cblxuICAgICAgICBqUXVlcnkuZ2V0KCdodHRwczovL21hcHMuZ29vZ2xlLmNvbS9tYXBzL2FwaS9nZW9jb2RlL2pzb24/c2Vuc29yPWZhbHNlJmtleT0nICsgdGhpcy5vcHRpb25zLmdtYXBza2V5ICsgJyYnICsgcXVlcnksIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSByZXNwb25zZS5yZXN1bHRzO1xuICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cztcblxuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICAgICAgICBsZXQgZ2VvY29kZSA9IHsgaXNvMjogJycsIGxhdDogJycsIGxuZzogJycgfTtcblxuICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAnT0snKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0dlb2NvZGUgd2FzIG5vdCBzdWNjZXNzZnVsIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbjogJyArIHN0YXR1cywgcmVzcG9uc2UuZXJyb3JfbXNnKTtcbiAgICAgICAgICAgICAgICBmX2NhbGxiYWNrKGdlb2NvZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBsYWNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgZ2VvY29kZSA9IHJlc3VsdHNbaV07XG4gICAgICAgICAgICAgICAgbGV0IGRpc3BsYXlfbmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBnZW9jb2RlLmFkZHJlc3NfY29tcG9uZW50cyAmJiBqIDwgZ2VvY29kZS5hZGRyZXNzX2NvbXBvbmVudHMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9uYW1lICs9IChkaXNwbGF5X25hbWUgPyAnLCAnIDogJycpICsgZ2VvY29kZS5hZGRyZXNzX2NvbXBvbmVudHNbal0ubG9uZ19uYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwbGFjZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlzbzI6IG1lLmdldENvdW50cnlDb2RlRnJvbVJlc3VsdChnZW9jb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9uYW1lLFxuICAgICAgICAgICAgICAgICAgICBsYXQ6IGdlb2NvZGUuZ2VvbWV0cnkubG9jYXRpb24ubGF0LFxuICAgICAgICAgICAgICAgICAgICBsbmc6IGdlb2NvZGUuZ2VvbWV0cnkubG9jYXRpb24ubG5nXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZfY2FsbGJhY2socGxhY2VzKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGdldENvdW50cnlDb2RlRnJvbVJlc3VsdChnZW9jb2RlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKGdlb2NvZGUuYWRkcmVzc19jb21wb25lbnRzKSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb21wb25lbnRzID0gZ2VvY29kZS5hZGRyZXNzX2NvbXBvbmVudHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgbGV0IHR5cGVzID0gY29tcG9uZW50c1tpXS50eXBlcztcblxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0eXBlcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlc1tqXSA9PSAnY291bnRyeScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbaV0uc2hvcnRfbmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBnZW9jb2RlQWRkcmVzc1BhcnRzKGZfY2FsbGJhY2ssIGNpdHksIGNvdW50cnksIHBvc3RhbGNvZGUsIHN0cmVldG5hbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAocG9zdGFsY29kZSkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChjb3VudHJ5ID09ICdQVCcgfHwgY291bnRyeSA9PSAnUG9ydHVnYWwnKSB7XG4gICAgICAgICAgICAgICAgcG9zdGFsY29kZSA9IHBvc3RhbGNvZGUuc3Vic3RyKDAsIDQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbXBvbmVudHMgPSBcInBvc3RhbF9jb2RlOlwiICsgcG9zdGFsY29kZSArIFwifGxvY2FsaXR5OlwiICsgY2l0eTtcblxuICAgICAgICB0aGlzLmdlb2NvZGUoeyBjb3VudHJ5LCBcImNvbXBvbmVudHNcIjogY29tcG9uZW50cyB9LCAocGxhY2VzKSA9PiB7XG4gICAgICAgICAgICBmX2NhbGxiYWNrKHBsYWNlc1swXSk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBzZXRDYXJyaWVySWQoY2Fycmllcl9pZCkge1xuICAgICAgICB0aGlzLmNhcnJpZXJfaWQgPSBjYXJyaWVyX2lkO1xuICAgIH07XG5cbiAgICBzZWxlY3RQb2ludChpZHgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJTZWxlY3Rwb2ludFwiKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcmtlcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGxldCBwb2ludCA9IHRoaXMucGlja3VwUG9pbnRzW2ldO1xuICAgICAgICAgICAgY29uc29sZS5sb2cocG9pbnQpO1xuICAgICAgICAgICAgbGV0IGljb24gPSB7XG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLmdldENhcnJpZXJJY29uVXJsKHBvaW50LlR5cGUsIGlkeCA9PSBpKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5jYXJyaWVyX2ljb25fY29uZmlnW3RoaXMuY2Fycmllcl9pZF0pICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBpY29uLnNpemUgPSBuZXcgZ29vZ2xlLm1hcHMuU2l6ZSh0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbdGhpcy5jYXJyaWVyX2lkXS5pY29uU2l6ZSwgdGhpcy5jYXJyaWVyX2ljb25fY29uZmlnW3RoaXMuY2Fycmllcl9pZF0uaWNvblNpemUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpY29uLnNjYWxlZFNpemUgPSBuZXcgZ29vZ2xlLm1hcHMuU2l6ZSg1MCwgNTApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTZXRJQ09EXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coaWNvbik7XG4gICAgICAgICAgICB0aGlzLm1hcmtlcnNbaV0uc2V0SWNvbihpY29uKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBzZXRDYXJyaWVySWQoY2Fycmllcl9pZCkge1xuICAgICAgICB0aGlzLmNhcnJpZXJfaWQgPSBjYXJyaWVyX2lkO1xuICAgIH07XG5cbiAgICBnZXRDYXJyaWVySWNvblVybCh0eXBlLCBzZWxlY3RlZCkge1xuICAgICAgICBsZXQgY2Fycmllcl9pY29uX3VybDtcblxuICAgICAgICBsZXQgZmlsZV9leHRlbnNpb24gPSAnLicgKyAodHlwZW9mICh0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbdGhpcy5jYXJyaWVyX2lkXSkgIT0gJ3VuZGVmaW5lZCcgPyB0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbdGhpcy5jYXJyaWVyX2lkXS5leHRlbnNpb24gOiBcInBuZ1wiKTtcbiAgICAgICAgbGV0IHNlbGVjdGVkZXh0ZW5zaW9uID0gdHlwZW9mICh0aGlzLmNhcnJpZXJfaWNvbl9jb25maWdbdGhpcy5jYXJyaWVyX2lkXSkgIT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jYXJyaWVyX2ljb25fY29uZmlnW3RoaXMuY2Fycmllcl9pZF0uc2VsZWN0ZWRTdGF0ZSAmJiBzZWxlY3RlZFxuICAgICAgICAgICAgPyAnX3MnIDogJyc7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkICYmICFzZWxlY3RlZGV4dGVuc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaWNvbl9zZWxlY3RlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlICYmIHR5cGVvZiAoc2hpcHRpbWl6ZV9jYXJyaWVyX2ltZ3MpICE9ICd1bmRlZmluZWQnICYmIHNoaXB0aW1pemVfY2Fycmllcl9pbWdzLmluZGV4T2YodGhpcy5jYXJyaWVyX2lkICsgXCJfXCIgKyB0eXBlICsgZmlsZV9leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImdldENhcnJpZXJJY29uVXJsIDFcIilcbiAgICAgICAgICAgIGNhcnJpZXJfaWNvbl91cmwgPSB0aGlzLmljb25fZm9sZGVyICsgJycgKyB0aGlzLmNhcnJpZXJfaWQgKyAnXycgKyB0eXBlICsgc2VsZWN0ZWRleHRlbnNpb24gKyBmaWxlX2V4dGVuc2lvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZ2V0Q2Fycmllckljb25VcmwgMlwiKVxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jYXJyaWVyX2lkKTtcbiAgICAgICAgICAgIC8vICMjREpESiBOZSB6bmFtIHphc3RvIGplIHN2ZywgcG9nbGVkYWogZGEgdnJhdGlzIGtha28gamUgYmlsb1xuICAgICAgICAgICAgY2Fycmllcl9pY29uX3VybCA9IHRoaXMuaWNvbl9mb2xkZXIgKyB0aGlzLmNhcnJpZXJfaWQgKyBzZWxlY3RlZGV4dGVuc2lvbiArICcucG5nJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYXJyaWVyX2ljb25fdXJsO1xuICAgIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNoaXB0aW1pemVHbWFwcztcbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wLXR5cGVzXG5cbmltcG9ydCBTaGlwdGltaXplT3Blbk1hcDIgZnJvbSBcIi4vc2hpcHRpbWl6ZS1vcGVuLW1hcFwiO1xuaW1wb3J0IFNoaXB0aW1pemVHbWFwcyBmcm9tIFwiLi9zaGlwdGltaXplLWdtYXBzXCI7XG5pbXBvcnQgV29vY29tbWVyY2UgZnJvbSAnLi9zaGlwdGltaXplLXdvby1jb21tZXJjZS5qcydcblxuY2xhc3MgU2hpcHRpbWl6ZVdpZGdldCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLnBpY2t1cFBvaW50cyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUG9pbnQgPSBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgICAgIHRoaXMubWFya2VycyA9IFtdO1xuICAgICAgICB0aGlzLmhvc3QgPSBvcHRpb25zLmhvc3QgfHwgJ2h0dHBzOi8vc2hpcHRpbWl6ZS5tZSc7XG4gICAgICAgIHRoaXMuZGVidWcgPSBvcHRpb25zLmRlYnVnIHx8IDA7XG5cbiAgICAgICAgdGhpcy5tYXBQYXJlbnRDb250YWluZXIgPSBvcHRpb25zLm1hcFBhcmVudENvbnRhaW5lciB8fCAnYm9keSc7XG4gICAgICAgIHRoaXMuYnV0dG9uUGFyZW50Q29udGFpbmVyID0gb3B0aW9ucy5idXR0b25QYXJlbnRDb250YWluZXIgfHwgJyc7XG4gICAgICAgIHRoaXMuaXNTY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idXR0b25DbGFzcyA9IHRoaXMub3B0aW9ucy5idXR0b25fY2xhc3MgfHwgJyc7XG4gICAgICAgIHRoaXMubGFiZWxzID0gdGhpcy5vcHRpb25zLmxhYmVscyB8fCB7fTtcblxuICAgICAgICB0aGlzLnBsYXRmb3JtID0gbmV3IFdvb2NvbW1lcmNlKG9wdGlvbnMuYWpheF91cmwpO1xuICAgICAgICB0aGlzLnRpbWVvdXRLZXlEb3duID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWFyY2hSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IHRoaXMub3B0aW9ucy5hZGRyZXNzIHx8IG51bGw7XG4gICAgICAgIHRoaXMuY2Fycmllcl9pZCA9IHRoaXMub3B0aW9ucy5jYXJyaWVySWQgfHwgMDtcbiAgICAgICAgdGhpcy5sYW5nID0gJ2VuJztcbiAgICAgICAgdGhpcy53ZWVrZGF5bmFtZXMgPSBbJ01vbmRheScsJ1R1ZXNkYXknLCdXZWRuZXNkYXknLCdUaHVyc2RheScsJ0ZyaWRheScsJ1NhdHVyZGF5JywnU3VuZGF5J107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5T3B0aW9uID0gMDtcbiAgICAgICAgdGhpcy5jYWNoZVJlc3VsdHMgPSB7fTtcblxuICAgICAgICBjb25zb2xlLmxvZyhcIkplc3RlIGNoZWNrb3V0IGlsaSBuaWplXCIpO1xuXG5cblxuXG5cblxuICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgIGxldCBoYXNSdW5DaGVja1Zpc2liaWxpdHkgPSBmYWxzZTsgIC8vIEVuc3VyZSB0aGUgdmlzaWJpbGl0eSBjaGVjayBvbmx5IHJ1bnMgb25jZVxuICAgICAgICAgICAgbGV0IGhhc1J1blBsYWNlT3JkZXJDaGVjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB2aXNpYmlsaXR5IGZvciBzaGlwcGluZyBvcHRpb25zIChydW4gb25seSBvbmNlKVxuICAgICAgICAgICAgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGpRdWVyeShcIi53Yy1ibG9jay1jb21wb25lbnRzLXNoaXBwaW5nLXJhdGVzLWNvbnRyb2xfX3BhY2thZ2VcIik7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC5pcygnOnZpc2libGUnKSAmJiAhaGFzUnVuQ2hlY2tWaXNpYmlsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc1J1bkNoZWNrVmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tWaXNpYmlsaXR5KTsgIC8vIENsZWFyIGludGVydmFsIGFmdGVyIGZpcnN0IHN1Y2Nlc3NmdWwgY2hlY2tcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIk92ZGVlZWUgc2FtXCIpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2VsZWN0ZWRUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNlbGVjdGVkVGV4dCA9IGpRdWVyeShcImZpZWxkc2V0LndjLWJsb2NrLWNoZWNrb3V0X19zaGlwcGluZy1vcHRpb25cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKFwiLndjLWJsb2NrLWNvbXBvbmVudHMtcmFkaW8tY29udHJvbF9faW5wdXQ6Y2hlY2tlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoXCJsYWJlbFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoXCIud2MtYmxvY2stY29tcG9uZW50cy1yYWRpby1jb250cm9sX19sYWJlbFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnNlbGVjdGVkVGV4dCA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQcmF6YW5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCJmaWVsZHNldC53Yy1ibG9jay1jaGVja291dF9fc2hpcHBpbmctb3B0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoXCIud2MtYmxvY2stY29tcG9uZW50cy1yYWRpby1jb250cm9sX19vcHRpb24tbGF5b3V0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2VsZWN0ZWRUZXh0ID0galF1ZXJ5KHRoaXMpLmZpbmQoXCIud2MtYmxvY2stY29tcG9uZW50cy1yYWRpby1jb250cm9sX19sYWJlbFwiKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNCbG9ja0NoZWNrb3V0ID09PSBcImZ1bmN0aW9uXCIgJiYgdGhpcy5pc0Jsb2NrQ2hlY2tvdXQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTZWxlY3RlZENhcnJpZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRPbkNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgNTAwKTsgIC8vIEludGVydmFsIGRlbGF5IGluIG1pbGxpc2Vjb25kc1xuXG4gICAgICAgICAgICAvLyBDaGVjayB2aXNpYmlsaXR5IGZvciBcIlBsYWNlIE9yZGVyXCIgYnV0dG9uIChydW4gb25seSBvbmNlKVxuICAgICAgICAgICAgY29uc3QgcGxhY2VPcmRlckNoZWNrID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlT3JkZXJCdXR0b24gPSBqUXVlcnkoXCIjcGxhY2Vfb3JkZXJcIik7XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlT3JkZXJCdXR0b24uaXMoJzp2aXNpYmxlJykgJiYgIWhhc1J1blBsYWNlT3JkZXJDaGVjaykge1xuICAgICAgICAgICAgICAgICAgICBoYXNSdW5QbGFjZU9yZGVyQ2hlY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHBsYWNlT3JkZXJDaGVjayk7ICAvLyBDbGVhciBpbnRlcnZhbCBhZnRlciBmaXJzdCBzdWNjZXNzZnVsIGNoZWNrXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJPdmRlZWVlIHNhbSB2aXNpYmxlIGNoZWNrb3V0XCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlT3JkZXJCdXR0b24ub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGlwcGluZ19waWNrdXBfaWQgPSBqUXVlcnkoXCIjc2hpcHBpbmdfcGlja3VwX2lkXCIpLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDbGlja2VkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cod2luZG93LmNhcnJpZXJfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cod2luZG93Lm1hbmRhdG9yeURhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5tYW5kYXRvcnlEYXRhICE9PSBcIlwiICYmIHdpbmRvdy5tYW5kYXRvcnlEYXRhLnBpY2t1cE1hbmRhdG9yeSAmJiBzaGlwcGluZ19waWNrdXBfaWQgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVTQU8gSUZcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAgLy8gUHJldmVudCBkZWZhdWx0IGZvcm0gc3VibWlzc2lvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW9kYWwgY3JlYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RhbCA9IGpRdWVyeSgnPGRpdj4nLCB7IGlkOiAnbXlNb2RhbCcsIGNzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb24nOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3otaW5kZXgnOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCc6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JzogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAncmdiYSgwLDAsMCwwLjQpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RhbENvbnRlbnQgPSBqUXVlcnkoJzxkaXY+JywgeyBjc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNmZWZlZmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmdpbic6ICcxNSUgYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZyc6ICcyMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXInOiAnMXB4IHNvbGlkICM4ODgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogJzgwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VCdXR0b24gPSBqUXVlcnkoJzxzcGFuPicsIHsgdGV4dDogJ8OXJywgY3NzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InOiAnI2FhYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvYXQnOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6ICcyOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXdlaWdodCc6ICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjdXJzb3InOiAncG9pbnRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGpRdWVyeSgnPHA+JywgeyB0ZXh0OiAnUG9pbnQgc2VsZWN0aW9uIGlzIG1hbmRhdG9yeS4gU2VsZWN0IGEgcG9pbnQgb3IgYSBkaWZmZXJlbnQgU2hpcHBpbmcgbWV0aG9kJyB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b24gPSBqUXVlcnkoXCI8YnV0dG9uIGNsYXNzPSdidXR0b24gYWx0IEJwb3N0LXBpY2stbG9jYXRpb24nIGlkPSdCcG9zdF9waWNrdXBfYnV0dG9uJyB0eXBlPSdidXR0b24nIG9uQ2xpY2s9J0Jwb3N0LmdldFBpY2t1cExvY2F0aW9ucyhldmVudCknPlwiICsgQnBvc3RfY2hvb3NlX3BpY2t1cF9sb2NhdGlvbiArIFwiPC9idXR0b24+XCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsQ29udGVudC5hcHBlbmQoY2xvc2VCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsQ29udGVudC5hcHBlbmQobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuYXBwZW5kKG1vZGFsQ29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50LmFwcGVuZChidXR0b24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCdib2R5JykuYXBwZW5kKG1vZGFsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIG1vZGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuc2hvdygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgbW9kYWwgaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbi5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeShldmVudC50YXJnZXQpLmlzKG1vZGFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBQcmV2ZW50IHN1Ym1pc3Npb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgNTAwKTsgIC8vIEludGVydmFsIGRlbGF5IGluIG1pbGxpc2Vjb25kc1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdldE9uU3VibWl0QnV0dG9uQmxvY2tDbGlja05vVGhlbWUoKTtcbiAgICAgICAgdGhpcy5nZXRUaGVtZVNoaXBwaW5nTWV0aG9kKG9wdGlvbnMpO1xuXG5cblxuXG4gICAgfVxuXG5cbiAgICBnZXRUaGVtZVNoaXBwaW5nTWV0aG9kKG9wdGlvbnMpe1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiT3B0aW9uc1wiKTtcbiAgICAgICAgY29uc29sZS5sb2cob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKGpRdWVyeSgnLndvb2NvbW1lcmNlLWNoZWNrb3V0LXBheW1lbnQnKS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkuYWpheENvbXBsZXRlKChldmVudCwgeGhyLCBzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy51cmwuaW5jbHVkZXMoXCJ1cGRhdGVfb3JkZXJfcmV2aWV3XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ29tcGxldGUgcmVxdWVzdFwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlcXVlc3QgbWFkZSB0byB3Yy1hamF4PXVwZGF0ZV9vcmRlcl9yZXZpZXcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGpRdWVyeSgnLkJwb3N0LXBpY2stbG9jYXRpb24nKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGVja2VkUmFkaW8gPSBqUXVlcnkoJyNzaGlwcGluZ19tZXRob2QgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBhc3NvY2lhdGVkIGxhYmVsIHRleHQgb2YgdGhlIGNoZWNrZWQgcmFkaW8gYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRUZXh0ID0gY2hlY2tlZFJhZGlvLnNpYmxpbmdzKCdsYWJlbCcpLnRleHQoKS5zcGxpdCgnOicpWzBdLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9nIG9yIHVzZSB0aGUgc2VsZWN0ZWQgc2hpcHBpbmcgbWV0aG9kXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgc2hpcHBpbmcgbWV0aG9kOiAnICsgc2VsZWN0ZWRUZXh0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGV4dCA9PSAnJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSBwYXJlbnQgZWxlbWVudCBjb250YWluaW5nIHRoZSBsaXN0IG9mIHNoaXBwaW5nIG1ldGhvZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGlwcGluZ01ldGhvZHNMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NoaXBwaW5nX21ldGhvZCcpO1xuXG4vLyBDaGVjayBpZiB0aGUgbGlzdCBleGlzdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hpcHBpbmdNZXRob2RzTGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmF2ZXJzZSB0aGUgbGlzdCBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGlwcGluZ01ldGhvZEl0ZW1zID0gc2hpcHBpbmdNZXRob2RzTGlzdC5xdWVyeVNlbGVjdG9yQWxsKCdsaScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGxpc3QgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ01ldGhvZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIDxsYWJlbD4gZWxlbWVudCBpbnNpZGUgdGhlIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsRWxlbWVudCA9IGl0ZW0ucXVlcnlTZWxlY3RvcignbGFiZWwnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgdGhlIHRleHQgY29udGVudCBiZWZvcmUgdGhlIGNvbG9uICg6KSB0byBnZXQgdGhlIGR5bmFtaWMgdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbFRleHQgPSBsYWJlbEVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVGV4dCA9IGxhYmVsVGV4dC5zcGxpdCgnOicpWzBdLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2hpcHBpbmcgTWV0aG9kIFRpdGxlOicsIHNlbGVjdGVkVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVxID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiAnQnBvc3Rfc2VsZWN0ZWRfY2FycmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhcnJpZXInOiBzZWxlY3RlZFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRG9zYW8gc2kgZG92ZGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZ2V0SlNPTih3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgJy93cC1hZG1pbi9hZG1pbi1hamF4LnBocD8nLCByZXEgLCAgKGRhdGEpICA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDYW9hb29vIG5hc2Fvb28yMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzID09IDEgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDYW9vb29vIHN0YXR1cyAxMjNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBpY2t1cE1hbmRhdG9yeSA9PSB0cnVlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tYW5kYXRvcnlEYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnJpZXJfaWQgPSBkYXRhLmNhcnJpZXJfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jYXJyaWVyX2lkID0gZGF0YS5jYXJyaWVyX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGVja1Zpc2liaWxpdHkgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0RWxlbWVudCA9IGpRdWVyeShcIi53b29jb21tZXJjZS1jaGVja291dC1wYXltZW50XCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC5pcygnOnZpc2libGUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgaW5wdXQgZWxlbWVudCBpcyB2aXNpYmxlLCB5b3UgY2FuIHByb2NlZWQgd2l0aCB5b3VyIHNjcmlwdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrVmlzaWJpbGl0eSk7IC8vIFN0b3AgY2hlY2tpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWW91ciBjb2RlIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJJVFMgVklTSUJMRSAyMjJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeShcIiNwaWNrdXBUZXh0XCIpLmxlbmd0aCA9PSAwKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykuYWZ0ZXIoJzxwIGlkPVwicGlja3VwVGV4dFwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPlNlbGVjdCBwaWNrdXAgcG9pbnQ8L3A+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoalF1ZXJ5KFwiI3BpY2t1cFRleHRcIikubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjcGlja3VwVGV4dFwiKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5CcG9zdC1waWNrLWxvY2F0aW9uJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7IC8vIENoZWNrIGV2ZXJ5IDEwMCBtaWxsaXNlY29uZHNcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWxzZSBuZW1hIHBpY2t1cFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuQnBvc3QtcGljay1sb2NhdGlvbicpLmhpZGUoKTtcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NoaXBwaW5nX3BpY2t1cF9pZCcpLnZhbCgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NoaXBwaW5nX3BpY2t1cF9sYWJlbCcpLnZhbCgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NoaXBwaW5nX3BpY2t1cF9leHRlbmRlZCcpLnZhbCgnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGlkZSB0aGUgc3BhbiBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLkJwb3N0LXBpY2t1cF9fZGVzY3JpcHRpb24nKS5oaWRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeSgnLkJwb3N0LXBpY2t1cF9fZGVzY3JpcHRpb24nKS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVXNhbyBpYWtvIG5lbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5CcG9zdC1waWNrdXBfX2Rlc2NyaXB0aW9uJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNwbGFjZV9vcmRlcicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNwaWNrdXBUZXh0JykuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5mYWlsKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZhdGFsIGVycm9yIHdpZGdldCByZXF1ZXN0aW5nIHBvaW50cyBkbyB3ZSBoYXZlIGFuIEFQSSBidWc/XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAoZnVuY3Rpb24ob3Blbikge1xuICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXF1ZXN0IFVSTCBjb250YWlucyAnd2MtYWpheD11cGRhdGVfb3JkZXJfcmV2aWV3J1xuICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJ3djLWFqYXg9dXBkYXRlX29yZGVyX3JldmlldycpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlcXVlc3QgbWFkZSB0byB3Yy1hamF4PXVwZGF0ZV9vcmRlcl9yZXZpZXcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGpRdWVyeSgnLkJwb3N0LXBpY2stbG9jYXRpb24nKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGVja2VkUmFkaW8gPSBqUXVlcnkoJyNzaGlwcGluZ19tZXRob2QgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBhc3NvY2lhdGVkIGxhYmVsIHRleHQgb2YgdGhlIGNoZWNrZWQgcmFkaW8gYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRUZXh0ID0gY2hlY2tlZFJhZGlvLnNpYmxpbmdzKCdsYWJlbCcpLnRleHQoKS5zcGxpdCgnOicpWzBdLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9nIG9yIHVzZSB0aGUgc2VsZWN0ZWQgc2hpcHBpbmcgbWV0aG9kXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgc2hpcHBpbmcgbWV0aG9kOiAnICsgc2VsZWN0ZWRUZXh0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ0Jwb3N0X3NlbGVjdGVkX2NhcnJpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXJyaWVyJzogc2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRvc2FvIHNpIGRvdmRlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVxKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmdldEpTT04od2luZG93LmxvY2F0aW9uLm9yaWdpbiArICcvd3AtYWRtaW4vYWRtaW4tYWpheC5waHA/JywgcmVxICwgIChkYXRhKSAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2FvYW9vbyBuYXNhb29vMjJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cyA9PSAxICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2Fvb29vbyBzdGF0dXMgMTIzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5waWNrdXBNYW5kYXRvcnkgPT0gdHJ1ZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubWFuZGF0b3J5RGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJyaWVyX2lkID0gZGF0YS5jYXJyaWVyX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2Fycmllcl9pZCA9IGRhdGEuY2Fycmllcl9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hlY2tWaXNpYmlsaXR5ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dEVsZW1lbnQgPSBqUXVlcnkoXCIud29vY29tbWVyY2UtY2hlY2tvdXQtcGF5bWVudFwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGlucHV0IGVsZW1lbnQgaXMgdmlzaWJsZSwgeW91IGNhbiBwcm9jZWVkIHdpdGggeW91ciBzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1Zpc2liaWxpdHkpOyAvLyBTdG9wIGNoZWNraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdXIgY29kZSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSVRTIFZJU0lCTEUgMjIyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNwbGFjZV9vcmRlcicpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkoXCIjcGlja3VwVGV4dFwiKS5sZW5ndGggPT0gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNwbGFjZV9vcmRlcicpLmFmdGVyKCc8cCBpZD1cInBpY2t1cFRleHRcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj5TZWxlY3QgcGlja3VwIHBvaW50PC9wPicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGpRdWVyeShcIiNwaWNrdXBUZXh0XCIpLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI3BpY2t1cFRleHRcIikuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuQnBvc3QtcGljay1sb2NhdGlvbicpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApOyAvLyBDaGVjayBldmVyeSAxMDAgbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWxzZSBuZW1hIHBpY2t1cFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuQnBvc3QtcGljay1sb2NhdGlvbicpLmhpZGUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdmFsdWVzIGZyb20gaGlkZGVuIGlucHV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzaGlwcGluZ19waWNrdXBfaWQnKS52YWwoJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzaGlwcGluZ19waWNrdXBfbGFiZWwnKS52YWwoJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzaGlwcGluZ19waWNrdXBfZXh0ZW5kZWQnKS52YWwoJycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIHNwYW4gZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5CcG9zdC1waWNrdXBfX2Rlc2NyaXB0aW9uJykuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkoJy5CcG9zdC1waWNrdXBfX2Rlc2NyaXB0aW9uJykubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVzYW8gaWFrbyBuZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuQnBvc3QtcGlja3VwX19kZXNjcmlwdGlvbicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3BpY2t1cFRleHQnKS5oaWRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmZhaWwoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRmF0YWwgZXJyb3Igd2lkZ2V0IHJlcXVlc3RpbmcgcG9pbnRzIGRvIHdlIGhhdmUgYW4gQVBJIGJ1Zz9cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb3JpZ2luYWwgb3BlbiBtZXRob2RcbiAgICAgICAgICAgICAgICAgICAgb3Blbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3Blbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGb3JtQ2hhbmdlKCl7XG4gICAgICAgIGpRdWVyeShcIi53Yy1ibG9jay1jaGVja291dF9fZm9ybVwiKS5vbignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIGFueSBmb3JtIGZpZWxkIGluc2lkZSB0aGUgXCJjaGVja291dFwiIGZvcm0gaXMgY2hhbmdlZFxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGb3JtIGNoYW5nZWQhIGJsb2NrIGJsb2NrXCIpO1xuXG4gICAgICAgICAgICBjb25zdCBsb2FkZXJUZXh0ID0galF1ZXJ5KCc8ZGl2IGlkPVwic2hpcHBpbmctbG9hZGVyXCI+TG9hZGluZyBzaGlwcGluZyBtZXRob2QgZGF0YS4uLjwvZGl2PicpLmNzcyh7XG4gICAgICAgICAgICAgICAgJ2Rpc3BsYXknOiAnZmxleCcsXG4gICAgICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICAnY29sb3InOiAnIzMzMycsXG4gICAgICAgICAgICAgICAgJ21hcmdpbi10b3AnOiAnMTBweCdcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGxvYWRlciB0ZXh0IHRvIHRoZSBib3R0b20gb2YgdGhlICNzaGlwcGluZy1vcHRpb24gZWxlbWVudFxuICAgICAgICAgICAgalF1ZXJ5KCcjc2hpcHBpbmctb3B0aW9uJykuYXBwZW5kKGxvYWRlclRleHQpO1xuXG4gICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbigpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5zZWxlY3RlZFRleHQgPSBqUXVlcnkoXCJmaWVsZHNldC53Yy1ibG9jay1jaGVja291dF9fc2hpcHBpbmctb3B0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKFwiLndjLWJsb2NrLWNvbXBvbmVudHMtcmFkaW8tY29udHJvbF9faW5wdXQ6Y2hlY2tlZFwiKVxuICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdChcImxhYmVsXCIpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKFwiLndjLWJsb2NrLWNvbXBvbmVudHMtcmFkaW8tY29udHJvbF9fbGFiZWxcIilcbiAgICAgICAgICAgICAgICAgICAgLnRleHQoKTtcblxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2VsZWN0ZWRUZXh0ID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlByYXphblwiKVxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCJmaWVsZHNldC53Yy1ibG9jay1jaGVja291dF9fc2hpcHBpbmctb3B0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmluZChcIi53Yy1ibG9jay1jb21wb25lbnRzLXJhZGlvLWNvbnRyb2xfX29wdGlvbi1sYXlvdXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2VsZWN0ZWRUZXh0ID0galF1ZXJ5KHRoaXMpLmZpbmQoXCIud2MtYmxvY2stY29tcG9uZW50cy1yYWRpby1jb250cm9sX19sYWJlbFwiKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBZb3UgY2FuIHBlcmZvcm0geW91ciBkZXNpcmVkIGFjdGlvbnMgaGVyZVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRDYXJyaWVyKCk7XG4gICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lbmFibGVCdXR0b24oKTtcblxuICAgIH1cblxuICAgIGdldE9uU3VibWl0QnV0dG9uQmxvY2tDbGlja05vVGhlbWUoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3VibWl0dGVkIG5vIHRoZW1lXCIpO1xuXG4gICAgICAgIHZhciBjaGVja1Zpc2liaWxpdHkgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgaW5wdXRFbGVtZW50ID0gIGpRdWVyeSgnLndjLWJsb2NrLWNvbXBvbmVudHMtY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uJyk7XG5cbiAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgaW5wdXQgZWxlbWVudCBpcyB2aXNpYmxlLCB5b3UgY2FuIHByb2NlZWQgd2l0aCB5b3VyIHNjcmlwdFxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tWaXNpYmlsaXR5KTsgLy8gU3RvcCBjaGVja2luZ1xuICAgICAgICAgICAgICAgIC8vIFlvdXIgY29kZSBoZXJlXG5cbiAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoaXBwaW5nX3BpY2t1cF9pZCA9IGpRdWVyeShcIiNzaGlwcGluZ19waWNrdXBfaWRcIikudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2xpY2tlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2Fycmllcl9pZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdy5tYW5kYXRvcnlEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5tYW5kYXRvcnlEYXRhICE9IFwiXCIgJiYgd2luZG93Lm1hbmRhdG9yeURhdGEucGlja3VwTWFuZGF0b3J5ICYmIHNoaXBwaW5nX3BpY2t1cF9pZCA9PSBcIlwiKXtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZGFsID0galF1ZXJ5KCc8ZGl2PicsIHsgaWQ6ICdteU1vZGFsJywgY3NzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb24nOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnei1pbmRleCc6ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JzogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICdyZ2JhKDAsMCwwLDAuNCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbW9kYWxDb250ZW50ID0galF1ZXJ5KCc8ZGl2PicsIHsgY3NzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNmZWZlZmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFyZ2luJzogJzE1JSBhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmcnOiAnMjBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXInOiAnMXB4IHNvbGlkICM4ODgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnOiAnODAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlQnV0dG9uID0galF1ZXJ5KCc8c3Bhbj4nLCB7IHRleHQ6ICfDlycsIGNzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InOiAnI2FhYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbG9hdCc6ICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXNpemUnOiAnMjhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXdlaWdodCc6ICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnNvcic6ICdwb2ludGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBqUXVlcnkoJzxwPicsIHsgdGV4dDogJ1BvaW50IHNlbGVjdGlvbiBpcyBtYW5kYXRvcnkuIFNlbGVjdCBhIHBvaW50IG9yIGEgZGlmZmVyZW50IFNoaXBwaW5nIG1ldGhvZCcgfSk7XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ1dHRvbiA9IGpRdWVyeShcIjxidXR0b24gY2xhc3M9J2J1dHRvbiBhbHQgc2hpcHRpbWl6ZS1waWNrLWxvY2F0aW9uJyBpZD0nc2hpcHRpbWl6ZV9waWNrdXBfYnV0dG9uJyB0eXBlPSdidXR0b24nIG9uQ2xpY2s9J3NoaXB0aW1pemUuZ2V0UGlja3VwTG9jYXRpb25zKGV2ZW50KSc+XCIgKyBzaGlwdGltaXplX2Nob29zZV9waWNrdXBfbG9jYXRpb24gKyBcIjwvYnV0dG9uPlwiKTtcblxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsQ29udGVudC5hcHBlbmQoY2xvc2VCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50LmFwcGVuZChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLmFwcGVuZChtb2RhbENvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50LmFwcGVuZChidXR0b24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJ2JvZHknKS5hcHBlbmQobW9kYWwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBtb2RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuc2hvdygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgbW9kYWwgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gPHNwYW4+ICh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b24ub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb3NlIHRoZSBtb2RhbCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSBtb2RhbCBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkod2luZG93KS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkoZXZlbnQudGFyZ2V0KS5pcyhtb2RhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTsgLy8gQ2hlY2sgZXZlcnkgMTAwIG1pbGxpc2Vjb25kc1xuXG5cbiAgICAgICAgLy8galF1ZXJ5KCcjcGxhY2Vfb3JkZXInKVxuXG5cbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZENhcnJpZXIoKXtcblxuICAgICAgICBjb25zb2xlLmxvZyhcInNlbGVjdGVkQ2FycmllclwiKVxuXG4gICAgICAgIGlmIChqUXVlcnkoJyNzaGlwcGluZy1sb2FkZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGpRdWVyeSgnI3NoaXBwaW5nLWxvYWRlcicpLnJlbW92ZSgpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cuc2VsZWN0ZWRUZXh0KTtcbiAgICAgICAgd2luZG93Lm1hbmRhdG9yeURhdGEgPSBcIlwiO1xuICAgICAgICBqUXVlcnkoXCIjc2hpcHRpbWl6ZV9waWNrdXBfYnV0dG9uXCIpLnJlbW92ZSgpO1xuXG4gICAgICAgIGxldCByZXEgPSB7XG4gICAgICAgICAgICAnYWN0aW9uJzogJ3NoaXB0aW1pemVfc2VsZWN0ZWRfY2FycmllcicsXG4gICAgICAgICAgICAnY2Fycmllcic6IHdpbmRvdy5zZWxlY3RlZFRleHRcbiAgICAgICAgfTtcblxuICAgICAgICBqUXVlcnkuZ2V0SlNPTih0aGlzLm9wdGlvbnMuYWpheF91cmwsIHJlcSAsICAoZGF0YSkgID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2FvYW9vbyBuYXNhb29vMjJcIik7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbigpO1xuXG4gICAgICAgICAgICBqUXVlcnkoJyNzaGlwdGltaXplLXBpY2t1cF9fZGVzY3JpcHRpb24nKS5oaWRlKCk7XG5cblxuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5zdGF0dXMpO1xuICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzID09IDEgKXtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNhb29vb28gc3RhdHVzIDEyM1wiKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5waWNrdXBNYW5kYXRvcnkgPT0gdHJ1ZSl7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tYW5kYXRvcnlEYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJyaWVyX2lkID0gZGF0YS5jYXJyaWVyX2lkO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jYXJyaWVyX2lkID0gZGF0YS5jYXJyaWVyX2lkO1xuICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkucmVhZHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hlY2tWaXNpYmlsaXR5ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0RWxlbWVudCA9IGpRdWVyeShcIi53Yy1ibG9jay1jb21wb25lbnRzLXNoaXBwaW5nLXJhdGVzLWNvbnRyb2xfX3BhY2thZ2VcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgaW5wdXQgZWxlbWVudCBpcyB2aXNpYmxlLCB5b3UgY2FuIHByb2NlZWQgd2l0aCB5b3VyIHNjcmlwdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tWaXNpYmlsaXR5KTsgLy8gU3RvcCBjaGVja2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdXIgY29kZSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJJVFMgVklTSUJMRSAyMjJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRCbG9ja1NoaXBwaW5nRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGlucHV0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ1dHRvbiA9IGpRdWVyeShcIjxidXR0b24gY2xhc3M9J2J1dHRvbiBhbHQgc2hpcHRpbWl6ZS1waWNrLWxvY2F0aW9uJyB0eXBlPSdidXR0b24nIGlkPSdzaGlwdGltaXplX3BpY2t1cF9idXR0b24nIG9uQ2xpY2s9J3NoaXB0aW1pemUuZ2V0UGlja3VwTG9jYXRpb25zKGV2ZW50KSc+XCIrIHNoaXB0aW1pemVfY2hvb3NlX3BpY2t1cF9sb2NhdGlvbiArXCI8L2J1dHRvbj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNoaXBwaW5nX3BpY2t1cF9pZCA9IGpRdWVyeShcIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NoaXBwaW5nX3BpY2t1cF9pZCcgaWQ9J3NoaXBwaW5nX3BpY2t1cF9pZCcvPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2hpcHBpbmdfcGlja3VwX2xhYmVsID0galF1ZXJ5KFwiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc2hpcHBpbmdfcGlja3VwX2xhYmVsJyBpZD0nc2hpcHBpbmdfcGlja3VwX2xhYmVsJy8+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGlwdGltaXplX3BpY2t1cF9leHRlbmRlZCA9IGpRdWVyeShcIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NoaXB0aW1pemVfcGlja3VwX2V4dGVuZGVkJyBpZD0nc2hpcHBpbmdfcGlja3VwX2V4dGVuZGVkJy8+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGlwdGltaXplX3BpY2t1cF9kZXNjcmlwdGlvbiA9IGpRdWVyeShcIjxzcGFuIGNsYXNzTmFtZT0nc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uJyBpZD0nc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uJz48L3NwYW4+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGlwcGluZ19jYXJyaWVyX2lkID0galF1ZXJ5KFwiPHRyIHN0eWxlPSdkaXNwbGF5OiBub25lJz48dGQ+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc2hpcHBpbmdfY2Fycmllcl9pZCcgaWQ9J3NoaXBwaW5nX2NhcnJpZXJfaWQnLz5cIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhidXR0b24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudFswXS5hcHBlbmQoYnV0dG9uWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnRbMF0uYXBwZW5kKHNoaXBwaW5nX3BpY2t1cF9pZFswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50WzBdLmFwcGVuZChzaGlwcGluZ19waWNrdXBfbGFiZWxbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudFswXS5hcHBlbmQoc2hpcHRpbWl6ZV9waWNrdXBfZXh0ZW5kZWRbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudFswXS5hcHBlbmQoc2hpcHRpbWl6ZV9waWNrdXBfZGVzY3JpcHRpb25bMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudFswXS5hcHBlbmQoc2hpcHBpbmdfY2Fycmllcl9pZFswXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcGludGVyZmFjZS5zZXRDYXJyaWVySWQodGhpcy5jYXJyaWVyX2lkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkoJyNzaGlwdGltaXplX3BpY2t1cF9idXR0b24nKS5pcygnOnZpc2libGUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQnV0dG9uIGlzIHZpc2libGUgc28gd2UgY2FuIGVuYWJsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb2RlIHRvIHJ1biBhZnRlciAzMDAgbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnNDAwIG1pbGxpc2Vjb25kcyBoYXZlIHBhc3NlZCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy53Yy1ibG9jay1jb21wb25lbnRzLWNoZWNrb3V0LXBsYWNlLW9yZGVyLWJ1dHRvbicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCBDU1Mgc3R5bGVzIGZvciB0aGUgZW5hYmxlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24nKS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3Vyc29yJzogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JzogJzEnICAvLyBSZXNldCBvcGFjaXR5IHRvIG1ha2UgaXQgZnVsbHkgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7IC8vIENoZWNrIGV2ZXJ5IDEwMCBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgICAgICB9KTtcblxuXG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkJVVFRPTiBFTkFCTEVEIEdFVCBTRUxFQ1RFRCBDQVJSSUVSXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGpRdWVyeSgnI3NoaXB0aW1pemUtcGlja3VwX19kZXNjcmlwdGlvbicpLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzaGlwdGltaXplLXBpY2t1cF9fZGVzY3JpcHRpb24nKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVCdXR0b24oKTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgIH0pLmZhaWwoKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYXRhbCBlcnJvciB3aWRnZXQgcmVxdWVzdGluZyBwb2ludHMgZG8gd2UgaGF2ZSBhbiBBUEkgYnVnP1wiKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBpc0Jsb2NrQ2hlY2tvdXQoKXtcbiAgICAgICAgaWYgKGpRdWVyeShcIi53Yy1ibG9jay1jaGVja291dFwiKS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRPbkNsaWNrKCl7XG4gICAgICAgIGpRdWVyeShcIiNzdy1xdWVyeS1idG5cIikub24oJ2NsaWNrJyAsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2VvY29kZVF1ZXJ5KCk7XG4gICAgICAgIH0pXG5cblxuXG4gICAgICAgIGpRdWVyeSgnZm9ybVtuYW1lPVwiY2hlY2tvdXRcIl0nKS5vbignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIGFueSBmb3JtIGZpZWxkIGluc2lkZSB0aGUgXCJjaGVja291dFwiIGZvcm0gaXMgY2hhbmdlZFxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGb3JtIGNoYW5nZWQhXCIpO1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtU2hpcHBpbmdEYXRhKCk7XG4gICAgICAgICAgICAvLyBZb3UgY2FuIHBlcmZvcm0geW91ciBkZXNpcmVkIGFjdGlvbnMgaGVyZVxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGdldEZvcm1TaGlwcGluZ0RhdGEoKSB7XG5cbiAgICAgICAgdmFyIGNvdW50cnkgPSBqUXVlcnkoJyNiaWxsaW5nX2NvdW50cnknKS52YWwoKSxcbiAgICAgICAgICAgIHN0YXRlID0galF1ZXJ5KCcjYmlsbGluZ19zdGF0ZScpLnZhbCgpLFxuICAgICAgICAgICAgcG9zdGNvZGUgPSBqUXVlcnkoJ2lucHV0I2JpbGxpbmdfcG9zdGNvZGUnKS52YWwoKSxcbiAgICAgICAgICAgIGNpdHkgPSBqUXVlcnkoJyNiaWxsaW5nX2NpdHknKS52YWwoKSxcbiAgICAgICAgICAgIGFkZHJlc3MgPSBqUXVlcnkoJ2lucHV0I2JpbGxpbmdfYWRkcmVzc18xJykudmFsKCksXG4gICAgICAgICAgICBhZGRyZXNzXzIgPSBqUXVlcnkoJ2lucHV0I2JpbGxpbmdfYWRkcmVzc18yJykudmFsKCksXG4gICAgICAgICAgICBzX2NvdW50cnkgPSBjb3VudHJ5LFxuICAgICAgICAgICAgc19zdGF0ZSA9IHN0YXRlLFxuICAgICAgICAgICAgc19wb3N0Y29kZSA9IHBvc3Rjb2RlLFxuICAgICAgICAgICAgc19jaXR5ID0gY2l0eSxcbiAgICAgICAgICAgIHNfYWRkcmVzcyA9IGFkZHJlc3MsXG4gICAgICAgICAgICBzX2FkZHJlc3NfMiA9IGFkZHJlc3NfMjtcblxuXG4gICAgICAgIGlmIChqUXVlcnkoJyNzaGlwLXRvLWRpZmZlcmVudC1hZGRyZXNzJykuZmluZCgnaW5wdXQnKS5pcygnOmNoZWNrZWQnKSkge1xuICAgICAgICAgICAgc19jb3VudHJ5ID0galF1ZXJ5KCcjc2hpcHBpbmdfY291bnRyeScpLnZhbCgpO1xuICAgICAgICAgICAgc19zdGF0ZSA9IGpRdWVyeSgnI3NoaXBwaW5nX3N0YXRlJykudmFsKCk7XG4gICAgICAgICAgICBzX3Bvc3Rjb2RlID0galF1ZXJ5KCdpbnB1dCNzaGlwcGluZ19wb3N0Y29kZScpLnZhbCgpO1xuICAgICAgICAgICAgc19jaXR5ID0galF1ZXJ5KCcjc2hpcHBpbmdfY2l0eScpLnZhbCgpO1xuICAgICAgICAgICAgc19hZGRyZXNzID0galF1ZXJ5KCdpbnB1dCNzaGlwcGluZ19hZGRyZXNzXzEnKS52YWwoKTtcbiAgICAgICAgICAgIHNfYWRkcmVzc18yID0galF1ZXJ5KCdpbnB1dCNzaGlwcGluZ19hZGRyZXNzXzInKS52YWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGpRdWVyeSgnaW5wdXRbYXJpYS1sYWJlbCo9XCJDb3VudHJ5L1JlZ2lvblwiXScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgc19jb3VudHJ5ID0galF1ZXJ5KHRoaXMpLnZhbCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB3aW5kb3cuc2hpcHRpbWl6ZV9zaGlwcGluZ19hZGRyZXNzID0ge1xuICAgICAgICAgICAgXCJBZGRyZXNzXCI6e1xuICAgICAgICAgICAgICAgIFwiTGF0XCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgXCJMb25nXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgXCJTdHJlZXRuYW1lMVwiOiBzX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgXCJTdHJlZXRuYW1lMlwiOiBzX2FkZHJlc3NfMixcbiAgICAgICAgICAgICAgICBcIkhvdXNlTnVtYmVyXCI6ICcnLFxuICAgICAgICAgICAgICAgIFwiTnVtYmVyRXh0ZW5zaW9uXCI6ICcnLFxuICAgICAgICAgICAgICAgIFwiUG9zdGFsQ29kZVwiOiBzX3Bvc3Rjb2RlLFxuICAgICAgICAgICAgICAgIFwic19wb3N0Y29kZVwiOiBzX3Bvc3Rjb2RlLFxuICAgICAgICAgICAgICAgIFwiQ2l0eVwiOiBzX2NpdHksXG4gICAgICAgICAgICAgICAgXCJDb3VudHJ5XCI6IHNfY291bnRyeSxcbiAgICAgICAgICAgICAgICBcIlN0YXRlXCI6IHNfc3RhdGUsXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3N0X2RhdGE6IGpRdWVyeSgnZm9ybS5jaGVja291dCcpLnNlcmlhbGl6ZSgpLFxuICAgICAgICAgICAgXCJDYXJyaWVySWRcIjogalF1ZXJ5KFwiI3NoaXBwaW5nX2NhcnJpZXJfaWRcIikudmFsKClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MgPSB3aW5kb3cuc2hpcHRpbWl6ZV9zaGlwcGluZ19hZGRyZXNzLkFkZHJlc3M7XG4gICAgfVxuXG4gICAgZ2V0U2hpcHRpbWl6ZUlkKG1hZ2VfaWQpIHtcbiAgICAgICAgdmFyIGNhcnJpZXJfaWQgPSBtYWdlX2lkLm1hdGNoKC8oW1xcZF0rKV9waWNrdXAvKTtcbiAgICAgICAgaWYgKGNhcnJpZXJfaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcnJpZXJfaWRbMV07XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHNoaXB0aW1pemVfY2FycmllcnMubGVuZ3RoOyArK3gpIHtcbiAgICAgICAgICAgIGlmIChzaGlwdGltaXplX2NhcnJpZXJzW3hdLkNsYXNzTmFtZSA9PT0gbWFnZV9pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgKHNoaXB0aW1pemVfY2FycmllcnNbeF0uSWQpID09ICdvYmplY3QnID8gc2hpcHRpbWl6ZV9jYXJyaWVyc1t4XS5JZFsnMCddIDogc2hpcHRpbWl6ZV9jYXJyaWVyc1t4XS5JZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qXG4gICAgKiBBZGRzIHRoZSBtYXAgdG8gdGhlIHBhZ2VcbiAgICAqL1xuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hZGRyZXNzICYmIHRoaXMuc2V0QWRkcmVzcyh0aGlzLm9wdGlvbnMuYWRkcmVzcyk7XG4gICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKTtcblxuICAgICAgICAhdGhpcy5vcHRpb25zLmFkZHJlc3MgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NoaXB0aW1pemVBZGRyZXNzJykgJiYgdGhpcy5zZXRBZGRyZXNzKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NoaXB0aW1pemVBZGRyZXNzJykpKTtcbiAgICB9O1xuXG5cbiAgICBhZGRQb2ludEluZm8ocCwgc2VsZWN0ZWQsIGV4dHJhX2NsYXNzLCBwYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZihleHRyYV9jbGFzcykgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGV4dHJhX2NsYXNzID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3BlbiA9IHR5cGVvZihwLldvcmtpbmdIb3Vyc1JhdykgIT0gJ3VuZGVmaW5lZCcgJiYgcC5Xb3JraW5nSG91cnNSYXcgPyBKU09OLnBhcnNlKHAuV29ya2luZ0hvdXJzUmF3KSA6IFtdO1xuICAgICAgICBsZXQgb3Blbmh0bWwgPSAnJztcbiAgICAgICAgbGV0IG0yZiA9ICcnO1xuICAgICAgICBsZXQgd2tkID0gJyc7XG4gICAgICAgIGxldCBsb2NhbCA9IHAuSW5mb3JtYXRpb24uQWRkcmVzcztcblxuICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIC8gVG8gcmVwbGFjZSB3aGVuIHdlIGhhdmUgYW4gYWN0dWFsIGZvcm1hdCBmb3IgaXQgICovXG4gICAgICAgIGxldCBvcGVuSG91cnMgPSBbXTtcblxuICAgICAgICAvKiBMRUdBQ1kgY29kZSB0aGF0IHdlIGFyZSB1c2luZyB0byB0cmFuc2Zvcm0gdGhlIHJhdyBkYXRhIGludG8gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGggIC0tLS0tLS0tLS0tICovXG4gICAgICAgIGxldCByZWdleEZvcm1hdERldiA9IG5ldyBSZWdFeHAoLyhbYS16QS1aMC05XSspXFxfKFthLXpBLVowLTldKylcXF8oW2EtekEtWjAtOV0rKVxcXyhbYS16QS1aMC05XSspXFxfKFthLXpBLVowLTldKylcXF8oW2EtekEtWjAtOV0rKVxcXyhbYS16QS1aMC05XSspLywgJ2cnKTtcbiAgICAgICAgbGV0IHJlZ2V4Rm9ybWF0TGl2ZSA9IG5ldyBSZWdFeHAoLyhbYS16QS1aMC05XSspXFxfKFthLXpBLVowLTldKylcXF8oW2EtekEtWjAtOV0rKVxcXyhbYS16QS1aMC05XSspLywgJ2cnKTtcbiAgICAgICAgbGV0IHJlZ2V4Rm9ybWF0ID0gcmVnZXhGb3JtYXRMaXZlO1xuICAgICAgICBsZXQgcmVnRGF5ID0gMTsgLyogTW9uZGF5LCBUdWVzZGF5IC4uKi9cbiAgICAgICAgbGV0IHJlZ09wZW5JZHggPSA0OyAvKiAxLDIsLi4uICovXG4gICAgICAgIGxldCByZWdUeXBlSWR4ID0gMjsgLyogT3BlbiB8IGNsb3NpbmcgKi9cblxuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvcGVuKS5sZW5ndGggPiAwICYmIE9iamVjdC5rZXlzKG9wZW4pLnNoaWZ0KCkubWF0Y2gocmVnZXhGb3JtYXREZXYpKSB7XG4gICAgICAgICAgICByZWdleEZvcm1hdCA9IHJlZ2V4Rm9ybWF0RGV2O1xuICAgICAgICAgICAgcmVnVHlwZUlkeCA9IDM7XG4gICAgICAgICAgICByZWdPcGVuSWR4ID0gNztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoa2V5IGluIG9wZW4pIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IG9wZW5ba2V5XTtcblxuICAgICAgICAgICAgaWYgKGtleS5tYXRjaChyZWdleEZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0gcmVnZXhGb3JtYXQuZXhlYyhrZXkpO1xuICAgICAgICAgICAgICAgIGxldCBkYXluYW1lID0gcmVzW3JlZ0RheV07XG4gICAgICAgICAgICAgICAgbGV0IG9wZW5pZHggPSBwYXJzZUludChyZXNbcmVnT3BlbklkeF0pIC0gMTtcbiAgICAgICAgICAgICAgICBsZXQgZGF5aWR4ID0gdGhpcy53ZWVrZGF5bmFtZXMuaW5kZXhPZihkYXluYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yob3BlbkhvdXJzW2RheWlkeF0pID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5Ib3Vyc1tkYXlpZHhdID0gW107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihvcGVuSG91cnNbZGF5aWR4XVtvcGVuaWR4XSkgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkhvdXJzW2RheWlkeF1bb3BlbmlkeF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPcGVuVGltZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBDbG9zZVRpbWU6ICcnXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb3BlbkhvdXJzW2RheWlkeF1bb3BlbmlkeF1bcmVzW3JlZ1R5cGVJZHhdID09ICdDbG9zaW5nJyA/ICdDbG9zZVRpbWUnIDogJ09wZW5UaW1lJ10gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIE1ha2Ugc3VyZSBpdCdzIHNvcnRlZCAqL1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wZW5Ib3Vycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgLyogU29tZXRpbWVzIGl0J3MgY2xvc2VkIG9uIG1vbmRheSBtZWFuaW5nIHRoZXJlJ3Mgbm90aGluZyBhdCBpZHggMCovXG4gICAgICAgICAgICBpZiAodHlwZW9mKG9wZW5Ib3Vyc1tpXSkgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIGxldCBzY2hlZHVsZSA9IG9wZW5Ib3Vyc1tpXTtcbiAgICAgICAgICAgICAgICBzY2hlZHVsZS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhb3BlbiA9IHBhcnNlSW50KGEuT3BlblRpbWUuc3Vic3RyaW5nKDAsIDIpKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJvcGVuID0gcGFyc2VJbnQoYi5PcGVuVGltZS5zdWJzdHJpbmcoMCwgMikpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW9wZW4gLSBib3BlbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIEdyb3VwIGRhdGEgc2V0XG4gICAgICAgIExhYmVsIGNhbiBiZTpcbiAgICAgICAgRmlyc3QgZGF5IC0gbGFzdCBkYXkgd2l0aCBzYW1lIHNjaGVkdWxlXG4gICAgICAgIEV2ZXJ5IGRheSAqL1xuXG4gICAgICAgIG9wZW4gPSAodHlwZW9mKHAuV29ya2luZ0hvdXJzKSAhPSAndW5kZWZpbmVkJykgPyBwLldvcmtpbmdIb3VycyA6IG9wZW5Ib3VycztcbiAgICAgICAgLyoqIEl0J3MgYSBoYXNoLCBub3QgYW4gYXJyYXkgKiovXG4gICAgICAgIGxldCBuZGF5c29wZW4gPSBPYmplY3Qua2V5cyhvcGVuKS5sZW5ndGg7XG4gICAgICAgIGxldCBmcm9tZGF5ID0gdGhpcy53ZWVrZGF5bmFtZXNbMF07XG4gICAgICAgIGxldCBwcmV2aW91c1RpbWUgPSAnJztcbiAgICAgICAgbGV0IGhvdXJzaHRtbCA9ICcnO1xuICAgICAgICBsZXQgZnJvbWRheWlkeCA9IDA7XG4gICAgICAgIGxldCB0b0RheSA9ICcnO1xuICAgICAgICAvKi0tLS0tLS0qL1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgKytpKSB7XG4gICAgICAgICAgICBsZXQgZGF5ID0gb3BlbltpXTtcbiAgICAgICAgICAgIGxldCBkYXlodG1sID0gJyc7XG4gICAgICAgICAgICBsZXQgdG9kYXkgPSB0aGlzLndlZWtkYXluYW1lc1tpXTtcblxuICAgICAgICAgICAgZGF5aHRtbCArPSBgPGRpdiBjbGFzcz1cInN3LXBvaW50LWluZm8tZGF5XCI+YDtcbiAgICAgICAgICAgIGhvdXJzaHRtbCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgZGF5ICYmIGogPCBkYXkubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICBsZXQgaG91cnMgPSBkYXlbal07XG4gICAgICAgICAgICAgICAgaWYgKGhvdXJzLk9wZW5UaW1lID09IG51bGwgJiYgaG91cnMuQ2xvc2VUaW1lID09ICcyMzo1OScpIHtcbiAgICAgICAgICAgICAgICAgICAgaG91cnNodG1sICs9ICcyNGgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhvdXJzaHRtbCArPSAoaG91cnNodG1sID8gJyB8ICcgOiAnJykgKyBgPHNwYW4+JHtob3Vycy5PcGVuVGltZSA/IGhvdXJzLk9wZW5UaW1lICA6ICcnfSAtICR7aG91cnMuQ2xvc2VUaW1lID8gaG91cnMuQ2xvc2VUaW1lIDogJyd9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiogbGFzdCBkYXkgb3IgZGlmZmVyZW50IHRpbWUsIHByaW50IGxhc3QgKiovXG4gICAgICAgICAgICBpZiAoIHByZXZpb3VzVGltZSAmJiAocHJldmlvdXNUaW1lICE9IGhvdXJzaHRtbCkgfHwgKGkgPT0gNikpIHtcbiAgICAgICAgICAgICAgICAvKiogbm90IGEgbG90IG9mIHNlbnNlIGluIG1vbi1tb24qL1xuICAgICAgICAgICAgICAgIGxldCBpc2ludGVydmFsID0gaSAtIGZyb21kYXlpZHggPiAyO1xuICAgICAgICAgICAgICAgIGxldCBpc2xhc3QgPSBpPT02O1xuXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0b0RheSA9IChpc2xhc3QgJiYgKGhvdXJzaHRtbCA9PSBwcmV2aW91c1RpbWUpKSA/IHRoaXMud2Vla2RheW5hbWVzW2ldIDogdGhpcy53ZWVrZGF5bmFtZXNbaS0xXTtcbiAgICAgICAgICAgICAgICAgICAgZGF5aHRtbCArPSBgPGxhYmVsPiR7KCBpc2ludGVydmFsICYmIGZyb21kYXkgPyBmcm9tZGF5ICsgJyAtICcgOiAnJyApICsgdG9EYXl9OjwvbGFiZWw+PHNwYW4+JHtwcmV2aW91c1RpbWV9PC9zcGFuPjwvZGl2PmA7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5odG1sICs9IGRheWh0bWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzbGFzdCAmJiBob3Vyc2h0bWwgJiYgIChob3Vyc2h0bWwgIT0gcHJldmlvdXNUaW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBvcGVuaHRtbCArPSBgPGRpdiBjbGFzcz1cInN3LXBvaW50LWluZm8tZGF5XCI+PGxhYmVsPiR7dGhpcy53ZWVrZGF5bmFtZXNbaV19OjwvbGFiZWw+PHNwYW4+JHtob3Vyc2h0bWx9PC9zcGFuPjwvZGl2PjwvZGl2PmA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnJvbWRheSA9IGkgPCBuZGF5c29wZW4gLSAxID8gdGhpcy53ZWVrZGF5bmFtZXNbaV0gOiAnJztcbiAgICAgICAgICAgICAgICBmcm9tZGF5aWR4ID0gaTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1RpbWUgPSBob3Vyc2h0bWw7XG5cblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1RpbWUgPSBob3Vyc2h0bWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wZW5odG1sICYmIHByZXZpb3VzVGltZSkge1xuICAgICAgICAgICAgb3Blbmh0bWwgPSBgPGxhYmVsPiR7ZnJvbWRheX0gLSAke3RoaXMud2Vla2RheW5hbWVzW25kYXlzb3BlbiAtIDFdfTogPC9sYWJlbD48c3Bhbj4ke3ByZXZpb3VzVGltZX08L3NwYW4+PC9kaXY+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIC8gRU5EIExFR0FDWSBjb2RlIC0tLS0tLS0tLS0tICovXG5cbiAgICAgICAgbGV0IGVQb2ludEluZm8gPSBqUXVlcnkoYDxkaXYgY2xhc3M9XCJzdy1wb2ludC1pbmZvICR7ZXh0cmFfY2xhc3N9XCI+XG4gIDxoNCBjbGFzcz0nc3ctcG9pbnQtaW5mby1uYW1lJz4ke3AuSW5mb3JtYXRpb24uTmFtZX08L2g0PlxuICA8ZGl2IGNsYXNzPSdzdy1wb2ludC1pbmZvLWFkZHInPiR7bG9jYWx9PC9kaXY+XG4gIDxkaXYgY2xhc3M9J3N3LXBvaW50LWluZm8tb3Blbic+JHtvcGVuaHRtbH08L2Rpdj5cbiAgPC9kaXY+YCk7XG5cbiAgICAgICAgLyogSXMgdGhlcmUgYWRpdGlvbmFsIGluZm9ybWF0aW9uIHJlcXVpcmVkPyAgKi9cbiAgICAgICAgaWYgKHR5cGVvZihwLk1hcEZpZWxkc1NlbGVjdCkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxldCBtb3JlRmllbGRzID0gcC5NYXBGaWVsZHNTZWxlY3Q7XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG1vcmVGaWVsZHMubGVuZ3RoOyArK2spIHtcbiAgICAgICAgICAgICAgICBlUG9pbnRJbmZvLmFwcGVuZChgPGRpdiBjbGFzcz1cInN3LXBvaW50LWluZm8tYWRkaXRpb25hbFwiPjxsYWJlbD4ke21vcmVGaWVsZHNba119PC9sYWJlbD48aW5wdXQgZGF0YS1pZD1cIiR7bW9yZUZpZWxkc1trXX1cIiBjbGFzcz1cInNoaXB0aW1pemVfbWFwZmllbGRzJHtwLlBvaW50SWR9XCIgdHlwZT1cInRleHRcIiAgaWQ9XCIke21vcmVGaWVsZHNba119JHtwLlBvaW50SWR9XCIvPjwvZGl2PmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJ0biA9IGpRdWVyeShgPGJ1dHRvbiBjbGFzcz1cInN3LXBvaW50LWluZm8tYnRuICR7c2VsZWN0ZWQgPyAnc2VsZWN0ZWQnIDogJyd9XCI+JHtzZWxlY3RlZCA/ICdTZWxlY3RlZCcgOiAnU2VsZWN0J308L2J1dHRvbj5gKTtcbiAgICAgICAgYnRuLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UG9pbnQocCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVQb2ludEluZm8uYXBwZW5kKGJ0bik7XG4gICAgICAgIHBhcmVudENvbnRhaW5lci5hcHBlbmQoZVBvaW50SW5mbyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFwcGVuZCBjdXN0b20gc3R5bGVcbiAgICAgKiBAcGFyYW0gc3RyaW5nIGNzcyAtIGEgc3RyaW5nIHdpdGggdGhlIHN0eWxlIHRvIGluamVjdFxuICAgICAqL1xuICAgIGFkZEN1c3RvbVN0eWxlKGNzcykge1xuXG4gICAgICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgc3R5bGUudHlwZSA9IFwidGV4dC9jc3NcIjtcblxuICAgICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgICAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH07XG5cbiAgICBhZGRNYXBIdG1sKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkFERCBNQVAgSFRNTCBPcHRpb25zIGFkZHJlc3NcIilcblxuICAgICAgICBsZXQgYWRkcmVzc3RyID0gJyc7XG4gICAgICAgIC8qIElyZWxhbmQgZG9lcyBub3QgaGF2ZSBwb3N0YWwgY29kZXMgKi9cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hZGRyZXNzLlN0cmVldG5hbWUxKSB7XG4gICAgICAgICAgICBhZGRyZXNzdHIgPSB0aGlzLm9wdGlvbnMuYWRkcmVzcy5Qb3N0YWxDb2RlID8gdGhpcy5vcHRpb25zLmFkZHJlc3MuUG9zdGFsQ29kZSA6IHRoaXMub3B0aW9ucy5hZGRyZXNzLlN0cmVldG5hbWUxO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtYXBodG1sID0gYDxkaXYgaWQ9XCJzd1wiPlxuICAgIDxkaXYgaWQ9XCJzd19fb3ZlcmxheVwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJzd19fY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGlkPVwic3ctc2VhcmNoXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJzdy1xdWVyeS13cmFwcGVyXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJzdy1xdWVyeVwiIHBsYWNlaG9sZGVyPVwiJHthZGRyZXNzdHJ9XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwic3ctcXVlcnktcmVzdWx0c1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwicXVlcnktb3B0aW9uc1wiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cInN3LWRpc3BsYXktb3B0aW9uc1wiPlxuICAgICAgPC9kaXY+IFxuICAgICAgPGRpdiBpZD1cInN3LW1hcC13cmFwcGVyXCIgY2xhc3M9XCJzdy10YWIgc2VsZWN0ZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN3LXF1ZXJ5LXJlc3VsdHMtZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cInN3LW1hcFwiIGNsYXNzPVwic2hpcHRpbWl6ZS1waWNrdXBfX21hcFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwic3ctbWFwLWVycm9yXCI+PC9kaXY+IFxuICAgICAgICA8ZGl2IGlkPVwic3ctbWFwLXNlbGVjdGVkLXBvaW50XCI+PC9kaXY+XG4gICAgICA8L2Rpdj4gIFxuICAgICAgPGRpdiBjbGFzcz0nc3ctdGFiJz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN3LXF1ZXJ5LXJlc3VsdHMtZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cInN3LWxpc3QtcG9pbnRzXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgaWQ9XCJzdy1tYXAtbWVzc2FnZVwiPjwvZGl2PlxuICAgICAgPGRpdiBpZD1cInN3LXNlYXJjaC1zdGF0dXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN3LWxvYWRlclwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PmA7XG4gICAgICAgIGpRdWVyeSh0aGlzLm1hcFBhcmVudENvbnRhaW5lcikuYXBwZW5kKG1hcGh0bWwpO1xuICAgICAgICBsZXQgZGlzcGxheU9wdGlvbnMgPSBqUXVlcnkoXCIjc3ctZGlzcGxheS1vcHRpb25zXCIpO1xuICAgICAgICBsZXQgb3B0TWFwID0galF1ZXJ5KGA8c3BhbiBjbGFzcz0nc3ctZGlzcGxheS1vcHRpb24gc2VsZWN0ZWQnPk1BUDwvc3Bhbj5gKTtcbiAgICAgICAgbGV0IG9wdExpc3QgPSBqUXVlcnkoYDxzcGFuIGNsYXNzPSdzdy1kaXNwbGF5LW9wdGlvbidcIj5MSVNUPC9zcGFuPmApO1xuXG4gICAgICAgIG9wdE1hcC5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERpc3BsYXlPcHRpb24oMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBvcHRMaXN0Lm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGlzcGxheU9wdGlvbigxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlzcGxheU9wdGlvbnMuYXBwZW5kKG9wdE1hcCk7XG4gICAgICAgIGRpc3BsYXlPcHRpb25zLmFwcGVuZChvcHRMaXN0KTtcblxuICAgICAgICBsZXQgcXVlcnlvcHQgPSBqUXVlcnkoXCIjc3ctcXVlcnktd3JhcHBlclwiKTtcbiAgICAgICAgbGV0IHNlYXJjaGJ0biA9IGpRdWVyeShgPGJ1dHRvbiBpZD1cInN3LXF1ZXJ5LWJ0blwiXCI+U2VhcmNoPC9idXR0b24+YCk7XG4gICAgICAgIHF1ZXJ5b3B0LmFwcGVuZChzZWFyY2hidG4pO1xuXG4gICAgICAgIHNlYXJjaGJ0bi5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdlb2NvZGVRdWVyeSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgcXVlcnlpbnB1dCA9IGpRdWVyeShcIiNzdy1xdWVyeVwiKTtcbiAgICAgICAgcXVlcnlpbnB1dC5vbigna2V5dXAnLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT0gMTMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdlb2NvZGVRdWVyeSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRpbWVvdXRLZXlEb3duICYmIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRLZXlEb3duKTtcbiAgICAgICAgICAgIHRoaXMudGltZW91dEtleURvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdlb2NvZGVRdWVyeSgpO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgalF1ZXJ5KFwiI3N3X19vdmVybGF5XCIpLmNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNYXAoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRlY2ltYWwgbGF0XG4gICAgICogQHBhcmFtIGRlY2ltYWwgbG5nXG4gICAgICovXG4gICAgY2VudGVyTWFwKGxhdCwgbG5nKSB7XG4gICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLmNlbnRlck1hcChsYXQsIGxuZyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEhpZGUgdGhlIG1hcFxuICAgICAqL1xuICAgIGNsb3NlTWFwKCkge1xuICAgICAgICBqUXVlcnkoXCIjc3dcIilcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcyhcIm9wZW5cIik7XG4gICAgICAgIGpRdWVyeSgnaHRtbCxib2R5JylcbiAgICAgICAgICAgIC5zY3JvbGxUb3AodGhpcy51c2VyU2Nyb2xsKTtcbiAgICB9O1xuXG4gICAgZGlzcGxheU1lc3NhZ2UobXNnKSB7XG4gICAgICAgIGpRdWVyeSgnI3N3LW1hcC1tZXNzYWdlJykuYWRkQ2xhc3MoXCJvcGVuXCIpO1xuICAgICAgICBqUXVlcnkoJyNzdy1tYXAtbWVzc2FnZScpLmh0bWwobXNnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGlzcGxheSB0aGUgcG9zc2libGUgb3B0aW9uIHRvIHRoZSB1c2VyIGluIGEgbGlzdCB1bmRlciB0aGUgc2VhcmNoIGlucHV0XG4gICAgICovXG5cbiAgICAvL1xuICAgIC8vICMjREpESiBCcG9zdCBzdHVmZlxuICAgIGRpc3BsYXlQbGFjZXMocGxhY2VzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKDExKTtcbiAgICAgICAgalF1ZXJ5KFwiLnN3LXF1ZXJ5LXJlc3VsdHMtZGVzY3JpcHRpb25cIikuaHRtbCgnJyk7XG5cbiAgICAgICAgdGhpcy5xdWVyeVJlc3VsdHMgPSBwbGFjZXM7XG4gICAgICAgIGxldCByZXN1bHRzQ29udGFpbmVyID0galF1ZXJ5KFwiI3N3LXF1ZXJ5LXJlc3VsdHNcIik7XG5cbiAgICAgICAgLy8gIyNESkRKIE92ZGUgdmVyb3ZhdG5vIHRyZWJhIGl6bWVuYSBkYSBzZSBvZHJhZGlcbiAgICAgICAgY29uc29sZS5sb2coXCJEaXNwbGF5IHBsYWNlc1wiKTtcbiAgICAgICAgY29uc29sZS5sb2cocGxhY2VzKTtcblxuICAgICAgICBsZXQgaHRtbCA9ICcnO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsYWNlcy5sZW5ndGg7ICsraSkge1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHBsYWNlc1tpXS5hZGRyZXNzLlBvc3RhbENvZGUgIT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJzdy1xdWVyeS1yZXN1bHRcIiBkYXRhLWlkeD1cIiR7aX1cIj4ke3BsYWNlc1tpXS5kaXNwbGF5X25hbWV9PC9kaXY+YFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFodG1sKSB7XG4gICAgICAgICAgICBodG1sID0gJ0NvdWxkIG5vdCBnZW9sb2NhdGUgeW91ciBhZGRyZXNzLCBwbGVhc2UgY29uZmlybSB0aGF0IHRoZSBhZGRyZXNzIGlzIGNvcnJlY3QnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coMjIpO1xuXG4gICAgICAgIHJlc3VsdHNDb250YWluZXIuaHRtbChodG1sKTtcbiAgICAgICAgalF1ZXJ5KFwiLnN3LXF1ZXJ5LXJlc3VsdFwiKS5vbignY2xpY2snLCAoZXZ0KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKDMzKTtcblxuICAgICAgICAgICAgbGV0IGlkeCA9IGpRdWVyeShldnQudGFyZ2V0KS5hdHRyKFwiZGF0YS1pZHhcIik7XG5cbiAgICAgICAgICAgIGlmIChwYXJzZUludChpZHgpID09ICdpc05hTicgfHwgaWR4ID4gdGhpcy5xdWVyeVJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnZhbGlkIGlkeCBzZWxlY3RlZDogXCIsIGlkeCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGxhY2UgPSB0aGlzLnF1ZXJ5UmVzdWx0c1tpZHhdO1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWRkcmVzcy5MYXQgPSBwbGFjZS5sYXQ7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWRkcmVzcy5Mb25nID0gcGxhY2UubG5nO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInNlbGVjdGVkIFwiLCB0aGlzLnF1ZXJ5UmVzdWx0c1tpZHhdKTtcbiAgICAgICAgICAgIGpRdWVyeShcIiNzdy1xdWVyeS1yZXN1bHRzXCIpLmh0bWwoJycpO1xuICAgICAgICAgICAgalF1ZXJ5KFwiI3N3LXF1ZXJ5XCIpLnZhbChwbGFjZS5kaXNwbGF5X25hbWUpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZihwbGFjZS5hZGRyZXNzKSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gcGxhY2UuYWRkcmVzcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGxhY2UuYWRkcmVzc1twcm9wXSAmJiAocGxhY2UuYWRkcmVzc1twcm9wXS5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3NbcHJvcF0gPSBwbGFjZS5hZGRyZXNzW3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MuU3RyZWV0bmFtZTEgPSBwbGFjZS5hZGRyZXNzLlN0cmVldG5hbWUxO1xuICAgICAgICAgICAgY29uc29sZS5sb2cocGxhY2UuYWRkcmVzcywgXCJBZGRyZXNzIGlzIG5vdyBcIiwgdGhpcy5vcHRpb25zLmFkZHJlc3MpO1xuICAgICAgICAgICAgdGhpcy5mZXRjaFBvaW50cyh0aGlzLm9wdGlvbnMuYWRkcmVzcyk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBoYXNoTGF0TG5nKHBvaW50KSB7XG4gICAgICAgIGxldCBsYXRzdHIgPSAocG9pbnQubGF0ICsgJycpLnJlcGxhY2UoJy4nLCAnLScpO1xuICAgICAgICBsZXQgbG5nc3RyID0gKHBvaW50LmxuZyArICcnKS5yZXBsYWNlKCcuJywgJy0nKTtcblxuICAgICAgICByZXR1cm4gJ3InICsgbGF0c3RyICsgJ18nICsgbG5nc3RyO1xuICAgIH07XG5cblxuICAgIGRpc3BsYXlSZXN1bHRzKGRhdGEpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJEaXNwbGF5UG9pbnRzMjIzMjJcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICB0aGlzLm1hcGludGVyZmFjZS5jbGVhck1hcmtlcnMoKTtcbiAgICAgICAgalF1ZXJ5KFwiI3N3X19jb250YWluZXJcIikucmVtb3ZlQ2xhc3MoJ3NlYXJjaGluZycpO1xuICAgICAgICB0aGlzLnBpY2t1cFBvaW50c0xvYWRTdG9wKCk7XG4gICAgICAgIGpRdWVyeShcIi5zdy1xdWVyeS1yZXN1bHRzLWRlc2NyaXB0aW9uXCIpLmh0bWwoXCI8ZGl2IGNsYXNzPSdzdy1xdWVyeS1yZXN1bHRzLWRlc2NyaXB0aW9uJz5cIiArIFwiRGlzcGxheWluZyB0aGUgXCIgKyAgZGF0YS5Db3VudCArIFwiY2xvc2VzdCBwb2ludHMgdG8gdGhlIGdpdmVuIGxvY2F0aW9uXCIgKyBcIjwvZGl2PlwiKTtcblxuICAgICAgICAvLyAjI0RKREogV1AgZXhjbHVzaXZlIGlzc3VlIGJlY2F1c2Ugb2YgdGhpc1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgICB0aGlzLnBpY2t1cFBvaW50cyA9IGRhdGEuUG9pbnQ7XG4gICAgICAgIHRoaXMubWFwQ2hhbmdlZCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVMaXN0KHRoaXMucGlja3VwUG9pbnRzKTtcbiAgICAgICAgdGhpcy5tYXBpbnRlcmZhY2UuYWRkTWFya2Vycyh0aGlzLnBpY2t1cFBvaW50cywgKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJBZGRlZCBtYXJrZXJzXCIpXG4gICAgICAgICAgICBsZXQgcGFyZW50ID0galF1ZXJ5KFwiI3N3LW1hcC1zZWxlY3RlZC1wb2ludFwiKTtcbiAgICAgICAgICAgIHBhcmVudC5odG1sKFwiXCIpO1xuICAgICAgICAgICAgdGhpcy5hZGRQb2ludEluZm8odGhpcy5waWNrdXBQb2ludHNbaWR4XSwgMCwgJycsIHBhcmVudCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImFkZGVkIHBvaW50IGluZm9cIilcbiAgICAgICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLnNlbGVjdFBvaW50KGlkeCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkFmdGVyIHNlbGVjdCBwb2ludCBicmVha1wiKVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIH0sIDEwMCk7XG5cbiAgICB9O1xuXG5cbiAgICAvKioqXG4gICAgICogR2V0IFBvaW50cyBmcm9tIHRoZSBBUEkgYW5kIGRpc3BsYXkgdGhlbVxuICAgICAqKi9cbiAgICBmZXRjaFBvaW50cyhhZGRyZXNzLCBmcmVzb2x2ZSkge1xuICAgICAgICAvLyAjI0RKREogQWtvIGplIGJsb2NrIG92byBuZSB0cmViYSwgYWtvIG5pamUgb25kYSB0cmViYVxuICAgICAgICBpZiAoIXRoaXMuaXNCbG9ja0NoZWNrb3V0KCkpe1xuICAgICAgICAgICAgdGhpcy5jYXJyaWVyX2lkID0galF1ZXJ5KCcjc2hpcHBpbmdfY2Fycmllcl9pZCcpLnZhbCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRDYXJyaWVySWQoalF1ZXJ5KCcjc2hpcHBpbmdfY2Fycmllcl9pZCcpLnZhbCgpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRyZXNzLkNvdW50cnkgPSBqUXVlcnkoJyNzaGlwcGluZy1jb3VudHJ5JykudmFsKCk7XG5cbiAgICAgICAgLy8gIyNESkRKIE92byBkb2xlIHUgZWxzZSBqZSB2aXNhayBpemdsZWRhXG4gICAgICAgIC8vIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5zZXRDYXJyaWVySWQodGhpcy5jYXJyaWVyX2lkKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zb2xlLmxvZyhcIkZldGNoUG9pbnRzMjMyMjIyXCIpO1xuICAgICAgICAvLyAjI0RKREogT3ZkZSBzaSBzdGFvLCB0cmViYSBzZSBwcm9zbGVkaXRpIGNhcnJpZXIgaWQgbmVrYWtvXG4gICAgICAgIGNvbnNvbGUubG9nKGFkZHJlc3MpO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnJpZXJfaWQpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQb2ludCA9IG51bGw7XG5cbiAgICAgICAgalF1ZXJ5KFwiI3N3LW1hcC1zZWxlY3RlZC1wb2ludFwiKS5odG1sKCcnKTtcbiAgICAgICAgalF1ZXJ5KCcjc3ctbWFwLW1lc3NhZ2UnKS5yZW1vdmVDbGFzcygnb3BlbicpO1xuICAgICAgICBqUXVlcnkoXCIuc3ctcXVlcnktcmVzdWx0cy1kZXNjcmlwdGlvblwiKS5odG1sKCcnKTtcblxuICAgICAgICBpZiAoIXRoaXMubWFwaW50ZXJmYWNlLmlzTWFwTW92aW5nKCkpIHtcbiAgICAgICAgICAgIGpRdWVyeShcIiNzd19fY29udGFpbmVyXCIpLmFkZENsYXNzKCdzZWFyY2hpbmcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuY2FjaGVSZXN1bHRzW3RoaXMuaGFzaExhdExuZyh7XG4gICAgICAgICAgICBsYXQ6IHRoaXMub3B0aW9ucy5hZGRyZXNzLkxhdCxcbiAgICAgICAgICAgIGxuZzogdGhpcy5vcHRpb25zLmFkZHJlc3MuTG9uZ1xuICAgICAgICB9KV0pICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiT1ZERUVFRUVcIik7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlSZXN1bHRzKHRoaXMuY2FjaGVSZXN1bHRzW3RoaXMuaGFzaExhdExuZyh7bGF0OiB0aGlzLm9wdGlvbnMuYWRkcmVzcy5MYXQsIGxuZzogdGhpcy5vcHRpb25zLmFkZHJlc3MuTG9uZ30pXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVxID0ge1xuICAgICAgICAgICAgXCJBZGRyZXNzXCI6IGFkZHJlc3MsXG4gICAgICAgICAgICBcIkNhcnJpZXJJZFwiOiB0aGlzLmNhcnJpZXJfaWQsXG4gICAgICAgICAgICAnYWN0aW9uJzogJ3NoaXB0aW1pemVfcGlja3VwX2xvY2F0aW9ucydcbiAgICAgICAgfTtcblxuICAgICAgICBqUXVlcnkuZ2V0SlNPTih0aGlzLm9wdGlvbnMuYWpheF91cmwsIHJlcSAsICAoZGF0YSkgID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2FvYW9vbyBuYXNhb29vXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5vcHRpb25zLmFqYXhfdXJsKTtcbiAgICAgICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLmNsZWFyTWFya2VycygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgICAgICAvKiBXZSBoYXZlIHRoZSBwb2ludHMgcmVtb3ZlIHRoZSBsb2FkZXIgKi9cbiAgICAgICAgICAgIHRoaXMucGlja3VwUG9pbnRzTG9hZFN0b3AoKTtcblxuICAgICAgICAgICAgalF1ZXJ5KFwiI3N3LW1hcC13cmFwcGVyXCIpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgalF1ZXJ5KFwiI3N3X19jb250YWluZXJcIikucmVtb3ZlQ2xhc3MoJ3NlYXJjaGluZycpO1xuXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNZXNzYWdlKGRhdGEuZXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YS5Qb2ludCkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLlBvaW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVJlc3VsdHNbdGhpcy5oYXNoTGF0TG5nKHtsYXQ6IHRoaXMub3B0aW9ucy5hZGRyZXNzLkxhdCwgbG5nOiB0aGlzLm9wdGlvbnMuYWRkcmVzcy5Mb25nfSldID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UmVzdWx0cyhkYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNZXNzYWdlKHRoaXMub3B0aW9ucy5sYWJlbHMubm9wb2ludHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiAoZnJlc29sdmUpICE9ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgLyogV2Ugd2FudCB0byBtYWtlIHN1cmUgY2hhbmdlcyBhcmUgY29tbWl0ZWQgdG8gdGhlIGRvbSBiZWZvcmUgd2UgZGVjbGFyZSB3ZSdyZSBkb25lICovXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZyZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuZmFpbCgoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNZXNzYWdlKHRoaXMub3B0aW9ucy5sYWJlbHMubm9wb2ludHMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYXRhbCBlcnJvciB3aWRnZXQgcmVxdWVzdGluZyBwb2ludHMgZG8gd2UgaGF2ZSBhbiBBUEkgYnVnP1wiLCBlcnIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGdlb2NvZGVRdWVyeSgpIHtcbiAgICAgICAgalF1ZXJ5KFwiI3N3LXF1ZXJ5LXJlc3VsdHNcIikuaHRtbCgnJyk7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJHZW9jb2RlIHF1ZXJ5XCIpO1xuXG4gICAgICAgIGxldCBxdWVyeXZhbCA9IGpRdWVyeShcIiNzdy1xdWVyeVwiKS52YWwoKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhxdWVyeXZhbCk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MuTGF0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MuTG9uZyA9IG51bGw7XG5cbiAgICAgICAgaWYgKHF1ZXJ5dmFsLmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiT1ZPVElUUkVCQVwiKTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5vcHRpb25zLmFkZHJlc3MpO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm1hcGludGVyZmFjZSk7XG5cblxuICAgICAgICBjb25zb2xlLmxvZyhcIk9WREUgQ09VTlRSWVwiKTtcblxuICAgICAgICBpZiAoalF1ZXJ5KCcjY29tcG9uZW50cy1mb3JtLXRva2VuLWlucHV0LTAnKS5sZW5ndGgpe1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MuQ291bnRyeSA9IGpRdWVyeSgnI2NvbXBvbmVudHMtZm9ybS10b2tlbi1pbnB1dC0wJykudmFsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoalF1ZXJ5KFwiI3NoaXBwaW5nLWNvdW50cnkgb3B0aW9uOnNlbGVjdGVkXCIpLmxlbmd0aCl7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWRkcmVzcy5Db3VudHJ5ID0galF1ZXJ5KFwiI3NoaXBwaW5nLWNvdW50cnkgb3B0aW9uOnNlbGVjdGVkXCIpLnRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGpRdWVyeSgnI3NoaXBwaW5nLWNvdW50cnknKS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hZGRyZXNzLkNvdW50cnkgPSBqUXVlcnkoJyNzaGlwcGluZy1jb3VudHJ5IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGpRdWVyeSgnI3NlbGVjdDItYmlsbGluZ19jb3VudHJ5LWNvbnRhaW5lcicpLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MuQ291bnRyeSA9IGpRdWVyeSgnI3NlbGVjdDItYmlsbGluZ19jb3VudHJ5LWNvbnRhaW5lcicpLnRleHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWRkcmVzcy5Db3VudHJ5ID09ICdCRScgfHwgdGhpcy5vcHRpb25zLmFkZHJlc3MuQ291bnRyeSA9PSAnYmUnIHx8IHRoaXMub3B0aW9ucy5hZGRyZXNzLkNvdW50cnkgPT0gJ0JlbGdpdW0nKXtcbiAgICAgICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLmdlb2NvZGVCcG9zdCh7XG4gICAgICAgICAgICAgICAgXCJhZGRyZXNzXCI6IHF1ZXJ5dmFsLFxuICAgICAgICAgICAgICAgIFwiY291bnRyeVwiOiAnQkUnXG4gICAgICAgICAgICB9LCAocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiR2VvY29kZWVlZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQbGFjZXMocmVzcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXBpbnRlcmZhY2UuZ2VvY29kZSh7XG4gICAgICAgICAgICAgICAgXCJhZGRyZXNzXCI6IHF1ZXJ5dmFsLFxuICAgICAgICAgICAgICAgIFwiY291bnRyeVwiOiB0aGlzLm9wdGlvbnMuYWRkcmVzcy5Db3VudHJ5XG4gICAgICAgICAgICB9LCAocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiR2VvY29kZWVlZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQbGFjZXMocmVzcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaGlwcGluZ0RhdGEsIHRoZSBhZGRyZXNzIHBhcnRzXG4gICAgICogQHBhcmFtIGZfY2FsbGJhY2sgLCB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGFsbCBtaWdodHkgZ29vZ2xlIHJldHVybnMgYSByZXN1bHRcbiAgICAgKi9cbiAgICBnZW9jb2RlQWRkcmVzcyhhZGRyZXNzLCBmX2NhbGxiYWNrKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGFkZHJlc3MpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdFT0NPREVBRERSRVNTXCIpO1xuICAgICAgICBpZiAoYWRkcmVzcy5jb3VudHJ5ID09ICdQb3J0dWdhbCcgJiYgdHlwZW9mIChtaXNzaW5nWmlwUFQpICE9ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvKiBJcyB0aGlzIGEgcG9zdGFsIGNvZGUgd2Uga25vdyBpcyBub3QgZ2VvY29kYWJsZSBpbiBub21pbmF0aW0/ICovXG4gICAgICAgICAgICBsZXQgemlwNGRpZyA9IGFkZHJlc3MucG9zdGNvZGUuc3Vic3RyaW5nKDAsIDQpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaXNzaW5nWmlwUFQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAobWlzc2luZ1ppcFBUW2ldLnppcGNvZGUgPT0gemlwNGRpZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVzdWx0cyA9IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X25hbWU6IG1pc3NpbmdaaXBQVFtpXS5kaXNwbGF5X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IG1pc3NpbmdaaXBQVFtpXS5sYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsbmc6IG1pc3NpbmdaaXBQVFtpXS5sbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBcInN0cmVldFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBhZGRyZXNzLnBvc3Rjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IG1pc3NpbmdaaXBQVFtpXS5kaXNwbGF5X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeV9jb2RlOiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXJ5UmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgICAgIGZfY2FsbGJhY2sodGhpcy5xdWVyeVJlc3VsdHMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJOaWplIHJlc2Vub1wiKTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5tYXBpbnRlcmZhY2UpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQURSRVNBXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhhZGRyZXNzKTtcblxuICAgICAgICBpZiAoYWRkcmVzcy5Db3VudHJ5ID09ICdCRScgfHwgYWRkcmVzcy5Db3VudHJ5ID09ICdiZScgfHwgYWRkcmVzcy5Db3VudHJ5ID09ICdCZWxnaXVtJyl7XG4gICAgICAgICAgICB0aGlzLm1hcGludGVyZmFjZS5nZW9jb2RlQWRkcmVzc1BhcnRzQnBvc3QoIChnZW9jb2RlKSAgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZ2VvY29kZS5sYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwaW50ZXJmYWNlLmdlb2NvZGVBZGRyZXNzUGFydHNCcG9zdCggKGdlb2NvZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZfY2FsbGJhY2soZ2VvY29kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGFkZHJlc3MuQ2l0eSwgYWRkcmVzcy5Db3VudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmX2NhbGxiYWNrKGdlb2NvZGUpO1xuICAgICAgICAgICAgfSwgYWRkcmVzcy5DaXR5LCBhZGRyZXNzLkNvdW50cnksIGFkZHJlc3MuUG9zdGFsQ29kZSwgYWRkcmVzcy5TdHJlZXRuYW1lMSk7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLmdlb2NvZGVBZGRyZXNzUGFydHMoIChnZW9jb2RlKSAgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZ2VvY29kZS5sYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwaW50ZXJmYWNlLmdlb2NvZGVBZGRyZXNzUGFydHMoIChnZW9jb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmX2NhbGxiYWNrKGdlb2NvZGUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBhZGRyZXNzLkNpdHksIGFkZHJlc3MuQ291bnRyeSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZl9jYWxsYmFjayhnZW9jb2RlKTtcbiAgICAgICAgICAgIH0sIGFkZHJlc3MuQ2l0eSwgYWRkcmVzcy5Db3VudHJ5LCBhZGRyZXNzLlBvc3RhbENvZGUsIGFkZHJlc3MuU3RyZWV0bmFtZTEpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1hcE1vdmVkKG1hcGNlbnRlcikge1xuICAgICAgICBqUXVlcnkoXCIjc3ctcG9pbnQtaW5mb1wiKS5odG1sKFwiXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MuTGF0ID0gbWFwY2VudGVyLmxhdDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hZGRyZXNzLkxvbmcgPSBtYXBjZW50ZXIubG5nO1xuICAgICAgICAgICAgdGhpcy5mZXRjaFBvaW50cyh0aGlzLm9wdGlvbnMuYWRkcmVzcywgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBsb2FkTGFiZWxzKGZjYWxsYmFjaykge1xuICAgICAgICBqUXVlcnkuZ2V0SlNPTih0aGlzLm9wdGlvbnMuYWpheExvYWRMYWJlbHMsIChyZXNwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWxzID0gcmVzcDtcbiAgICAgICAgICAgIGZjYWxsYmFjayhyZXNwKTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5mYWlsKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIHdpZGdldCBsYWJlbHMgYXQgXCIgKyB0aGlzLm9wdGlvbnMuYWpheExvYWRMYWJlbHMsIGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTG9hZCBzY3JpcHRzIHdpZGdldFwiKTtcbiAgICAgICAgLyogbm90IGRlZmluZWQgb3IgdmVyc2lvbiA8IDEuNyBjb21wYXJlIG9ubHkgc3VidmVyc2lvbiBmb3Igc2ltcGxpY2l0eSAqKi9cbiAgICAgICAgaWYgKHR5cGVvZiAoalF1ZXJ5KSA9PSAndW5kZWZpbmVkJyB8fCAocGFyc2VJbnQoalF1ZXJ5LmZuLmpxdWVyeS5zdWJzdHJpbmcoMiwgMikpIDwgNykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTG9hZCBzY3JpcHRzIHdpZGdldCBpZlwiKTtcbiAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLmxvYWRTY3JpcHQoJ2h0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0zLjcuMC5taW4uanMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbWUuc2NyaXB0c0xvYWRlZCgpO1xuICAgICAgICAgICAgICAgIGlmIChtZS5vcHRpb25zLm9uaW5pdCkge1xuICAgICAgICAgICAgICAgICAgICBtZS5vcHRpb25zLm9uaW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJqcXVlcnkgaXMgd2lkZ2V0IGxvYWRlZCBib290c3RyYXBcIik7XG4gICAgICAgICAgICB0aGlzLnNjcmlwdHNMb2FkZWQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMub25pbml0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uaW5pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIFN0cmluZyB1cmwgLSB0aGUgdXJsIG9mIHRoZSBzY3JpcHQgdG8gbG9hZFxuICAgICAqIEBwYXJhbSBTdHJpbmcgY2FsbGJhY2sgLSB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gY2FsbCBhZnRlciB0aGUgc2NyaXB0IGlzIGxvYWRlZFxuICAgICAqL1xuICAgIGxvYWRTY3JpcHQodXJsLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkxvYWQgU2NyaXB0IHdpZGdldCBzaW5ndWxhclwiKTtcbiAgICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICAgIHNjcmlwdC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcblxuICAgICAgICBpZiAoc2NyaXB0LnJlYWR5U3RhdGUpIHsgLypJRSAqL1xuICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0LnJlYWR5U3RhdGUgPT0gJ2xvYWRlZCcgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY2FsYmFjayAmJiBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0cmluZyB1cmxcbiAgICAgKi9cbiAgICBzdGF0aWMgbG9hZFN0eWxlKHVybCkge1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTE9BREREREQgVEVTVFRUVFRUVFwiKTtcbiAgICAgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgICAgIHN0eWxlLmhyZWYgPSB1cmw7XG5cbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfTtcblxuICAgIGxvZyhtc2csIGZvcmNlKSB7XG4gICAgICAgIGlmICghZm9yY2UgJiYgIXRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2cobXNnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogY2xlYXIgYW55IHVpIGVsZW1lbnRzIHRoYXQgcmVzdWx0IGZyb20gc2VsZWN0aW9uIGFuZCBvdGhlciBzdGF0ZSB2YXJpYWJsZXNcbiAgICAgKi9cbiAgICByZXNldE1hcEVsZW1lbnRzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUG9pbnQgPSBudWxsO1xuXG4gICAgICAgIGpRdWVyeShcIiNzdy1tYXAtc2VsZWN0ZWQtcG9pbnRcIikuaHRtbCgnJyk7XG4gICAgICAgIGpRdWVyeSgnI3N3LW1hcC1tZXNzYWdlJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTtcbiAgICAgICAgalF1ZXJ5KFwiLnN3LXF1ZXJ5LXJlc3VsdHMtZGVzY3JpcHRpb25cIikuaHRtbCgnJyk7XG4gICAgfTtcblxuICAgIG9wZW5NYXAoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiT3BlbiBtYXAgd2lkZ2V0MjMyMjIyMjI2NjY2NjZcIik7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzQmxvY2tDaGVja291dCgpKXtcbiAgICAgICAgICAgIHZhciBwbGF0Zm9ybSA9IG5ldyBXb29jb21tZXJjZSgpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MgPSBwbGF0Zm9ybS5nZXRTaGlwcGluZ0RhdGEoKS5BZGRyZXNzO1xuXG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2Fycmllcl9pZCk7XG4gICAgICAgIHRoaXMudXNlclNjcm9sbCA9IGpRdWVyeSgnaHRtbCxib2R5JylcbiAgICAgICAgICAgIC5zY3JvbGxUb3AoKTtcblxuICAgICAgICBqUXVlcnkoJ2h0bWwsYm9keScpXG4gICAgICAgICAgICAuc2Nyb2xsVG9wKDApO1xuXG4gICAgICAgIGpRdWVyeShcIiNzd1wiKVxuICAgICAgICAgICAgLmFkZENsYXNzKFwib3BlblwiKTtcbiAgICAgICAgalF1ZXJ5KFwiI3N3LW1hcC13cmFwcGVyXCIpLmFkZENsYXNzKCdsb2FkaW5nJyk7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJPdmRlZWUgMVwiKTtcblxuICAgICAgICBqUXVlcnkoXCIjc3ctcXVlcnlcIikudmFsKHRoaXMub3B0aW9ucy5hZGRyZXNzLlN0cmVldG5hbWUxKTtcbiAgICAgICAgdGhpcy5zZWxlY3REaXNwbGF5T3B0aW9uKDApO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiT3ZkZWVlIDNcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMub3B0aW9ucy5hZGRyZXNzKVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWRkcmVzcy5TdHJlZXRuYW1lMSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJJbWEgdWxpY3VcIik7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hZGRyZXNzLmxhdCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmVtYSBsYXRcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW9jb2RlQWRkcmVzcyh0aGlzLm9wdGlvbnMuYWRkcmVzcywgKGdlbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdFT09PT09PT09cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGdlbyk7XG4gICAgICAgICAgICAgICAgICAgIGdlby5sZW5ndGggJiYgKGdlbyA9IGdlb1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hZGRyZXNzLkxhdCA9IGdlby5sYXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hZGRyZXNzLkxvbmcgPSBnZW8ubG5nO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdFT0NPREUyMjJcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMub3B0aW9ucy5hZGRyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaFBvaW50cyh0aGlzLm9wdGlvbnMuYWRkcmVzcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmVtYSB1bGljdSBpIGlkZSB1IGZldGNoXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hQb2ludHModGhpcy5vcHRpb25zLmFkZHJlc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGdldFNoaXBwaW5nRGF0YSgpe1xuICAgICAgICBsZXQgc2hpcHBpbmdEYXRhID0gW107XG4gICAgICAgIHRoaXMuZ2V0QmxvY2tTaGlwcGluZ0RhdGEoKTtcbiAgICAgICAgc2hpcHBpbmdEYXRhW1wiQWRkcmVzc1wiXSA9IHRoaXMub3B0aW9ucy5hZGRyZXNzO1xuICAgICAgICAvLyBzaGlwcGluZ0RhdGFbXCJDYXJyaWVySWRcIl0gPSB0aGlzLmNhcnJpZXJfaWQ7XG4gICAgICAgIHJldHVybiBzaGlwcGluZ0RhdGE7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2tTaGlwcGluZ0RhdGEoKXtcbiAgICAgICAgdmFyIGFkZHJlc3MgPSBqUXVlcnkoJyNzaGlwcGluZy1hZGRyZXNzXzEnKS52YWwoKTtcbiAgICAgICAgdmFyIGFwYXJ0bWVudCA9IGpRdWVyeSgnI3NoaXBwaW5nLWFkZHJlc3NfMicpLnZhbCgpO1xuICAgICAgICB2YXIgY2l0eSA9IGpRdWVyeSgnI3NoaXBwaW5nLWNpdHknKS52YWwoKTtcbiAgICAgICAgdmFyIHBvc3RhbENvZGUgPSBqUXVlcnkoJyNzaGlwcGluZy1wb3N0Y29kZScpLnZhbCgpO1xuXG4gICAgICAgIC8vIEV4dHJhY3RpbmcgQ291bnRyeVxuICAgICAgICB2YXIgY291bnRyeSA9IGpRdWVyeSgnI2NvbXBvbmVudHMtZm9ybS10b2tlbi1pbnB1dC0wJykudmFsKCk7XG5cblxuICAgICAgICBpZiAoY291bnRyeSA9PSBcIlwiKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ09VTlRSWSBFTVBUWVwiKTtcbiAgICAgICAgICAgIGpRdWVyeSgnaW5wdXRbYXJpYS1sYWJlbCo9XCJDb3VudHJ5L1JlZ2lvblwiXScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY291bnRyeSA9IGpRdWVyeSh0aGlzKS52YWwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9ZWxzZSBpZihjb3VudHJ5ID09IFwiXCIpe1xuICAgICAgICAgICAgY291bnRyeSA9IGpRdWVyeSgnI3NoaXBwaW5nLWNvdW50cnkgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhcIkJMT0NLIFNISVBQSU5HIERBVEEgT04gR0VUIEJMT0NLIFNISVBQSU5HIERBVEFcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvdW50cnkpO1xuXG4gICAgICAgIHdpbmRvdy5zaGlwdGltaXplX3NoaXBwaW5nX2FkZHJlc3MgPVxuICAgICAgICB7XG4gICAgICAgICAgICBcIkFkZHJlc3NcIjp7XG4gICAgICAgICAgICAgICAgXCJMYXRcIjogXCJcIixcbiAgICAgICAgICAgICAgICBcIkxvbmdcIjogXCJcIixcbiAgICAgICAgICAgICAgICBcIlN0cmVldG5hbWUxXCI6IGFkZHJlc3MsXG4gICAgICAgICAgICAgICAgXCJTdHJlZXRuYW1lMlwiOiAnJyxcbiAgICAgICAgICAgICAgICBcIkhvdXNlTnVtYmVyXCI6IGFwYXJ0bWVudCxcbiAgICAgICAgICAgICAgICBcIk51bWJlckV4dGVuc2lvblwiOiAnJyxcbiAgICAgICAgICAgICAgICBcIlBvc3RhbENvZGVcIjogcG9zdGFsQ29kZSxcbiAgICAgICAgICAgICAgICBcInNfcG9zdGNvZGVcIjogcG9zdGFsQ29kZSxcbiAgICAgICAgICAgICAgICBcIkNpdHlcIjogY2l0eSxcbiAgICAgICAgICAgICAgICBcIkNvdW50cnlcIjogY291bnRyeSxcbiAgICAgICAgICAgICAgICBcIlN0YXRlXCI6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MgPSB3aW5kb3cuc2hpcHRpbWl6ZV9zaGlwcGluZ19hZGRyZXNzLkFkZHJlc3M7XG5cbiAgICB9XG5cbiAgICBwaWNrdXBQb2ludHNMb2FkU3RvcCgpIHtcbiAgICAgICAgalF1ZXJ5KFwiI3N3LW1hcC13cmFwcGVyXCIpLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7XG4gICAgICAgIHRoaXMuc2VhcmNoUnVubmluZyA9IGZhbHNlO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgUmVzZXRzIHRoZSBzZWxlY3RlZCBwb2ludCB0byBudWxsXG4gICAgICoqL1xuICAgIHJlc2V0U2VsZWN0aW9uKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUG9pbnQgPSBudWxsO1xuICAgIH07XG5cbiAgICBzZWxlY3RQb2ludChwaWNrdXApIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJTZWxlY3QgUE9JTlRcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKHBpY2t1cCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQb2ludCA9IHBpY2t1cDtcblxuICAgICAgICBpZiAoalF1ZXJ5KCcjc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uJykubGVuZ3RoICYmIGpRdWVyeSgnI3NoaXB0aW1pemUtcGlja3VwX19kZXNjcmlwdGlvbicpLmlzKCc6aGlkZGVuJykpIHtcbiAgICAgICAgICAgIGpRdWVyeSgnI3NoaXB0aW1pemUtcGlja3VwX19kZXNjcmlwdGlvbicpLnNob3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChqUXVlcnkoJy5zaGlwdGltaXplLXBpY2t1cF9fZGVzY3JpcHRpb24nKS5sZW5ndGggJiYgalF1ZXJ5KCcuc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uJykuaXMoJzpoaWRkZW4nKSkge1xuICAgICAgICAgICAgalF1ZXJ5KCcuc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uJykuc2hvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NoaXB0aW1pemVQb2ludElkJywgcGlja3VwLlBvaW50SWQpO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnU2hpcHRpbWl6ZVBvaW50TGFiZWwnLCBwaWNrdXAuSW5mb3JtYXRpb24uTmFtZSk7XG5cbiAgICAgICAgLyoqIFdoYXQgdmlldyBhcmUgd2Ugb24gPyAqKi9cbiAgICAgICAgbGV0IGVGaWVsZEluZm8gPSBqUXVlcnkoXCIjc3ctbWFwLXNlbGVjdGVkLXBvaW50XCIpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERpc3BsYXlPcHRpb24gPT0gMSkge1xuICAgICAgICAgICAgZUZpZWxkSW5mbyA9IGpRdWVyeShcIiNzdy1saXN0LXBvaW50c1wiKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBWYWxpZGF0ZSBpZiB0aGlzIHBvaW50IHJlcXVpcmVzIGFkaXRpb25hbCBpbmZvIHRoYXQncyBub3QgcHJlc2VudCBmYWlsIGhlcmUgKi9cbiAgICAgICAgaWYgKHR5cGVvZiAocGlja3VwLk1hcEZpZWxkc1NlbGVjdCkgIT0gJ3VuZGVmaW5lZCcgJiYgcGlja3VwLk1hcEZpZWxkc1NlbGVjdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgZXh0cmFzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgZUZpZWxkSW5mby5maW5kKCcuc2hpcHRpbWl6ZV9tYXBmaWVsZHMnICsgcGlja3VwLlBvaW50SWQpLmVhY2goKGlkeCwgZWxlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBlRXh0cmEgPSBqUXVlcnkoZWxlbSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWVFeHRyYS52YWwoKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGVydChqUXVlcnkoalF1ZXJ5KCcuc2hpcHRpbWl6ZV9tYXBmaWVsZHNsYWJlbCcgKyBwaWNrdXAuUG9pbnRJZCkuZ2V0KGlkeCkpLnRleHQoKSArICc6ICcgKyB0aGlzLm9wdGlvbnMubGFiZWxzLm1hcGZpZWxkbWFuZGF0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFleHRyYXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicG9pbnQgc2VsZWN0aW9uIHdpZGdldCBpcyBub3QgdmFsaWQsIGlnbm9yaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCBqUXVlcnkoXCIuc2hpcHRpbWl6ZS1waWNrdXBfX2Rlc2NyaXB0aW9uXCIpKTtcbiAgICAgICAgalF1ZXJ5KFwiLnNoaXB0aW1pemUtcGlja3VwX19kZXNjcmlwdGlvblwiKVxuICAgICAgICAgICAgLmh0bWwocGlja3VwLkluZm9ybWF0aW9uLk5hbWUgKyBcIiBcIiArIHBpY2t1cC5JbmZvcm1hdGlvbi5BZGRyZXNzKTtcblxuICAgICAgICBjb25zdCBwaWNrdXBQb2ludCA9IHtcbiAgICAgICAgICAgIGlkX2NhcnJpZXI6IHRoaXMuY2Fycmllcl9pZCxcbiAgICAgICAgICAgIHBpY2t1cF9pZDogdGhpcy5zZWxlY3RlZFBvaW50LlBvaW50SWQsXG4gICAgICAgICAgICBwaWNrdXBfbGFiZWw6ICh0aGlzLnNlbGVjdGVkUG9pbnQuSW5mb3JtYXRpb24uTmFtZSA/IHRoaXMuc2VsZWN0ZWRQb2ludC5JbmZvcm1hdGlvbi5OYW1lICsgJzxici8+JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBvaW50LkluZm9ybWF0aW9uLkFkZHJlc3MsXG4gICAgICAgICAgICBhY3Rpb246ICdzaGlwdGltaXplX3NhdmVfcGlja3VwJ1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qSXMgdGhlcmUgZXh0cmEgaW5mbyB3ZSB3YW50IHRvIGFwcGVuZD8gKi9cbiAgICAgICAgZUZpZWxkSW5mby5maW5kKFwiLnNoaXB0aW1pemVfbWFwZmllbGRzXCIgKyB0aGlzLnNlbGVjdGVkUG9pbnQuUG9pbnRJZCkuZWFjaChmdW5jdGlvbiAoaWR4LCBlbGVtKSB7XG4gICAgICAgICAgICBsZXQgZmllbGRpZCA9IGpRdWVyeShlbGVtKS5hdHRyKCdkYXRhLWlkJyk7XG4gICAgICAgICAgICBsZXQgZmllbGR2YWx1ZSA9IGpRdWVyeShlbGVtKS52YWwoKTtcbiAgICAgICAgICAgIHBpY2t1cFBvaW50WydPcHRpb25GaWVsZHMnXS5wdXNoKHtJZDogZmllbGRpZCwgVmFsdWU6IGZpZWxkdmFsdWV9KTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGZpZWxkaWQgKyAndmFsJywgZmllbGR2YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMub3B0aW9ucy5hamF4X3VybCkgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiT3ZkZWVlZVwiKTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblBvaW50U2VsZWN0ZWQocGlja3VwLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtLnNldFBpY2t1cFBvaW50KHBpY2t1cCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlTWFwKCk7XG4gICAgICAgIGpRdWVyeShcIiNteU1vZGFsXCIpLmhpZGUoKTtcbiAgICAgICAgalF1ZXJ5KCcjcGxhY2Vfb3JkZXInKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcbiAgICAgICAgalF1ZXJ5KCcjcGlja3VwVGV4dCcpLmhpZGUoKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIEEgUG9pbnQgd2FzIHNlbGVjdGVkXG4gICAgICogIEBwYXJhbSBpZHggLSBpbnRlZ2VyIHRoZSBzZWxlY3RlZCBpbmRleFxuICAgICAqKi9cbiAgICBzZWxlY3RQb2ludEZyb21MaXN0KGlkeCkge1xuICAgICAgICBpZiAoaWR4ID4gdGhpcy5waWNrdXBQb2ludHMubGVuZ3RoIHx8IGlkeCA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicG9pbnRTZWxlY3RlZCBpbnZhbGlkIHdpZGdldCBpbmRleCBcIiArIGlkeCwgMSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdFBvaW50KHRoaXMucGlja3VwUG9pbnRzW2lkeF0pO1xuICAgIH07XG5cblxuICAgIC8qKipcbiAgICAgKiBTZWxlY3QgdGhlIGRpc3BsYXkgb3B0aW9uXG4gICAgICogQHBhcmFtIGlkeCAtIGludCAtICAwOiBtYXAsIDE6IGxpc3RcbiAgICAgKi9cbiAgICBzZWxlY3REaXNwbGF5T3B0aW9uKGlkeCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlNFTEVDVERJU1BPUFRJT05cIik7XG4gICAgICAgIGNvbnNvbGUubG9nKGlkeCk7XG5cbiAgICAgICAgbGV0IGVvcHRpb25zID0galF1ZXJ5KFwiLnN3LWRpc3BsYXktb3B0aW9uLCAuc3ctdGFiXCIpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGlzcGxheU9wdGlvbiA9IGlkeDtcbiAgICAgICAgZW9wdGlvbnMucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7XG4gICAgICAgIGpRdWVyeShlb3B0aW9ucy5nZXQoaWR4KSkuYWRkQ2xhc3MoJ3NlbGVjdGVkJyk7XG4gICAgICAgIGpRdWVyeShqUXVlcnkoXCIuc3ctdGFiXCIpLmdldChpZHgpKS5hZGRDbGFzcygnc2VsZWN0ZWQnKTtcblxuICAgICAgICBpZiAoaWR4ID09IDAgJiYgIHR5cGVvZiAodGhpcy5tYXBpbnRlcmZhY2UpICE9ICd1bmRlZmluZWQnICYmIHRoaXMubWFwaW50ZXJmYWNlLnBpY2t1cFBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm1hcGludGVyZmFjZS5maXRCb3VuZHMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgbGFiZWxzIGluaXRpYWxseSBzZW50IHdpdGggb3B0aW9uc1xuICAgICAqL1xuICAgIHNldExhYmVscyhsYWJlbHMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVscyA9IGxhYmVscztcbiAgICB9O1xuXG4gICAgc2V0V2Vla2RheU5hbWVzKHdlZWtkYXluYW1lcykge1xuICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWxzLndlZWtkYXluYW1lcyA9IHdlZWtkYXluYW1lcztcbiAgICB9O1xuXG4gICAgc2V0Q2FycmllcklkKGNhcnJpZXJfaWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJTZXRjYXJyaWVyaWRcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKGNhcnJpZXJfaWQpO1xuICAgICAgICB0aGlzLmNhcnJpZXJfaWQgPSBjYXJyaWVyX2lkO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm1hcGludGVyZmFjZSk7XG4gICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLnNldENhcnJpZXJJZChjYXJyaWVyX2lkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGFkZHJlc3MgLSBvYmplY3QgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHdlIHNlbmQgdG8gdGhlIEFQSVxuICAgICAqXG4gICAgICoqL1xuICAgIHNldEFkZHJlc3MoYWRkcmVzcykge1xuICAgICAgICBpZiAoIWFkZHJlc3MuU3RyZWV0bmFtZTEgfHwgIWFkZHJlc3MuTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnZhbGlkIGFkZHJlc3Mgd2lkZ2V0IFwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzaGlwdGltaXplQWRkcmVzcycsIEpTT04uc3RyaW5naWZ5KGFkZHJlc3MpKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gbG9hZCBzY3JpcHRzIGVuZHMgd2UgbXVzdCBncmFudCB0aGF0IGpxdWVyeSBleGlzdHNcbiAgICAgKi9cbiAgICBzY3JpcHRzTG9hZGVkKCkge1xuICAgICAgICB0aGlzLmVTZWFyY2hTdGF0dXMgPSBqUXVlcnkoXCIjc2VhcmNoLXN0YXR1c1wiKTtcbiAgICAgICAgdGhpcy5hZGRNYXBIdG1sKCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5nbWFwc2tleSkge1xuICAgICAgICAgICAgdGhpcy5tYXBpbnRlcmZhY2UgPSBuZXcgU2hpcHRpbWl6ZUdtYXBzKHRoaXMub3B0aW9ucywgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hcGludGVyZmFjZSA9IG5ldyBTaGlwdGltaXplT3Blbk1hcDIodGhpcy5vcHRpb25zLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hcGludGVyZmFjZS5pbml0TWFwKCk7XG4gICAgICAgIHRoaXMubWFwaW50ZXJmYWNlLmFkZE1hcE1vdmVMaXN0ZW5lcigobWFwY2VudGVyKSA9PiB7IHJldHVybiB0aGlzLm1hcE1vdmVkKG1hcGNlbnRlcik7IH0pO1xuICAgIH07XG5cblxuICAgIHVwZGF0ZUxpc3QocG9pbnRzKSB7XG4gICAgICAgIGpRdWVyeShcIiNzdy1saXN0LXBvaW50c1wiKS5odG1sKCcnKTtcbiAgICAgICAgbGV0IHBhcmVudCA9IGpRdWVyeShcIiNzdy1saXN0LXBvaW50c1wiKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgdGhpcy5hZGRQb2ludEluZm8ocG9pbnRzW2ldLCAwLCAnJywgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc2FibGVCdXR0b24oKXtcbiAgICAgICAgalF1ZXJ5KCcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXG4gICAgICAgIC8vIEFkZCBDU1Mgc3R5bGVzIGZvciB0aGUgZGlzYWJsZWQgc3RhdGVcbiAgICAgICAgalF1ZXJ5KCcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24nKS5jc3Moe1xuICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnZ3JleScsXG4gICAgICAgICAgICAnY3Vyc29yJzogJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICdvcGFjaXR5JzogJzAuNScgIC8vIE9wdGlvbmFsOiB0byBnaXZlIGl0IGEgbW9yZSBkaXNhYmxlZCBsb29rXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGVuYWJsZUJ1dHRvbigpe1xuICAgICAgICBqUXVlcnkoJy53Yy1ibG9jay1jb21wb25lbnRzLWNoZWNrb3V0LXBsYWNlLW9yZGVyLWJ1dHRvbicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuXG4gICAgICAgIC8vIFJlc2V0IENTUyBzdHlsZXMgZm9yIHRoZSBlbmFibGVkIHN0YXRlXG4gICAgICAgIGpRdWVyeSgnLndjLWJsb2NrLWNvbXBvbmVudHMtY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uJykuY3NzKHtcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICdjdXJzb3InOiAncG9pbnRlcicsXG4gICAgICAgICAgICAnb3BhY2l0eSc6ICcxJyAgLy8gUmVzZXQgb3BhY2l0eSB0byBtYWtlIGl0IGZ1bGx5IHZpc2libGVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldFNoaXBwaW5nTWV0aG9kQ2hlbmdlKCkge1xuICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgIGpRdWVyeShcIiNzaGlwdGltaXplX3BpY2t1cF9idXR0b25cIikucmVtb3ZlKCk7XG4gICAgICAgICAgICB2YXIgY2hlY2tWaXNpYmlsaXR5ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBpbnB1dEVsZW1lbnQgPSAgalF1ZXJ5KFwiaW5wdXRbbmFtZT0ncmFkaW8tY29udHJvbC0wJ11cIik7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50LmlzKCc6dmlzaWJsZScpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGlucHV0IGVsZW1lbnQgaXMgdmlzaWJsZSwgeW91IGNhbiBwcm9jZWVkIHdpdGggeW91ciBzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1Zpc2liaWxpdHkpOyAvL1xuICAgICAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU2hpcHBpbmcgbWV0aG9kIGNoYW5nZWQyMjIyMjIyMjIyMjIyMjJcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcmlhID0galF1ZXJ5KFwiaW5wdXRbbmFtZT0ncmFkaW8tY29udHJvbC0wJ106Y2hlY2tlZFwiKS5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdleCA9IC9zaGlwcGluZ19zaGlwdGltaXplX1swLTldKzpbMC05XSsvO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBtYXRjaCB1c2luZyB0aGUgcmVndWxhciBleHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSBhcmlhLm1hdGNoKHJlZ2V4KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09IG51bGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ3NoaXB0aW1pemVfc2VsZWN0ZWRfY2Fycmllcl9mcm9tX2xpc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RlZF9jYXJyaWVyX2NvZGUnOiBtYXRjaFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmdldEpTT04odGhpcy5vcHRpb25zLmFqYXhfdXJsLCByZXEgLCAgKGRhdGEpICA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJWcmF0aSBnYSBrcmFsanVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnJpZXJfaWQgPSBkYXRhLmNhcnJpZXJfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNhcnJpZXJfaWQgPSBkYXRhLmNhcnJpZXJfaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygxMjMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzaGlwdGltaXplX3BpY2t1cF9idXR0b25cIikucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBub3QgdmlzaWJsZSwgYWRkIHRoZSBidXR0b24gYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dEVsZW1lbnQgPSBqUXVlcnkoXCIud2MtYmxvY2stY29tcG9uZW50cy1zaGlwcGluZy1yYXRlcy1jb250cm9sX19wYWNrYWdlXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIyNESkRKIE92ZGVlZSBpc3RvIHRyYXppIHBvIHZhcmlhYmxpIHNoaXB0aW1pemVfY2hvb3NlX3BpY2t1cF9sb2NhdGlvbiBha28gc2UgcG9rdmFyaSBuZXN0by4gUHJvdmVyaXRpIHN1dHJhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b24gPSBqUXVlcnkoXCI8YnV0dG9uIGNsYXNzPSdidXR0b24gYWx0IHNoaXB0aW1pemUtcGljay1sb2NhdGlvbicgdHlwZT0nYnV0dG9uJyBpZD0nc2hpcHRpbWl6ZV9waWNrdXBfYnV0dG9uJyBvbkNsaWNrPSdzaGlwdGltaXplLmdldFBpY2t1cExvY2F0aW9ucyhldmVudCknPlwiICsgc2hpcHRpbWl6ZV9jaG9vc2VfcGlja3VwX2xvY2F0aW9uICsgXCI8L2J1dHRvbj5cIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnRbMF0uYXBwZW5kKGJ1dHRvblswXSk7IC8vIEFkanVzdCB0aGUgdGFyZ2V0IGNvbnRhaW5lciBpZiBuZWNlc3NhcnlcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0Tm90QmxvY2tGb3JtQ2hhbmdlKCkge1xuXG4gICAgICAgIGpRdWVyeSgnZm9ybVtuYW1lPVwiY2hlY2tvdXRcIl0gaW5wdXQnKS5jaGFuZ2UoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyB2YXIgZmllbGROYW1lID0galF1ZXJ5KHRoaXMpLmF0dHIoJ25hbWUnKTtcbiAgICAgICAgICAgIHZhciBwbGF0Zm9ybSA9IG5ldyBXb29jb21tZXJjZSgpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFkZHJlc3MgPSBwbGF0Zm9ybS5nZXRTaGlwcGluZ0RhdGEoKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMub3B0aW9ucy5hZGRyZXNzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRm9ybSBjaGFuZ2VkXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNoaXB0aW1pemVXaWRnZXQ7IiwiaW1wb3J0ICcuL3Njc3Mvc2hpcHRpbWl6ZS5zY3NzJztcbmltcG9ydCAnLi9jc3MvbGVhZmxldC5jc3MnO1xuXG5pbXBvcnQgV29vQ29tbWVyY2UgZnJvbSAnLi9qcy9zaGlwdGltaXplLXdvby1jb21tZXJjZS5qcyc7XG5cbmltcG9ydCBTaGlwdGltaXplV2lkZ2V0IGZyb20gXCIuL2pzL3NoaXB0aW1pemUtd2lkZ2V0XCI7XG4vKiogXG4gKiBDbGFzcyBTaGlwdGltaXplIGRlcGVuZHMgb24galF1ZXJ5LiBcbiAqIENoZWNrIGlmIHdlIGFyZSBtZWFudCB0byBhcHBlbmQgYSBtYXAgXG4gKiBcbiAqIFBsYXRmb3JtIGRlcGVuZGVudCBmdW5jdGlvbnMgbWFya2VkIHdpdGggICAqIEBwbGF0Zm9ybURlcGVuZGVudCBcbiAqL1xuY2xhc3MgU2hpcHRpbWl6ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihhamF4X3VybCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlNISVBUSU1JWkVDT05TVFJVQ1RcIik7XG4gICAgICAgIHRoaXMubWFya2VycyA9IFtdOyAvL3BpY2t1cCB7bGF0LCBsbmd9IFxuICAgICAgICB0aGlzLmlzTWFwTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ21hcHNfa2V5ID0gdHlwZW9mKHNoaXB0aW1pemVfbWFwc19rZXkpID09ICd1bmRlZmluZWQnID8gICcnIDogc2hpcHRpbWl6ZV9tYXBzX2tleSA7XG4gICAgICAgIHRoaXMub3Blbk1hcE1hcmtlckljb25zID0ge307XG4gICAgICAgIHRoaXMuYWpheF91cmwgPSBhamF4X3VybDsgLy8gcGxhdGZvcm0gZGVwZW5kZW50IFxuXG4gICAgICAgIHRoaXMucGxhdGZvcm0gPSBuZXcgV29vQ29tbWVyY2UodGhpcy5hamF4X3VybCk7XG5cbiAgICAgICAgdGhpcy5wbGF0Zm9ybS5pc0NoZWNrb3V0KCk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIGluaXQoKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJFbnRlcmVkIGluaXRcIik7XG4gICAgICAgIHRoaXMuc2hpcHRpbWl6ZVdpZGdldCA9IG5ldyBTaGlwdGltaXplV2lkZ2V0KHtcbiAgICAgICAgICAgIFwiaG9zdFwiOiAnaHR0cHM6Ly9zaGlwdGltaXplLm1lJyxcbiAgICAgICAgICAgIFwiYWRkcmVzc1wiOiB0aGlzLnBsYXRmb3JtLmdldFNoaXBwaW5nRGF0YSgpLkFkZHJlc3MsXG4gICAgICAgICAgICBcImxhYmVsc1wiOnt9LFxuICAgICAgICAgICAgXCJtYXBQYXJlbnRDb250YWluZXJcIjonYm9keScsXG4gICAgICAgICAgICBcImJ1dHRvblBhcmVudENvbnRhaW5lclwiOidib2R5JyxcbiAgICAgICAgICAgIFwiYnV0dG9uQ2xhc3NcIjogJycsXG4gICAgICAgICAgICBcImFqYXhfdXJsXCI6IHRoaXMuYWpheF91cmwsXG4gICAgICAgICAgICBcImNhcnJpZXJJZFwiOiB0aGlzLnBsYXRmb3JtLmdldFNoaXBwaW5nRGF0YSgpLkNhcnJpZXJJZCxcbiAgICAgICAgICAgIFwib25Qb2ludFNlbGVjdGVkXCI6ICgpID0+IHt9LFxuICAgICAgICAgICAgXCJnbWFwc2tleVwiOiB0eXBlb2Yoc2hpcHRpbWl6ZV9tYXBzX2tleSkgPT0gJ3VuZGVmaW5lZCcgPyAgJycgOiBzaGlwdGltaXplX21hcHNfa2V5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNoaXB0aW1pemVXaWRnZXQuaW5pdCgpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkZpbmlzaGVkIGluaXRcIik7XG4gICAgfVxuXG4gICAgZ2V0UGlja3VwTG9jYXRpb25zKGV2dCkge1xuICAgICAgICB0aGlzLnNoaXB0aW1pemVXaWRnZXQub3Blbk1hcCgpO1xuICAgIH1cblxufVxuXG5qUXVlcnkoZnVuY3Rpb24oKSB7XG4gICAgaWYodHlwZW9mKHdvb2NvbW1lcmNlX3BhcmFtcykgIT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICB3aW5kb3cuc2hpcHRpbWl6ZSA9IG5ldyBTaGlwdGltaXplKHdvb2NvbW1lcmNlX3BhcmFtcy5hamF4X3VybCk7XG4gICAgfVxufSk7Il0sIm5hbWVzIjpbIlNoaXB0aW1pemVVdGlscyIsImNvbnN0cnVjdG9yIiwiaW5qZWN0RXh0ZXJuYWxTY3JpcHQiLCJzcmMiLCJzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiaW5qZWN0U2NyaXB0IiwiY29udGVudHMiLCJlIiwidmFsdWUiLCJyZW1vdmVOb25OdW1lcmljIiwic3RyaW5nIiwicmVwbGFjZSIsImlzVXJsVmFsaWQiLCJ1cmwiLCJodHRwIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwic2VuZCIsInN0YXR1cyIsIm9wZW5OZXdXaW5kb3ciLCJvcHRpb25zIiwibmV3V2luIiwid2luZG93IiwiYmxvY2tlZCIsImNsb3NlZCIsInV0aWxzIiwiVXRpbHMiLCJXb29jb21tZXJjZSIsImFqYXhfdXJsIiwiaXNDaGVja291dCIsImNvbnNvbGUiLCJsb2ciLCJqUXVlcnkiLCJoYXNDbGFzcyIsImdldFNoaXBwaW5nTWV0aG9kSWQiLCJlQ2hlY2tib3giLCJlSGlkZGVuIiwic2hpcHBpbmdNZXRob2QiLCJsZW5ndGgiLCJ2YWwiLCJpbmRleE9mIiwibWV0aG9kX3BhcnRzIiwic3BsaXQiLCJnZXRTaGlwcGluZ0RhdGEiLCJjb3VudHJ5Iiwic3RhdGUiLCJwb3N0Y29kZSIsImNpdHkiLCJhZGRyZXNzIiwiYWRkcmVzc18yIiwic19jb3VudHJ5Iiwic19zdGF0ZSIsInNfcG9zdGNvZGUiLCJzX2NpdHkiLCJzX2FkZHJlc3MiLCJzX2FkZHJlc3NfMiIsImZpbmQiLCJpcyIsImVhY2giLCJ0ZXh0Iiwic2hpcHRpbWl6ZV9zaGlwcGluZ19hZGRyZXNzIiwicG9zdF9kYXRhIiwic2VyaWFsaXplIiwic2V0Q2FycmllciIsImNhcnJpZXJfaWQiLCJzZXRQaWNrdXBQb2ludCIsInBpY2t1cCIsInBpY2t1cF9sYWJlbCIsIkluZm9ybWF0aW9uIiwiTmFtZSIsIkFkZHJlc3MiLCJyZXEiLCJQb2ludElkIiwiZ2V0SlNPTiIsImRhdGEiLCJmYWlsIiwiZXJyIiwicmVzcG9uc2VUZXh0IiwiaHRtbCIsInNoaXB0aW1pemVfc2VsZWN0IiwiTCIsIlNoaXB0aW1pemVPcGVuTWFwIiwic2hpcHRpbWl6ZSIsIm1hcCIsImhvc3QiLCJpY29uX2ZvbGRlciIsInNoaXB0aW1pemVfaWNvbl9mb2xkZXIiLCJtYXBXcmFwcGVyIiwic3R5bGVQYXRoIiwibWFya2VycyIsInBpY2t1cFBvaW50cyIsImNhcnJpZXJfaWNvbl9jb25maWciLCJleHRlbnNpb24iLCJzZWxlY3RlZFN0YXRlIiwiaWNvblNpemUiLCJzZWxlY3RlZFBvaW50SWR4IiwibW92ZUxpc3RlbmVycyIsImlzTW92aW5nIiwiaXNVc2VyTW92aW5nIiwiYm91bmRzIiwic2V0Q2FycmllcklkIiwiY3VycmVudF9pY29uIiwiZ2V0Q2Fycmllckljb25PZlR5cGUiLCJzZWxlY3RQb2ludCIsImlkeCIsInNldEljb24iLCJUeXBlIiwiY3JlYXRlSWNvbiIsImltYWdlVXJsIiwiaWNvbiIsImljb25VcmwiLCJpY29uQW5jaG9yIiwicG9wdXBBbmNob3IiLCJzZXRab29tIiwiem9vbSIsImlzTWFwTW92aW5nIiwiY2VudGVyTWFwIiwibGF0IiwibG5nIiwibGF0bG5nIiwibGF0TG5nIiwiZ3JhbnRSZWFkeSIsImlzU2NyaXB0TG9hZGVkIiwibG9hZFNjcmlwdCIsImdlb2NvZGVCcG9zdCIsInF1ZXJ5cGFydHMiLCJmY2FsbGJhY2siLCJfZ2VvY29kZSIsInJlc3AiLCJyZXNwb25zZSIsInJlc3VsdHMiLCJpbmRleCIsInRvcFN1Z2dlc3Rpb25zIiwicGxhY2VzIiwiaSIsInNlYXJjaEJhclN0cmluZyIsInB1c2giLCJDaXR5IiwibXVuaWNpcGFsaXR5TmFtZSIsIkNvdW50cnkiLCJQb3N0YWxDb2RlIiwicG9zdGFsQ29kZSIsIlN0cmVldG5hbWUxIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJnZW9jb2RlIiwicXVlcnl2YWwiLCJxdWVyeSIsInRvTG93ZXJDYXNlIiwibWF0Y2giLCJtaXNzaW5nWmlwUFQiLCJ6aXA0ZGlnIiwic3Vic3RyaW5nIiwiemlwY29kZSIsInF1ZXJ5UmVzdWx0cyIsImRpc3BsYXlfbmFtZSIsInJlcyIsInRvVXBwZXJDYXNlIiwiZ2VvY29kZVF1ZXJ5Iiwid2FudGVkIiwiY291bnR5Iiwibm9tQWRkciIsInN0cmVldCIsInJvYWQiLCJyZWdpb24iLCJjb3VudHJ5X2NvZGUiLCJTdGF0ZSIsImxvbiIsImdlb2NvZGVBZGRyZXNzIiwiZl9jYWxsYmFjayIsInBvc3RhbGNvZGUiLCJzdHJlZXRuYW1lIiwicXVlcnlTdHJpbmciLCJzdWJzdHIiLCJidG9hIiwiYWRkcmVzc19jYWNoZSIsImxvY2F0aW9uIiwiaXNvMiIsImdlb2NvZGVBZGRyZXNzUGFydHNCcG9zdCIsImVuY29kZVVSSSIsImxhdGxuIiwiZ2VvY29kZUFkZHJlc3NQYXJ0cyIsImxhbiIsIlNISVBUSU1JWkVfUExVR0lOX1VSTCIsImluaXRNYXAiLCJpY29uX3NlbGVjdGVkIiwiaWNvbl9kZWZhdWx0IiwidGlsZUxheWVyIiwiYWRkVG8iLCJvbm1hcHJlYWR5Iiwib24iLCJjZW50ZXIiLCJnZXRDZW50ZXIiLCJpc0luQm91bmRzIiwibW92ZUVuZCIsIm1hcENlbnRlciIsImFkZE1hcE1vdmVMaXN0ZW5lciIsImluTGF0IiwiYm90dG9tTGVmdCIsInRvcFJpZ2h0IiwiZWFzdEJvdW5kIiwid2VzdEJvdW5kIiwiaW5MbmciLCJjbGVhck1hcmtlcnMiLCJyZW1vdmVMYXllciIsInNldE1pblpvb20iLCJhZGRNYXJrZXJzIiwiY2FsbGJhY2siLCJ4IiwiZ2V0TWFya2VyIiwibWFya2VyIiwiZml0Qm91bmRzIiwicmVzZXRNYXJrZXIiLCJzZWxlY3RNYXJrZXIiLCJzY3JvbGxUb3AiLCJpbnZhbGlkYXRlU2l6ZSIsInBhcnNlRmxvYXQiLCJMYXQiLCJMb25nIiwiY2VudGVyWCIsImNlbnRlclkiLCJzZXRUaW1lb3V0IiwiZ2V0SWNvbiIsInBpY2t1cFBvaW50IiwidHlwZSIsInNlbGVjdGVkIiwiYWxsb3dlZFR5cGVzIiwiY2Fycmllcl9pY29uX3VybCIsImZpbGVfZXh0ZW5zaW9uIiwic2VsZWN0ZWRleHRlbnNpb24iLCJpbmNsdWRlcyIsInNldENhcnJpZXJJY29uIiwiY2FjaGVfaWNvbl92YWxpZCIsImNhcnJpZXJJY29uRXhpc3RzIiwiU2hpcHRpbWl6ZVdpZGdldCIsIlNoaXB0aW1pemVHbWFwcyIsInNoaXB0aW1pemVXaWRnZXQiLCJtZSIsImdtYXBza2V5IiwibG9hZE1hcCIsInNjcmlwdCIsInJlYWR5U3RhdGUiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJjYWxiYWNrIiwib25sb2FkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhZGRMaXN0ZW5lciIsInNldENlbnRlciIsImdvb2dsZSIsIm1hcHMiLCJMYXRMbmciLCJzZXRNYXAiLCJMYXRMbmdCb3VuZHMiLCJleHRlbmQiLCJnZXRQb3NpdGlvbiIsImdldEJvdW5kcyIsImdldENhcnJpZXJJY29uVXJsIiwicG9zaXRpb24iLCJzaXplIiwiU2l6ZSIsInNjYWxlZFNpemUiLCJNYXJrZXIiLCJNYXAiLCJnZXRFbGVtZW50QnlJZCIsIm1hcFR5cGVDb250cm9sIiwiY29udGFpbnMiLCJzaGlwcGluZ0RhdGEiLCJnZW9jb2RlciIsIkdlb2NvZGVyIiwiY29tcG9uZW50cyIsImdldCIsImVycm9yX21zZyIsImoiLCJhZGRyZXNzX2NvbXBvbmVudHMiLCJsb25nX25hbWUiLCJnZXRDb3VudHJ5Q29kZUZyb21SZXN1bHQiLCJnZW9tZXRyeSIsInR5cGVzIiwic2hvcnRfbmFtZSIsInBvaW50Iiwic2hpcHRpbWl6ZV9jYXJyaWVyX2ltZ3MiLCJTaGlwdGltaXplT3Blbk1hcDIiLCJzZWxlY3RlZFBvaW50IiwiZGVidWciLCJtYXBQYXJlbnRDb250YWluZXIiLCJidXR0b25QYXJlbnRDb250YWluZXIiLCJidXR0b25DbGFzcyIsImJ1dHRvbl9jbGFzcyIsImxhYmVscyIsInBsYXRmb3JtIiwidGltZW91dEtleURvd24iLCJzZWFyY2hSdW5uaW5nIiwiY2FycmllcklkIiwibGFuZyIsIndlZWtkYXluYW1lcyIsInNlbGVjdGVkRGlzcGxheU9wdGlvbiIsImNhY2hlUmVzdWx0cyIsInJlYWR5IiwiaGFzUnVuQ2hlY2tWaXNpYmlsaXR5IiwiaGFzUnVuUGxhY2VPcmRlckNoZWNrIiwiY2hlY2tWaXNpYmlsaXR5Iiwic2V0SW50ZXJ2YWwiLCJpbnB1dEVsZW1lbnQiLCJjbGVhckludGVydmFsIiwic2VsZWN0ZWRUZXh0IiwiY2xvc2VzdCIsImlzQmxvY2tDaGVja291dCIsImdldFNlbGVjdGVkQ2FycmllciIsImdldEZvcm1DaGFuZ2UiLCJnZXRPbkNsaWNrIiwicGxhY2VPcmRlckNoZWNrIiwicGxhY2VPcmRlckJ1dHRvbiIsInNoaXBwaW5nX3BpY2t1cF9pZCIsIm1hbmRhdG9yeURhdGEiLCJwaWNrdXBNYW5kYXRvcnkiLCJwcmV2ZW50RGVmYXVsdCIsIm1vZGFsIiwiaWQiLCJjc3MiLCJtb2RhbENvbnRlbnQiLCJjbG9zZUJ1dHRvbiIsIm1lc3NhZ2UiLCJidXR0b24iLCJCcG9zdF9jaG9vc2VfcGlja3VwX2xvY2F0aW9uIiwiYXBwZW5kIiwic2hvdyIsImhpZGUiLCJldmVudCIsInRhcmdldCIsImdldE9uU3VibWl0QnV0dG9uQmxvY2tDbGlja05vVGhlbWUiLCJnZXRUaGVtZVNoaXBwaW5nTWV0aG9kIiwiYWpheENvbXBsZXRlIiwieGhyIiwic2V0dGluZ3MiLCJjaGVja2VkUmFkaW8iLCJzaWJsaW5ncyIsInRyaW0iLCJzaGlwcGluZ01ldGhvZHNMaXN0IiwicXVlcnlTZWxlY3RvciIsInNoaXBwaW5nTWV0aG9kSXRlbXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsIml0ZW0iLCJsYWJlbEVsZW1lbnQiLCJsYWJlbFRleHQiLCJ0ZXh0Q29udGVudCIsIm9yaWdpbiIsInByb3AiLCJhZnRlciIsInByb3RvdHlwZSIsIm1ldGhvZCIsImFzeW5jIiwidXNlciIsInBhc3MiLCJhcHBseSIsImFyZ3VtZW50cyIsImxvYWRlclRleHQiLCJkaXNhYmxlQnV0dG9uIiwidW5kZWZpbmVkIiwiZW5hYmxlQnV0dG9uIiwic2hpcHRpbWl6ZV9jaG9vc2VfcGlja3VwX2xvY2F0aW9uIiwicmVtb3ZlIiwiZ2V0QmxvY2tTaGlwcGluZ0RhdGEiLCJzaGlwcGluZ19waWNrdXBfbGFiZWwiLCJzaGlwdGltaXplX3BpY2t1cF9leHRlbmRlZCIsInNoaXB0aW1pemVfcGlja3VwX2Rlc2NyaXB0aW9uIiwic2hpcHBpbmdfY2Fycmllcl9pZCIsIm1hcGludGVyZmFjZSIsImdldEZvcm1TaGlwcGluZ0RhdGEiLCJnZXRTaGlwdGltaXplSWQiLCJtYWdlX2lkIiwic2hpcHRpbWl6ZV9jYXJyaWVycyIsIkNsYXNzTmFtZSIsIklkIiwiaW5pdCIsInNldEFkZHJlc3MiLCJsb2FkU2NyaXB0cyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJKU09OIiwicGFyc2UiLCJhZGRQb2ludEluZm8iLCJwIiwiZXh0cmFfY2xhc3MiLCJwYXJlbnRDb250YWluZXIiLCJXb3JraW5nSG91cnNSYXciLCJvcGVuaHRtbCIsIm0yZiIsIndrZCIsImxvY2FsIiwib3BlbkhvdXJzIiwicmVnZXhGb3JtYXREZXYiLCJSZWdFeHAiLCJyZWdleEZvcm1hdExpdmUiLCJyZWdleEZvcm1hdCIsInJlZ0RheSIsInJlZ09wZW5JZHgiLCJyZWdUeXBlSWR4IiwiT2JqZWN0Iiwia2V5cyIsInNoaWZ0Iiwia2V5IiwiZXhlYyIsImRheW5hbWUiLCJvcGVuaWR4IiwicGFyc2VJbnQiLCJkYXlpZHgiLCJPcGVuVGltZSIsIkNsb3NlVGltZSIsInNjaGVkdWxlIiwic29ydCIsImEiLCJiIiwiYW9wZW4iLCJib3BlbiIsIldvcmtpbmdIb3VycyIsIm5kYXlzb3BlbiIsImZyb21kYXkiLCJwcmV2aW91c1RpbWUiLCJob3Vyc2h0bWwiLCJmcm9tZGF5aWR4IiwidG9EYXkiLCJkYXkiLCJkYXlodG1sIiwidG9kYXkiLCJob3VycyIsImlzaW50ZXJ2YWwiLCJpc2xhc3QiLCJlUG9pbnRJbmZvIiwiTWFwRmllbGRzU2VsZWN0IiwibW9yZUZpZWxkcyIsImsiLCJidG4iLCJhZGRDdXN0b21TdHlsZSIsInN0eWxlIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsImFkZE1hcEh0bWwiLCJhZGRyZXNzdHIiLCJtYXBodG1sIiwiZGlzcGxheU9wdGlvbnMiLCJvcHRNYXAiLCJvcHRMaXN0Iiwic2VsZWN0RGlzcGxheU9wdGlvbiIsInF1ZXJ5b3B0Iiwic2VhcmNoYnRuIiwicXVlcnlpbnB1dCIsImV2dCIsImtleUNvZGUiLCJjbGVhclRpbWVvdXQiLCJjbGljayIsImNsb3NlTWFwIiwicmVtb3ZlQ2xhc3MiLCJ1c2VyU2Nyb2xsIiwiZGlzcGxheU1lc3NhZ2UiLCJtc2ciLCJhZGRDbGFzcyIsImRpc3BsYXlQbGFjZXMiLCJyZXN1bHRzQ29udGFpbmVyIiwiYXR0ciIsInBsYWNlIiwiZmV0Y2hQb2ludHMiLCJoYXNoTGF0TG5nIiwibGF0c3RyIiwibG5nc3RyIiwiZGlzcGxheVJlc3VsdHMiLCJwaWNrdXBQb2ludHNMb2FkU3RvcCIsIkNvdW50IiwiUG9pbnQiLCJtYXBDaGFuZ2VkIiwiRGF0ZSIsIm5vdyIsInVwZGF0ZUxpc3QiLCJwYXJlbnQiLCJmcmVzb2x2ZSIsImVycm9yIiwibm9wb2ludHMiLCJtYXBNb3ZlZCIsIm1hcGNlbnRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwibG9hZExhYmVscyIsImFqYXhMb2FkTGFiZWxzIiwiZm4iLCJqcXVlcnkiLCJzY3JpcHRzTG9hZGVkIiwib25pbml0IiwibG9hZFN0eWxlIiwicmVsIiwiaHJlZiIsImZvcmNlIiwicmVzZXRNYXBFbGVtZW50cyIsIm9wZW5NYXAiLCJnZW8iLCJhcGFydG1lbnQiLCJyZXNldFNlbGVjdGlvbiIsInNldEl0ZW0iLCJlRmllbGRJbmZvIiwiZXh0cmFzVmFsaWQiLCJlbGVtIiwiZUV4dHJhIiwiYWxlcnQiLCJtYXBmaWVsZG1hbmRhdG9yeSIsImlkX2NhcnJpZXIiLCJwaWNrdXBfaWQiLCJhY3Rpb24iLCJmaWVsZGlkIiwiZmllbGR2YWx1ZSIsIlZhbHVlIiwib25Qb2ludFNlbGVjdGVkIiwic2VsZWN0UG9pbnRGcm9tTGlzdCIsImVvcHRpb25zIiwic2V0TGFiZWxzIiwic2V0V2Vla2RheU5hbWVzIiwic3RyaW5naWZ5IiwiZVNlYXJjaFN0YXR1cyIsInBvaW50cyIsImdldFNoaXBwaW5nTWV0aG9kQ2hlbmdlIiwiYXJpYSIsInJlZ2V4IiwiZ2V0Tm90QmxvY2tGb3JtQ2hhbmdlIiwiY2hhbmdlIiwiV29vQ29tbWVyY2UiLCJTaGlwdGltaXplIiwiaXNNYXBMb2FkZWQiLCJnbWFwc19rZXkiLCJzaGlwdGltaXplX21hcHNfa2V5Iiwib3Blbk1hcE1hcmtlckljb25zIiwiQ2FycmllcklkIiwiZ2V0UGlja3VwTG9jYXRpb25zIiwid29vY29tbWVyY2VfcGFyYW1zIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///610\n")}},__webpack_module_cache__={};function __webpack_require__(Q){var U=__webpack_module_cache__[Q];if(void 0!==U)return U.exports;var F=__webpack_module_cache__[Q]={exports:{}};return __webpack_modules__[Q].call(F.exports,F,F.exports,__webpack_require__),F.exports}__webpack_require__.n=Q=>{var U=Q&&Q.__esModule?()=>Q.default:()=>Q;return __webpack_require__.d(U,{a:U}),U},__webpack_require__.d=(Q,U)=>{for(var F in U)__webpack_require__.o(U,F)&&!__webpack_require__.o(Q,F)&&Object.defineProperty(Q,F,{enumerable:!0,get:U[F]})},__webpack_require__.o=(Q,U)=>Object.prototype.hasOwnProperty.call(Q,U);var __webpack_exports__=__webpack_require__(610)})();
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com