From 9215f0bc914adf765483c4d953a06e8ab692d1c9 Mon Sep 17 00:00:00 2001 From: Ferks-FK Date: Wed, 2 Nov 2022 17:46:43 +0000 Subject: [PATCH] Update only when the e-mail address changes. --- app/Http/Controllers/ProfileController.php | 5 ++++- public/js/app.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index a9a47d11..91ff5820 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -131,7 +131,10 @@ class ProfileController extends Controller 'name' => $request->input('name'), 'email' => $request->input('email'), ]); - $user->reVerifyEmail(); + + if ($request->input('email') != Auth::user()->email) { + $user->reVerifyEmail(); + }; $user->sendEmailVerificationNotification(); return redirect()->route('profile.index')->with('success', __('Profile updated')); diff --git a/public/js/app.js b/public/js/app.js index 708d6174..4214f05c 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -352,7 +352,7 @@ eval("// window._ = require('lodash');\n\n/**\n * We'll load jQuery and the Boot \********************************************/ /***/ (() => { -eval("function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/*\n * Slim v4.19.0 - Image Cropping Made Easy\n * Copyright (c) 2018 Rik Schennink - http://slimimagecropper.com\n */\n!function (t, e) {\n function i() {\n t.Slim.parse(document);\n }\n if (t) if (t.Slim = function () {\n function t(t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function i(t, e, i, n) {\n if (!(e >= 1)) {\n for (var o = t.width, a = t.height, r = Math.max(n.width, Math.min(i.width, Math.round(t.width * e))), s = Math.max(n.height, Math.min(i.height, Math.round(t.height * e))), h = st(t), u = void 0, l = void 0; o > r && a > s;) {\n u = document.createElement(\"canvas\"), o = Math.round(.5 * h.width), a = Math.round(.5 * h.height), o < r && (o = r), a < s && (a = s), u.width = o, u.height = a, l = u.getContext(\"2d\"), l.drawImage(h, 0, 0, o, a), h = st(u);\n }\n t.width = r, t.height = s, l = t.getContext(\"2d\"), l.drawImage(h, 0, 0, r, s);\n }\n }\n !function () {\n function t(t, i) {\n i = i || {\n bubbles: !1,\n cancelable: !1,\n detail: e\n };\n var n = document.createEvent(\"CustomEvent\");\n return n.initCustomEvent(t, i.bubbles, i.cancelable, i.detail), n;\n }\n return \"function\" != typeof window.CustomEvent && (t.prototype = window.Event.prototype, void (window.CustomEvent = t));\n }();\n var n = function n(t, e, i) {\n var o,\n a,\n r = document.createElement(\"img\");\n if (r.onerror = e, r.onload = function () {\n !a || i && i.noRevoke || n.revokeObjectURL(a), e && e(n.scale(r, i));\n }, n.isInstanceOf(\"Blob\", t) || n.isInstanceOf(\"File\", t)) o = a = n.createObjectURL(t), r._type = t.type;else {\n if (\"string\" != typeof t) return !1;\n o = t, i && i.crossOrigin && (r.crossOrigin = i.crossOrigin);\n }\n return o ? (r.src = o, r) : n.readFile(t, function (t) {\n var i = t.target;\n i && i.result ? r.src = i.result : e && e(t);\n });\n },\n o = window.createObjectURL && window || window.URL && URL.revokeObjectURL && URL || window.webkitURL && webkitURL;\n n.isInstanceOf = function (t, e) {\n return Object.prototype.toString.call(e) === \"[object \" + t + \"]\";\n }, n.transformCoordinates = function () {}, n.getTransformedOptions = function (t, e) {\n var i,\n n,\n o,\n a,\n r = e.aspectRatio;\n if (!r) return e;\n i = {};\n for (n in e) {\n e.hasOwnProperty(n) && (i[n] = e[n]);\n }\n return i.crop = !0, o = t.naturalWidth || t.width, a = t.naturalHeight || t.height, o / a > r ? (i.maxWidth = a * r, i.maxHeight = a) : (i.maxWidth = o, i.maxHeight = o / r), i;\n }, n.renderImageToCanvas = function (t, e, i, n, o, a, r, s, h, u) {\n return t.getContext(\"2d\").drawImage(e, i, n, o, a, r, s, h, u), t;\n }, n.hasCanvasOption = function (t) {\n return t.canvas || t.crop || !!t.aspectRatio;\n }, n.scale = function (t, i) {\n function o() {\n var t = Math.max((h || b) / b, (u || k) / k);\n t > 1 && (b *= t, k *= t);\n }\n function a() {\n var t = Math.min((r || b) / b, (s || k) / k);\n t < 1 && (b *= t, k *= t);\n }\n i = i || {};\n var r,\n s,\n h,\n u,\n l,\n p,\n c,\n d,\n f,\n _,\n m,\n g = document.createElement(\"canvas\"),\n v = t.getContext || n.hasCanvasOption(i) && g.getContext,\n y = t.naturalWidth || t.width,\n w = t.naturalHeight || t.height,\n b = y,\n k = w;\n if (v && (i = n.getTransformedOptions(t, i), c = i.left || 0, d = i.top || 0, i.sourceWidth ? (l = i.sourceWidth, i.right !== e && i.left === e && (c = y - l - i.right)) : l = y - c - (i.right || 0), i.sourceHeight ? (p = i.sourceHeight, i.bottom !== e && i.top === e && (d = w - p - i.bottom)) : p = w - d - (i.bottom || 0), b = l, k = p), r = i.maxWidth, s = i.maxHeight, h = i.minWidth, u = i.minHeight, v && r && s && i.crop ? (b = r, k = s, m = l / p - r / s, m < 0 ? (p = s * l / r, i.top === e && i.bottom === e && (d = (w - p) / 2)) : m > 0 && (l = r * p / s, i.left === e && i.right === e && (c = (y - l) / 2))) : ((i.contain || i.cover) && (h = r = r || h, u = s = s || u), i.cover ? (a(), o()) : (o(), a())), v) {\n if (f = i.pixelRatio, f > 1 && (g.style.width = b + \"px\", g.style.height = k + \"px\", b *= f, k *= f, g.getContext(\"2d\").scale(f, f)), _ = i.downsamplingRatio, _ > 0 && _ < 1 && b < l && k < p) for (; l * _ > b;) {\n g.width = l * _, g.height = p * _, n.renderImageToCanvas(g, t, c, d, l, p, 0, 0, g.width, g.height), l = g.width, p = g.height, t = document.createElement(\"canvas\"), t.width = l, t.height = p, n.renderImageToCanvas(t, g, 0, 0, l, p, 0, 0, l, p);\n }\n return g.width = b, g.height = k, n.transformCoordinates(g, i), n.renderImageToCanvas(g, t, c, d, l, p, 0, 0, b, k);\n }\n return t.width = b, t.height = k, t;\n }, n.createObjectURL = function (t) {\n return !!o && o.createObjectURL(t);\n }, n.revokeObjectURL = function (t) {\n return !!o && o.revokeObjectURL(t);\n }, n.readFile = function (t, e, i) {\n if (window.FileReader) {\n var n = new FileReader();\n if (n.onload = n.onerror = e, i = i || \"readAsDataURL\", n[i]) return n[i](t), n;\n }\n return !1;\n };\n var a = n.hasCanvasOption,\n r = n.transformCoordinates,\n s = n.getTransformedOptions;\n n.hasCanvasOption = function (t) {\n return !!t.orientation || a.call(n, t);\n }, n.transformCoordinates = function (t, e) {\n r.call(n, t, e);\n var i = t.getContext(\"2d\"),\n o = t.width,\n a = t.height,\n s = t.style.width,\n h = t.style.height,\n u = e.orientation;\n if (u && !(u > 8)) switch (u > 4 && (t.width = a, t.height = o, t.style.width = h, t.style.height = s), u) {\n case 2:\n i.translate(o, 0), i.scale(-1, 1);\n break;\n case 3:\n i.translate(o, a), i.rotate(Math.PI);\n break;\n case 4:\n i.translate(0, a), i.scale(1, -1);\n break;\n case 5:\n i.rotate(.5 * Math.PI), i.scale(1, -1);\n break;\n case 6:\n i.rotate(.5 * Math.PI), i.translate(0, -a);\n break;\n case 7:\n i.rotate(.5 * Math.PI), i.translate(o, -a), i.scale(-1, 1);\n break;\n case 8:\n i.rotate(-.5 * Math.PI), i.translate(-o, 0);\n }\n }, n.getTransformedOptions = function (t, e) {\n var i,\n o,\n a = s.call(n, t, e),\n r = a.orientation;\n if (!r || r > 8 || 1 === r) return a;\n i = {};\n for (o in a) {\n a.hasOwnProperty(o) && (i[o] = a[o]);\n }\n switch (a.orientation) {\n case 2:\n i.left = a.right, i.right = a.left;\n break;\n case 3:\n i.left = a.right, i.top = a.bottom, i.right = a.left, i.bottom = a.top;\n break;\n case 4:\n i.top = a.bottom, i.bottom = a.top;\n break;\n case 5:\n i.left = a.top, i.top = a.left, i.right = a.bottom, i.bottom = a.right;\n break;\n case 6:\n i.left = a.top, i.top = a.right, i.right = a.bottom, i.bottom = a.left;\n break;\n case 7:\n i.left = a.bottom, i.top = a.right, i.right = a.top, i.bottom = a.left;\n break;\n case 8:\n i.left = a.bottom, i.top = a.left, i.right = a.top, i.bottom = a.right;\n }\n return a.orientation > 4 && (i.maxWidth = a.maxHeight, i.maxHeight = a.maxWidth, i.minWidth = a.minHeight, i.minHeight = a.minWidth, i.sourceWidth = a.sourceHeight, i.sourceHeight = a.sourceWidth), i;\n };\n var h = window.Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice);\n n.blobSlice = h && function () {\n var t = this.slice || this.webkitSlice || this.mozSlice;\n return t.apply(this, arguments);\n }, n.metaDataParsers = {\n jpeg: {\n 65505: []\n }\n }, n.parseMetaData = function (t, e, i) {\n i = i || {};\n var o = this,\n a = i.maxMetaDataSize || 262144,\n r = {},\n s = !(window.DataView && t && t.size >= 12 && \"image/jpeg\" === t.type && n.blobSlice);\n !s && n.readFile(n.blobSlice.call(t, 0, a), function (t) {\n if (t.target.error) return void e(r);\n var a,\n s,\n h,\n u,\n l = t.target.result,\n p = new DataView(l),\n c = 2,\n d = p.byteLength - 4,\n f = c;\n if (65496 === p.getUint16(0)) {\n for (; c < d && (a = p.getUint16(c), a >= 65504 && a <= 65519 || 65534 === a) && (s = p.getUint16(c + 2) + 2, !(c + s > p.byteLength));) {\n if (h = n.metaDataParsers.jpeg[a]) for (u = 0; u < h.length; u += 1) {\n h[u].call(o, p, c, s, r, i);\n }\n c += s, f = c;\n }\n !i.disableImageHead && f > 6 && (l.slice ? r.imageHead = l.slice(0, f) : r.imageHead = new Uint8Array(l).subarray(0, f));\n }\n e(r);\n }, \"readAsArrayBuffer\") || e(r);\n }, n.ExifMap = function () {\n return this;\n }, n.ExifMap.prototype.map = {\n Orientation: 274\n }, n.ExifMap.prototype.get = function (t) {\n return this[t] || this[this.map[t]];\n }, n.getExifThumbnail = function (t, e, i) {\n var n, o, a;\n if (i && !(e + i > t.byteLength)) {\n for (n = [], o = 0; o < i; o += 1) {\n a = t.getUint8(e + o), n.push((a < 16 ? \"0\" : \"\") + a.toString(16));\n }\n return \"data:image/jpeg,%\" + n.join(\"%\");\n }\n }, n.exifTagTypes = {\n 1: {\n getValue: function getValue(t, e) {\n return t.getUint8(e);\n },\n size: 1\n },\n 2: {\n getValue: function getValue(t, e) {\n return String.fromCharCode(t.getUint8(e));\n },\n size: 1,\n ascii: !0\n },\n 3: {\n getValue: function getValue(t, e, i) {\n return t.getUint16(e, i);\n },\n size: 2\n },\n 4: {\n getValue: function getValue(t, e, i) {\n return t.getUint32(e, i);\n },\n size: 4\n },\n 5: {\n getValue: function getValue(t, e, i) {\n return t.getUint32(e, i) / t.getUint32(e + 4, i);\n },\n size: 8\n },\n 9: {\n getValue: function getValue(t, e, i) {\n return t.getInt32(e, i);\n },\n size: 4\n },\n 10: {\n getValue: function getValue(t, e, i) {\n return t.getInt32(e, i) / t.getInt32(e + 4, i);\n },\n size: 8\n }\n }, n.exifTagTypes[7] = n.exifTagTypes[1], n.getExifValue = function (t, e, i, o, a, r) {\n var s,\n h,\n u,\n l,\n p,\n c,\n d = n.exifTagTypes[o];\n if (d && (s = d.size * a, h = s > 4 ? e + t.getUint32(i + 8, r) : i + 8, !(h + s > t.byteLength))) {\n if (1 === a) return d.getValue(t, h, r);\n for (u = [], l = 0; l < a; l += 1) {\n u[l] = d.getValue(t, h + l * d.size, r);\n }\n if (d.ascii) {\n for (p = \"\", l = 0; l < u.length && (c = u[l], \"\\0\" !== c); l += 1) {\n p += c;\n }\n return p;\n }\n return u;\n }\n }, n.parseExifTag = function (t, e, i, o, a) {\n var r = t.getUint16(i, o);\n a.exif[r] = n.getExifValue(t, e, i, t.getUint16(i + 2, o), t.getUint32(i + 4, o), o);\n }, n.parseExifTags = function (t, e, i, n, o) {\n var a, r, s;\n if (!(i + 6 > t.byteLength || (a = t.getUint16(i, n), r = i + 2 + 12 * a, r + 4 > t.byteLength))) {\n for (s = 0; s < a; s += 1) {\n this.parseExifTag(t, e, i + 2 + 12 * s, n, o);\n }\n return t.getUint32(r, n);\n }\n }, n.parseExifData = function (t, e, i, o, a) {\n if (!a.disableExif) {\n var r,\n s,\n h,\n u = e + 10;\n if (1165519206 === t.getUint32(e + 4) && !(u + 8 > t.byteLength) && 0 === t.getUint16(e + 8)) {\n switch (t.getUint16(u)) {\n case 18761:\n r = !0;\n break;\n case 19789:\n r = !1;\n break;\n default:\n return;\n }\n 42 === t.getUint16(u + 2, r) && (s = t.getUint32(u + 4, r), o.exif = new n.ExifMap(), s = n.parseExifTags(t, u, u + s, r, o), s && !a.disableExifThumbnail && (h = {\n exif: {}\n }, s = n.parseExifTags(t, u, u + s, r, h), h.exif[513] && (o.exif.Thumbnail = n.getExifThumbnail(t, u + h.exif[513], h.exif[514]))), o.exif[34665] && !a.disableExifSub && n.parseExifTags(t, u, u + o.exif[34665], r, o), o.exif[34853] && !a.disableExifGps && n.parseExifTags(t, u, u + o.exif[34853], r, o));\n }\n }\n }, n.metaDataParsers.jpeg[65505].push(n.parseExifData);\n var u = function () {\n var t = [],\n i = [],\n n = [],\n o = \"transform\",\n a = window.getComputedStyle(document.documentElement, \"\"),\n r = (Array.prototype.slice.call(a).join(\"\").match(/-(moz|webkit|ms)-/) || \"\" === a.OLink && [\"\", \"o\"])[1];\n \"webkit\" === r && (o = \"webkitTransform\");\n var s = function s(t, i, n) {\n var o = t;\n if (o.length !== e) {\n for (var a = {\n chainers: [],\n then: function then(t) {\n return this.snabbt(t);\n },\n snabbt: function snabbt(t) {\n var e = this.chainers.length;\n return this.chainers.forEach(function (i, n) {\n i.snabbt(h(t, n, e));\n }), a;\n },\n setValue: function setValue(t) {\n return this.chainers.forEach(function (e) {\n e.setValue(t);\n }), a;\n },\n finish: function finish() {\n return this.chainers.forEach(function (t) {\n t.finish();\n }), a;\n },\n rollback: function rollback() {\n return this.chainers.forEach(function (t) {\n t.rollback();\n }), a;\n }\n }, r = 0, s = o.length; r < s; ++r) {\n \"string\" == typeof i ? a.chainers.push(u(o[r], i, h(n, r, s))) : a.chainers.push(u(o[r], h(i, r, s), n));\n }\n return a;\n }\n return \"string\" == typeof i ? u(o, i, h(n, 0, 1)) : u(o, h(i, 0, 1), n);\n },\n h = function h(t, e, i) {\n if (!t) return t;\n var n = $(t);\n J(t.delay) && (n.delay = t.delay(e, i)), J(t.callback) && (n.complete = function () {\n t.callback.call(this, e, i);\n });\n var o = J(t.allDone),\n a = J(t.complete);\n (a || o) && (n.complete = function () {\n a && t.complete.call(this, e, i), o && e == i - 1 && t.allDone();\n }), J(t.valueFeeder) && (n.valueFeeder = function (n, o) {\n return t.valueFeeder(n, o, e, i);\n }), J(t.easing) && (n.easing = function (n) {\n return t.easing(n, e, i);\n });\n var r = [\"position\", \"rotation\", \"skew\", \"rotationPost\", \"scale\", \"width\", \"height\", \"opacity\", \"fromPosition\", \"fromRotation\", \"fromSkew\", \"fromRotationPost\", \"fromScale\", \"fromWidth\", \"fromHeight\", \"fromOpacity\", \"transformOrigin\", \"duration\", \"delay\"];\n return r.forEach(function (o) {\n J(t[o]) && (n[o] = t[o](e, i));\n }), n;\n },\n u = function u(t, e, n) {\n function o(e) {\n if (f.tick(e), f.updateElement(t), !f.isStopped()) return f.completed() ? void (a.loop > 1 && !f.isStopped() ? (a.loop -= 1, f.restart(), k(o)) : (a.complete && a.complete.call(t), _.length && (a = _.pop(), s = y(a, u, !0), u = y(a, $(u)), a = w(s, u, a), f = S(a), i.push([t, f]), f.tick(e), k(o)))) : k(o);\n }\n if (\"attention\" === e) return l(t, n);\n if (\"stop\" === e) return p(t);\n if (\"detach\" === e) return d(t);\n var a = e;\n m();\n var r = v(t),\n s = r;\n s = y(a, s, !0);\n var u = $(r);\n u = y(a, u);\n var c = w(s, u, a),\n f = S(c);\n i.push([t, f]), f.updateElement(t, !0);\n var _ = [],\n g = {\n snabbt: function snabbt(t) {\n return _.unshift(h(t, 0, 1)), g;\n },\n then: function then(t) {\n return this.snabbt(t);\n }\n };\n return k(o), a.manual ? f : g;\n },\n l = function l(t, e) {\n function n(i) {\n a.tick(i), a.updateElement(t), a.completed() ? (e.callback && e.callback(t), e.loop && e.loop > 1 && (e.loop--, a.restart(), k(n))) : k(n);\n }\n var o = y(e, q({}));\n e.movement = o;\n var a = E(e);\n i.push([t, a]), k(n);\n },\n p = function p(t) {\n for (var e = 0, n = i.length; e < n; ++e) {\n var o = i[e],\n a = o[0],\n r = o[1];\n a === t && r.stop();\n }\n },\n c = function c(t, e) {\n for (var i = 0, n = t.length; i < n; ++i) {\n if (t[i][0] === e) return i;\n }\n return -1;\n },\n d = function d(t) {\n var e,\n o,\n a = [],\n r = i.concat(n),\n s = r.length;\n for (o = 0; o < s; ++o) {\n e = r[o][0], (t.contains(e) || t === e) && a.push(e);\n }\n for (s = a.length, o = 0; o < s; ++o) {\n f(a[o]);\n }\n },\n f = function f(t) {\n p(t);\n var e = c(i, t);\n e >= 0 && i.splice(e, 1), e = c(n, t), e >= 0 && n.splice(e, 1);\n },\n _ = function _(t, e) {\n for (var i = 0, n = t.length; i < n; ++i) {\n var o = t[i],\n a = o[0],\n r = o[1];\n if (a === e) {\n var s = r.getCurrentState();\n return r.stop(), s;\n }\n }\n },\n m = function m() {\n n = n.filter(function (t) {\n return g(t[0]).body;\n });\n },\n g = function g(t) {\n for (var e = t; e.parentNode;) {\n e = e.parentNode;\n }\n return e;\n },\n v = function v(t) {\n var e = _(i, t);\n return e ? e : _(n, t);\n },\n y = function y(t, e, i) {\n e || (e = q({\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n rotationPost: [0, 0, 0],\n scale: [1, 1],\n skew: [0, 0]\n }));\n var n = \"position\",\n o = \"rotation\",\n a = \"skew\",\n r = \"rotationPost\",\n s = \"scale\",\n h = \"scalePost\",\n u = \"width\",\n l = \"height\",\n p = \"opacity\";\n return i && (n = \"fromPosition\", o = \"fromRotation\", a = \"fromSkew\", r = \"fromRotationPost\", s = \"fromScale\", h = \"fromScalePost\", u = \"fromWidth\", l = \"fromHeight\", p = \"fromOpacity\"), e.position = G(t[n], e.position), e.rotation = G(t[o], e.rotation), e.rotationPost = G(t[r], e.rotationPost), e.skew = G(t[a], e.skew), e.scale = G(t[s], e.scale), e.scalePost = G(t[h], e.scalePost), e.opacity = t[p], e.width = t[u], e.height = t[l], e;\n },\n w = function w(t, e, i) {\n return i.startState = t, i.endState = e, i;\n },\n b = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (t) {\n return setTimeout(t, 1e3 / 60);\n },\n k = function k(e) {\n 0 === t.length && b(x), t.push(e);\n },\n x = function x(e) {\n for (var o = t.length, a = 0; a < o; ++a) {\n t[a](e);\n }\n t.splice(0, o);\n var r = i.filter(function (t) {\n return t[1].completed();\n });\n n = n.filter(function (t) {\n for (var e = 0, i = r.length; e < i; ++e) {\n if (t[0] === r[e][0]) return !1;\n }\n return !0;\n }), n = n.concat(r), i = i.filter(function (t) {\n return !t[1].completed();\n }), 0 !== t.length && b(x);\n },\n S = function S(t) {\n var i = t.startState,\n n = t.endState,\n o = G(t.duration, 500),\n a = G(t.delay, 0),\n r = t.perspective,\n s = L(G(t.easing, \"linear\"), t),\n h = 0 === o ? n.clone() : i.clone();\n t.transformOrigin;\n h.transformOrigin = t.transformOrigin;\n var u,\n l,\n p = 0,\n c = 0,\n d = !1,\n f = !1,\n _ = t.manual,\n m = 0,\n g = a / o;\n return l = t.valueFeeder ? V(t.valueFeeder, i, n, h) : j(i, n, h), {\n stop: function stop() {\n d = !0;\n },\n isStopped: function isStopped() {\n return d;\n },\n finish: function finish(t) {\n _ = !1;\n var e = o * m;\n p = c - e, u = t, s.resetFrom = m;\n },\n rollback: function rollback(t) {\n _ = !1, l.setReverse();\n var e = o * (1 - m);\n p = c - e, u = t, s.resetFrom = m;\n },\n restart: function restart() {\n p = e, s.resetFrom(0);\n },\n tick: function tick(t) {\n if (!d) {\n if (_) return c = t, void this.updateCurrentTransform();\n if (p || (p = t), t - p > a) {\n f = !0, c = t - a;\n var e = Math.min(Math.max(0, c - p), o);\n s.tick(e / o), this.updateCurrentTransform(), this.completed() && u && u();\n }\n }\n },\n getCurrentState: function getCurrentState() {\n return h;\n },\n setValue: function setValue(t) {\n f = !0, m = Math.min(Math.max(t, 1e-4), 1 + g);\n },\n updateCurrentTransform: function updateCurrentTransform() {\n var t = s.getValue();\n if (_) {\n var e = Math.max(1e-5, m - g);\n s.tick(e), t = s.getValue();\n }\n l.tween(t);\n },\n completed: function completed() {\n return !!d || 0 !== p && s.completed();\n },\n updateElement: function updateElement(t, e) {\n if (f || e) {\n var i = l.asMatrix(),\n n = l.getProperties();\n X(t, i, r), Y(t, n);\n }\n }\n };\n },\n E = function E(t) {\n var i = t.movement;\n t.initialVelocity = .1, t.equilibriumPosition = 0;\n var n = T(t),\n o = !1,\n a = i.position,\n r = i.rotation,\n s = i.rotationPost,\n h = i.scale,\n u = i.skew,\n l = q({\n position: a ? [0, 0, 0] : e,\n rotation: r ? [0, 0, 0] : e,\n rotationPost: s ? [0, 0, 0] : e,\n scale: h ? [0, 0] : e,\n skew: u ? [0, 0] : e\n });\n return {\n stop: function stop() {\n o = !0;\n },\n isStopped: function isStopped(t) {\n return o;\n },\n tick: function tick(t) {\n o || n.equilibrium || (n.tick(), this.updateMovement());\n },\n updateMovement: function updateMovement() {\n var t = n.getValue();\n a && (l.position[0] = i.position[0] * t, l.position[1] = i.position[1] * t, l.position[2] = i.position[2] * t), r && (l.rotation[0] = i.rotation[0] * t, l.rotation[1] = i.rotation[1] * t, l.rotation[2] = i.rotation[2] * t), s && (l.rotationPost[0] = i.rotationPost[0] * t, l.rotationPost[1] = i.rotationPost[1] * t, l.rotationPost[2] = i.rotationPost[2] * t), h && (l.scale[0] = 1 + i.scale[0] * t, l.scale[1] = 1 + i.scale[1] * t), u && (l.skew[0] = i.skew[0] * t, l.skew[1] = i.skew[1] * t);\n },\n updateElement: function updateElement(t) {\n X(t, l.asMatrix()), Y(t, l.getProperties());\n },\n getCurrentState: function getCurrentState() {\n return l;\n },\n completed: function completed() {\n return n.equilibrium || o;\n },\n restart: function restart() {\n n = T(t);\n }\n };\n },\n C = function C(t) {\n return t;\n },\n P = function P(t) {\n return (Math.cos(t * Math.PI + Math.PI) + 1) / 2;\n },\n M = function M(t) {\n return t * t;\n },\n R = function R(t) {\n return -Math.pow(t - 1, 2) + 1;\n },\n T = function T(t) {\n var e = G(t.startPosition, 0),\n i = G(t.equilibriumPosition, 1),\n n = G(t.initialVelocity, 0),\n o = G(t.springConstant, .8),\n a = G(t.springDeceleration, .9),\n r = G(t.springMass, 10),\n s = !1;\n return {\n tick: function tick(t) {\n if (0 !== t && !s) {\n var h = -(e - i) * o,\n u = h / r;\n n += u, e += n, n *= a, Math.abs(e - i) < .001 && Math.abs(n) < .001 && (s = !0);\n }\n },\n resetFrom: function resetFrom(t) {\n e = t, n = 0;\n },\n getValue: function getValue() {\n return s ? i : e;\n },\n completed: function completed() {\n return s;\n }\n };\n },\n I = {\n linear: C,\n ease: P,\n easeIn: M,\n easeOut: R\n },\n L = function L(t, e) {\n if (\"spring\" == t) return T(e);\n var i = t;\n J(t) || (i = I[t]);\n var n,\n o = i,\n a = 0;\n return {\n tick: function tick(t) {\n a = o(t), n = t;\n },\n resetFrom: function resetFrom(t) {\n n = 0;\n },\n getValue: function getValue() {\n return a;\n },\n completed: function completed() {\n return n >= 1 && n;\n }\n };\n },\n O = function O(t, e, i, n) {\n t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = e, t[13] = i, t[14] = n, t[15] = 1;\n },\n z = function z(t, e) {\n t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = Math.cos(e), t[6] = -Math.sin(e), t[7] = 0, t[8] = 0, t[9] = Math.sin(e), t[10] = Math.cos(e), t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n D = function D(t, e) {\n t[0] = Math.cos(e), t[1] = 0, t[2] = Math.sin(e), t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = -Math.sin(e), t[9] = 0, t[10] = Math.cos(e), t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n A = function A(t, e) {\n t[0] = Math.cos(e), t[1] = -Math.sin(e), t[2] = 0, t[3] = 0, t[4] = Math.sin(e), t[5] = Math.cos(e), t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n U = function U(t, e, i) {\n t[0] = 1, t[1] = Math.tan(e), t[2] = 0, t[3] = 0, t[4] = Math.tan(i), t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n H = function H(t, e, i) {\n t[0] = e, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = i, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n N = function N(t) {\n t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n B = function B(t, e) {\n e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4], e[5] = t[5], e[6] = t[6], e[7] = t[7], e[8] = t[8], e[9] = t[9], e[10] = t[10], e[11] = t[11], e[12] = t[12], e[13] = t[13], e[14] = t[14], e[15] = t[15];\n },\n F = function F() {\n var t = new Float32Array(16),\n e = new Float32Array(16),\n i = new Float32Array(16);\n return N(t), {\n data: t,\n asCSS: function asCSS() {\n for (var e = \"matrix3d(\", i = 0; i < 15; ++i) {\n e += Math.abs(t[i]) < 1e-4 ? \"0,\" : t[i].toFixed(10) + \",\";\n }\n return e += Math.abs(t[15]) < 1e-4 ? \"0)\" : t[15].toFixed(10) + \")\";\n },\n clear: function clear() {\n N(t);\n },\n translate: function translate(n, o, a) {\n return B(t, e), O(i, n, o, a), W(e, i, t), this;\n },\n rotateX: function rotateX(n) {\n return B(t, e), z(i, n), W(e, i, t), this;\n },\n rotateY: function rotateY(n) {\n return B(t, e), D(i, n), W(e, i, t), this;\n },\n rotateZ: function rotateZ(n) {\n return B(t, e), A(i, n), W(e, i, t), this;\n },\n scale: function scale(n, o) {\n return B(t, e), H(i, n, o), W(e, i, t), this;\n },\n skew: function skew(n, o) {\n return B(t, e), U(i, n, o), W(e, i, t), this;\n }\n };\n },\n W = function W(t, e, i) {\n return i[0] = t[0] * e[0] + t[1] * e[4] + t[2] * e[8] + t[3] * e[12], i[1] = t[0] * e[1] + t[1] * e[5] + t[2] * e[9] + t[3] * e[13], i[2] = t[0] * e[2] + t[1] * e[6] + t[2] * e[10] + t[3] * e[14], i[3] = t[0] * e[3] + t[1] * e[7] + t[2] * e[11] + t[3] * e[15], i[4] = t[4] * e[0] + t[5] * e[4] + t[6] * e[8] + t[7] * e[12], i[5] = t[4] * e[1] + t[5] * e[5] + t[6] * e[9] + t[7] * e[13], i[6] = t[4] * e[2] + t[5] * e[6] + t[6] * e[10] + t[7] * e[14], i[7] = t[4] * e[3] + t[5] * e[7] + t[6] * e[11] + t[7] * e[15], i[8] = t[8] * e[0] + t[9] * e[4] + t[10] * e[8] + t[11] * e[12], i[9] = t[8] * e[1] + t[9] * e[5] + t[10] * e[9] + t[11] * e[13], i[10] = t[8] * e[2] + t[9] * e[6] + t[10] * e[10] + t[11] * e[14], i[11] = t[8] * e[3] + t[9] * e[7] + t[10] * e[11] + t[11] * e[15], i[12] = t[12] * e[0] + t[13] * e[4] + t[14] * e[8] + t[15] * e[12], i[13] = t[12] * e[1] + t[13] * e[5] + t[14] * e[9] + t[15] * e[13], i[14] = t[12] * e[2] + t[13] * e[6] + t[14] * e[10] + t[15] * e[14], i[15] = t[12] * e[3] + t[13] * e[7] + t[14] * e[11] + t[15] * e[15], i;\n },\n q = function q(t) {\n var i = F(),\n n = {\n opacity: e,\n width: e,\n height: e\n };\n return {\n position: t.position,\n rotation: t.rotation,\n rotationPost: t.rotationPost,\n skew: t.skew,\n scale: t.scale,\n scalePost: t.scalePost,\n opacity: t.opacity,\n width: t.width,\n height: t.height,\n clone: function clone() {\n return q({\n position: this.position ? this.position.slice(0) : e,\n rotation: this.rotation ? this.rotation.slice(0) : e,\n rotationPost: this.rotationPost ? this.rotationPost.slice(0) : e,\n skew: this.skew ? this.skew.slice(0) : e,\n scale: this.scale ? this.scale.slice(0) : e,\n scalePost: this.scalePost ? this.scalePost.slice(0) : e,\n height: this.height,\n width: this.width,\n opacity: this.opacity\n });\n },\n asMatrix: function asMatrix() {\n var t = i;\n return t.clear(), this.transformOrigin && t.translate(-this.transformOrigin[0], -this.transformOrigin[1], -this.transformOrigin[2]), this.scale && t.scale(this.scale[0], this.scale[1]), this.skew && t.skew(this.skew[0], this.skew[1]), this.rotation && (t.rotateX(this.rotation[0]), t.rotateY(this.rotation[1]), t.rotateZ(this.rotation[2])), this.position && t.translate(this.position[0], this.position[1], this.position[2]), this.rotationPost && (t.rotateX(this.rotationPost[0]), t.rotateY(this.rotationPost[1]), t.rotateZ(this.rotationPost[2])), this.scalePost && t.scale(this.scalePost[0], this.scalePost[1]), this.transformOrigin && t.translate(this.transformOrigin[0], this.transformOrigin[1], this.transformOrigin[2]), t;\n },\n getProperties: function getProperties() {\n return n.opacity = this.opacity, n.width = this.width + \"px\", n.height = this.height + \"px\", n;\n }\n };\n },\n j = function j(t, i, n) {\n var o = t,\n a = i,\n r = n,\n s = a.position !== e,\n h = a.rotation !== e,\n u = a.rotationPost !== e,\n l = a.scale !== e,\n p = a.skew !== e,\n c = a.width !== e,\n d = a.height !== e,\n f = a.opacity !== e;\n return {\n tween: function tween(t) {\n if (s) {\n var e = a.position[0] - o.position[0],\n i = a.position[1] - o.position[1],\n n = a.position[2] - o.position[2];\n r.position[0] = o.position[0] + t * e, r.position[1] = o.position[1] + t * i, r.position[2] = o.position[2] + t * n;\n }\n if (h) {\n var _ = a.rotation[0] - o.rotation[0],\n m = a.rotation[1] - o.rotation[1],\n g = a.rotation[2] - o.rotation[2];\n r.rotation[0] = o.rotation[0] + t * _, r.rotation[1] = o.rotation[1] + t * m, r.rotation[2] = o.rotation[2] + t * g;\n }\n if (u) {\n var v = a.rotationPost[0] - o.rotationPost[0],\n y = a.rotationPost[1] - o.rotationPost[1],\n w = a.rotationPost[2] - o.rotationPost[2];\n r.rotationPost[0] = o.rotationPost[0] + t * v, r.rotationPost[1] = o.rotationPost[1] + t * y, r.rotationPost[2] = o.rotationPost[2] + t * w;\n }\n if (p) {\n var b = a.scale[0] - o.scale[0],\n k = a.scale[1] - o.scale[1];\n r.scale[0] = o.scale[0] + t * b, r.scale[1] = o.scale[1] + t * k;\n }\n if (l) {\n var x = a.skew[0] - o.skew[0],\n S = a.skew[1] - o.skew[1];\n r.skew[0] = o.skew[0] + t * x, r.skew[1] = o.skew[1] + t * S;\n }\n if (c) {\n var E = a.width - o.width;\n r.width = o.width + t * E;\n }\n if (d) {\n var C = a.height - o.height;\n r.height = o.height + t * C;\n }\n if (f) {\n var P = a.opacity - o.opacity;\n r.opacity = o.opacity + t * P;\n }\n },\n asMatrix: function asMatrix() {\n return r.asMatrix();\n },\n getProperties: function getProperties() {\n return r.getProperties();\n },\n setReverse: function setReverse() {\n var t = o;\n o = a, a = t;\n }\n };\n },\n V = function V(t, i, n, o) {\n var a = t(0, F()),\n r = i,\n s = n,\n h = o,\n u = !1;\n return {\n tween: function tween(i) {\n u && (i = 1 - i), a.clear(), a = t(i, a);\n var n = s.width - r.width,\n o = s.height - r.height,\n l = s.opacity - r.opacity;\n s.width !== e && (h.width = r.width + i * n), s.height !== e && (h.height = r.height + i * o), s.opacity !== e && (h.opacity = r.opacity + i * l);\n },\n asMatrix: function asMatrix() {\n return a;\n },\n getProperties: function getProperties() {\n return h.getProperties();\n },\n setReverse: function setReverse() {\n u = !0;\n }\n };\n },\n G = function G(t, e) {\n return \"undefined\" == typeof t ? e : t;\n },\n X = function X(t, e, i) {\n var n = \"\";\n i && (n = \"perspective(\" + i + \"px) \");\n var a = e.asCSS();\n t.style[o] = n + a;\n },\n Y = function Y(t, e) {\n for (var i in e) {\n t.style[i] = e[i];\n }\n },\n J = function J(t) {\n return \"function\" == typeof t;\n },\n $ = function $(t) {\n if (!t) return t;\n var e = {};\n for (var i in t) {\n e[i] = t[i];\n }\n return e;\n };\n return s.createMatrix = F, s.setElementTransform = X, s;\n }(),\n l = function () {\n function t(t, e, i, n, o) {\n if (\"string\" == typeof t) t = document.getElementById(t);else if (!t instanceof HTMLCanvasElement) return;\n var a,\n r = t.getContext(\"2d\");\n try {\n try {\n a = r.getImageData(e, i, n, o);\n } catch (s) {\n throw new Error(\"unable to access local image data: \" + s);\n }\n } catch (s) {\n throw new Error(\"unable to access image data: \" + s);\n }\n return a;\n }\n function e(e, n, o, a, r, s) {\n if (!(isNaN(s) || s < 1)) {\n s |= 0;\n var h = t(e, n, o, a, r);\n h = i(h, n, o, a, r, s), e.getContext(\"2d\").putImageData(h, n, o);\n }\n }\n function i(t, e, i, r, s, h) {\n var u,\n l,\n p,\n c,\n d,\n f,\n _,\n m,\n g,\n v,\n y,\n w,\n b,\n k,\n x,\n S,\n E,\n C,\n P,\n M,\n R,\n T,\n I,\n L,\n O = t.data,\n z = h + h + 1,\n D = r - 1,\n A = s - 1,\n U = h + 1,\n H = U * (U + 1) / 2,\n N = new n(),\n B = N;\n for (p = 1; p < z; p++) {\n if (B = B.next = new n(), p == U) var F = B;\n }\n B.next = N;\n var W = null,\n q = null;\n _ = f = 0;\n var j = o[h],\n V = a[h];\n for (l = 0; l < s; l++) {\n for (S = E = C = P = m = g = v = y = 0, w = U * (M = O[f]), b = U * (R = O[f + 1]), k = U * (T = O[f + 2]), x = U * (I = O[f + 3]), m += H * M, g += H * R, v += H * T, y += H * I, B = N, p = 0; p < U; p++) {\n B.r = M, B.g = R, B.b = T, B.a = I, B = B.next;\n }\n for (p = 1; p < U; p++) {\n c = f + ((D < p ? D : p) << 2), m += (B.r = M = O[c]) * (L = U - p), g += (B.g = R = O[c + 1]) * L, v += (B.b = T = O[c + 2]) * L, y += (B.a = I = O[c + 3]) * L, S += M, E += R, C += T, P += I, B = B.next;\n }\n for (W = N, q = F, u = 0; u < r; u++) {\n O[f + 3] = I = y * j >> V, 0 != I ? (I = 255 / I, O[f] = (m * j >> V) * I, O[f + 1] = (g * j >> V) * I, O[f + 2] = (v * j >> V) * I) : O[f] = O[f + 1] = O[f + 2] = 0, m -= w, g -= b, v -= k, y -= x, w -= W.r, b -= W.g, k -= W.b, x -= W.a, c = _ + ((c = u + h + 1) < D ? c : D) << 2, S += W.r = O[c], E += W.g = O[c + 1], C += W.b = O[c + 2], P += W.a = O[c + 3], m += S, g += E, v += C, y += P, W = W.next, w += M = q.r, b += R = q.g, k += T = q.b, x += I = q.a, S -= M, E -= R, C -= T, P -= I, q = q.next, f += 4;\n }\n _ += r;\n }\n for (u = 0; u < r; u++) {\n for (E = C = P = S = g = v = y = m = 0, f = u << 2, w = U * (M = O[f]), b = U * (R = O[f + 1]), k = U * (T = O[f + 2]), x = U * (I = O[f + 3]), m += H * M, g += H * R, v += H * T, y += H * I, B = N, p = 0; p < U; p++) {\n B.r = M, B.g = R, B.b = T, B.a = I, B = B.next;\n }\n for (d = r, p = 1; p <= h; p++) {\n f = d + u << 2, m += (B.r = M = O[f]) * (L = U - p), g += (B.g = R = O[f + 1]) * L, v += (B.b = T = O[f + 2]) * L, y += (B.a = I = O[f + 3]) * L, S += M, E += R, C += T, P += I, B = B.next, p < A && (d += r);\n }\n for (f = u, W = N, q = F, l = 0; l < s; l++) {\n c = f << 2, O[c + 3] = I = y * j >> V, I > 0 ? (I = 255 / I, O[c] = (m * j >> V) * I, O[c + 1] = (g * j >> V) * I, O[c + 2] = (v * j >> V) * I) : O[c] = O[c + 1] = O[c + 2] = 0, m -= w, g -= b, v -= k, y -= x, w -= W.r, b -= W.g, k -= W.b, x -= W.a, c = u + ((c = l + U) < A ? c : A) * r << 2, m += S += W.r = O[c], g += E += W.g = O[c + 1], v += C += W.b = O[c + 2], y += P += W.a = O[c + 3], W = W.next, w += M = q.r, b += R = q.g, k += T = q.b, x += I = q.a, S -= M, E -= R, C -= T, P -= I, q = q.next, f += r;\n }\n }\n return t;\n }\n function n() {\n this.r = 0, this.g = 0, this.b = 0, this.a = 0, this.next = null;\n }\n var o = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259],\n a = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n return e;\n }();\n HTMLCanvasElement.prototype.toBlob || Object.defineProperty(HTMLCanvasElement.prototype, \"toBlob\", {\n value: function value(t, e, i) {\n for (var n = atob(this.toDataURL(e, i).split(\",\")[1]), o = n.length, a = new Uint8Array(o), r = 0; r < o; r++) {\n a[r] = n.charCodeAt(r);\n }\n t(new Blob([a], {\n type: e || \"image/png\"\n }));\n }\n });\n var p = function () {\n function t(t, e) {\n for (var i = 0; i < e.length; i++) {\n var n = e[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n return function (e, i, n) {\n return i && t(e.prototype, i), n && t(e, n), e;\n };\n }(),\n c = \"function\" == typeof Symbol && \"symbol\" == _typeof(Symbol.iterator) ? function (t) {\n return _typeof(t);\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : _typeof(t);\n },\n d = function d(t) {\n if (\"undefined\" == typeof t.dataset) {\n var e,\n i,\n n = {},\n o = t.attributes;\n for (e in o) {\n o.hasOwnProperty(e) && o[e].name && /^data-[a-z_\\-\\d]*$/i.test(o[e].name) && (i = f(o[e].name.substr(5)), n[i] = o[e].value);\n }\n return n;\n }\n return t.dataset;\n },\n f = function f(t) {\n return t.replace(/\\-./g, function (t) {\n return t.charAt(1).toUpperCase();\n });\n },\n _ = function _(t) {\n for (var e = [], i = Array.prototype.slice.call(t.attributes), n = i.length, o = 0; o < n; o++) {\n e.push({\n name: i[o].name,\n value: i[o].value\n });\n }\n return e;\n },\n m = function m(t) {\n return {\n x: \"undefined\" == typeof t.offsetX ? t.layerX : t.offsetX,\n y: \"undefined\" == typeof t.offsetY ? t.layerY : t.offsetY\n };\n },\n g = function g(t, e) {\n var i,\n n = {},\n o = e || {};\n for (i in t) {\n t.hasOwnProperty(i) && (n[i] = \"undefined\" == typeof o[i] ? t[i] : o[i]);\n }\n return n;\n },\n v = {\n ESC: 27,\n RETURN: 13\n },\n y = {\n DOWN: [\"touchstart\", \"pointerdown\", \"mousedown\"],\n MOVE: [\"touchmove\", \"pointermove\", \"mousemove\"],\n UP: [\"touchend\", \"touchcancel\", \"pointerup\", \"mouseup\"]\n },\n w = {\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n jpe: \"image/jpeg\",\n png: \"image/png\",\n gif: \"image/gif\",\n bmp: \"image/bmp\"\n },\n b = /(\\.png|\\.bmp|\\.gif|\\.jpg|\\.jpe|\\.jpg|\\.jpeg)$/,\n k = function k(t, e) {\n var i = document.createElement(t);\n return e && (i.className = e), i;\n },\n x = function x(t, e, i) {\n e.forEach(function (e) {\n t.addEventListener(e, i, !1);\n });\n },\n S = function S(t, e, i) {\n e.forEach(function (e) {\n t.removeEventListener(e, i, !1);\n });\n },\n E = function E(t) {\n var e = t.changedTouches ? t.changedTouches[0] : t;\n if (e) return {\n x: e.pageX,\n y: e.pageY\n };\n },\n C = function C(t, e) {\n var i = .5,\n n = .5,\n o = Math.PI / 180 * e,\n a = Math.cos(o),\n r = Math.sin(o),\n s = t.x,\n h = t.y,\n u = t.x + t.width,\n l = t.y + t.height,\n p = a * (s - i) + r * (h - n) + i,\n c = a * (h - n) - r * (s - i) + n,\n d = a * (u - i) + r * (l - n) + i,\n f = a * (l - n) - r * (u - i) + n;\n p <= d ? (t.x = p, t.width = d - p) : (t.x = d, t.width = p - d), c <= f ? (t.y = c, t.height = f - c) : (t.y = f, t.height = c - f);\n },\n P = function P(t) {\n var e = E(t);\n return e.x -= window.pageXOffset || document.documentElement.scrollLeft, e.y -= window.pageYOffset || document.documentElement.scrollTop, e;\n },\n M = function M(t) {\n return t.charAt(0).toLowerCase() + t.slice(1);\n },\n R = function R(t) {\n return t.charAt(0).toUpperCase() + t.slice(1);\n },\n T = function T(t) {\n return t[t.length - 1];\n },\n I = function I(t, e, i) {\n return Math.max(e, Math.min(i, t));\n },\n L = function L(t, e) {\n if (!e) return !1;\n for (var i = 0; i < e.length; i++) {\n if (e[i] === t) return !0;\n }\n return !1;\n },\n O = function O(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : \"POST\",\n n = arguments[2],\n o = arguments[3],\n a = arguments[4],\n r = arguments[5],\n s = arguments[6],\n h = new XMLHttpRequest();\n a && h.upload.addEventListener(\"progress\", function (t) {\n a(t.loaded, t.total);\n }), h.open(i, t, !0), o && o(h, n), h.onreadystatechange = function () {\n if (4 === h.readyState && h.status >= 200 && h.status < 300) {\n var t = h.responseText;\n if (!t.length) return void r();\n if (t.indexOf(\"Content-Length\") !== -1) return void s(\"file-too-big\");\n var e = void 0;\n try {\n e = JSON.parse(h.responseText);\n } catch (i) {}\n if (\"object\" === (\"undefined\" == typeof e ? \"undefined\" : c(e)) && \"failure\" === e.status) return void s(e.message);\n r(e || t);\n } else if (4 === h.readyState) {\n var n = void 0;\n try {\n n = JSON.parse(h.responseText);\n } catch (i) {}\n if (\"object\" === (\"undefined\" == typeof n ? \"undefined\" : c(n)) && \"failure\" === n.status) return void s(n.message);\n s(\"fail\");\n }\n }, h.send(n);\n },\n z = function z(t) {\n t && (t.style.webkitTransform = \"\", t.style.transform = \"\");\n },\n D = function D(t) {\n return t / 1e6;\n },\n A = function A() {\n var t = [],\n e = void 0,\n i = void 0;\n for (e in w) {\n w.hasOwnProperty(e) && (i = w[e], t.indexOf(i) == -1 && t.push(i));\n }\n return t;\n },\n U = function U(t) {\n return \"image/jpeg\" === t;\n },\n H = function H(t) {\n var e = void 0;\n for (e in w) {\n if (w.hasOwnProperty(e) && w[e] === t) return e;\n }\n return t;\n },\n N = function N(t) {\n var e = void 0;\n for (e in w) {\n if (w.hasOwnProperty(e) && t.indexOf(w[e]) !== -1) return w[e];\n }\n return null;\n },\n B = function B(t) {\n return t.split(\"/\").pop().split(\"?\").shift();\n },\n F = function F(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : \"\";\n return (i + t).slice(-i.length);\n },\n W = function W(t) {\n return t.getFullYear() + \"-\" + F(t.getMonth() + 1, \"00\") + \"-\" + F(t.getDate(), \"00\") + \"_\" + F(t.getHours(), \"00\") + \"-\" + F(t.getMinutes(), \"00\") + \"-\" + F(t.getSeconds(), \"00\");\n },\n q = function q(t) {\n return \"undefined\" == typeof t.name ? W(new Date()) + \".\" + H(j(t)) : t.name;\n },\n j = function j(t) {\n return t.type || \"image/jpeg\";\n },\n V = function V(t) {\n if (\"string\" != typeof t) return W(new Date());\n var e = B(t);\n return e.split(\".\").shift();\n },\n G = function G(t, e) {\n try {\n return new File([t], e, {\n type: t.type,\n lastModified: Date.now()\n });\n } catch (i) {\n return t.lastModified = new Date(), t.name = e, t;\n }\n },\n X = function X(t) {\n return /^data:image/.test(t);\n },\n Y = function Y(t, e, i, n, o, a) {\n t = \"\" + t + (t.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"url=\" + n;\n var r = new XMLHttpRequest();\n r.open(\"GET\", t, !0), e(r), r.responseType = \"json\", r.onload = function () {\n return \"failure\" === this.response.status ? void o(this.response.message) : void J(this.response.body, i, a);\n }, r.send();\n },\n J = function J(t, e, i, n) {\n var o = new XMLHttpRequest();\n o.open(\"GET\", t, !0), e(o), o.responseType = \"blob\", o.onload = function (e) {\n if (o.status >= 200 && o.status < 300) {\n var a = B(t),\n r = N(this.response.type);\n b.test(a) || (a += \".\" + H(r));\n var s = G(this.response, a);\n i(gt(s, r));\n } else n(o.status + \": \" + o.statusText);\n }, o.onerror = function () {\n n();\n }, o.send();\n },\n $ = function $(t) {\n var e = t.split(\",\")[1],\n i = e.replace(/\\s/g, \"\");\n return atob(i);\n },\n Z = function Z(t, e) {\n for (var i = $(t), n = new ArrayBuffer(i.length), o = new Uint8Array(n), a = 0; a < i.length; a++) {\n o[a] = i.charCodeAt(a);\n }\n var r = wt(t);\n return \"undefined\" == typeof e && (e = W(new Date()) + \".\" + H(r)), G(K(n, r), e);\n },\n K = function K(t, e) {\n var i = window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n if (i) {\n var n = new i();\n return n.append(t), n.getBlob(e);\n }\n return new Blob([t], {\n type: e\n });\n },\n Q = function Q(t, e, i) {\n var o = \"string\" != typeof t || 0 !== t.indexOf(\"data:image\");\n n.parseMetaData(t, function (a) {\n var r = {\n canvas: !0,\n crossOrigin: o\n };\n e && (r.maxWidth = e.width, r.maxHeight = e.height), a.exif && (r.orientation = a.exif.get(\"Orientation\")), n(t, function (t) {\n return \"error\" === t.type ? void i() : void i(t, a);\n }, r);\n });\n },\n tt = function tt(t, e, i) {\n var n,\n o,\n a,\n r,\n s = e / t;\n return s < i ? (r = e, a = r / i, n = .5 * (t - a), o = 0) : (a = t, r = a * i, n = 0, o = .5 * (e - r)), {\n x: n,\n y: o,\n height: r,\n width: a\n };\n },\n et = function et(t) {\n var n = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {},\n o = arguments[2],\n a = k(\"canvas\"),\n r = n.rotation,\n s = n.crop,\n h = n.size,\n u = n.filters,\n l = n.minSize;\n if (s) {\n var p = r % 180 !== 0,\n c = {\n width: p ? t.height : t.width,\n height: p ? t.width : t.height\n };\n s.x < 0 && (s.x = 0), s.y < 0 && (s.y = 0), s.width > c.width && (s.width = c.width), s.height > c.height && (s.height = c.height), s.y + s.height > c.height && (s.y = Math.max(0, c.height - s.height)), s.x + s.width > c.width && (s.x = Math.max(0, c.width - s.width));\n var d = s.x / c.width,\n f = s.y / c.height,\n _ = s.width / c.width,\n m = s.height / c.height;\n a.width = s.width, a.height = s.height;\n var g = a.getContext(\"2d\");\n 90 === r ? (g.translate(.5 * a.width, .5 * a.height), g.rotate(-90 * Math.PI / 180), g.drawImage(t, (1 - f) * t.width - t.width * m, s.x, s.height, s.width, .5 * -a.height, .5 * -a.width, a.height, a.width)) : 180 === r ? (g.translate(.5 * a.width, .5 * a.height), g.rotate(-180 * Math.PI / 180), g.drawImage(t, (1 - (d + _)) * c.width, (1 - (f + m)) * c.height, _ * c.width, m * c.height, .5 * -a.width, .5 * -a.height, a.width, a.height)) : 270 === r ? (g.translate(.5 * a.width, .5 * a.height), g.rotate(-270 * Math.PI / 180), g.drawImage(t, s.y, (1 - d) * t.height - t.height * _, s.height, s.width, .5 * -a.height, .5 * -a.width, a.height, a.width)) : g.drawImage(t, s.x, s.y, s.width, s.height, 0, 0, a.width, a.height);\n }\n if (h) {\n var v = h.width / a.width,\n y = h.height / a.height,\n w = Math.min(v, y);\n i(a, w, h, l), u.sharpen > 0 && nt(a, at(u.sharpen));\n }\n o(a);\n },\n it = function it(t) {\n var e = t.getContext(\"2d\");\n return e.getImageData(0, 0, t.width, t.height);\n },\n nt = function nt(t, e) {\n var i = t.getContext(\"2d\");\n i.putImageData(e(it(t), t.width, t.height), 0, 0);\n },\n ot = function ot(t, e, i) {\n var n = document.createElement(\"canvas\");\n n.width = t, n.height = e;\n var o = n.getContext(\"2d\"),\n a = o.createImageData(n.width, n.height);\n return i && a.set(i.data), a;\n },\n at = function at(t) {\n return function (e, i, n) {\n for (var o = [0, -1, 0, -1, 5, -1, 0, -1, 0], a = Math.round(Math.sqrt(o.length)), r = .5 * a | 0, s = ot(i, n), h = s.data, u = e.data, l = n, p = void 0; l--;) {\n for (p = i; p--;) {\n for (var c = l, d = p, f = 4 * (l * i + p), _ = 0, m = 0, g = 0, v = 0, y = 0; y < a; y++) {\n for (var w = 0; w < a; w++) {\n var b = c + y - r,\n k = d + w - r;\n if (b >= 0 && b < n && k >= 0 && k < i) {\n var x = 4 * (b * i + k),\n S = o[y * a + w];\n _ += u[x] * S, m += u[x + 1] * S, g += u[x + 2] * S, v += u[x + 3] * S;\n }\n }\n }\n h[f] = _ * t + u[f] * (1 - t), h[f + 1] = m * t + u[f + 1] * (1 - t), h[f + 2] = g * t + u[f + 2] * (1 - t), h[f + 3] = u[f + 3];\n }\n }\n return s;\n };\n },\n rt = function rt(t, e) {\n var i = Math.abs(t.width - e.width),\n n = Math.abs(t.height - e.height);\n return Math.max(i, n);\n },\n st = function st(t) {\n return ht(t, 1);\n },\n ht = function ht(t, e) {\n if (!t) return null;\n var n = document.createElement(\"canvas\"),\n o = n.getContext(\"2d\");\n return n.width = t.width, n.height = t.height, o.drawImage(t, 0, 0), e > 0 && 1 !== e && i(n, e, {\n width: Math.round(t.width * e),\n height: Math.round(t.height * e)\n }, {\n width: 0,\n height: 0\n }), n;\n },\n ut = function ut(t) {\n return t.width && t.height;\n },\n lt = function lt(t, e) {\n var i = e.getContext(\"2d\");\n ut(e) ? i.drawImage(t, 0, 0, e.width, e.height) : (e.width = t.width, e.height = t.height, i.drawImage(t, 0, 0));\n },\n pt = function pt(t) {\n l(t, 0, 0, t.width, t.height, 3);\n },\n ct = function ct(t, e) {\n return parseInt(t.width, 10) >= e.width && parseInt(t.height, 10) >= e.height;\n },\n dt = function dt(t, e, i) {\n return {\n x: t.x * e,\n y: t.y * i,\n width: t.width * e,\n height: t.height * i\n };\n },\n ft = function ft(t, e, i) {\n return {\n x: t.x / e,\n y: t.y / i,\n width: t.width / e,\n height: t.height / i\n };\n },\n _t = function _t(t) {\n if (t && \"\" !== t.value) {\n try {\n t.value = \"\";\n } catch (e) {}\n if (t.value) {\n var i = document.createElement(\"form\"),\n n = t.parentNode,\n o = t.nextSibling;\n i.appendChild(t), i.reset(), o ? n.insertBefore(t, o) : n.appendChild(t);\n }\n }\n },\n mt = function mt(t) {\n return \"object\" === (\"undefined\" == typeof value ? \"undefined\" : c(value)) && null !== value ? JSON.parse(JSON.stringify(t)) : t;\n },\n gt = function gt(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : null;\n if (!t) return null;\n var n = t.slice(0, t.size, i || t.type);\n return n.name = t.name, n.lastModified = new Date(t.lastModified), n;\n },\n vt = function vt(t) {\n var e = mt(t);\n return e.input.file = gt(t.input.file), e.output.image = st(t.output.image), e;\n },\n yt = function yt(t, i, n) {\n return t && i ? t.toDataURL(i, U(i) && \"number\" == typeof n ? n / 100 : e) : null;\n },\n wt = function wt(t) {\n if (!t) return null;\n var e = t.substr(0, 16).match(/^.+;/);\n return e.length ? e[0].substring(5, e[0].length - 1) : null;\n },\n bt = function bt(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : [],\n n = arguments[2],\n o = arguments[3],\n a = arguments[4],\n r = {\n server: mt(t.server),\n meta: mt(t.meta),\n input: {\n name: t.input.name,\n type: t.input.type,\n size: t.input.size,\n width: t.input.width,\n height: t.input.height,\n field: t.input.field\n }\n };\n return L(\"input\", i) && !a && (r.input.image = yt(t.input.image, t.input.type)), L(\"output\", i) && (r.output = {\n name: o ? V(t.input.name) + \".\" + o : t.input.name,\n type: w[o] || t.input.type,\n width: t.output.width,\n height: t.output.height\n }, r.output.image = yt(t.output.image, r.output.type, n), r.output.type = wt(r.output.image), \"image/png\" === r.output.type && (r.output.name = V(r.input.name) + \".png\")), L(\"actions\", i) && (r.actions = mt(t.actions)), r;\n },\n kt = function kt(t, i, n) {\n var o = t.output.image,\n a = n ? V(t.input.name) + \".\" + n : t.input.name,\n r = w[n] || t.input.type;\n \"image/png\" === r && (a = V(t.input.name) + \".png\"), o.toBlob(function (t) {\n if (\"msSaveBlob\" in window.navigator) return void window.navigator.msSaveBlob(t, a);\n var e = (window.URL || window.webkitURL).createObjectURL(t),\n i = k(\"a\");\n i.style.display = \"none\", i.download = a, i.href = e, document.body.appendChild(i), i.click(), setTimeout(function () {\n document.body.removeChild(i), (window.URL || window.webkitURL).revokeObjectURL(e);\n }, 0);\n }, r, \"number\" == typeof i ? i / 100 : e);\n },\n xt = function xt(t, e, i) {\n var n = i.querySelector(t);\n n && (n.style.display = e ? \"\" : \"none\");\n },\n St = function St(t) {\n return Array.prototype.slice.call(t);\n },\n Et = function Et(t) {\n t.parentNode.removeChild(t);\n },\n Ct = function Ct(t) {\n var e = k(\"div\");\n return t.parentNode && (t.nextSibling ? t.parentNode.insertBefore(e, t.nextSibling) : t.parentNode.appendChild(e)), e.appendChild(t), e;\n },\n Pt = function Pt(t, e, i, n) {\n var o = (n - 90) * Math.PI / 180;\n return {\n x: t + i * Math.cos(o),\n y: e + i * Math.sin(o)\n };\n },\n Mt = function Mt(t, e, i, n, o) {\n var a = Pt(t, e, i, o),\n r = Pt(t, e, i, n),\n s = o - n <= 180 ? \"0\" : \"1\",\n h = [\"M\", a.x, a.y, \"A\", i, i, 0, s, 0, r.x, r.y].join(\" \");\n return h;\n },\n Rt = function Rt(t, e, i, n) {\n return Mt(t, e, i, 0, 360 * n);\n },\n Tt = function () {\n var i = {\n n: function n(t, e, i, _n) {\n var o, a, r, s, h, u, l, p;\n return r = t.y + t.height, o = I(e.y, 0, r), r - o < i.min.height && (o = r - i.min.height), h = _n ? (r - o) / _n : t.width, h < i.min.width && (h = i.min.width, o = r - h * _n), l = .5 * (h - t.width), s = t.x - l, a = t.x + t.width + l, (s < 0 || Math.round(a) > Math.round(i.width)) && (p = Math.min(t.x, i.width - (t.x + t.width)), s = t.x - p, a = t.x + t.width + p, h = a - s, u = h * _n, o = r - u), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n s: function s(t, e, i, n) {\n var o, a, r, s, h, u, l, p;\n return o = t.y, r = I(e.y, o, i.height), r - o < i.min.height && (r = o + i.min.height), h = n ? (r - o) / n : t.width, h < i.min.width && (h = i.min.width, r = o + h * n), l = .5 * (h - t.width), s = t.x - l, a = t.x + t.width + l, (s < 0 || Math.round(a) > Math.round(i.width)) && (p = Math.min(t.x, i.width - (t.x + t.width)), s = t.x - p, a = t.x + t.width + p, h = a - s, u = h * n, r = o + u), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n e: function e(t, _e, i, n) {\n var o, a, r, s, h, u, l, p;\n return s = t.x, a = I(_e.x, s, i.width), a - s < i.min.width && (a = s + i.min.width), u = n ? (a - s) * n : t.height, u < i.min.height && (u = i.min.height, a = s + u / n), l = .5 * (u - t.height), o = t.y - l, r = t.y + t.height + l, (o < 0 || Math.round(r) > Math.round(i.height)) && (p = Math.min(t.y, i.height - (t.y + t.height)), o = t.y - p, r = t.y + t.height + p, u = r - o, h = u / n, a = s + h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n w: function n(t, e, i, o) {\n var a, r, s, h, n, u, l, p;\n return r = t.x + t.width, h = I(e.x, 0, r), r - h < i.min.width && (h = r - i.min.width), u = o ? (r - h) * o : t.height, u < i.min.height && (u = i.min.height, h = r - u / o), l = .5 * (u - t.height), a = t.y - l, s = t.y + t.height + l, (a < 0 || Math.round(s) > Math.round(i.height)) && (p = Math.min(t.y, i.height - (t.y + t.height)), a = t.y - p, s = t.y + t.height + p, u = s - a, n = u / o, h = r - n), {\n x: h,\n y: a,\n width: r - h,\n height: s - a\n };\n },\n ne: function ne(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return s = t.x, r = t.y + t.height, a = I(e.x, s, i.width), a - s < i.min.width && (a = s + i.min.width), u = n ? (a - s) * n : I(r - e.y, i.min.height, r), u < i.min.height && (u = i.min.height, a = s + u / n), o = t.y - (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), o = t.y - l, u = r - o, h = u / n, a = s + h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n se: function se(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return s = t.x, o = t.y, a = I(e.x, s, i.width), a - s < i.min.width && (a = s + i.min.width), u = n ? (a - s) * n : I(e.y - t.y, i.min.height, i.height - o), u < i.min.height && (u = i.min.height, a = s + u / n), r = t.y + t.height + (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), r = t.y + t.height + l, u = r - o, h = u / n, a = s + h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n sw: function sw(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return a = t.x + t.width, o = t.y, s = I(e.x, 0, a), a - s < i.min.width && (s = a - i.min.width), u = n ? (a - s) * n : I(e.y - t.y, i.min.height, i.height - o), u < i.min.height && (u = i.min.height, s = a - u / n), r = t.y + t.height + (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), r = t.y + t.height + l, u = r - o, h = u / n, s = a - h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n nw: function nw(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return a = t.x + t.width, r = t.y + t.height, s = I(e.x, 0, a), a - s < i.min.width && (s = a - i.min.width), u = n ? (a - s) * n : I(r - e.y, i.min.height, r), u < i.min.height && (u = i.min.height, s = a - u / n), o = t.y - (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), o = t.y - l, u = r - o, h = u / n, s = a - h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n }\n };\n return function () {\n function n() {\n var i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : document.createElement(\"div\");\n t(this, n), this._element = i, this._interaction = null, this._minWidth = 1, this._minHeight = 1, this._ratio = null, this._rect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, this._space = {\n width: 0,\n height: 0\n }, this._rectChanged = !1, this._init();\n }\n return p(n, [{\n key: \"_init\",\n value: function value() {\n this._element.className = \"slim-crop-area\";\n var t = k(\"div\", \"grid\");\n this._element.appendChild(t);\n for (var e in i) {\n if (i.hasOwnProperty(e)) {\n var n = k(\"button\", e);\n this._element.appendChild(n);\n }\n }\n var o = k(\"button\", \"c\");\n this._element.appendChild(o), x(document, y.DOWN, this);\n }\n }, {\n key: \"reset\",\n value: function value() {\n this._interaction = null, this._rect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, this._rectChanged = !0, this._redraw(), this._element.dispatchEvent(new CustomEvent(\"change\"));\n }\n }, {\n key: \"rescale\",\n value: function value(t) {\n 1 !== t && (this._interaction = null, this._rectChanged = !0, this._rect.x *= t, this._rect.y *= t, this._rect.width *= t, this._rect.height *= t, this._redraw(), this._element.dispatchEvent(new CustomEvent(\"change\")));\n }\n }, {\n key: \"limit\",\n value: function value(t, e) {\n this._space.width = t, this._space.height = e;\n }\n }, {\n key: \"offset\",\n value: function value(t, e) {\n this._space.x = t, this._space.y = e;\n }\n }, {\n key: \"resize\",\n value: function value(t, e, i, n) {\n this._interaction = null, this._rect = {\n x: I(t, 0, this._space.width - this._minWidth),\n y: I(e, 0, this._space.height - this._minHeight),\n width: I(i, this._minWidth, this._space.width),\n height: I(n, this._minHeight, this._space.height)\n }, this._rectChanged = !0, this._redraw(), this._element.dispatchEvent(new CustomEvent(\"change\"));\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"touchstart\":\n case \"pointerdown\":\n case \"mousedown\":\n this._onStartDrag(t);\n break;\n case \"touchmove\":\n case \"pointermove\":\n case \"mousemove\":\n this._onDrag(t);\n break;\n case \"touchend\":\n case \"touchcancel\":\n case \"pointerup\":\n case \"mouseup\":\n this._onStopDrag(t);\n }\n }\n }, {\n key: \"_onStartDrag\",\n value: function value(t) {\n this._element.contains(t.target) && (t.preventDefault(), x(document, y.MOVE, this), x(document, y.UP, this), this._interaction = {\n type: t.target.className,\n offset: P(t)\n }, this._interaction.offset.x -= this._rect.x, this._interaction.offset.y -= this._rect.y, this._element.setAttribute(\"data-dragging\", \"true\"), this._redraw());\n }\n }, {\n key: \"_onDrag\",\n value: function value(t) {\n t.preventDefault();\n var e = P(t),\n n = this._interaction.type;\n \"c\" === n ? (this._rect.x = I(e.x - this._interaction.offset.x, 0, this._space.width - this._rect.width), this._rect.y = I(e.y - this._interaction.offset.y, 0, this._space.height - this._rect.height)) : i[n] && (this._rect = i[n](this._rect, {\n x: e.x - this._space.x,\n y: e.y - this._space.y\n }, {\n x: 0,\n y: 0,\n width: this._space.width,\n height: this._space.height,\n min: {\n width: this._minWidth,\n height: this._minHeight\n }\n }, this._ratio)), this._rectChanged = !0, this._element.dispatchEvent(new CustomEvent(\"input\"));\n }\n }, {\n key: \"_onStopDrag\",\n value: function value(t) {\n t.preventDefault(), S(document, y.MOVE, this), S(document, y.UP, this), this._interaction = null, this._element.setAttribute(\"data-dragging\", \"false\"), this._element.dispatchEvent(new CustomEvent(\"change\"));\n }\n }, {\n key: \"_redraw\",\n value: function value() {\n var t = this;\n if (this._rectChanged) {\n var e = \"translate(\" + this._rect.x + \"px,\" + this._rect.y + \"px);\";\n this._element.style.cssText = \"\\n\\t\\t\\t\\t\\t-webkit-transform: \" + e + \";\\n\\t\\t\\t\\t\\ttransform: \" + e + \";\\n\\t\\t\\t\\t\\twidth:\" + this._rect.width + \"px;\\n\\t\\t\\t\\t\\theight:\" + this._rect.height + \"px;\\n\\t\\t\\t\\t\", this._rectChanged = !1;\n }\n this._interaction && requestAnimationFrame(function () {\n return t._redraw();\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this._interaction = !1, this._rectChanged = !1, S(document, y.DOWN, this), S(document, y.MOVE, this), S(document, y.UP, this), Et(this._element);\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"space\",\n get: function get() {\n return this._space;\n }\n }, {\n key: \"area\",\n get: function get() {\n var t = this._rect.x / this._space.width,\n e = this._rect.y / this._space.height,\n i = this._rect.width / this._space.width,\n n = this._rect.height / this._space.height;\n return {\n x: t,\n y: e,\n width: i,\n height: n\n };\n }\n }, {\n key: \"dirty\",\n get: function get() {\n return 0 !== this._rect.x || 0 !== this._rect.y || 0 !== this._rect.width || 0 !== this._rect.height;\n }\n }, {\n key: \"minWidth\",\n set: function set(t) {\n this._minWidth = Math.max(t, 1);\n }\n }, {\n key: \"minHeight\",\n set: function set(t) {\n this._minHeight = Math.max(t, 1);\n }\n }, {\n key: \"ratio\",\n set: function set(t) {\n this._ratio = t;\n }\n }]), n;\n }();\n }(),\n It = function () {\n var i = [\"input\", \"change\"],\n n = function () {\n function n() {\n var i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : document.createElement(\"div\"),\n o = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {};\n t(this, n), this._element = i, this._options = g(n.options(), o), this._ratio = null, this._output = null, this._rotating = !1, this._input = null, this._preview = null, this._previewBlurred = null, this._blurredPreview = !1, this._cropper = null, this._straightCrop = null, this._previewWrapper = null, this._currentWindowSize = {}, this._btnGroup = null, this._maskFrame = null, this._dirty = !1, this._wrapperRotation = 0, this._wrapperScale = 1, this._init();\n }\n return p(n, [{\n key: \"_init\",\n value: function value() {\n var t = this;\n this._element.className = \"slim-image-editor\", this._container = k(\"div\", \"slim-container\"), this._wrapper = k(\"div\", \"slim-wrapper\"), this._stage = k(\"div\", \"slim-stage\"), this._container.appendChild(this._stage), this._cropper = new Tt(), i.forEach(function (e) {\n t._cropper.element.addEventListener(e, t);\n }), this._stage.appendChild(this._cropper.element), this._previewWrapper = k(\"div\", \"slim-image-editor-preview slim-crop-preview\"), this._previewBlurred = k(\"canvas\", \"slim-crop-blur\"), this._previewWrapper.appendChild(this._previewBlurred), this._wrapper.appendChild(this._previewWrapper), this._previewMask = k(\"div\", \"slim-crop-mask\"), this._preview = k(\"img\"), this._previewMask.appendChild(this._preview), this._cropper.element.appendChild(this._previewMask), this._btnGroup = k(\"div\", \"slim-editor-btn-group\"), n.Buttons.forEach(function (e) {\n var i = R(e),\n n = t._options[\"button\" + i + \"Label\"],\n o = t._options[\"button\" + i + \"Title\"],\n a = t._options[\"button\" + i + \"ClassName\"],\n r = k(\"button\", \"slim-editor-btn slim-btn-\" + e + (a ? \" \" + a : \"\"));\n r.innerHTML = n, r.title = o || n, r.type = \"button\", r.setAttribute(\"data-action\", e), r.addEventListener(\"click\", t), t._btnGroup.appendChild(r);\n }), this._utilsGroup = k(\"div\", \"slim-editor-utils-group\");\n var e = k(\"button\", \"slim-editor-utils-btn slim-btn-rotate\" + (this._options.buttonRotateClassName ? \" \" + this._options.buttonRotateClassName : \"\"));\n e.setAttribute(\"data-action\", \"rotate\"), e.addEventListener(\"click\", this), e.title = this._options.buttonRotateTitle, this._utilsGroup.appendChild(e), this._container.appendChild(this._wrapper), this._element.appendChild(this._container), this._element.appendChild(this._utilsGroup), this._element.appendChild(this._btnGroup);\n }\n }, {\n key: \"dirty\",\n value: function value() {\n this._dirty = !0;\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"click\":\n this._onClick(t);\n break;\n case \"change\":\n this._onGridChange(t);\n break;\n case \"input\":\n this._onGridInput(t);\n break;\n case \"keydown\":\n this._onKeyDown(t);\n break;\n case \"resize\":\n this._onResize(t);\n }\n }\n }, {\n key: \"_onKeyDown\",\n value: function value(t) {\n switch (t.keyCode) {\n case v.RETURN:\n this._confirm();\n break;\n case v.ESC:\n this._cancel();\n }\n }\n }, {\n key: \"_onClick\",\n value: function value(t) {\n t.target.classList.contains(\"slim-btn-cancel\") && this._cancel(), t.target.classList.contains(\"slim-btn-confirm\") && this._confirm(), t.target.classList.contains(\"slim-btn-rotate\") && this._rotate();\n }\n }, {\n key: \"_onResize\",\n value: function value() {\n this._currentWindowSize = {\n width: window.innerWidth,\n height: window.innerHeight\n }, this._redraw(), this._redrawCropper(this._cropper.area), this._updateWrapperScale(), this._redrawWrapper();\n }\n }, {\n key: \"_redrawWrapper\",\n value: function value() {\n var t = u.createMatrix();\n t.scale(this._wrapperScale, this._wrapperScale), t.rotateZ(this._wrapperRotation * (Math.PI / 180)), u.setElementTransform(this._previewWrapper, t);\n }\n }, {\n key: \"_onGridInput\",\n value: function value() {\n this._redrawCropMask();\n }\n }, {\n key: \"_onGridChange\",\n value: function value() {\n this._redrawCropMask();\n }\n }, {\n key: \"_updateWrapperRotation\",\n value: function value() {\n this._options.minSize.width > this._input.height || this._options.minSize.height > this._input.width ? this._wrapperRotation += 180 : this._wrapperRotation += 90;\n }\n }, {\n key: \"_updateWrapperScale\",\n value: function value() {\n var t = this._wrapperRotation % 180 !== 0;\n if (t) {\n var e = this._container.offsetWidth,\n i = this._container.offsetHeight,\n n = this._wrapper.offsetHeight,\n o = this._wrapper.offsetWidth,\n a = e / n;\n a * o > i && (a = i / o), this._wrapperScale = a;\n } else this._wrapperScale = 1;\n }\n }, {\n key: \"_cancel\",\n value: function value() {\n this._rotating || this._element.dispatchEvent(new CustomEvent(\"cancel\"));\n }\n }, {\n key: \"_confirm\",\n value: function value() {\n if (!this._rotating) {\n var t = this._wrapperRotation % 180 !== 0,\n e = this._cropper.area,\n i = dt(e, t ? this._input.height : this._input.width, t ? this._input.width : this._input.height);\n this._element.dispatchEvent(new CustomEvent(\"confirm\", {\n detail: {\n rotation: this._wrapperRotation % 360,\n crop: i\n }\n }));\n }\n }\n }, {\n key: \"_rotate\",\n value: function value() {\n var t = this;\n if (!this._rotating) {\n this._rotating = !0, this._updateWrapperRotation();\n var e = 1 === this.ratio || null === this._ratio ? this._cropper.area : null;\n e && C(e, 90), this._updateWrapperScale(), this._hideCropper(), u(this._previewWrapper, {\n rotation: [0, 0, this._wrapperRotation * (Math.PI / 180)],\n scale: [this._wrapperScale, this._wrapperScale],\n easing: \"spring\",\n springConstant: .8,\n springDeceleration: .65,\n complete: function complete() {\n t._redrawCropper(e), t._showCropper(), t._rotating = !1;\n }\n });\n }\n }\n }, {\n key: \"_showCropper\",\n value: function value() {\n u(this._stage, {\n easing: \"ease\",\n duration: 250,\n fromOpacity: 0,\n opacity: 1\n });\n }\n }, {\n key: \"_hideCropper\",\n value: function value() {\n u(this._stage, {\n duration: 0,\n fromOpacity: 0,\n opacity: 0\n });\n }\n }, {\n key: \"_redrawCropMask\",\n value: function value() {\n var t = this,\n e = this._wrapperRotation % 360,\n i = this._wrapperScale,\n n = {\n width: this._wrapper.offsetWidth,\n height: this._wrapper.offsetHeight\n },\n o = this._cropper.area,\n a = {\n x: 0,\n y: 0\n };\n 0 === e ? (a.x = -o.x, a.y = -o.y) : 90 === e ? (a.x = -(1 - o.y), a.y = -o.x) : 180 === e ? (a.x = -(1 - o.x), a.y = -(1 - o.y)) : 270 === e && (a.x = -o.y, a.y = -(1 - o.x)), a.x *= n.width, a.y *= n.height, cancelAnimationFrame(this._maskFrame), this._maskFrame = requestAnimationFrame(function () {\n var n = \"scale(\" + i + \") rotate(\" + -e + \"deg) translate(\" + a.x + \"px, \" + a.y + \"px);\";\n t._preview.style.cssText = \"\\n\\t\\t\\t\\t\\twidth: \" + t._previewSize.width + \"px;\\n\\t\\t\\t\\t\\theight: \" + t._previewSize.height + \"px;\\n\\t\\t\\t\\t\\t-webkit-transform: \" + n + \";\\n\\t\\t\\t\\t\\ttransform: \" + n + \";\\n\\t\\t\\t\\t\";\n });\n }\n }, {\n key: \"open\",\n value: function value(t, e, i, n, o) {\n var a = this;\n if (this._input && !this._dirty && this._ratio === e) return void o();\n this._currentWindowSize = {\n width: window.innerWidth,\n height: window.innerHeight\n }, this._dirty = !1, this._wrapperRotation = n || 0, this._blurredPreview = !1, this._ratio = e, this._previewSize = null, this._element.style.opacity = \"0\", this._input = t;\n var r = n % 180 !== 0,\n s = ft(i, r ? t.height : t.width, r ? t.width : t.height);\n this._preview.onload = function () {\n a._preview.onload = null, a._cropper.ratio = a.ratio, a._redraw(), a._redrawCropper(s), o(), a._element.style.opacity = \"\";\n }, this._preview.src = \"\", this._preview.src = ht(this._input, Math.min(this._container.offsetWidth / this._input.width, this._container.offsetHeight / this._input.height) * this._options.devicePixelRatio).toDataURL();\n }\n }, {\n key: \"_redrawCropper\",\n value: function value(t) {\n var e = this._wrapperRotation % 180 !== 0,\n i = e ? this._input.height / this._input.width : this._input.width / this._input.height,\n n = this._wrapper.offsetWidth,\n o = this._wrapper.offsetHeight,\n a = this._container.offsetWidth,\n r = this._container.offsetHeight;\n this._updateWrapperScale();\n var s = this._wrapperScale * (e ? o : n),\n h = this._wrapperScale * (e ? n : o),\n u = e ? .5 * (a - s) : this._wrapper.offsetLeft,\n l = e ? .5 * (r - h) : this._wrapper.offsetTop;\n this._stage.style.cssText = \"\\n\\t\\t\\t\\tleft:\" + u + \"px;\\n\\t\\t\\t\\ttop:\" + l + \"px;\\n\\t\\t\\t\\twidth:\" + s + \"px;\\n\\t\\t\\t\\theight:\" + h + \"px;\\n\\t\\t\\t\", this._cropper.limit(s, s / i), this._cropper.offset(u + this._element.offsetLeft, l + this._element.offsetTop), this._cropper.minWidth = this._wrapperScale * this._options.minSize.width * this.scalar, this._cropper.minHeight = this._wrapperScale * this._options.minSize.height * this.scalar;\n var p = null;\n p = t ? {\n x: t.x * s,\n y: t.y * h,\n width: t.width * s,\n height: t.height * h\n } : tt(s, h, this._ratio || h / s), this._cropper.resize(p.x, p.y, p.width, p.height);\n }\n }, {\n key: \"_redraw\",\n value: function value() {\n var t = this._input.height / this._input.width,\n e = this._container.clientWidth,\n i = this._container.clientHeight,\n n = e,\n o = n * t;\n o > i && (o = i, n = o / t), n = Math.round(n), o = Math.round(o);\n var a = (e - n) / 2,\n r = (i - o) / 2;\n this._wrapper.style.cssText = \"\\n\\t\\t\\t\\tleft:\" + a + \"px;\\n\\t\\t\\t\\ttop:\" + r + \"px;\\n\\t\\t\\t\\twidth:\" + n + \"px;\\n\\t\\t\\t\\theight:\" + o + \"px;\\n\\t\\t\\t\", this._previewBlurred.style.cssText = \"\\n\\t\\t\\t\\twidth:\" + n + \"px;\\n\\t\\t\\t\\theight:\" + o + \"px;\\n\\t\\t\\t\", this._preview.style.cssText = \"\\n\\t\\t\\t\\twidth:\" + n + \"px;\\n\\t\\t\\t\\theight:\" + o + \"px;\\n\\t\\t\\t\", this._previewSize = {\n width: n,\n height: o\n }, this._blurredPreview || (this._previewBlurred.width = 300, this._previewBlurred.height = this._previewBlurred.width * t, lt(this._input, this._previewBlurred), pt(this._previewBlurred, 3), this._blurredPreview = !0);\n }\n }, {\n key: \"show\",\n value: function value() {\n var t = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n this._currentWindowSize.width === window.innerWidth && this._currentWindowSize.height === window.innerHeight || (this._redraw(), this._redrawCropper(this._cropper.area)), document.addEventListener(\"keydown\", this), window.addEventListener(\"resize\", this);\n var i = this._wrapperRotation * (Math.PI / 180);\n u(this._previewWrapper, {\n fromRotation: [0, 0, i],\n rotation: [0, 0, i],\n fromPosition: [0, 0, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n fromScale: [this._wrapperScale - .02, this._wrapperScale - .02],\n scale: [this._wrapperScale, this._wrapperScale],\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .85,\n delay: 450,\n complete: function complete() {}\n }), this._cropper.dirty ? u(this._stage, {\n fromPosition: [0, 0, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n duration: 250,\n delay: 850,\n complete: function complete() {\n z(this), t();\n }\n }) : u(this._stage, {\n fromPosition: [0, 0, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n duration: 250,\n delay: 1e3,\n complete: function complete() {\n z(this);\n }\n }), u(this._btnGroup.childNodes, {\n fromScale: [.9, .9],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n delay: function delay(t) {\n return 1e3 + 100 * t;\n },\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .85,\n complete: function complete() {\n z(this);\n }\n }), u(this._utilsGroup.childNodes, {\n fromScale: [.9, .9],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .85,\n delay: 1250,\n complete: function complete() {\n z(this);\n }\n });\n }\n }, {\n key: \"hide\",\n value: function value() {\n var t = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n document.removeEventListener(\"keydown\", this), window.removeEventListener(\"resize\", this), u(this._utilsGroup.childNodes, {\n fromOpacity: 1,\n opacity: 0,\n duration: 250\n }), u(this._btnGroup.childNodes, {\n fromOpacity: 1,\n opacity: 0,\n delay: 200,\n duration: 350\n }), u([this._stage, this._previewWrapper], {\n fromPosition: [0, 0, 0],\n position: [0, -250, 0],\n fromOpacity: 1,\n opacity: 0,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .75,\n delay: 250,\n allDone: function allDone() {\n t();\n }\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n var t = this;\n St(this._btnGroup.children).forEach(function (e) {\n e.removeEventListener(\"click\", t);\n }), i.forEach(function (e) {\n t._cropper.element.removeEventListener(e, t);\n }), this._cropper.destroy(), this._element.parentNode && Et(this._element);\n }\n }, {\n key: \"showRotateButton\",\n set: function set(t) {\n t ? this._element.classList.remove(\"slim-rotation-disabled\") : this._element.classList.add(\"slim-rotation-disabled\");\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"ratio\",\n get: function get() {\n return \"input\" === this._ratio ? this._input.height / this._input.width : this._ratio;\n }\n }, {\n key: \"offset\",\n get: function get() {\n return this._element.getBoundingClientRect();\n }\n }, {\n key: \"original\",\n get: function get() {\n return this._input;\n }\n }, {\n key: \"scalar\",\n get: function get() {\n return this._previewSize.width / this._input.width;\n }\n }], [{\n key: \"options\",\n value: function value() {\n return {\n buttonCancelClassName: null,\n buttonConfirmClassName: null,\n buttonCancelLabel: \"Cancel\",\n buttonConfirmLabel: \"Confirm\",\n buttonCancelTitle: null,\n buttonConfirmTitle: null,\n buttonRotateTitle: \"Rotate\",\n buttonRotateClassName: null,\n devicePixelRatio: null,\n minSize: {\n width: 0,\n height: 0\n }\n };\n }\n }]), n;\n }();\n return n.Buttons = [\"cancel\", \"confirm\"], n;\n }(Tt),\n Lt = function () {\n var i = [\"dragenter\", \"dragover\", \"dragleave\", \"drop\"];\n return function () {\n function n() {\n var i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : document.createElement(\"div\");\n t(this, n), this._element = i, this._accept = [], this._allowURLs = !1, this._dragPath = null, this._init();\n }\n return p(n, [{\n key: \"isValidDataTransfer\",\n value: function value(t) {\n return t.files && t.files.length ? this.areValidDataTransferFiles(t.files) : t.items && t.items.length ? this.areValidDataTransferItems(t.items) : null;\n }\n }, {\n key: \"areValidDataTransferFiles\",\n value: function value(t) {\n return !this._accept.length || !t || this._accept.indexOf(t[0].type) !== -1;\n }\n }, {\n key: \"areValidDataTransferItems\",\n value: function value(t) {\n return !this._accept.length || !t || (this._allowURLs && \"string\" === t[0].kind ? null : t[0].type && 0 === t[0].type.indexOf(\"application\") ? null : this._accept.indexOf(t[0].type) !== -1);\n }\n }, {\n key: \"reset\",\n value: function value() {\n this._element.files = null;\n }\n }, {\n key: \"_init\",\n value: function value() {\n var t = this;\n this._element.className = \"slim-file-hopper\", i.forEach(function (e) {\n t._element.addEventListener(e, t);\n });\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"dragenter\":\n case \"dragover\":\n this._onDragOver(t);\n break;\n case \"dragleave\":\n this._onDragLeave(t);\n break;\n case \"drop\":\n this._onDrop(t);\n }\n }\n }, {\n key: \"_onDrop\",\n value: function value(t) {\n t.preventDefault();\n var e = null;\n if (this._allowURLs) {\n var i = void 0,\n n = void 0;\n try {\n i = t.dataTransfer.getData(\"url\"), n = t.dataTransfer.getData(\"text/html\");\n } catch (t) {}\n if (n && n.length) {\n var o = n.match(/src\\s*=\\s*\"(.+?)\"/);\n o && (e = o[1]);\n } else i && i.length && (e = i);\n }\n if (e) this._element.files = [{\n remote: e\n }];else {\n var a = this.isValidDataTransfer(t.dataTransfer);\n if (!a) return this._element.dispatchEvent(new CustomEvent(\"file-invalid-drop\")), void (this._dragPath = null);\n this._element.files = t.dataTransfer.files;\n }\n this._element.dispatchEvent(new CustomEvent(\"file-drop\", {\n detail: m(t)\n })), this._element.dispatchEvent(new CustomEvent(\"change\")), this._dragPath = null;\n }\n }, {\n key: \"_onDragOver\",\n value: function value(t) {\n t.preventDefault(), t.dataTransfer.dropEffect = \"copy\";\n var e = this.isValidDataTransfer(t.dataTransfer);\n return null === e || e ? (this._dragPath || (this._dragPath = []), this._dragPath.push(m(t)), void this._element.dispatchEvent(new CustomEvent(\"file-over\", {\n detail: {\n x: T(this._dragPath).x,\n y: T(this._dragPath).y\n }\n }))) : (t.dataTransfer.dropEffect = \"none\", void this._element.dispatchEvent(new CustomEvent(\"file-invalid\")));\n }\n }, {\n key: \"_onDragLeave\",\n value: function value(t) {\n this._element.dispatchEvent(new CustomEvent(\"file-out\", {\n detail: m(t)\n })), this._dragPath = null;\n }\n }, {\n key: \"destroy\",\n value: function value() {\n var t = this;\n i.forEach(function (e) {\n t._element.removeEventListener(e, t);\n }), Et(this._element), this._element = null, this._dragPath = null, this._accept = null;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"dragPath\",\n get: function get() {\n return this._dragPath;\n }\n }, {\n key: \"enabled\",\n get: function get() {\n return \"\" === this._element.style.display;\n },\n set: function set(t) {\n this._element.style.display = t ? \"\" : \"none\";\n }\n }, {\n key: \"allowURLs\",\n set: function set(t) {\n this._allowURLs = t;\n }\n }, {\n key: \"accept\",\n set: function set(t) {\n this._accept = t;\n },\n get: function get() {\n return this._accept;\n }\n }]), n;\n }();\n }(),\n Ot = function () {\n return function () {\n function i() {\n t(this, i), this._element = null, this._inner = null, this._init();\n }\n return p(i, [{\n key: \"_init\",\n value: function value() {\n this._element = k(\"div\", \"slim-popover\"), this._element.setAttribute(\"data-state\", \"off\"), document.body.appendChild(this._element), this._element.addEventListener(\"touchmove\", function (t) {\n t.preventDefault();\n }, !0);\n }\n }, {\n key: \"show\",\n value: function value() {\n var t = this,\n i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n this._element.setAttribute(\"data-state\", \"on\"), u(this._element, {\n fromOpacity: 0,\n opacity: 1,\n duration: 350,\n complete: function complete() {\n z(t._element), i();\n }\n });\n }\n }, {\n key: \"hide\",\n value: function value() {\n var t = this,\n i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n u(this._element, {\n fromOpacity: 1,\n opacity: 0,\n duration: 500,\n complete: function complete() {\n z(t._element), t._element.setAttribute(\"data-state\", \"off\"), i();\n }\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this._element.parentNode && (this._element.parentNode.removeChild(this._element), this._element = null, this._inner = null);\n }\n }, {\n key: \"inner\",\n set: function set(t) {\n this._inner = t, this._element.firstChild && this._element.removeChild(this._element.firstChild), this._element.appendChild(this._inner);\n }\n }, {\n key: \"className\",\n set: function set(t) {\n this._element.className = \"slim-popover\" + (null === t ? \"\" : \" \" + t);\n }\n }]), i;\n }();\n }(),\n zt = function zt(t, e) {\n return t.split(e).map(function (t) {\n return parseInt(t, 10);\n });\n },\n Dt = function Dt(t) {\n return \"DIV\" === t.nodeName || \"SPAN\" === t.nodeName;\n },\n At = {\n AUTO: \"auto\",\n INITIAL: \"initial\",\n MANUAL: \"manual\"\n },\n Ut = [\"x\", \"y\", \"width\", \"height\"],\n Ht = [\"file-invalid-drop\", \"file-invalid\", \"file-drop\", \"file-over\", \"file-out\", \"click\"],\n Nt = [\"cancel\", \"confirm\"],\n Bt = [\"remove\", \"edit\", \"download\", \"upload\"],\n Ft = null,\n Wt = 0,\n qt = '\\n
\\n\\t\\n\\t\\t\\n\\t\\t\\n\\t\\n
\\n',\n jt = '\\n
\\n',\n Vt = function Vt(t) {\n var e = t.split(\",\");\n return {\n width: parseInt(e[0], 10),\n height: parseInt(e[1], 10)\n };\n },\n Gt = function () {\n function i(n) {\n var o = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {};\n t(this, i), Ft || (Ft = new Ot()), this._uid = Wt++, this._options = g(i.options(), o), this._options.forceSize && (\"string\" == typeof this._options.forceSize && (this._options.forceSize = Vt(this._options.forceSize)), this._options.ratio = this._options.forceSize.width + \":\" + this._options.forceSize.height, this._options.size = mt(this._options.forceSize)), \"string\" == typeof this._options.size && (this._options.size = Vt(this._options.size)), \"string\" == typeof this._options.minSize && (this._options.minSize = Vt(this._options.minSize)), \"string\" == typeof this._options.post && (this._options.post = this._options.post.split(\",\").map(function (t) {\n return t.trim();\n })), this._originalElement = n, this._originalElementInner = n.innerHTML, this._originalElementAttributes = _(n), Dt(n) ? this._element = n : (this._element = Ct(n), this._element.className = n.className, n.className = \"\", this._element.setAttribute(\"data-ratio\", this._options.ratio)), this._element.classList.add(\"slim\"), this._element.setAttribute(\"data-state\", \"init\"), this._state = [], this._timers = [], this._input = null, this._inputReference = null, this._output = null, this._ratio = null, this._isRequired = !1, this._imageHopper = null, this._imageEditor = null, this._progressEnabled = !0, this._data = {}, this._resetData(), this._drip = null, this._hasInitialImage = !1, this._initialCrop = this._options.crop, this._initialRotation = this._options.rotation && this._options.rotation % 90 === 0 ? this._options.rotation : null, this._isBeingDestroyed = !1, i.supported ? this._init() : this._fallback();\n }\n return p(i, [{\n key: \"setRotation\",\n value: function value(t, e) {\n if (\"number\" == typeof t || t % 90 === 0) {\n this._data.actions.rotation = t;\n var i = this._data.actions.rotation % 180 !== 0;\n if (this._data.input.image) {\n var n = i ? this._data.input.image.height : this._data.input.image.width,\n o = i ? this._data.input.image.width : this._data.input.image.height;\n this._data.actions.crop = tt(n, o, this._ratio), this._data.actions.crop.type = At.AUTO;\n }\n this._data.input.image && e && this._manualTransform(e);\n }\n }\n }, {\n key: \"setSize\",\n value: function value(t, e) {\n \"string\" == typeof t && (t = Vt(t)), t && t.width && t.height && (this._options.size = mt(t), this._data.actions.size = mt(t), this._data.input.image && e && this._manualTransform(e));\n }\n }, {\n key: \"setForceSize\",\n value: function value(t, e) {\n \"string\" == typeof t && (t = Vt(t)), t && t.width && t.height && (this._options.size = mt(t), this._options.forceSize = mt(t), this._data.actions.size = mt(t), this.setRatio(this._options.forceSize.width + \":\" + this._options.forceSize.height, e));\n }\n }, {\n key: \"setRatio\",\n value: function value(t, e) {\n var i = this;\n if (t && \"string\" == typeof t && (this._options.ratio = t, this._isFixedRatio())) {\n var n = zt(this._options.ratio, \":\");\n this._ratio = n[1] / n[0], this._data.input.image && e ? this._cropAuto(function (t) {\n i._scaleDropArea(i._ratio), e && e(t);\n }) : (this._data.input.image && (this._data.actions.crop = tt(this._data.input.image.width, this._data.input.image.height, this._ratio), this._data.actions.crop.type = At.AUTO), this._scaleDropArea(this._ratio), e && e(null));\n }\n }\n }, {\n key: \"isAttachedTo\",\n value: function value(t) {\n return this._element === t || this._originalElement === t;\n }\n }, {\n key: \"isDetached\",\n value: function value() {\n return null === this._element.parentNode;\n }\n }, {\n key: \"load\",\n value: function value(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {},\n n = arguments[2];\n \"function\" == typeof i ? n = i : (this._options.crop = i.crop, this._options.rotation = i.rotation, this._initialRotation = i.rotation && i.rotation % 90 === 0 ? i.rotation : null, this._initialCrop = this._options.crop), this._load(t, n, {\n blockPush: i.blockPush\n });\n }\n }, {\n key: \"upload\",\n value: function value(t) {\n this._doUpload(t);\n }\n }, {\n key: \"download\",\n value: function value() {\n this._doDownload();\n }\n }, {\n key: \"remove\",\n value: function value() {\n return this._doRemove();\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this._doDestroy();\n }\n }, {\n key: \"edit\",\n value: function value() {\n this._doEdit();\n }\n }, {\n key: \"crop\",\n value: function value(t, e) {\n this._crop(t.x, t.y, t.width, t.height, e);\n }\n }, {\n key: \"containsImage\",\n value: function value() {\n return null !== this._data.input.name;\n }\n }, {\n key: \"_canInstantEdit\",\n value: function value() {\n return this._options.instantEdit && !this._isInitialising;\n }\n }, {\n key: \"_getFileInput\",\n value: function value() {\n return this._element.querySelector(\"input[type=file]\");\n }\n }, {\n key: \"_getInitialImage\",\n value: function value() {\n return this._element.querySelector(\"img\");\n }\n }, {\n key: \"_getInputElement\",\n value: function value() {\n return this._getFileInput() || this._getInitialImage();\n }\n }, {\n key: \"_getRatioSpacerElement\",\n value: function value() {\n return this._element.children[0];\n }\n }, {\n key: \"_isImageOnly\",\n value: function value() {\n return \"INPUT\" !== this._input.nodeName;\n }\n }, {\n key: \"_isFixedRatio\",\n value: function value() {\n return this._options.ratio.indexOf(\":\") !== -1;\n }\n }, {\n key: \"_isAutoCrop\",\n value: function value() {\n return this._data.actions.crop.type === At.AUTO;\n }\n }, {\n key: \"_toggleButton\",\n value: function value(t, e) {\n xt('.slim-btn[data-action=\"' + t + '\"]', e, this._element);\n }\n }, {\n key: \"_clearState\",\n value: function value() {\n this._state = [], this._updateState();\n }\n }, {\n key: \"_removeState\",\n value: function value(t) {\n this._state = this._state.filter(function (e) {\n return e !== t;\n }), this._updateState();\n }\n }, {\n key: \"_addState\",\n value: function value(t) {\n L(t, this._state) || (this._state.push(t), this._updateState());\n }\n }, {\n key: \"_updateState\",\n value: function value() {\n this._element && this._element.setAttribute(\"data-state\", this._state.join(\",\"));\n }\n }, {\n key: \"_resetData\",\n value: function value() {\n this._data = {\n server: null,\n meta: mt(this._options.meta),\n input: {\n field: this._inputReference,\n name: null,\n type: null,\n width: 0,\n height: 0,\n file: null\n },\n output: {\n image: null,\n width: 0,\n height: 0\n },\n actions: {\n rotation: null,\n crop: null,\n size: null\n }\n }, this._output && (this._output.value = \"\"), _t(this._getFileInput());\n }\n }, {\n key: \"_init\",\n value: function value() {\n var t = this;\n if (this._isInitialising = !0, this._addState(\"empty\"), L(\"input\", this._options.post) && (this._inputReference = \"slim_input_\" + this._uid), this._input = this._getInputElement(), this._input || (this._input = k(\"input\"), this._input.type = \"file\", this._element.appendChild(this._input)), this._isRequired = this._input.required === !0, this._output = this._element.querySelector(\"input[type=hidden]\"), this._output) {\n var e = null;\n try {\n e = JSON.parse(this._output.value);\n } catch (i) {}\n if (e) {\n var n = new Image();\n n.src = e.output.image, n.setAttribute(\"data-filename\", e.output.name), this._element.insertBefore(n, this._element.firstChild);\n }\n } else this._output = k(\"input\"), this._output.type = \"hidden\", this._output.name = this._input.name || this._options.defaultInputName, this._element.appendChild(this._output);\n this._input.removeAttribute(\"name\");\n var o = k(\"div\", \"slim-area\"),\n a = this._getInitialImage(),\n r = (a || {}).src,\n s = a ? a.getAttribute(\"data-filename\") : null;\n r ? this._hasInitialImage = !0 : (this._initialCrop = null, this._initialRotation = null);\n var h = '\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
';\n if (this._isImageOnly()) o.innerHTML = \"\\n\\t\\t\\t\\t\" + qt + \"\\n\\t\\t\\t\\t\" + jt + \"\\n\\t\\t\\t\\t\" + h + '\\n\\t\\t\\t\\t
' + (this._options.labelLoading || \"\") + \"
\\n\\t\\t\\t\";else {\n L(\"input\", this._options.post) && (this._data.input.field = this._inputReference, this._options.service || (this._input.name = this._inputReference));\n var u = void 0;\n this._input.hasAttribute(\"accept\") && \"image/*\" !== this._input.getAttribute(\"accept\") ? u = this._input.accept.split(\",\").map(function (t) {\n return t.trim();\n }).filter(function (t) {\n return t.length > 0;\n }) : (u = A(), this._input.setAttribute(\"accept\", u.join(\",\"))), this._imageHopper = new Lt(), this._imageHopper.accept = u, this._imageHopper.allowURLs = \"string\" == typeof this._options.fetcher, this._element.appendChild(this._imageHopper.element), Ht.forEach(function (e) {\n t._imageHopper.element.addEventListener(e, t);\n }), o.innerHTML = \"\\n\\t\\t\\t\\t\" + qt + \"\\n\\t\\t\\t\\t\" + jt + '\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
' + (this._options.label || \"\") + '
' + (this._options.labelLoading || \"\") + \"
\\n\\t\\t\\t\\t\" + h + \"\\n\\t\\t\\t\", this._input.addEventListener(\"change\", this);\n }\n if (this._element.appendChild(o), this._btnGroup = k(\"div\", \"slim-btn-group\"), this._btnGroup.style.display = \"none\", this._element.appendChild(this._btnGroup), Bt.filter(function (e) {\n return t._isButtonAllowed(e);\n }).forEach(function (e) {\n var i = R(e),\n n = t._options[\"button\" + i + \"Label\"],\n o = t._options[\"button\" + i + \"Title\"] || n,\n a = t._options[\"button\" + i + \"ClassName\"],\n r = k(\"button\", \"slim-btn slim-btn-\" + e + (a ? \" \" + a : \"\"));\n r.innerHTML = n, r.title = o, r.type = \"button\", r.addEventListener(\"click\", t), r.setAttribute(\"data-action\", e), t._btnGroup.appendChild(r);\n }), this._isFixedRatio()) {\n var l = zt(this._options.ratio, \":\");\n this._ratio = l[1] / l[0], this._scaleDropArea(this._ratio);\n }\n this._updateProgress(.5), r ? this._load(r, function () {\n t._onInit();\n }, {\n name: s\n }) : this._onInit();\n }\n }, {\n key: \"_onInit\",\n value: function value() {\n var t = this;\n this._isInitialising = !1;\n var e = function e() {\n var e = setTimeout(function () {\n t._options.didInit.apply(t, [t.data, t]);\n }, 0);\n t._timers.push(e);\n };\n this._options.saveInitialImage && this.containsImage() ? this._options.service || this._save(function () {\n e();\n }, !1) : (this._options.service && this.containsImage() && this._toggleButton(\"upload\", !1), e());\n }\n }, {\n key: \"_updateProgress\",\n value: function value(t) {\n if (t = Math.min(.99999, t), this._element && this._progressEnabled) {\n var e = this._element.querySelector(\".slim-loader\");\n if (e) {\n var i = e.offsetWidth,\n n = e.querySelectorAll(\"path\"),\n o = parseInt(n[0].getAttribute(\"stroke-width\"), 10);\n n[0].setAttribute(\"d\", Rt(.5 * i, .5 * i, .5 * i - o, .9999)), n[1].setAttribute(\"d\", Rt(.5 * i, .5 * i, .5 * i - o, t));\n }\n }\n }\n }, {\n key: \"_startProgress\",\n value: function value(t) {\n var e = this;\n if (this._element) {\n this._progressEnabled = !1;\n var i = this._element.querySelector(\".slim-loader\");\n if (i) {\n var n = i.children[0];\n this._stopProgressLoop(function () {\n i.removeAttribute(\"style\"), n.removeAttribute(\"style\"), e._progressEnabled = !0, e._updateProgress(0), e._progressEnabled = !1, u(n, {\n fromOpacity: 0,\n opacity: 1,\n duration: 250,\n complete: function complete() {\n e._progressEnabled = !0, t && t();\n }\n });\n });\n }\n }\n }\n }, {\n key: \"_stopProgress\",\n value: function value() {\n var t = this;\n if (this._element) {\n var e = this._element.querySelector(\".slim-loader\");\n if (e) {\n var i = e.children[0];\n this._updateProgress(1), u(i, {\n fromOpacity: 1,\n opacity: 0,\n duration: 250,\n complete: function complete() {\n e.removeAttribute(\"style\"), i.removeAttribute(\"style\"), t._updateProgress(.5), t._progressEnabled = !1;\n }\n });\n }\n }\n }\n }, {\n key: \"_startProgressLoop\",\n value: function value() {\n if (this._element) {\n var t = this._element.querySelector(\".slim-loader\");\n if (t) {\n var e = t.children[0];\n t.removeAttribute(\"style\"), e.removeAttribute(\"style\"), this._updateProgress(.5);\n var i = 1e3;\n u(t, \"stop\"), u(t, {\n rotation: [0, 0, -(2 * Math.PI) * i],\n easing: \"linear\",\n duration: 1e3 * i\n }), u(e, {\n fromOpacity: 0,\n opacity: 1,\n duration: 250\n });\n }\n }\n }\n }, {\n key: \"_stopProgressLoop\",\n value: function value(t) {\n if (this._element) {\n var e = this._element.querySelector(\".slim-loader\");\n if (e) {\n var i = e.children[0];\n u(i, {\n fromOpacity: parseFloat(i.style.opacity),\n opacity: 0,\n duration: 250,\n complete: function complete() {\n u(e, \"stop\"), e.removeAttribute(\"style\"), i.removeAttribute(\"style\"), t && t();\n }\n });\n }\n }\n }\n }, {\n key: \"_isButtonAllowed\",\n value: function value(t) {\n return \"edit\" === t ? this._options.edit : \"download\" === t ? this._options.download : \"upload\" === t ? !!this._options.service && !this._options.push : \"remove\" !== t || !this._isImageOnly();\n }\n }, {\n key: \"_fallback\",\n value: function value() {\n var t = k(\"div\", \"slim-area\");\n t.innerHTML = '\\n\\t\\t\\t
' + (this._options.label || \"\") + \"
\\n\\t\\t\", this._element.appendChild(t), this._throwError(this._options.statusNoSupport);\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"click\":\n this._onClick(t);\n break;\n case \"change\":\n this._onChange(t);\n break;\n case \"cancel\":\n this._onCancel(t);\n break;\n case \"confirm\":\n this._onConfirm(t);\n break;\n case \"file-over\":\n this._onFileOver(t);\n break;\n case \"file-out\":\n this._onFileOut(t);\n break;\n case \"file-drop\":\n this._onDropFile(t);\n break;\n case \"file-invalid\":\n this._onInvalidFile(t);\n break;\n case \"file-invalid-drop\":\n this._onInvalidFileDrop(t);\n }\n }\n }, {\n key: \"_getIntro\",\n value: function value() {\n return this._element.querySelector(\".slim-result .in\");\n }\n }, {\n key: \"_getOutro\",\n value: function value() {\n return this._element.querySelector(\".slim-result .out\");\n }\n }, {\n key: \"_getInOut\",\n value: function value() {\n return this._element.querySelectorAll(\".slim-result img\");\n }\n }, {\n key: \"_getDrip\",\n value: function value() {\n return this._drip || (this._drip = this._element.querySelector(\".slim-drip > span\")), this._drip;\n }\n }, {\n key: \"_throwError\",\n value: function value(t) {\n this._addState(\"error\"), this._element.querySelector(\".slim-label\").style.display = \"none\";\n var e = this._element.querySelector(\".slim-error\");\n e || (e = k(\"div\", \"slim-error\"), this._element.querySelector(\".slim-status\").appendChild(e)), e.innerHTML = t, this._options.didThrowError.apply(this, [t]);\n }\n }, {\n key: \"_removeError\",\n value: function value() {\n this._removeState(\"error\"), this._element.querySelector(\".slim-label\").style.display = \"\";\n var t = this._element.querySelector(\".slim-error\");\n t && t.parentNode.removeChild(t);\n }\n }, {\n key: \"_openFileDialog\",\n value: function value() {\n this._removeError(), this._input.click();\n }\n }, {\n key: \"_onClick\",\n value: function value(t) {\n var e = this,\n i = t.target.classList,\n n = t.target;\n if (i.contains(\"slim-file-hopper\")) return t.preventDefault(), void this._openFileDialog();\n switch (n.getAttribute(\"data-action\")) {\n case \"remove\":\n this._options.willRemove.apply(this, [this.data, function () {\n e._doRemove();\n }]);\n break;\n case \"edit\":\n this._doEdit();\n break;\n case \"download\":\n this._doDownload();\n break;\n case \"upload\":\n this._doUpload();\n }\n }\n }, {\n key: \"_onInvalidFileDrop\",\n value: function value() {\n this._onInvalidFile(), this._removeState(\"file-over\");\n var t = this._getDrip();\n u(t.firstChild, {\n fromScale: [.5, .5],\n scale: [0, 0],\n fromOpacity: .5,\n opacity: 0,\n duration: 150,\n complete: function complete() {\n z(t.firstChild);\n }\n });\n }\n }, {\n key: \"_onInvalidFile\",\n value: function value() {\n var t = this._imageHopper.accept.map(H),\n e = this._options.statusFileType.replace(\"$0\", t.join(\", \"));\n this._throwError(e);\n }\n }, {\n key: \"_onImageTooSmall\",\n value: function value() {\n var t = this._options.statusImageTooSmall.replace(\"$0\", this._options.minSize.width + \" × \" + this._options.minSize.height);\n this._throwError(t);\n }\n }, {\n key: \"_onOverWeightFile\",\n value: function value() {\n var t = this._options.statusFileSize.replace(\"$0\", this._options.maxFileSize);\n this._throwError(t);\n }\n }, {\n key: \"_onLocalURLProblem\",\n value: function value(t) {\n this._throwError(this._options.statusLocalUrlProblem || t);\n }\n }, {\n key: \"_onRemoteURLProblem\",\n value: function value(t) {\n this._throwError(t);\n }\n }, {\n key: \"_onFileOver\",\n value: function value(t) {\n this._addState(\"file-over\"), this._removeError();\n var e = this._getDrip(),\n i = u.createMatrix();\n i.translate(t.detail.x, t.detail.y, 0), u.setElementTransform(e, i), 1 == this._imageHopper.dragPath.length && (e.style.opacity = 1, u(e.firstChild, {\n fromOpacity: 0,\n opacity: .5,\n fromScale: [0, 0],\n scale: [.5, .5],\n duration: 150\n }));\n }\n }, {\n key: \"_onFileOut\",\n value: function value(t) {\n this._removeState(\"file-over\"), this._removeState(\"file-invalid\"), this._removeError();\n var e = this._getDrip(),\n i = u.createMatrix();\n i.translate(t.detail.x, t.detail.y, 0), u.setElementTransform(e, i), u(e.firstChild, {\n fromScale: [.5, .5],\n scale: [0, 0],\n fromOpacity: .5,\n opacity: 0,\n duration: 150,\n complete: function complete() {\n z(e.firstChild);\n }\n });\n }\n }, {\n key: \"_onDropFile\",\n value: function value(t) {\n var e = this;\n this._removeState(\"file-over\");\n var i = this._getDrip(),\n n = u.createMatrix();\n n.translate(t.detail.x, t.detail.y, 0), u.setElementTransform(i, n);\n var o = this._imageHopper.dragPath.length,\n a = this._imageHopper.dragPath[o - Math.min(10, o)],\n r = t.detail.x - a.x,\n s = t.detail.y - a.y;\n u(i, {\n fromPosition: [t.detail.x, t.detail.y, 0],\n position: [t.detail.x + r, t.detail.y + s, 0],\n duration: 200\n }), u(i.firstChild, {\n fromScale: [.5, .5],\n scale: [2, 2],\n fromOpacity: 1,\n opacity: 0,\n duration: 200,\n complete: function complete() {\n z(i.firstChild), e._load(t.target.files[0]);\n }\n });\n }\n }, {\n key: \"_onChange\",\n value: function value(t) {\n t.target.files.length && this._load(t.target.files[0]);\n }\n }, {\n key: \"_load\",\n value: function value(t, i) {\n var n = this,\n o = arguments.length > 2 && arguments[2] !== e ? arguments[2] : {};\n if (!this._isBeingDestroyed) {\n if (this.containsImage()) return clearTimeout(this._replaceTimeout), void this._doRemove(function () {\n n._replaceTimeout = setTimeout(function () {\n n._load(t, i, o);\n }, 100);\n });\n this._removeState(\"empty\"), this._addState(\"busy\"), this._startProgressLoop(), this._imageHopper && (this._imageHopper.enabled = !1), clearTimeout(this._loadTimeout);\n var a = function a() {\n clearTimeout(n._loadTimeout), n._loadTimeout = setTimeout(function () {\n n._isBeingDestroyed || (n._addState(\"loading\"), u(n._element.querySelector(\".slim-label-loading\"), {\n fromOpacity: 0,\n opacity: 1,\n duration: 250\n }));\n }, 500);\n },\n r = function r() {\n n._imageHopper && (n._imageHopper.enabled = !0), n._removeState(\"loading\"), n._removeState(\"busy\"), n._addState(\"empty\"), n._stopProgressLoop();\n };\n if (\"string\" == typeof t) return void (X(t) ? this._load(Z(t), i, o) : (a(), J(t, this._options.willLoad, function (t) {\n n._load(t, i, o);\n }, function (t) {\n setTimeout(function () {\n r(), n._onLocalURLProblem(\"

\" + t + \"

\"), i && i.apply(n, [\"local-url-problem\"]);\n }, 500);\n })));\n if (\"undefined\" != typeof t.remote) return X(t.remote) ? void this._load(Z(t.remote), i, o) : void (this._options.fetcher && Y(this._options.fetcher, this._options.willFetch, this._options.willLoad, t.remote, function (t) {\n r(), n._onRemoteURLProblem(\"

\" + t + \"

\"), i && i.apply(n, [\"remote-url-problem\"]);\n }, function (t) {\n n._load(t, i, o);\n }));\n var s = t;\n if (this._imageHopper && this._imageHopper.accept.indexOf(s.type) === -1) return r(), this._onInvalidFile(), void (i && i.apply(this, [\"file-invalid\"]));\n if (s.size && this._options.maxFileSize && D(s.size) > this._options.maxFileSize) return r(), this._onOverWeightFile(), void (i && i.apply(this, [\"file-too-big\"]));\n this._imageEditor && this._imageEditor.dirty(), this._data.input.name = o && o.name ? o.name : q(s), this._data.input.type = j(s), this._data.input.size = s.size, this._data.input.file = s, Q(s, this._options.internalCanvasSize, function (t, e) {\n var a = function a() {\n n._imageHopper && (n._imageHopper.enabled = !0), n._removeState(\"loading\"), n._removeState(\"busy\"), n._addState(\"empty\"), n._stopProgressLoop(), n._resetData();\n };\n if (!t) return a(), void (i && i.apply(n, [\"file-not-found\"]));\n if (!ct(t, n._options.minSize)) return a(), n._onImageTooSmall(), void (i && i.apply(n, [\"image-too-small\"]));\n var r = n._options.didLoad.apply(n, [s, t, e, n]);\n if (r !== !0) return a(), r !== !1 && n._throwError(r), void (i && i.apply(n, [r]));\n n._removeState(\"loading\");\n var h = function h(t) {\n n._imageHopper && n._options.dropReplace && (n._imageHopper.enabled = !0);\n var e = n._getIntro(),\n i = {\n fromScale: [1.25, 1.25],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n complete: function complete() {\n z(e), e.style.opacity = 1, t();\n }\n };\n n.isDetached() ? i.duration = 1 : (i.easing = \"spring\", i.springConstant = .3, i.springDeceleration = .7), n._canInstantEdit() && (i.delay = 500, i.duration = 1, n._doEdit()), u(e, i);\n };\n n._loadCanvas(t, function (t) {\n n._addState(\"preview\"), h(function () {\n n._canInstantEdit() || t || n._showButtons(), t || (n._stopProgressLoop(), n._removeState(\"busy\")), i && i.apply(n, [null, n.data]);\n });\n }, function () {\n n._canInstantEdit() || n._showButtons(), n._removeState(\"busy\");\n }, {\n blockPush: o.blockPush\n });\n });\n }\n }\n }, {\n key: \"_loadCanvas\",\n value: function value(t, e, i, n) {\n var o = this;\n if (n || (n = {}), !this._isBeingDestroyed) {\n this._data.input.image = t, this._data.input.width = t.width, this._data.input.height = t.height, this._initialRotation && (this._data.actions.rotation = this._initialRotation, this._initialRotation = null);\n var a = this._data.actions.rotation % 180 !== 0;\n this._isFixedRatio() || (this._initialCrop ? this._ratio = this._initialCrop.height / this._initialCrop.width : this._ratio = a ? t.width / t.height : t.height / t.width, this._scaleDropArea(this._ratio));\n var r = function r() {\n o._options.size && (o._data.actions.size = {\n width: o._options.size.width,\n height: o._options.size.height\n }), o._applyTransforms(t, function (t) {\n var a = o._getIntro(),\n r = a.offsetWidth / t.width,\n s = !1;\n o._options.service && o._options.push && !n.blockPush && (o._hasInitialImage || o._canInstantEdit() || (s = !0, o._stopProgressLoop(function () {\n o._startProgress(function () {\n o._updateProgress(.1);\n });\n }))), o._canInstantEdit() || o._save(function () {\n o._isBeingDestroyed || s && (o._stopProgress(), i());\n }, s);\n var h = \"auto\" === o._options.devicePixelRatio ? window.devicePixelRatio : o._options.devicePixelRatio;\n a.src = \"\", a.src = ht(t, r * h).toDataURL(), a.onload = function () {\n a.onload = null, o._isBeingDestroyed || e && e(s);\n };\n });\n };\n this._initialCrop ? (this._data.actions.crop = mt(this._initialCrop), this._data.actions.crop.type = At.INITIAL, this._initialCrop = null, r()) : this._options.willCropInitial.apply(this, [this.data, function (e) {\n e ? (o._data.actions.crop = e, o._data.actions.crop.type = At.INITIAL) : (o._data.actions.crop = tt(a ? t.height : t.width, a ? t.width : t.height, o._ratio), o._data.actions.crop.type = At.AUTO), r();\n }, this]);\n }\n }\n }, {\n key: \"_applyTransforms\",\n value: function value(t, e) {\n var i = this,\n n = mt(this._data.actions);\n n.filters = {\n sharpen: this._options.filterSharpen / 100\n }, this._options.forceMinSize ? n.minSize = this._options.minSize : n.minSize = {\n width: 0,\n height: 0\n }, et(t, n, function (t) {\n var n = t;\n if (i._options.forceSize || i._options.size && 1 == rt(i._options.size, t)) {\n n = k(\"canvas\"), n.width = i._options.size.width, n.height = i._options.size.height;\n var o = n.getContext(\"2d\");\n o.drawImage(t, 0, 0, i._options.size.width, i._options.size.height);\n }\n if (i._options.forceMinSize && i._options.size && i._options.minSize.width === i._options.size.width && i._options.minSize.height === i._options.size.height && (n.width < i._options.minSize.width || n.height < i._options.minSize.height)) {\n var a = Math.max(n.width, i._options.minSize.width),\n r = Math.max(n.height, i._options.minSize.height);\n n = k(\"canvas\"), n.width = a, n.height = r;\n var s = n.getContext(\"2d\");\n s.drawImage(t, 0, 0, a, r);\n }\n if (i._options.forceMinSize && 1 === i._ratio && (n.width < i._options.minSize.width || n.height < i._options.minSize.height)) {\n n = k(\"canvas\"), n.width = i._options.minSize.width, n.height = i._options.minSize.height;\n var h = n.getContext(\"2d\");\n h.drawImage(t, 0, 0, n.width, n.height);\n }\n i._data.output.width = n.width, i._data.output.height = n.height, i._data.output.image = n, i._onTransformCanvas(function (t) {\n i._data = t, i._options.didTransform.apply(i, [i.data, i]), e(i._data.output.image);\n });\n });\n }\n }, {\n key: \"_onTransformCanvas\",\n value: function value(t) {\n this._options.willTransform.apply(this, [this.data, t, this]);\n }\n }, {\n key: \"_appendEditor\",\n value: function value() {\n var t = this;\n this._imageEditor || (this._imageEditor = new It(k(\"div\"), {\n minSize: this._options.minSize,\n devicePixelRatio: this._options.devicePixelRatio,\n buttonConfirmClassName: this._options.buttonConfirmClassName,\n buttonCancelClassName: this._options.buttonCancelClassName,\n buttonRotateClassName: this._options.buttonRotateClassName,\n buttonConfirmLabel: this._options.buttonConfirmLabel,\n buttonCancelLabel: this._options.buttonCancelLabel,\n buttonRotateLabel: this._options.buttonRotateLabel,\n buttonConfirmTitle: this._options.buttonConfirmTitle,\n buttonCancelTitle: this._options.buttonCancelTitle,\n buttonRotateTitle: this._options.buttonRotateTitle\n }), Nt.forEach(function (e) {\n t._imageEditor.element.addEventListener(e, t);\n }));\n }\n }, {\n key: \"_scaleDropArea\",\n value: function value(t) {\n var e = this._getRatioSpacerElement();\n e && this._element && (e.style.marginBottom = 100 * t + \"%\", this._element.setAttribute(\"data-ratio\", \"1:\" + t));\n }\n }, {\n key: \"_onCancel\",\n value: function value(t) {\n this._removeState(\"editor\"), this._options.didCancel.apply(this, [this]), this._showButtons(), this._hideEditor(), this._options.instantEdit && !this._hasInitialImage && this._isAutoCrop() && this._doRemove();\n }\n }, {\n key: \"_onConfirm\",\n value: function value(t) {\n var e = this,\n i = this._options.service && this._options.push;\n i ? this._startProgress(function () {\n e._updateProgress(.1);\n }) : this._startProgressLoop(), this._removeState(\"editor\"), this._addState(\"busy\"), this._output.value = \"\", this._data.actions.rotation = t.detail.rotation, this._data.actions.crop = t.detail.crop, this._data.actions.crop.type = At.MANUAL, this._applyTransforms(this._data.input.image, function (t) {\n e._options.didConfirm.apply(e, [e.data, e]);\n var n = e._getInOut(),\n o = \"out\" === n[0].className ? n[0] : n[1],\n a = o === n[0] ? n[1] : n[0];\n o.className = \"in\", o.style.opacity = \"0\", o.style.zIndex = \"2\", a.className = \"out\", a.style.zIndex = \"1\";\n var r = \"auto\" === e._options.devicePixelRatio ? window.devicePixelRatio : e._options.devicePixelRatio;\n o.src = \"\", o.src = ht(t, o.offsetWidth / t.width * r).toDataURL(), o.onload = function () {\n o.onload = null, \"free\" === e._options.ratio && (e._ratio = o.naturalHeight / o.naturalWidth, e._scaleDropArea(e._ratio)), e._hideEditor();\n var t = setTimeout(function () {\n e._showPreview(o, function () {\n e._save(function (t, n, o) {\n e._toggleButton(\"upload\", !0), i ? e._stopProgress() : e._stopProgressLoop(), e._removeState(\"busy\"), e._showButtons();\n }, i);\n });\n }, 250);\n e._timers.push(t);\n };\n });\n }\n }, {\n key: \"_cropAuto\",\n value: function value() {\n var t = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function (t) {},\n i = this._data.actions.rotation % 180 !== 0,\n n = tt(i ? this._data.input.image.height : this._data.input.image.width, i ? this._data.input.image.width : this._data.input.image.height, this._ratio);\n this._crop(n.x, n.y, n.width, n.height, t, At.AUTO);\n }\n }, {\n key: \"_crop\",\n value: function value(t, i, n, o) {\n var a = arguments.length > 4 && arguments[4] !== e ? arguments[4] : function (t) {},\n r = arguments.length > 5 && arguments[5] !== e ? arguments[5] : At.MANUAL;\n this._output.value = \"\", this._data.actions.crop = {\n x: t,\n y: i,\n width: n,\n height: o\n }, this._data.actions.crop.type = r, this._manualTransform(a);\n }\n }, {\n key: \"_manualTransform\",\n value: function value(t) {\n var e = this;\n this._startProgressLoop(), this._addState(\"busy\"), this._applyTransforms(this._data.input.image, function (i) {\n var n = e._getInOut(),\n o = \"out\" === n[0].className ? n[0] : n[1],\n a = o === n[0] ? n[1] : n[0];\n o.className = \"in\", o.style.opacity = \"1\", o.style.zIndex = \"2\", a.className = \"out\", a.style.zIndex = \"0\";\n var r = \"auto\" === e._options.devicePixelRatio ? window.devicePixelRatio : e._options.devicePixelRatio;\n o.src = \"\", o.src = ht(i, o.offsetWidth / i.width * r).toDataURL(), o.onload = function () {\n o.onload = null, \"free\" === e._options.ratio && (e._ratio = o.naturalHeight / o.naturalWidth, e._scaleDropArea(e._ratio));\n var i = e._options.service && e._options.push,\n n = function n() {\n e._save(function (n, o, a) {\n i || e._stopProgressLoop(), e._removeState(\"busy\"), t.apply(e, [e.data]);\n }, i);\n };\n i ? e._startProgress(n) : n();\n };\n });\n }\n }, {\n key: \"_save\",\n value: function value() {\n var t = this,\n i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {},\n n = !(arguments.length > 1 && arguments[1] !== e) || arguments[1];\n if (!this._isBeingDestroyed) {\n var o = this.dataBase64;\n this._options.service || this._isInitialising && !this._isImageOnly() || this._options.willSave.apply(this, [o, function (e) {\n t._store(e), t._options.didSave.apply(t, [e, t]);\n }, this]), this._isBeingDestroyed || (this._options.service && n && this._options.willSave.apply(this, [o, function (e) {\n t._addState(\"upload\"), t._imageHopper && t._options.dropReplace && (t._imageHopper.enabled = !1), t._upload(e, function (n, o) {\n t._imageHopper && t._options.dropReplace && (t._imageHopper.enabled = !0), n || t._storeServerResponse(o), t._options.didUpload.apply(t, [n, e, o, t]), t._removeState(\"upload\"), i(n, e, o);\n });\n }, this]), this._options.service && n || i());\n }\n }\n }, {\n key: \"_storeServerResponse\",\n value: function value(t) {\n this._isRequired && (this._input.required = !1), this._data.server = t, this._output.value = \"object\" === (\"undefined\" == typeof t ? \"undefined\" : c(t)) ? JSON.stringify(this._data.server) : t;\n }\n }, {\n key: \"_store\",\n value: function value(t) {\n this._isRequired && (this._input.required = !1), this._output.value = JSON.stringify(t);\n }\n }, {\n key: \"_upload\",\n value: function value(t, e) {\n var i = this;\n this.requestOutput(function (t, n) {\n var o = i._element.querySelector(\".slim-upload-status\"),\n a = i._options.willRequest,\n r = function r(t, e) {\n i._updateProgress(Math.max(.1, t / e));\n },\n s = function s(t) {\n var n = setTimeout(function () {\n if (!i._isBeingDestroyed) {\n o.innerHTML = i._options.statusUploadSuccess, o.setAttribute(\"data-state\", \"success\"), o.style.opacity = 1;\n var t = setTimeout(function () {\n o.style.opacity = 0;\n }, 2e3);\n i._timers.push(t);\n }\n }, 250);\n i._timers.push(n), e(null, t);\n },\n h = function h(t) {\n var n = \"\";\n n = \"file-too-big\" === t ? i._options.statusContentLength : i._options.didReceiveServerError.apply(i, [t, i._options.statusUnknownResponse, i]);\n var a = setTimeout(function () {\n o.innerHTML = n, o.setAttribute(\"data-state\", \"error\"), o.style.opacity = 1;\n }, 250);\n i._timers.push(a), e(t);\n };\n \"string\" == typeof i._options.service ? O(i._options.service, i._options.uploadMethod, n, a, r, s, h) : \"function\" == typeof i._options.service && i._options.service.apply(i, [\"file\" === i._options.serviceFormat ? t : n, r, s, h, i]);\n }, t);\n }\n }, {\n key: \"requestOutput\",\n value: function value(t, e) {\n var i = this;\n return this._data.input.file ? (e || (e = this.dataBase64), void n.parseMetaData(this._data.input.file, function (o) {\n var a = [],\n r = new FormData();\n if (L(\"input\", i._options.post) && (a.push(i._data.input.file), r.append(i._inputReference, i._data.input.file, i._data.input.file.name)), L(\"output\", i._options.post) && null !== i._data.output.image && i._options.uploadBase64 === !1) {\n var s = Z(e.output.image, e.output.name);\n if (o.imageHead && i._options.copyImageHead) try {\n s = new Blob([o.imageHead, n.blobSlice.call(s, 20)], {\n type: wt(e.output.image)\n }), s = G(s, e.output.name);\n } catch (h) {}\n a.push(s);\n var u = \"slim_output_\" + i._uid;\n e.output.image = null, e.output.field = u, r.append(u, s, e.output.name);\n }\n r.append(i._output.name, JSON.stringify(e)), t(a, r);\n }, {\n maxMetaDataSize: 262144,\n disableImageHead: !1\n })) : void t(null, null);\n }\n }, {\n key: \"_showEditor\",\n value: function value() {\n Ft.className = this._options.popoverClassName, Ft.show(), this._imageEditor.show();\n }\n }, {\n key: \"_hideEditor\",\n value: function value() {\n this._imageEditor.hide();\n var t = setTimeout(function () {\n Ft.hide();\n }, 250);\n this._timers.push(t);\n }\n }, {\n key: \"_showPreview\",\n value: function value(t, e) {\n u(t, {\n fromPosition: [0, 50, 0],\n position: [0, 0, 0],\n fromScale: [1.5, 1.5],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .7,\n complete: function complete() {\n z(t), e && e();\n }\n });\n }\n }, {\n key: \"_hideResult\",\n value: function value(t) {\n var e = this._getIntro();\n e && u(e, {\n fromScale: [1, 1],\n scale: [.5, .5],\n fromOpacity: 1,\n opacity: 0,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .75,\n complete: function complete() {\n z(e), t && t();\n }\n });\n }\n }, {\n key: \"_showButtons\",\n value: function value(t) {\n if (this._btnGroup) {\n this._btnGroup.style.display = \"\";\n var e = {\n fromScale: [.5, .5],\n scale: [1, 1],\n fromPosition: [0, 10, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n complete: function complete() {\n z(this);\n },\n allDone: function allDone() {\n t && t();\n }\n };\n this.isDetached() ? e.duration = 1 : (e.delay = function (t) {\n return 250 + 50 * t;\n }, e.easing = \"spring\", e.springConstant = .3, e.springDeceleration = .85), u(this._btnGroup.childNodes, e);\n }\n }\n }, {\n key: \"_hideButtons\",\n value: function value(t) {\n var e = this;\n if (this._btnGroup) {\n var i = {\n fromScale: [1, 1],\n scale: [.85, .85],\n fromOpacity: 1,\n opacity: 0,\n allDone: function allDone() {\n e._btnGroup.style.display = \"none\", t && t();\n }\n };\n this.isDetached() ? i.duration = 1 : (i.easing = \"spring\", i.springConstant = .3, i.springDeceleration = .75), u(this._btnGroup.childNodes, i);\n }\n }\n }, {\n key: \"_hideStatus\",\n value: function value() {\n var t = this._element.querySelector(\".slim-upload-status\");\n t.style.opacity = 0;\n }\n }, {\n key: \"_doEdit\",\n value: function value() {\n var t = this;\n this._data.input.image && (this._addState(\"editor\"), this._imageEditor || this._appendEditor(), this._imageEditor.showRotateButton = this._options.rotateButton, Ft.inner = this._imageEditor.element, this._imageEditor.open(st(this._data.input.image), \"free\" === this._options.ratio ? null : this._ratio, this._data.actions.crop, this._data.actions.rotation, function () {\n t._showEditor(), t._hideButtons(), t._hideStatus();\n }));\n }\n }, {\n key: \"_doRemove\",\n value: function value(t) {\n var e = this;\n if (!this._isImageOnly()) {\n this._clearState(), this._addState(\"empty\"), this._hasInitialImage = !1, this._imageHopper && (this._imageHopper.enabled = !0), this._isRequired && (this._input.required = !0);\n var i = this._getOutro();\n i && (i.style.opacity = \"0\");\n var n = this.data;\n this._resetData();\n var o = setTimeout(function () {\n e._isBeingDestroyed || (e._hideButtons(function () {\n e._toggleButton(\"upload\", !0);\n }), e._hideStatus(), e._hideResult(), e._options.didRemove.apply(e, [n, e]), t && t());\n }, this.isDetached() ? 0 : 250);\n return this._timers.push(o), n;\n }\n }\n }, {\n key: \"_doUpload\",\n value: function value(t) {\n var e = this;\n this._data.input.image && (this._addState(\"upload\"), this._startProgress(), this._hideButtons(function () {\n e._toggleButton(\"upload\", !1), e._save(function (i, n, o) {\n e._removeState(\"upload\"), e._stopProgress(), t && t.apply(e, [i, n, o]), i && e._toggleButton(\"upload\", !0), e._showButtons();\n });\n }));\n }\n }, {\n key: \"_doDownload\",\n value: function value() {\n var t = this._data.output.image;\n t && kt(this._data, this._options.jpegCompression, this._options.forceType);\n }\n }, {\n key: \"_doDestroy\",\n value: function value() {\n function t(t, e) {\n return 0 !== e.filter(function (e) {\n return t.name === e.name && t.value === e.value;\n }).length;\n }\n var e = this;\n this._isBeingDestroyed = !0, this._timers.forEach(function (t) {\n clearTimeout(t);\n }), this._timers = [], u(this._element, \"detach\"), this._imageHopper && (Ht.forEach(function (t) {\n e._imageHopper.element.removeEventListener(t, e);\n }), this._imageHopper.destroy(), this._imageHopper = null), this._imageEditor && (Nt.forEach(function (t) {\n e._imageEditor.element.removeEventListener(t, e);\n }), this._imageEditor.destroy(), this._imageEditor = null), St(this._btnGroup.children).forEach(function (t) {\n t.removeEventListener(\"click\", e);\n }), this._input.removeEventListener(\"change\", this), this._element !== this._originalElement && this._element.parentNode && this._element.parentNode.replaceChild(this._originalElement, this._element), this._originalElement.innerHTML = this._originalElementInner;\n var i = _(this._originalElement);\n i.forEach(function (i) {\n t(i, e._originalElementAttributes) || e._originalElement.removeAttribute(i.name);\n }), this._originalElementAttributes.forEach(function (n) {\n t(n, i) || e._originalElement.setAttribute(n.name, n.value);\n }), Wt = Math.max(0, Wt - 1), Ft && 0 === Wt && (Ft.destroy(), Ft = null), this._originalElement = null, this._element = null, this._input = null, this._output = null, this._btnGroup = null, this._options = null;\n }\n }, {\n key: \"dataBase64\",\n get: function get() {\n return bt(this._data, this._options.post, this._options.jpegCompression, this._options.forceType, null !== this._options.service);\n }\n }, {\n key: \"data\",\n get: function get() {\n return vt(this._data);\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"service\",\n set: function set(t) {\n this._options.service = t;\n }\n }, {\n key: \"size\",\n set: function set(t) {\n this.setSize(t, null);\n }\n }, {\n key: \"rotation\",\n set: function set(t) {\n this.setRotation(t, null);\n }\n }, {\n key: \"forceSize\",\n set: function set(t) {\n this.setForceSize(t, null);\n }\n }, {\n key: \"ratio\",\n set: function set(t) {\n this.setRatio(t, null);\n }\n }], [{\n key: \"options\",\n value: function value() {\n var t = {\n edit: !0,\n instantEdit: !1,\n uploadBase64: !1,\n meta: {},\n ratio: \"free\",\n devicePixelRatio: 1,\n size: null,\n rotation: null,\n crop: null,\n post: [\"output\", \"actions\"],\n service: null,\n serviceFormat: null,\n filterSharpen: 0,\n push: !1,\n defaultInputName: \"slim[]\",\n minSize: {\n width: 0,\n height: 0\n },\n maxFileSize: null,\n jpegCompression: null,\n uploadMethod: \"POST\",\n download: !1,\n saveInitialImage: !1,\n forceType: !1,\n forceSize: null,\n forceMinSize: !0,\n dropReplace: !0,\n fetcher: null,\n internalCanvasSize: {\n width: 4096,\n height: 4096\n },\n copyImageHead: !1,\n rotateButton: !0,\n popoverClassName: null,\n label: \"

Drop your image here

\",\n labelLoading: \"

Loading image...

\",\n statusFileType: \"

Invalid file type, expects: $0.

\",\n statusFileSize: \"

File is too big, maximum file size: $0 MB.

\",\n statusNoSupport: \"

Your browser does not support image cropping.

\",\n statusImageTooSmall: \"

Image is too small, minimum size is: $0 pixels.

\",\n statusContentLength: ' The file is probably too big',\n statusUnknownResponse: ' An unknown error occurred',\n statusUploadSuccess: ' Saved',\n statusLocalUrlProblem: null,\n didInit: function didInit(t) {},\n didLoad: function didLoad(t, e, i) {\n return !0;\n },\n didSave: function didSave(t) {},\n didUpload: function didUpload(t, e, i) {},\n didReceiveServerError: function didReceiveServerError(t, e) {\n return e;\n },\n didRemove: function didRemove(t) {},\n didTransform: function didTransform(t) {},\n didConfirm: function didConfirm(t) {},\n didCancel: function didCancel() {},\n didThrowError: function didThrowError() {},\n willCropInitial: function willCropInitial(t, e) {\n e(null);\n },\n willTransform: function willTransform(t, e) {\n e(t);\n },\n willSave: function willSave(t, e) {\n e(t);\n },\n willRemove: function willRemove(t, e) {\n e();\n },\n willRequest: function willRequest(t, e) {},\n willFetch: function willFetch(t) {},\n willLoad: function willLoad(t) {}\n };\n return Bt.concat(It.Buttons).concat(\"rotate\").forEach(function (e) {\n var i = R(e);\n t[\"button\" + i + \"ClassName\"] = null, t[\"button\" + i + \"Label\"] = i, t[\"button\" + i + \"Title\"] = i;\n }), t;\n }\n }]), i;\n }();\n return function () {\n function t(t) {\n return t ? \"

\" + t + \"

\" : null;\n }\n function e(t) {\n var e = window,\n i = t.split(\".\");\n return i.forEach(function (t, n) {\n e[i[n]] && (e = e[i[n]]);\n }), e !== window ? e : null;\n }\n var i = [],\n n = function n(t) {\n for (var e = 0, n = i.length; e < n; e++) {\n if (i[e].isAttachedTo(t)) return e;\n }\n return -1;\n },\n o = function o(t) {\n return t;\n },\n a = function a(t) {\n return \"true\" === t;\n },\n r = function r(t) {\n return !t || \"true\" === t;\n },\n s = function s(e) {\n return t(e);\n },\n h = function h(t) {\n return t ? e(t) : null;\n },\n u = function u(t) {\n if (!t) return null;\n var e = zt(t, \",\");\n return {\n width: e[0],\n height: e[1]\n };\n },\n l = function l(t) {\n return t ? parseFloat(t) : null;\n },\n p = function p(t) {\n return t ? parseInt(t, 10) : null;\n },\n c = function c(t) {\n if (!t) return null;\n var e = {};\n return t.split(\",\").map(function (t) {\n return parseInt(t, 10);\n }).forEach(function (t, i) {\n e[Ut[i]] = t;\n }), e;\n },\n f = {\n download: a,\n edit: r,\n instantEdit: a,\n minSize: u,\n size: u,\n forceSize: u,\n forceMinSize: r,\n internalCanvasSize: u,\n service: function service(t) {\n if (\"undefined\" == typeof t) return null;\n var i = e(t);\n return i ? i : t;\n },\n serviceFormat: function serviceFormat(t) {\n return \"undefined\" == typeof t ? null : t;\n },\n fetcher: function fetcher(t) {\n return \"undefined\" == typeof t ? null : t;\n },\n push: a,\n rotation: function rotation(t) {\n return \"undefined\" == typeof t ? null : parseInt(t, 10);\n },\n crop: c,\n post: function post(t) {\n return t ? t.split(\",\").map(function (t) {\n return t.trim();\n }) : null;\n },\n defaultInputName: o,\n ratio: function ratio(t) {\n return t ? t : null;\n },\n maxFileSize: l,\n filterSharpen: p,\n jpegCompression: p,\n uploadBase64: a,\n forceType: o,\n dropReplace: r,\n saveInitialImage: a,\n copyImageHead: a,\n rotateButton: r,\n label: s,\n labelLoading: s,\n popoverClassName: o,\n devicePixelRatio: o,\n uploadMethod: o\n };\n [\"FileSize\", \"FileType\", \"NoSupport\", \"ImageTooSmall\"].forEach(function (t) {\n f[\"status\" + t] = s;\n }), [\"ContentLength\", \"UnknownResponse\", \"UploadSuccess\", \"localUrlProblem\"].forEach(function (t) {\n f[\"status\" + t] = o;\n }), [\"Init\", \"Load\", \"Save\", \"Upload\", \"Remove\", \"Transform\", \"ReceiveServerError\", \"Confirm\", \"Cancel\", \"ThrowError\"].forEach(function (t) {\n f[\"did\" + t] = h;\n }), [\"CropInitial\", \"Transform\", \"Save\", \"Remove\", \"Request\", \"Load\", \"Fetch\"].forEach(function (t) {\n f[\"will\" + t] = h;\n });\n var _ = [\"ClassName\", \"Label\", \"Title\"];\n Bt.concat(It.Buttons).concat(\"rotate\").forEach(function (t) {\n var e = R(t);\n _.forEach(function (t) {\n f[\"button\" + e + t] = o;\n });\n }), Gt.supported = function () {\n return !(\"[object OperaMini]\" === Object.prototype.toString.call(window.operamini) || \"undefined\" == typeof window.addEventListener || \"undefined\" == typeof window.FileReader || !(\"slice\" in Blob.prototype) || \"undefined\" == typeof window.URL || \"undefined\" == typeof window.URL.createObjectURL);\n }(), Gt.parse = function (t) {\n var e,\n i,\n n,\n o = [];\n for (e = t.querySelectorAll(\".slim:not([data-state])\"), n = e.length; n--;) {\n i = e[n], o.push(Gt.create(i, Gt.getOptionsFromAttributes(i)));\n }\n return o;\n }, Gt.getOptionsFromAttributes = function (t) {\n var e = d(t),\n i = {\n meta: {}\n };\n for (var n in e) {\n var o = f[n],\n a = e[n];\n o ? (a = o(a), a = null === a ? mt(Gt.options()[n]) : a, i[n] = a) : 0 === n.indexOf(\"meta\") && (i.meta[M(n.substr(4))] = a);\n }\n return i;\n }, Gt.find = function (t) {\n var e = i.filter(function (e) {\n return e.isAttachedTo(t);\n });\n return e ? e[0] : null;\n }, Gt.create = function (t, e) {\n if (!Gt.find(t)) {\n e || (e = Gt.getOptionsFromAttributes(t));\n var n = new Gt(t, e);\n return i.push(n), n;\n }\n }, Gt.destroy = function (t) {\n var e = n(t);\n return !(e < 0) && (i[e].destroy(), i.splice(e, 1), !0);\n };\n }(), Gt;\n }(), t.Slim.supported) \"loading\" !== document.readyState ? i() : document.addEventListener(\"DOMContentLoaded\", i);else {\n var n = t.getElementsByClassName(\"slim\"),\n o = 0,\n a = n.length;\n for (o = 0; o < a; o++) {\n n[o].className = \"\";\n }\n }\n}(window);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvc2xpbS5raWNrc3RhcnQubWluLmpzLmpzIiwibmFtZXMiOlsidCIsImUiLCJpIiwiU2xpbSIsInBhcnNlIiwiZG9jdW1lbnQiLCJUeXBlRXJyb3IiLCJuIiwibyIsIndpZHRoIiwiYSIsImhlaWdodCIsInIiLCJNYXRoIiwibWF4IiwibWluIiwicm91bmQiLCJzIiwiaCIsInN0IiwidSIsImwiLCJjcmVhdGVFbGVtZW50IiwiZ2V0Q29udGV4dCIsImRyYXdJbWFnZSIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwiY3JlYXRlRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsInByb3RvdHlwZSIsIkV2ZW50Iiwib25lcnJvciIsIm9ubG9hZCIsIm5vUmV2b2tlIiwicmV2b2tlT2JqZWN0VVJMIiwic2NhbGUiLCJpc0luc3RhbmNlT2YiLCJjcmVhdGVPYmplY3RVUkwiLCJfdHlwZSIsInR5cGUiLCJjcm9zc09yaWdpbiIsInNyYyIsInJlYWRGaWxlIiwidGFyZ2V0IiwicmVzdWx0IiwiVVJMIiwid2Via2l0VVJMIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwidHJhbnNmb3JtQ29vcmRpbmF0ZXMiLCJnZXRUcmFuc2Zvcm1lZE9wdGlvbnMiLCJhc3BlY3RSYXRpbyIsImhhc093blByb3BlcnR5IiwiY3JvcCIsIm5hdHVyYWxXaWR0aCIsIm5hdHVyYWxIZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInJlbmRlckltYWdlVG9DYW52YXMiLCJoYXNDYW52YXNPcHRpb24iLCJjYW52YXMiLCJiIiwiayIsInAiLCJjIiwiZCIsImYiLCJfIiwibSIsImciLCJ2IiwieSIsInciLCJsZWZ0IiwidG9wIiwic291cmNlV2lkdGgiLCJyaWdodCIsInNvdXJjZUhlaWdodCIsImJvdHRvbSIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwiY29udGFpbiIsImNvdmVyIiwicGl4ZWxSYXRpbyIsInN0eWxlIiwiZG93bnNhbXBsaW5nUmF0aW8iLCJGaWxlUmVhZGVyIiwib3JpZW50YXRpb24iLCJ0cmFuc2xhdGUiLCJyb3RhdGUiLCJQSSIsIkJsb2IiLCJzbGljZSIsIndlYmtpdFNsaWNlIiwibW96U2xpY2UiLCJibG9iU2xpY2UiLCJhcHBseSIsImFyZ3VtZW50cyIsIm1ldGFEYXRhUGFyc2VycyIsImpwZWciLCJwYXJzZU1ldGFEYXRhIiwibWF4TWV0YURhdGFTaXplIiwiRGF0YVZpZXciLCJzaXplIiwiZXJyb3IiLCJieXRlTGVuZ3RoIiwiZ2V0VWludDE2IiwibGVuZ3RoIiwiZGlzYWJsZUltYWdlSGVhZCIsImltYWdlSGVhZCIsIlVpbnQ4QXJyYXkiLCJzdWJhcnJheSIsIkV4aWZNYXAiLCJtYXAiLCJPcmllbnRhdGlvbiIsImdldCIsImdldEV4aWZUaHVtYm5haWwiLCJnZXRVaW50OCIsInB1c2giLCJqb2luIiwiZXhpZlRhZ1R5cGVzIiwiZ2V0VmFsdWUiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJhc2NpaSIsImdldFVpbnQzMiIsImdldEludDMyIiwiZ2V0RXhpZlZhbHVlIiwicGFyc2VFeGlmVGFnIiwiZXhpZiIsInBhcnNlRXhpZlRhZ3MiLCJwYXJzZUV4aWZEYXRhIiwiZGlzYWJsZUV4aWYiLCJkaXNhYmxlRXhpZlRodW1ibmFpbCIsIlRodW1ibmFpbCIsImRpc2FibGVFeGlmU3ViIiwiZGlzYWJsZUV4aWZHcHMiLCJnZXRDb21wdXRlZFN0eWxlIiwiZG9jdW1lbnRFbGVtZW50IiwiQXJyYXkiLCJtYXRjaCIsIk9MaW5rIiwiY2hhaW5lcnMiLCJ0aGVuIiwic25hYmJ0IiwiZm9yRWFjaCIsInNldFZhbHVlIiwiZmluaXNoIiwicm9sbGJhY2siLCIkIiwiSiIsImRlbGF5IiwiY2FsbGJhY2siLCJjb21wbGV0ZSIsImFsbERvbmUiLCJ2YWx1ZUZlZWRlciIsImVhc2luZyIsInRpY2siLCJ1cGRhdGVFbGVtZW50IiwiaXNTdG9wcGVkIiwiY29tcGxldGVkIiwibG9vcCIsInJlc3RhcnQiLCJwb3AiLCJTIiwidW5zaGlmdCIsIm1hbnVhbCIsInEiLCJtb3ZlbWVudCIsIkUiLCJzdG9wIiwiY29uY2F0IiwiY29udGFpbnMiLCJzcGxpY2UiLCJnZXRDdXJyZW50U3RhdGUiLCJmaWx0ZXIiLCJib2R5IiwicGFyZW50Tm9kZSIsInBvc2l0aW9uIiwicm90YXRpb24iLCJyb3RhdGlvblBvc3QiLCJza2V3IiwiRyIsInNjYWxlUG9zdCIsIm9wYWNpdHkiLCJzdGFydFN0YXRlIiwiZW5kU3RhdGUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJ4IiwiZHVyYXRpb24iLCJwZXJzcGVjdGl2ZSIsIkwiLCJjbG9uZSIsInRyYW5zZm9ybU9yaWdpbiIsIlYiLCJqIiwicmVzZXRGcm9tIiwic2V0UmV2ZXJzZSIsInVwZGF0ZUN1cnJlbnRUcmFuc2Zvcm0iLCJ0d2VlbiIsImFzTWF0cml4IiwiZ2V0UHJvcGVydGllcyIsIlgiLCJZIiwiaW5pdGlhbFZlbG9jaXR5IiwiZXF1aWxpYnJpdW1Qb3NpdGlvbiIsIlQiLCJlcXVpbGlicml1bSIsInVwZGF0ZU1vdmVtZW50IiwiQyIsIlAiLCJjb3MiLCJNIiwiUiIsInBvdyIsInN0YXJ0UG9zaXRpb24iLCJzcHJpbmdDb25zdGFudCIsInNwcmluZ0RlY2VsZXJhdGlvbiIsInNwcmluZ01hc3MiLCJhYnMiLCJJIiwibGluZWFyIiwiZWFzZSIsImVhc2VJbiIsImVhc2VPdXQiLCJPIiwieiIsInNpbiIsIkQiLCJBIiwiVSIsInRhbiIsIkgiLCJOIiwiQiIsIkYiLCJGbG9hdDMyQXJyYXkiLCJkYXRhIiwiYXNDU1MiLCJ0b0ZpeGVkIiwiY2xlYXIiLCJXIiwicm90YXRlWCIsInJvdGF0ZVkiLCJyb3RhdGVaIiwiY3JlYXRlTWF0cml4Iiwic2V0RWxlbWVudFRyYW5zZm9ybSIsImdldEVsZW1lbnRCeUlkIiwiSFRNTENhbnZhc0VsZW1lbnQiLCJnZXRJbWFnZURhdGEiLCJFcnJvciIsImlzTmFOIiwicHV0SW1hZ2VEYXRhIiwibmV4dCIsInRvQmxvYiIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJhdG9iIiwidG9EYXRhVVJMIiwic3BsaXQiLCJjaGFyQ29kZUF0IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwia2V5IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsImRhdGFzZXQiLCJhdHRyaWJ1dGVzIiwibmFtZSIsInRlc3QiLCJzdWJzdHIiLCJyZXBsYWNlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJvZmZzZXRYIiwibGF5ZXJYIiwib2Zmc2V0WSIsImxheWVyWSIsIkVTQyIsIlJFVFVSTiIsIkRPV04iLCJNT1ZFIiwiVVAiLCJqcGciLCJqcGUiLCJwbmciLCJnaWYiLCJibXAiLCJjbGFzc05hbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNoYW5nZWRUb3VjaGVzIiwicGFnZVgiLCJwYWdlWSIsInBhZ2VYT2Zmc2V0Iiwic2Nyb2xsTGVmdCIsInBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwidG9Mb3dlckNhc2UiLCJYTUxIdHRwUmVxdWVzdCIsInVwbG9hZCIsImxvYWRlZCIsInRvdGFsIiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJzdGF0dXMiLCJyZXNwb25zZVRleHQiLCJpbmRleE9mIiwiSlNPTiIsIm1lc3NhZ2UiLCJzZW5kIiwid2Via2l0VHJhbnNmb3JtIiwidHJhbnNmb3JtIiwic2hpZnQiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJEYXRlIiwiRmlsZSIsImxhc3RNb2RpZmllZCIsIm5vdyIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlIiwiZ3QiLCJzdGF0dXNUZXh0IiwiWiIsIkFycmF5QnVmZmVyIiwid3QiLCJLIiwiQmxvYkJ1aWxkZXIiLCJXZWJLaXRCbG9iQnVpbGRlciIsIk1vekJsb2JCdWlsZGVyIiwiTVNCbG9iQnVpbGRlciIsImFwcGVuZCIsImdldEJsb2IiLCJRIiwidHQiLCJldCIsImZpbHRlcnMiLCJtaW5TaXplIiwic2hhcnBlbiIsIm50IiwiYXQiLCJpdCIsIm90IiwiY3JlYXRlSW1hZ2VEYXRhIiwic2V0Iiwic3FydCIsInJ0IiwiaHQiLCJ1dCIsImx0IiwicHQiLCJjdCIsInBhcnNlSW50IiwiZHQiLCJmdCIsIl90IiwibmV4dFNpYmxpbmciLCJhcHBlbmRDaGlsZCIsInJlc2V0IiwiaW5zZXJ0QmVmb3JlIiwibXQiLCJzdHJpbmdpZnkiLCJ2dCIsImlucHV0IiwiZmlsZSIsIm91dHB1dCIsImltYWdlIiwieXQiLCJzdWJzdHJpbmciLCJidCIsInNlcnZlciIsIm1ldGEiLCJmaWVsZCIsImFjdGlvbnMiLCJrdCIsIm5hdmlnYXRvciIsIm1zU2F2ZUJsb2IiLCJkaXNwbGF5IiwiZG93bmxvYWQiLCJocmVmIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInh0IiwicXVlcnlTZWxlY3RvciIsIlN0IiwiRXQiLCJDdCIsIlB0IiwiTXQiLCJSdCIsIlR0IiwibmUiLCJzZSIsInN3IiwibnciLCJfZWxlbWVudCIsIl9pbnRlcmFjdGlvbiIsIl9taW5XaWR0aCIsIl9taW5IZWlnaHQiLCJfcmF0aW8iLCJfcmVjdCIsIl9zcGFjZSIsIl9yZWN0Q2hhbmdlZCIsIl9pbml0IiwiX3JlZHJhdyIsImRpc3BhdGNoRXZlbnQiLCJfb25TdGFydERyYWciLCJfb25EcmFnIiwiX29uU3RvcERyYWciLCJwcmV2ZW50RGVmYXVsdCIsIm9mZnNldCIsInNldEF0dHJpYnV0ZSIsImNzc1RleHQiLCJJdCIsIl9vcHRpb25zIiwib3B0aW9ucyIsIl9vdXRwdXQiLCJfcm90YXRpbmciLCJfaW5wdXQiLCJfcHJldmlldyIsIl9wcmV2aWV3Qmx1cnJlZCIsIl9ibHVycmVkUHJldmlldyIsIl9jcm9wcGVyIiwiX3N0cmFpZ2h0Q3JvcCIsIl9wcmV2aWV3V3JhcHBlciIsIl9jdXJyZW50V2luZG93U2l6ZSIsIl9idG5Hcm91cCIsIl9tYXNrRnJhbWUiLCJfZGlydHkiLCJfd3JhcHBlclJvdGF0aW9uIiwiX3dyYXBwZXJTY2FsZSIsIl9jb250YWluZXIiLCJfd3JhcHBlciIsIl9zdGFnZSIsImVsZW1lbnQiLCJfcHJldmlld01hc2siLCJCdXR0b25zIiwiaW5uZXJIVE1MIiwidGl0bGUiLCJfdXRpbHNHcm91cCIsImJ1dHRvblJvdGF0ZUNsYXNzTmFtZSIsImJ1dHRvblJvdGF0ZVRpdGxlIiwiX29uQ2xpY2siLCJfb25HcmlkQ2hhbmdlIiwiX29uR3JpZElucHV0IiwiX29uS2V5RG93biIsIl9vblJlc2l6ZSIsImtleUNvZGUiLCJfY29uZmlybSIsIl9jYW5jZWwiLCJjbGFzc0xpc3QiLCJfcm90YXRlIiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwiX3JlZHJhd0Nyb3BwZXIiLCJhcmVhIiwiX3VwZGF0ZVdyYXBwZXJTY2FsZSIsIl9yZWRyYXdXcmFwcGVyIiwiX3JlZHJhd0Nyb3BNYXNrIiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJfdXBkYXRlV3JhcHBlclJvdGF0aW9uIiwicmF0aW8iLCJfaGlkZUNyb3BwZXIiLCJfc2hvd0Nyb3BwZXIiLCJmcm9tT3BhY2l0eSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiX3ByZXZpZXdTaXplIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJsaW1pdCIsInNjYWxhciIsInJlc2l6ZSIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0IiwiZnJvbVJvdGF0aW9uIiwiZnJvbVBvc2l0aW9uIiwiZnJvbVNjYWxlIiwiZGlydHkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJkZXN0cm95IiwicmVtb3ZlIiwiYWRkIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYnV0dG9uQ2FuY2VsQ2xhc3NOYW1lIiwiYnV0dG9uQ29uZmlybUNsYXNzTmFtZSIsImJ1dHRvbkNhbmNlbExhYmVsIiwiYnV0dG9uQ29uZmlybUxhYmVsIiwiYnV0dG9uQ2FuY2VsVGl0bGUiLCJidXR0b25Db25maXJtVGl0bGUiLCJMdCIsIl9hY2NlcHQiLCJfYWxsb3dVUkxzIiwiX2RyYWdQYXRoIiwiZmlsZXMiLCJhcmVWYWxpZERhdGFUcmFuc2ZlckZpbGVzIiwiaXRlbXMiLCJhcmVWYWxpZERhdGFUcmFuc2Zlckl0ZW1zIiwia2luZCIsIl9vbkRyYWdPdmVyIiwiX29uRHJhZ0xlYXZlIiwiX29uRHJvcCIsImRhdGFUcmFuc2ZlciIsImdldERhdGEiLCJyZW1vdGUiLCJpc1ZhbGlkRGF0YVRyYW5zZmVyIiwiZHJvcEVmZmVjdCIsIk90IiwiX2lubmVyIiwiZmlyc3RDaGlsZCIsInp0IiwiRHQiLCJub2RlTmFtZSIsIkF0IiwiQVVUTyIsIklOSVRJQUwiLCJNQU5VQUwiLCJVdCIsIkh0IiwiTnQiLCJCdCIsIkZ0IiwiV3QiLCJxdCIsImp0IiwiVnQiLCJHdCIsIl91aWQiLCJmb3JjZVNpemUiLCJwb3N0IiwidHJpbSIsIl9vcmlnaW5hbEVsZW1lbnQiLCJfb3JpZ2luYWxFbGVtZW50SW5uZXIiLCJfb3JpZ2luYWxFbGVtZW50QXR0cmlidXRlcyIsIl9zdGF0ZSIsIl90aW1lcnMiLCJfaW5wdXRSZWZlcmVuY2UiLCJfaXNSZXF1aXJlZCIsIl9pbWFnZUhvcHBlciIsIl9pbWFnZUVkaXRvciIsIl9wcm9ncmVzc0VuYWJsZWQiLCJfZGF0YSIsIl9yZXNldERhdGEiLCJfZHJpcCIsIl9oYXNJbml0aWFsSW1hZ2UiLCJfaW5pdGlhbENyb3AiLCJfaW5pdGlhbFJvdGF0aW9uIiwiX2lzQmVpbmdEZXN0cm95ZWQiLCJzdXBwb3J0ZWQiLCJfZmFsbGJhY2siLCJfbWFudWFsVHJhbnNmb3JtIiwic2V0UmF0aW8iLCJfaXNGaXhlZFJhdGlvIiwiX2Nyb3BBdXRvIiwiX3NjYWxlRHJvcEFyZWEiLCJfbG9hZCIsImJsb2NrUHVzaCIsIl9kb1VwbG9hZCIsIl9kb0Rvd25sb2FkIiwiX2RvUmVtb3ZlIiwiX2RvRGVzdHJveSIsIl9kb0VkaXQiLCJfY3JvcCIsImluc3RhbnRFZGl0IiwiX2lzSW5pdGlhbGlzaW5nIiwiX2dldEZpbGVJbnB1dCIsIl9nZXRJbml0aWFsSW1hZ2UiLCJfdXBkYXRlU3RhdGUiLCJfYWRkU3RhdGUiLCJfZ2V0SW5wdXRFbGVtZW50IiwicmVxdWlyZWQiLCJJbWFnZSIsImRlZmF1bHRJbnB1dE5hbWUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJnZXRBdHRyaWJ1dGUiLCJfaXNJbWFnZU9ubHkiLCJsYWJlbExvYWRpbmciLCJzZXJ2aWNlIiwiaGFzQXR0cmlidXRlIiwiYWNjZXB0IiwiYWxsb3dVUkxzIiwiZmV0Y2hlciIsImxhYmVsIiwiX2lzQnV0dG9uQWxsb3dlZCIsIl91cGRhdGVQcm9ncmVzcyIsIl9vbkluaXQiLCJkaWRJbml0Iiwic2F2ZUluaXRpYWxJbWFnZSIsImNvbnRhaW5zSW1hZ2UiLCJfc2F2ZSIsIl90b2dnbGVCdXR0b24iLCJxdWVyeVNlbGVjdG9yQWxsIiwiX3N0b3BQcm9ncmVzc0xvb3AiLCJwYXJzZUZsb2F0IiwiZWRpdCIsIl90aHJvd0Vycm9yIiwic3RhdHVzTm9TdXBwb3J0IiwiX29uQ2hhbmdlIiwiX29uQ2FuY2VsIiwiX29uQ29uZmlybSIsIl9vbkZpbGVPdmVyIiwiX29uRmlsZU91dCIsIl9vbkRyb3BGaWxlIiwiX29uSW52YWxpZEZpbGUiLCJfb25JbnZhbGlkRmlsZURyb3AiLCJkaWRUaHJvd0Vycm9yIiwiX3JlbW92ZVN0YXRlIiwiX3JlbW92ZUVycm9yIiwiX29wZW5GaWxlRGlhbG9nIiwid2lsbFJlbW92ZSIsIl9nZXREcmlwIiwic3RhdHVzRmlsZVR5cGUiLCJzdGF0dXNJbWFnZVRvb1NtYWxsIiwic3RhdHVzRmlsZVNpemUiLCJtYXhGaWxlU2l6ZSIsInN0YXR1c0xvY2FsVXJsUHJvYmxlbSIsImRyYWdQYXRoIiwiY2xlYXJUaW1lb3V0IiwiX3JlcGxhY2VUaW1lb3V0IiwiX3N0YXJ0UHJvZ3Jlc3NMb29wIiwiZW5hYmxlZCIsIl9sb2FkVGltZW91dCIsIndpbGxMb2FkIiwiX29uTG9jYWxVUkxQcm9ibGVtIiwid2lsbEZldGNoIiwiX29uUmVtb3RlVVJMUHJvYmxlbSIsIl9vbk92ZXJXZWlnaHRGaWxlIiwiaW50ZXJuYWxDYW52YXNTaXplIiwiX29uSW1hZ2VUb29TbWFsbCIsImRpZExvYWQiLCJkcm9wUmVwbGFjZSIsIl9nZXRJbnRybyIsImlzRGV0YWNoZWQiLCJfY2FuSW5zdGFudEVkaXQiLCJfbG9hZENhbnZhcyIsIl9zaG93QnV0dG9ucyIsIl9hcHBseVRyYW5zZm9ybXMiLCJfc3RhcnRQcm9ncmVzcyIsIl9zdG9wUHJvZ3Jlc3MiLCJ3aWxsQ3JvcEluaXRpYWwiLCJmaWx0ZXJTaGFycGVuIiwiZm9yY2VNaW5TaXplIiwiX29uVHJhbnNmb3JtQ2FudmFzIiwiZGlkVHJhbnNmb3JtIiwid2lsbFRyYW5zZm9ybSIsImJ1dHRvblJvdGF0ZUxhYmVsIiwiX2dldFJhdGlvU3BhY2VyRWxlbWVudCIsIm1hcmdpbkJvdHRvbSIsImRpZENhbmNlbCIsIl9oaWRlRWRpdG9yIiwiX2lzQXV0b0Nyb3AiLCJkaWRDb25maXJtIiwiX2dldEluT3V0IiwiekluZGV4IiwiX3Nob3dQcmV2aWV3IiwiZGF0YUJhc2U2NCIsIndpbGxTYXZlIiwiX3N0b3JlIiwiZGlkU2F2ZSIsIl91cGxvYWQiLCJfc3RvcmVTZXJ2ZXJSZXNwb25zZSIsImRpZFVwbG9hZCIsInJlcXVlc3RPdXRwdXQiLCJ3aWxsUmVxdWVzdCIsInN0YXR1c1VwbG9hZFN1Y2Nlc3MiLCJzdGF0dXNDb250ZW50TGVuZ3RoIiwiZGlkUmVjZWl2ZVNlcnZlckVycm9yIiwic3RhdHVzVW5rbm93blJlc3BvbnNlIiwidXBsb2FkTWV0aG9kIiwic2VydmljZUZvcm1hdCIsIkZvcm1EYXRhIiwidXBsb2FkQmFzZTY0IiwiY29weUltYWdlSGVhZCIsInBvcG92ZXJDbGFzc05hbWUiLCJzaG93IiwiaGlkZSIsIl9hcHBlbmRFZGl0b3IiLCJzaG93Um90YXRlQnV0dG9uIiwicm90YXRlQnV0dG9uIiwiaW5uZXIiLCJfc2hvd0VkaXRvciIsIl9oaWRlQnV0dG9ucyIsIl9oaWRlU3RhdHVzIiwiX2NsZWFyU3RhdGUiLCJfZ2V0T3V0cm8iLCJfaGlkZVJlc3VsdCIsImRpZFJlbW92ZSIsImpwZWdDb21wcmVzc2lvbiIsImZvcmNlVHlwZSIsInJlcGxhY2VDaGlsZCIsInNldFNpemUiLCJzZXRSb3RhdGlvbiIsInNldEZvcmNlU2l6ZSIsImlzQXR0YWNoZWRUbyIsIm9wZXJhbWluaSIsImNyZWF0ZSIsImdldE9wdGlvbnNGcm9tQXR0cmlidXRlcyIsImZpbmQiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIl0sInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvc2xpbS5raWNrc3RhcnQubWluLmpzP2M1MTciXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFNsaW0gdjQuMTkuMCAtIEltYWdlIENyb3BwaW5nIE1hZGUgRWFzeVxuICogQ29weXJpZ2h0IChjKSAyMDE4IFJpayBTY2hlbm5pbmsgLSBodHRwOi8vc2xpbWltYWdlY3JvcHBlci5jb21cbiAqL1xuIWZ1bmN0aW9uICh0LCBlKSB7XG4gICAgZnVuY3Rpb24gaSgpIHtcbiAgICAgICAgdC5TbGltLnBhcnNlKGRvY3VtZW50KVxuICAgIH1cblxuICAgIGlmICh0KSBpZiAodC5TbGltID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiB0KHQsIGUpIHtcbiAgICAgICAgICAgIGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaSh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICBpZiAoIShlID49IDEpKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IHQud2lkdGgsIGEgPSB0LmhlaWdodCwgciA9IE1hdGgubWF4KG4ud2lkdGgsIE1hdGgubWluKGkud2lkdGgsIE1hdGgucm91bmQodC53aWR0aCAqIGUpKSksIHMgPSBNYXRoLm1heChuLmhlaWdodCwgTWF0aC5taW4oaS5oZWlnaHQsIE1hdGgucm91bmQodC5oZWlnaHQgKiBlKSkpLCBoID0gc3QodCksIHUgPSB2b2lkIDAsIGwgPSB2b2lkIDA7IG8gPiByICYmIGEgPiBzOykgdSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksIG8gPSBNYXRoLnJvdW5kKC41ICogaC53aWR0aCksIGEgPSBNYXRoLnJvdW5kKC41ICogaC5oZWlnaHQpLCBvIDwgciAmJiAobyA9IHIpLCBhIDwgcyAmJiAoYSA9IHMpLCB1LndpZHRoID0gbywgdS5oZWlnaHQgPSBhLCBsID0gdS5nZXRDb250ZXh0KFwiMmRcIiksIGwuZHJhd0ltYWdlKGgsIDAsIDAsIG8sIGEpLCBoID0gc3QodSk7XG4gICAgICAgICAgICAgICAgdC53aWR0aCA9IHIsIHQuaGVpZ2h0ID0gcywgbCA9IHQuZ2V0Q29udGV4dChcIjJkXCIpLCBsLmRyYXdJbWFnZShoLCAwLCAwLCByLCBzKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgIWZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgaSkge1xuICAgICAgICAgICAgICAgIGkgPSBpIHx8IHtidWJibGVzOiAhMSwgY2FuY2VsYWJsZTogITEsIGRldGFpbDogZX07XG4gICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuLmluaXRDdXN0b21FdmVudCh0LCBpLmJ1YmJsZXMsIGkuY2FuY2VsYWJsZSwgaS5kZXRhaWwpLCBuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHdpbmRvdy5DdXN0b21FdmVudCAmJiAodC5wcm90b3R5cGUgPSB3aW5kb3cuRXZlbnQucHJvdG90eXBlLCB2b2lkKHdpbmRvdy5DdXN0b21FdmVudCA9IHQpKVxuICAgICAgICB9KCk7XG4gICAgICAgIHZhciBuID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbywgYSwgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gICAgICAgICAgICAgICAgaWYgKHIub25lcnJvciA9IGUsIHIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAhYSB8fCBpICYmIGkubm9SZXZva2UgfHwgbi5yZXZva2VPYmplY3RVUkwoYSksIGUgJiYgZShuLnNjYWxlKHIsIGkpKVxuICAgICAgICAgICAgICAgIH0sIG4uaXNJbnN0YW5jZU9mKFwiQmxvYlwiLCB0KSB8fCBuLmlzSW5zdGFuY2VPZihcIkZpbGVcIiwgdCkpIG8gPSBhID0gbi5jcmVhdGVPYmplY3RVUkwodCksIHIuX3R5cGUgPSB0LnR5cGU7IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiAhPSB0eXBlb2YgdCkgcmV0dXJuICExO1xuICAgICAgICAgICAgICAgICAgICBvID0gdCwgaSAmJiBpLmNyb3NzT3JpZ2luICYmIChyLmNyb3NzT3JpZ2luID0gaS5jcm9zc09yaWdpbilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG8gPyAoci5zcmMgPSBvLCByKSA6IG4ucmVhZEZpbGUodCwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgaSAmJiBpLnJlc3VsdCA/IHIuc3JjID0gaS5yZXN1bHQgOiBlICYmIGUodClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG8gPSB3aW5kb3cuY3JlYXRlT2JqZWN0VVJMICYmIHdpbmRvdyB8fCB3aW5kb3cuVVJMICYmIFVSTC5yZXZva2VPYmplY3RVUkwgJiYgVVJMIHx8IHdpbmRvdy53ZWJraXRVUkwgJiYgd2Via2l0VVJMO1xuICAgICAgICBuLmlzSW5zdGFuY2VPZiA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpID09PSBcIltvYmplY3QgXCIgKyB0ICsgXCJdXCJcbiAgICAgICAgfSwgbi50cmFuc2Zvcm1Db29yZGluYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgfSwgbi5nZXRUcmFuc2Zvcm1lZE9wdGlvbnMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgdmFyIGksIG4sIG8sIGEsIHIgPSBlLmFzcGVjdFJhdGlvO1xuICAgICAgICAgICAgaWYgKCFyKSByZXR1cm4gZTtcbiAgICAgICAgICAgIGkgPSB7fTtcbiAgICAgICAgICAgIGZvciAobiBpbiBlKSBlLmhhc093blByb3BlcnR5KG4pICYmIChpW25dID0gZVtuXSk7XG4gICAgICAgICAgICByZXR1cm4gaS5jcm9wID0gITAsIG8gPSB0Lm5hdHVyYWxXaWR0aCB8fCB0LndpZHRoLCBhID0gdC5uYXR1cmFsSGVpZ2h0IHx8IHQuaGVpZ2h0LCBvIC8gYSA+IHIgPyAoaS5tYXhXaWR0aCA9IGEgKiByLCBpLm1heEhlaWdodCA9IGEpIDogKGkubWF4V2lkdGggPSBvLCBpLm1heEhlaWdodCA9IG8gLyByKSwgaVxuICAgICAgICB9LCBuLnJlbmRlckltYWdlVG9DYW52YXMgPSBmdW5jdGlvbiAodCwgZSwgaSwgbiwgbywgYSwgciwgcywgaCwgdSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuZ2V0Q29udGV4dChcIjJkXCIpLmRyYXdJbWFnZShlLCBpLCBuLCBvLCBhLCByLCBzLCBoLCB1KSwgdFxuICAgICAgICB9LCBuLmhhc0NhbnZhc09wdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdC5jYW52YXMgfHwgdC5jcm9wIHx8ICEhdC5hc3BlY3RSYXRpb1xuICAgICAgICB9LCBuLnNjYWxlID0gZnVuY3Rpb24gKHQsIGkpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIG8oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSBNYXRoLm1heCgoaCB8fCBiKSAvIGIsICh1IHx8IGspIC8gayk7XG4gICAgICAgICAgICAgICAgdCA+IDEgJiYgKGIgKj0gdCwgayAqPSB0KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBhKCkge1xuICAgICAgICAgICAgICAgIHZhciB0ID0gTWF0aC5taW4oKHIgfHwgYikgLyBiLCAocyB8fCBrKSAvIGspO1xuICAgICAgICAgICAgICAgIHQgPCAxICYmIChiICo9IHQsIGsgKj0gdClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaSA9IGkgfHwge307XG4gICAgICAgICAgICB2YXIgciwgcywgaCwgdSwgbCwgcCwgYywgZCwgZiwgXywgbSwgZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksXG4gICAgICAgICAgICAgICAgdiA9IHQuZ2V0Q29udGV4dCB8fCBuLmhhc0NhbnZhc09wdGlvbihpKSAmJiBnLmdldENvbnRleHQsIHkgPSB0Lm5hdHVyYWxXaWR0aCB8fCB0LndpZHRoLFxuICAgICAgICAgICAgICAgIHcgPSB0Lm5hdHVyYWxIZWlnaHQgfHwgdC5oZWlnaHQsIGIgPSB5LCBrID0gdztcbiAgICAgICAgICAgIGlmICh2ICYmIChpID0gbi5nZXRUcmFuc2Zvcm1lZE9wdGlvbnModCwgaSksIGMgPSBpLmxlZnQgfHwgMCwgZCA9IGkudG9wIHx8IDAsIGkuc291cmNlV2lkdGggPyAobCA9IGkuc291cmNlV2lkdGgsIGkucmlnaHQgIT09IGUgJiYgaS5sZWZ0ID09PSBlICYmIChjID0geSAtIGwgLSBpLnJpZ2h0KSkgOiBsID0geSAtIGMgLSAoaS5yaWdodCB8fCAwKSwgaS5zb3VyY2VIZWlnaHQgPyAocCA9IGkuc291cmNlSGVpZ2h0LCBpLmJvdHRvbSAhPT0gZSAmJiBpLnRvcCA9PT0gZSAmJiAoZCA9IHcgLSBwIC0gaS5ib3R0b20pKSA6IHAgPSB3IC0gZCAtIChpLmJvdHRvbSB8fCAwKSwgYiA9IGwsIGsgPSBwKSwgciA9IGkubWF4V2lkdGgsIHMgPSBpLm1heEhlaWdodCwgaCA9IGkubWluV2lkdGgsIHUgPSBpLm1pbkhlaWdodCwgdiAmJiByICYmIHMgJiYgaS5jcm9wID8gKGIgPSByLCBrID0gcywgbSA9IGwgLyBwIC0gciAvIHMsIG0gPCAwID8gKHAgPSBzICogbCAvIHIsIGkudG9wID09PSBlICYmIGkuYm90dG9tID09PSBlICYmIChkID0gKHcgLSBwKSAvIDIpKSA6IG0gPiAwICYmIChsID0gciAqIHAgLyBzLCBpLmxlZnQgPT09IGUgJiYgaS5yaWdodCA9PT0gZSAmJiAoYyA9ICh5IC0gbCkgLyAyKSkpIDogKChpLmNvbnRhaW4gfHwgaS5jb3ZlcikgJiYgKGggPSByID0gciB8fCBoLCB1ID0gcyA9IHMgfHwgdSksIGkuY292ZXIgPyAoYSgpLCBvKCkpIDogKG8oKSwgYSgpKSksIHYpIHtcbiAgICAgICAgICAgICAgICBpZiAoZiA9IGkucGl4ZWxSYXRpbywgZiA+IDEgJiYgKGcuc3R5bGUud2lkdGggPSBiICsgXCJweFwiLCBnLnN0eWxlLmhlaWdodCA9IGsgKyBcInB4XCIsIGIgKj0gZiwgayAqPSBmLCBnLmdldENvbnRleHQoXCIyZFwiKS5zY2FsZShmLCBmKSksIF8gPSBpLmRvd25zYW1wbGluZ1JhdGlvLCBfID4gMCAmJiBfIDwgMSAmJiBiIDwgbCAmJiBrIDwgcCkgZm9yICg7IGwgKiBfID4gYjspIGcud2lkdGggPSBsICogXywgZy5oZWlnaHQgPSBwICogXywgbi5yZW5kZXJJbWFnZVRvQ2FudmFzKGcsIHQsIGMsIGQsIGwsIHAsIDAsIDAsIGcud2lkdGgsIGcuaGVpZ2h0KSwgbCA9IGcud2lkdGgsIHAgPSBnLmhlaWdodCwgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksIHQud2lkdGggPSBsLCB0LmhlaWdodCA9IHAsIG4ucmVuZGVySW1hZ2VUb0NhbnZhcyh0LCBnLCAwLCAwLCBsLCBwLCAwLCAwLCBsLCBwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZy53aWR0aCA9IGIsIGcuaGVpZ2h0ID0gaywgbi50cmFuc2Zvcm1Db29yZGluYXRlcyhnLCBpKSwgbi5yZW5kZXJJbWFnZVRvQ2FudmFzKGcsIHQsIGMsIGQsIGwsIHAsIDAsIDAsIGIsIGspXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdC53aWR0aCA9IGIsIHQuaGVpZ2h0ID0gaywgdFxuICAgICAgICB9LCBuLmNyZWF0ZU9iamVjdFVSTCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gISFvICYmIG8uY3JlYXRlT2JqZWN0VVJMKHQpXG4gICAgICAgIH0sIG4ucmV2b2tlT2JqZWN0VVJMID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIW8gJiYgby5yZXZva2VPYmplY3RVUkwodClcbiAgICAgICAgfSwgbi5yZWFkRmlsZSA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICBpZiAod2luZG93LkZpbGVSZWFkZXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgbiA9IG5ldyBGaWxlUmVhZGVyO1xuICAgICAgICAgICAgICAgIGlmIChuLm9ubG9hZCA9IG4ub25lcnJvciA9IGUsIGkgPSBpIHx8IFwicmVhZEFzRGF0YVVSTFwiLCBuW2ldKSByZXR1cm4gbltpXSh0KSwgblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICExXG4gICAgICAgIH07XG4gICAgICAgIHZhciBhID0gbi5oYXNDYW52YXNPcHRpb24sIHIgPSBuLnRyYW5zZm9ybUNvb3JkaW5hdGVzLCBzID0gbi5nZXRUcmFuc2Zvcm1lZE9wdGlvbnM7XG4gICAgICAgIG4uaGFzQ2FudmFzT3B0aW9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXQub3JpZW50YXRpb24gfHwgYS5jYWxsKG4sIHQpXG4gICAgICAgIH0sIG4udHJhbnNmb3JtQ29vcmRpbmF0ZXMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgci5jYWxsKG4sIHQsIGUpO1xuICAgICAgICAgICAgdmFyIGkgPSB0LmdldENvbnRleHQoXCIyZFwiKSwgbyA9IHQud2lkdGgsIGEgPSB0LmhlaWdodCwgcyA9IHQuc3R5bGUud2lkdGgsIGggPSB0LnN0eWxlLmhlaWdodCxcbiAgICAgICAgICAgICAgICB1ID0gZS5vcmllbnRhdGlvbjtcbiAgICAgICAgICAgIGlmICh1ICYmICEodSA+IDgpKSBzd2l0Y2ggKHUgPiA0ICYmICh0LndpZHRoID0gYSwgdC5oZWlnaHQgPSBvLCB0LnN0eWxlLndpZHRoID0gaCwgdC5zdHlsZS5oZWlnaHQgPSBzKSwgdSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgaS50cmFuc2xhdGUobywgMCksIGkuc2NhbGUoLTEsIDEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGkudHJhbnNsYXRlKG8sIGEpLCBpLnJvdGF0ZShNYXRoLlBJKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBpLnRyYW5zbGF0ZSgwLCBhKSwgaS5zY2FsZSgxLCAtMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgaS5yb3RhdGUoLjUgKiBNYXRoLlBJKSwgaS5zY2FsZSgxLCAtMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgaS5yb3RhdGUoLjUgKiBNYXRoLlBJKSwgaS50cmFuc2xhdGUoMCwgLWEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgIGkucm90YXRlKC41ICogTWF0aC5QSSksIGkudHJhbnNsYXRlKG8sIC1hKSwgaS5zY2FsZSgtMSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgaS5yb3RhdGUoLS41ICogTWF0aC5QSSksIGkudHJhbnNsYXRlKC1vLCAwKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBuLmdldFRyYW5zZm9ybWVkT3B0aW9ucyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICB2YXIgaSwgbywgYSA9IHMuY2FsbChuLCB0LCBlKSwgciA9IGEub3JpZW50YXRpb247XG4gICAgICAgICAgICBpZiAoIXIgfHwgciA+IDggfHwgMSA9PT0gcikgcmV0dXJuIGE7XG4gICAgICAgICAgICBpID0ge307XG4gICAgICAgICAgICBmb3IgKG8gaW4gYSkgYS5oYXNPd25Qcm9wZXJ0eShvKSAmJiAoaVtvXSA9IGFbb10pO1xuICAgICAgICAgICAgc3dpdGNoIChhLm9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpLmxlZnQgPSBhLnJpZ2h0LCBpLnJpZ2h0ID0gYS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGkubGVmdCA9IGEucmlnaHQsIGkudG9wID0gYS5ib3R0b20sIGkucmlnaHQgPSBhLmxlZnQsIGkuYm90dG9tID0gYS50b3A7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgaS50b3AgPSBhLmJvdHRvbSwgaS5ib3R0b20gPSBhLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBpLmxlZnQgPSBhLnRvcCwgaS50b3AgPSBhLmxlZnQsIGkucmlnaHQgPSBhLmJvdHRvbSwgaS5ib3R0b20gPSBhLnJpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgIGkubGVmdCA9IGEudG9wLCBpLnRvcCA9IGEucmlnaHQsIGkucmlnaHQgPSBhLmJvdHRvbSwgaS5ib3R0b20gPSBhLmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICAgICAgaS5sZWZ0ID0gYS5ib3R0b20sIGkudG9wID0gYS5yaWdodCwgaS5yaWdodCA9IGEudG9wLCBpLmJvdHRvbSA9IGEubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICBpLmxlZnQgPSBhLmJvdHRvbSwgaS50b3AgPSBhLmxlZnQsIGkucmlnaHQgPSBhLnRvcCwgaS5ib3R0b20gPSBhLnJpZ2h0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5vcmllbnRhdGlvbiA+IDQgJiYgKGkubWF4V2lkdGggPSBhLm1heEhlaWdodCwgaS5tYXhIZWlnaHQgPSBhLm1heFdpZHRoLCBpLm1pbldpZHRoID0gYS5taW5IZWlnaHQsIGkubWluSGVpZ2h0ID0gYS5taW5XaWR0aCwgaS5zb3VyY2VXaWR0aCA9IGEuc291cmNlSGVpZ2h0LCBpLnNvdXJjZUhlaWdodCA9IGEuc291cmNlV2lkdGgpLCBpXG4gICAgICAgIH07XG4gICAgICAgIHZhciBoID0gd2luZG93LkJsb2IgJiYgKEJsb2IucHJvdG90eXBlLnNsaWNlIHx8IEJsb2IucHJvdG90eXBlLndlYmtpdFNsaWNlIHx8IEJsb2IucHJvdG90eXBlLm1velNsaWNlKTtcbiAgICAgICAgbi5ibG9iU2xpY2UgPSBoICYmIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5zbGljZSB8fCB0aGlzLndlYmtpdFNsaWNlIHx8IHRoaXMubW96U2xpY2U7XG4gICAgICAgICAgICByZXR1cm4gdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgIH0sIG4ubWV0YURhdGFQYXJzZXJzID0ge2pwZWc6IHs2NTUwNTogW119fSwgbi5wYXJzZU1ldGFEYXRhID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgIGkgPSBpIHx8IHt9O1xuICAgICAgICAgICAgdmFyIG8gPSB0aGlzLCBhID0gaS5tYXhNZXRhRGF0YVNpemUgfHwgMjYyMTQ0LCByID0ge30sXG4gICAgICAgICAgICAgICAgcyA9ICEod2luZG93LkRhdGFWaWV3ICYmIHQgJiYgdC5zaXplID49IDEyICYmIFwiaW1hZ2UvanBlZ1wiID09PSB0LnR5cGUgJiYgbi5ibG9iU2xpY2UpO1xuICAgICAgICAgICAgIXMgJiYgbi5yZWFkRmlsZShuLmJsb2JTbGljZS5jYWxsKHQsIDAsIGEpLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGlmICh0LnRhcmdldC5lcnJvcikgcmV0dXJuIHZvaWQgZShyKTtcbiAgICAgICAgICAgICAgICB2YXIgYSwgcywgaCwgdSwgbCA9IHQudGFyZ2V0LnJlc3VsdCwgcCA9IG5ldyBEYXRhVmlldyhsKSwgYyA9IDIsIGQgPSBwLmJ5dGVMZW5ndGggLSA0LCBmID0gYztcbiAgICAgICAgICAgICAgICBpZiAoNjU0OTYgPT09IHAuZ2V0VWludDE2KDApKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoOyBjIDwgZCAmJiAoYSA9IHAuZ2V0VWludDE2KGMpLCBhID49IDY1NTA0ICYmIGEgPD0gNjU1MTkgfHwgNjU1MzQgPT09IGEpICYmIChzID0gcC5nZXRVaW50MTYoYyArIDIpICsgMiwgIShjICsgcyA+IHAuYnl0ZUxlbmd0aCkpOykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBuLm1ldGFEYXRhUGFyc2Vycy5qcGVnW2FdKSBmb3IgKHUgPSAwOyB1IDwgaC5sZW5ndGg7IHUgKz0gMSkgaFt1XS5jYWxsKG8sIHAsIGMsIHMsIHIsIGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYyArPSBzLCBmID0gY1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICFpLmRpc2FibGVJbWFnZUhlYWQgJiYgZiA+IDYgJiYgKGwuc2xpY2UgPyByLmltYWdlSGVhZCA9IGwuc2xpY2UoMCwgZikgOiByLmltYWdlSGVhZCA9IG5ldyBVaW50OEFycmF5KGwpLnN1YmFycmF5KDAsIGYpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlKHIpXG4gICAgICAgICAgICB9LCBcInJlYWRBc0FycmF5QnVmZmVyXCIpIHx8IGUocilcbiAgICAgICAgfSwgbi5FeGlmTWFwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgfSwgbi5FeGlmTWFwLnByb3RvdHlwZS5tYXAgPSB7T3JpZW50YXRpb246IDI3NH0sIG4uRXhpZk1hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3RdIHx8IHRoaXNbdGhpcy5tYXBbdF1dXG4gICAgICAgIH0sIG4uZ2V0RXhpZlRodW1ibmFpbCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICB2YXIgbiwgbywgYTtcbiAgICAgICAgICAgIGlmIChpICYmICEoZSArIGkgPiB0LmJ5dGVMZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChuID0gW10sIG8gPSAwOyBvIDwgaTsgbyArPSAxKSBhID0gdC5nZXRVaW50OChlICsgbyksIG4ucHVzaCgoYSA8IDE2ID8gXCIwXCIgOiBcIlwiKSArIGEudG9TdHJpbmcoMTYpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJkYXRhOmltYWdlL2pwZWcsJVwiICsgbi5qb2luKFwiJVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBuLmV4aWZUYWdUeXBlcyA9IHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZ2V0VWludDgoZSlcbiAgICAgICAgICAgICAgICB9LCBzaXplOiAxXG4gICAgICAgICAgICB9LCAyOiB7XG4gICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDgoZSkpXG4gICAgICAgICAgICAgICAgfSwgc2l6ZTogMSwgYXNjaWk6ICEwXG4gICAgICAgICAgICB9LCAzOiB7XG4gICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmdldFVpbnQxNihlLCBpKVxuICAgICAgICAgICAgICAgIH0sIHNpemU6IDJcbiAgICAgICAgICAgIH0sIDQ6IHtcbiAgICAgICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZ2V0VWludDMyKGUsIGkpXG4gICAgICAgICAgICAgICAgfSwgc2l6ZTogNFxuICAgICAgICAgICAgfSwgNToge1xuICAgICAgICAgICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRVaW50MzIoZSwgaSkgLyB0LmdldFVpbnQzMihlICsgNCwgaSlcbiAgICAgICAgICAgICAgICB9LCBzaXplOiA4XG4gICAgICAgICAgICB9LCA5OiB7XG4gICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmdldEludDMyKGUsIGkpXG4gICAgICAgICAgICAgICAgfSwgc2l6ZTogNFxuICAgICAgICAgICAgfSwgMTA6IHtcbiAgICAgICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZ2V0SW50MzIoZSwgaSkgLyB0LmdldEludDMyKGUgKyA0LCBpKVxuICAgICAgICAgICAgICAgIH0sIHNpemU6IDhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbi5leGlmVGFnVHlwZXNbN10gPSBuLmV4aWZUYWdUeXBlc1sxXSwgbi5nZXRFeGlmVmFsdWUgPSBmdW5jdGlvbiAodCwgZSwgaSwgbywgYSwgcikge1xuICAgICAgICAgICAgdmFyIHMsIGgsIHUsIGwsIHAsIGMsIGQgPSBuLmV4aWZUYWdUeXBlc1tvXTtcbiAgICAgICAgICAgIGlmIChkICYmIChzID0gZC5zaXplICogYSwgaCA9IHMgPiA0ID8gZSArIHQuZ2V0VWludDMyKGkgKyA4LCByKSA6IGkgKyA4LCAhKGggKyBzID4gdC5ieXRlTGVuZ3RoKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoMSA9PT0gYSkgcmV0dXJuIGQuZ2V0VmFsdWUodCwgaCwgcik7XG4gICAgICAgICAgICAgICAgZm9yICh1ID0gW10sIGwgPSAwOyBsIDwgYTsgbCArPSAxKSB1W2xdID0gZC5nZXRWYWx1ZSh0LCBoICsgbCAqIGQuc2l6ZSwgcik7XG4gICAgICAgICAgICAgICAgaWYgKGQuYXNjaWkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gXCJcIiwgbCA9IDA7IGwgPCB1Lmxlbmd0aCAmJiAoYyA9IHVbbF0sIFwiXFwwXCIgIT09IGMpOyBsICs9IDEpIHAgKz0gYztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbi5wYXJzZUV4aWZUYWcgPSBmdW5jdGlvbiAodCwgZSwgaSwgbywgYSkge1xuICAgICAgICAgICAgdmFyIHIgPSB0LmdldFVpbnQxNihpLCBvKTtcbiAgICAgICAgICAgIGEuZXhpZltyXSA9IG4uZ2V0RXhpZlZhbHVlKHQsIGUsIGksIHQuZ2V0VWludDE2KGkgKyAyLCBvKSwgdC5nZXRVaW50MzIoaSArIDQsIG8pLCBvKVxuICAgICAgICB9LCBuLnBhcnNlRXhpZlRhZ3MgPSBmdW5jdGlvbiAodCwgZSwgaSwgbiwgbykge1xuICAgICAgICAgICAgdmFyIGEsIHIsIHM7XG4gICAgICAgICAgICBpZiAoIShpICsgNiA+IHQuYnl0ZUxlbmd0aCB8fCAoYSA9IHQuZ2V0VWludDE2KGksIG4pLCByID0gaSArIDIgKyAxMiAqIGEsIHIgKyA0ID4gdC5ieXRlTGVuZ3RoKSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHMgPSAwOyBzIDwgYTsgcyArPSAxKSB0aGlzLnBhcnNlRXhpZlRhZyh0LCBlLCBpICsgMiArIDEyICogcywgbiwgbyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQuZ2V0VWludDMyKHIsIG4pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG4ucGFyc2VFeGlmRGF0YSA9IGZ1bmN0aW9uICh0LCBlLCBpLCBvLCBhKSB7XG4gICAgICAgICAgICBpZiAoIWEuZGlzYWJsZUV4aWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgciwgcywgaCwgdSA9IGUgKyAxMDtcbiAgICAgICAgICAgICAgICBpZiAoMTE2NTUxOTIwNiA9PT0gdC5nZXRVaW50MzIoZSArIDQpICYmICEodSArIDggPiB0LmJ5dGVMZW5ndGgpICYmIDAgPT09IHQuZ2V0VWludDE2KGUgKyA4KSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQuZ2V0VWludDE2KHUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE4NzYxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk3ODk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA0MiA9PT0gdC5nZXRVaW50MTYodSArIDIsIHIpICYmIChzID0gdC5nZXRVaW50MzIodSArIDQsIHIpLCBvLmV4aWYgPSBuZXcgbi5FeGlmTWFwLCBzID0gbi5wYXJzZUV4aWZUYWdzKHQsIHUsIHUgKyBzLCByLCBvKSwgcyAmJiAhYS5kaXNhYmxlRXhpZlRodW1ibmFpbCAmJiAoaCA9IHtleGlmOiB7fX0sIHMgPSBuLnBhcnNlRXhpZlRhZ3ModCwgdSwgdSArIHMsIHIsIGgpLCBoLmV4aWZbNTEzXSAmJiAoby5leGlmLlRodW1ibmFpbCA9IG4uZ2V0RXhpZlRodW1ibmFpbCh0LCB1ICsgaC5leGlmWzUxM10sIGguZXhpZls1MTRdKSkpLCBvLmV4aWZbMzQ2NjVdICYmICFhLmRpc2FibGVFeGlmU3ViICYmIG4ucGFyc2VFeGlmVGFncyh0LCB1LCB1ICsgby5leGlmWzM0NjY1XSwgciwgbyksIG8uZXhpZlszNDg1M10gJiYgIWEuZGlzYWJsZUV4aWZHcHMgJiYgbi5wYXJzZUV4aWZUYWdzKHQsIHUsIHUgKyBvLmV4aWZbMzQ4NTNdLCByLCBvKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG4ubWV0YURhdGFQYXJzZXJzLmpwZWdbNjU1MDVdLnB1c2gobi5wYXJzZUV4aWZEYXRhKTtcbiAgICAgICAgdmFyIHUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdCA9IFtdLCBpID0gW10sIG4gPSBbXSwgbyA9IFwidHJhbnNmb3JtXCIsIGEgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIFwiXCIpLFxuICAgICAgICAgICAgICAgIHIgPSAoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSkuam9pbihcIlwiKS5tYXRjaCgvLShtb3p8d2Via2l0fG1zKS0vKSB8fCBcIlwiID09PSBhLk9MaW5rICYmIFtcIlwiLCBcIm9cIl0pWzFdO1xuICAgICAgICAgICAgXCJ3ZWJraXRcIiA9PT0gciAmJiAobyA9IFwid2Via2l0VHJhbnNmb3JtXCIpO1xuICAgICAgICAgICAgdmFyIHMgPSBmdW5jdGlvbiAodCwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvLmxlbmd0aCAhPT0gZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFpbmVyczogW10sIHRoZW46IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNuYWJidCh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNuYWJidDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmNoYWluZXJzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5zbmFiYnQoaCh0LCBuLCBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzZXRWYWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXRWYWx1ZSh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZpbmlzaDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFpbmVycy5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmZpbmlzaCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcm9sbGJhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5lcnMuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5yb2xsYmFjaygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgciA9IDAsIHMgPSBvLmxlbmd0aDsgciA8IHM7ICsrcikgXCJzdHJpbmdcIiA9PSB0eXBlb2YgaSA/IGEuY2hhaW5lcnMucHVzaCh1KG9bcl0sIGksIGgobiwgciwgcykpKSA6IGEuY2hhaW5lcnMucHVzaCh1KG9bcl0sIGgoaSwgciwgcyksIG4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic3RyaW5nXCIgPT0gdHlwZW9mIGkgPyB1KG8sIGksIGgobiwgMCwgMSkpIDogdShvLCBoKGksIDAsIDEpLCBuKVxuICAgICAgICAgICAgICAgIH0sIGggPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiB0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICQodCk7XG4gICAgICAgICAgICAgICAgICAgIEoodC5kZWxheSkgJiYgKG4uZGVsYXkgPSB0LmRlbGF5KGUsIGkpKSwgSih0LmNhbGxiYWNrKSAmJiAobi5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuY2FsbGJhY2suY2FsbCh0aGlzLCBlLCBpKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBKKHQuYWxsRG9uZSksIGEgPSBKKHQuY29tcGxldGUpO1xuICAgICAgICAgICAgICAgICAgICAoYSB8fCBvKSAmJiAobi5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgJiYgdC5jb21wbGV0ZS5jYWxsKHRoaXMsIGUsIGkpLCBvICYmIGUgPT0gaSAtIDEgJiYgdC5hbGxEb25lKClcbiAgICAgICAgICAgICAgICAgICAgfSksIEoodC52YWx1ZUZlZWRlcikgJiYgKG4udmFsdWVGZWVkZXIgPSBmdW5jdGlvbiAobiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudmFsdWVGZWVkZXIobiwgbywgZSwgaSlcbiAgICAgICAgICAgICAgICAgICAgfSksIEoodC5lYXNpbmcpICYmIChuLmVhc2luZyA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5lYXNpbmcobiwgZSwgaSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gW1wicG9zaXRpb25cIiwgXCJyb3RhdGlvblwiLCBcInNrZXdcIiwgXCJyb3RhdGlvblBvc3RcIiwgXCJzY2FsZVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwib3BhY2l0eVwiLCBcImZyb21Qb3NpdGlvblwiLCBcImZyb21Sb3RhdGlvblwiLCBcImZyb21Ta2V3XCIsIFwiZnJvbVJvdGF0aW9uUG9zdFwiLCBcImZyb21TY2FsZVwiLCBcImZyb21XaWR0aFwiLCBcImZyb21IZWlnaHRcIiwgXCJmcm9tT3BhY2l0eVwiLCBcInRyYW5zZm9ybU9yaWdpblwiLCBcImR1cmF0aW9uXCIsIFwiZGVsYXlcIl07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByLmZvckVhY2goZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEoodFtvXSkgJiYgKG5bb10gPSB0W29dKGUsIGkpKVxuICAgICAgICAgICAgICAgICAgICB9KSwgblxuICAgICAgICAgICAgICAgIH0sIHUgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmLnRpY2soZSksIGYudXBkYXRlRWxlbWVudCh0KSwgIWYuaXNTdG9wcGVkKCkpIHJldHVybiBmLmNvbXBsZXRlZCgpID8gdm9pZChhLmxvb3AgPiAxICYmICFmLmlzU3RvcHBlZCgpID8gKGEubG9vcCAtPSAxLCBmLnJlc3RhcnQoKSwgayhvKSkgOiAoYS5jb21wbGV0ZSAmJiBhLmNvbXBsZXRlLmNhbGwodCksIF8ubGVuZ3RoICYmIChhID0gXy5wb3AoKSwgcyA9IHkoYSwgdSwgITApLCB1ID0geShhLCAkKHUpKSwgYSA9IHcocywgdSwgYSksIGYgPSBTKGEpLCBpLnB1c2goW3QsIGZdKSwgZi50aWNrKGUpLCBrKG8pKSkpIDogayhvKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFwiYXR0ZW50aW9uXCIgPT09IGUpIHJldHVybiBsKHQsIG4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJzdG9wXCIgPT09IGUpIHJldHVybiBwKHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJkZXRhY2hcIiA9PT0gZSkgcmV0dXJuIGQodCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gZTtcbiAgICAgICAgICAgICAgICAgICAgbSgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHYodCksIHMgPSByO1xuICAgICAgICAgICAgICAgICAgICBzID0geShhLCBzLCAhMCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1ID0gJChyKTtcbiAgICAgICAgICAgICAgICAgICAgdSA9IHkoYSwgdSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjID0gdyhzLCB1LCBhKSwgZiA9IFMoYyk7XG4gICAgICAgICAgICAgICAgICAgIGkucHVzaChbdCwgZl0pLCBmLnVwZGF0ZUVsZW1lbnQodCwgITApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IFtdLCBnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc25hYmJ0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLnVuc2hpZnQoaCh0LCAwLCAxKSksIGdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoZW46IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc25hYmJ0KHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrKG8pLCBhLm1hbnVhbCA/IGYgOiBnXG4gICAgICAgICAgICAgICAgfSwgbCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYS50aWNrKGkpLCBhLnVwZGF0ZUVsZW1lbnQodCksIGEuY29tcGxldGVkKCkgPyAoZS5jYWxsYmFjayAmJiBlLmNhbGxiYWNrKHQpLCBlLmxvb3AgJiYgZS5sb29wID4gMSAmJiAoZS5sb29wLS0sIGEucmVzdGFydCgpLCBrKG4pKSkgOiBrKG4pXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHkoZSwgcSh7fSkpO1xuICAgICAgICAgICAgICAgICAgICBlLm1vdmVtZW50ID0gbztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBFKGUpO1xuICAgICAgICAgICAgICAgICAgICBpLnB1c2goW3QsIGFdKSwgayhuKVxuICAgICAgICAgICAgICAgIH0sIHAgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgbiA9IGkubGVuZ3RoOyBlIDwgbjsgKytlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGlbZV0sIGEgPSBvWzBdLCByID0gb1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgPT09IHQgJiYgci5zdG9wKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSBpZiAodFtpXVswXSA9PT0gZSkgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgICAgIH0sIGQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZSwgbywgYSA9IFtdLCByID0gaS5jb25jYXQobiksIHMgPSByLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IHM7ICsrbykgZSA9IHJbb11bMF0sICh0LmNvbnRhaW5zKGUpIHx8IHQgPT09IGUpICYmIGEucHVzaChlKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gYS5sZW5ndGgsIG8gPSAwOyBvIDwgczsgKytvKSBmKGFbb10pXG4gICAgICAgICAgICAgICAgfSwgZiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHAodCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlID0gYyhpLCB0KTtcbiAgICAgICAgICAgICAgICAgICAgZSA+PSAwICYmIGkuc3BsaWNlKGUsIDEpLCBlID0gYyhuLCB0KSwgZSA+PSAwICYmIG4uc3BsaWNlKGUsIDEpXG4gICAgICAgICAgICAgICAgfSwgXyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdFtpXSwgYSA9IG9bMF0sIHIgPSBvWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT09IGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHIuZ2V0Q3VycmVudFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuc3RvcCgpLCBzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBtID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBuID0gbi5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnKHRbMF0pLmJvZHlcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9LCBnID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHQ7IGUucGFyZW50Tm9kZTspIGUgPSBlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlXG4gICAgICAgICAgICAgICAgfSwgdiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlID0gXyhpLCB0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyBlIDogXyhuLCB0KVxuICAgICAgICAgICAgICAgIH0sIHkgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICBlIHx8IChlID0gcSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IFswLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uUG9zdDogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNrZXc6IFswLCAwXVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuID0gXCJwb3NpdGlvblwiLCBvID0gXCJyb3RhdGlvblwiLCBhID0gXCJza2V3XCIsIHIgPSBcInJvdGF0aW9uUG9zdFwiLCBzID0gXCJzY2FsZVwiLCBoID0gXCJzY2FsZVBvc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBcIndpZHRoXCIsIGwgPSBcImhlaWdodFwiLCBwID0gXCJvcGFjaXR5XCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpICYmIChuID0gXCJmcm9tUG9zaXRpb25cIiwgbyA9IFwiZnJvbVJvdGF0aW9uXCIsIGEgPSBcImZyb21Ta2V3XCIsIHIgPSBcImZyb21Sb3RhdGlvblBvc3RcIiwgcyA9IFwiZnJvbVNjYWxlXCIsIGggPSBcImZyb21TY2FsZVBvc3RcIiwgdSA9IFwiZnJvbVdpZHRoXCIsIGwgPSBcImZyb21IZWlnaHRcIiwgcCA9IFwiZnJvbU9wYWNpdHlcIiksIGUucG9zaXRpb24gPSBHKHRbbl0sIGUucG9zaXRpb24pLCBlLnJvdGF0aW9uID0gRyh0W29dLCBlLnJvdGF0aW9uKSwgZS5yb3RhdGlvblBvc3QgPSBHKHRbcl0sIGUucm90YXRpb25Qb3N0KSwgZS5za2V3ID0gRyh0W2FdLCBlLnNrZXcpLCBlLnNjYWxlID0gRyh0W3NdLCBlLnNjYWxlKSwgZS5zY2FsZVBvc3QgPSBHKHRbaF0sIGUuc2NhbGVQb3N0KSwgZS5vcGFjaXR5ID0gdFtwXSwgZS53aWR0aCA9IHRbdV0sIGUuaGVpZ2h0ID0gdFtsXSwgZVxuICAgICAgICAgICAgICAgIH0sIHcgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5zdGFydFN0YXRlID0gdCwgaS5lbmRTdGF0ZSA9IGUsIGlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGIgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQodCwgMWUzIC8gNjApXG4gICAgICAgICAgICAgICAgfSwgayA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIDAgPT09IHQubGVuZ3RoICYmIGIoeCksIHQucHVzaChlKVxuICAgICAgICAgICAgICAgIH0sIHggPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gdC5sZW5ndGgsIGEgPSAwOyBhIDwgbzsgKythKSB0W2FdKGUpO1xuICAgICAgICAgICAgICAgICAgICB0LnNwbGljZSgwLCBvKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBpLmZpbHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbMV0uY29tcGxldGVkKClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG4gPSBuLmZpbHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIGkgPSByLmxlbmd0aDsgZSA8IGk7ICsrZSkgaWYgKHRbMF0gPT09IHJbZV1bMF0pIHJldHVybiAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMFxuICAgICAgICAgICAgICAgICAgICB9KSwgbiA9IG4uY29uY2F0KHIpLCBpID0gaS5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdFsxXS5jb21wbGV0ZWQoKVxuICAgICAgICAgICAgICAgICAgICB9KSwgMCAhPT0gdC5sZW5ndGggJiYgYih4KVxuICAgICAgICAgICAgICAgIH0sIFMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQuc3RhcnRTdGF0ZSwgbiA9IHQuZW5kU3RhdGUsIG8gPSBHKHQuZHVyYXRpb24sIDUwMCksIGEgPSBHKHQuZGVsYXksIDApLCByID0gdC5wZXJzcGVjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBMKEcodC5lYXNpbmcsIFwibGluZWFyXCIpLCB0KSwgaCA9IDAgPT09IG8gPyBuLmNsb25lKCkgOiBpLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHQudHJhbnNmb3JtT3JpZ2luO1xuICAgICAgICAgICAgICAgICAgICBoLnRyYW5zZm9ybU9yaWdpbiA9IHQudHJhbnNmb3JtT3JpZ2luO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdSwgbCwgcCA9IDAsIGMgPSAwLCBkID0gITEsIGYgPSAhMSwgXyA9IHQubWFudWFsLCBtID0gMCwgZyA9IGEgLyBvO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IHQudmFsdWVGZWVkZXIgPyBWKHQudmFsdWVGZWVkZXIsIGksIG4sIGgpIDogaihpLCBuLCBoKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAhMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXNTdG9wcGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZpbmlzaDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gITE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBvICogbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gYyAtIGUsIHUgPSB0LCBzLnJlc2V0RnJvbSA9IG1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvbGxiYWNrOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gPSAhMSwgbC5zZXRSZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBvICogKDEgLSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gYyAtIGUsIHUgPSB0LCBzLnJlc2V0RnJvbSA9IG1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlc3RhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZSwgcy5yZXNldEZyb20oMClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRpY2s6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfKSByZXR1cm4gYyA9IHQsIHZvaWQgdGhpcy51cGRhdGVDdXJyZW50VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwIHx8IChwID0gdCksIHQgLSBwID4gYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICEwLCBjID0gdCAtIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IE1hdGgubWluKE1hdGgubWF4KDAsIGMgLSBwKSwgbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpY2soZSAvIG8pLCB0aGlzLnVwZGF0ZUN1cnJlbnRUcmFuc2Zvcm0oKSwgdGhpcy5jb21wbGV0ZWQoKSAmJiB1ICYmIHUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZ2V0Q3VycmVudFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNldFZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhMCwgbSA9IE1hdGgubWluKE1hdGgubWF4KHQsIDFlLTQpLCAxICsgZylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVwZGF0ZUN1cnJlbnRUcmFuc2Zvcm06IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IE1hdGgubWF4KDFlLTUsIG0gLSBnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aWNrKGUpLCB0ID0gcy5nZXRWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwudHdlZW4odClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbXBsZXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWQgfHwgMCAhPT0gcCAmJiBzLmNvbXBsZXRlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB1cGRhdGVFbGVtZW50OiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmIHx8IGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBsLmFzTWF0cml4KCksIG4gPSBsLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCh0LCBpLCByKSwgWSh0LCBuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIEUgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQubW92ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHQuaW5pdGlhbFZlbG9jaXR5ID0gLjEsIHQuZXF1aWxpYnJpdW1Qb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuID0gVCh0KSwgbyA9ICExLCBhID0gaS5wb3NpdGlvbiwgciA9IGkucm90YXRpb24sIHMgPSBpLnJvdGF0aW9uUG9zdCwgaCA9IGkuc2NhbGUsIHUgPSBpLnNrZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsID0gcSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGEgPyBbMCwgMCwgMF0gOiBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiByID8gWzAsIDAsIDBdIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblBvc3Q6IHMgPyBbMCwgMCwgMF0gOiBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBoID8gWzAsIDBdIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2V3OiB1ID8gWzAsIDBdIDogZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpc1N0b3BwZWQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRpY2s6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyB8fCBuLmVxdWlsaWJyaXVtIHx8IChuLnRpY2soKSwgdGhpcy51cGRhdGVNb3ZlbWVudCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdXBkYXRlTW92ZW1lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4uZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICYmIChsLnBvc2l0aW9uWzBdID0gaS5wb3NpdGlvblswXSAqIHQsIGwucG9zaXRpb25bMV0gPSBpLnBvc2l0aW9uWzFdICogdCwgbC5wb3NpdGlvblsyXSA9IGkucG9zaXRpb25bMl0gKiB0KSwgciAmJiAobC5yb3RhdGlvblswXSA9IGkucm90YXRpb25bMF0gKiB0LCBsLnJvdGF0aW9uWzFdID0gaS5yb3RhdGlvblsxXSAqIHQsIGwucm90YXRpb25bMl0gPSBpLnJvdGF0aW9uWzJdICogdCksIHMgJiYgKGwucm90YXRpb25Qb3N0WzBdID0gaS5yb3RhdGlvblBvc3RbMF0gKiB0LCBsLnJvdGF0aW9uUG9zdFsxXSA9IGkucm90YXRpb25Qb3N0WzFdICogdCwgbC5yb3RhdGlvblBvc3RbMl0gPSBpLnJvdGF0aW9uUG9zdFsyXSAqIHQpLCBoICYmIChsLnNjYWxlWzBdID0gMSArIGkuc2NhbGVbMF0gKiB0LCBsLnNjYWxlWzFdID0gMSArIGkuc2NhbGVbMV0gKiB0KSwgdSAmJiAobC5za2V3WzBdID0gaS5za2V3WzBdICogdCwgbC5za2V3WzFdID0gaS5za2V3WzFdICogdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWCh0LCBsLmFzTWF0cml4KCkpLCBZKHQsIGwuZ2V0UHJvcGVydGllcygpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZ2V0Q3VycmVudFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbXBsZXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmVxdWlsaWJyaXVtIHx8IG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlc3RhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gVCh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgQyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0XG4gICAgICAgICAgICAgICAgfSwgUCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoTWF0aC5jb3ModCAqIE1hdGguUEkgKyBNYXRoLlBJKSArIDEpIC8gMlxuICAgICAgICAgICAgICAgIH0sIE0gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAqIHRcbiAgICAgICAgICAgICAgICB9LCBSID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1NYXRoLnBvdyh0IC0gMSwgMikgKyAxXG4gICAgICAgICAgICAgICAgfSwgVCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlID0gRyh0LnN0YXJ0UG9zaXRpb24sIDApLCBpID0gRyh0LmVxdWlsaWJyaXVtUG9zaXRpb24sIDEpLCBuID0gRyh0LmluaXRpYWxWZWxvY2l0eSwgMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvID0gRyh0LnNwcmluZ0NvbnN0YW50LCAuOCksIGEgPSBHKHQuc3ByaW5nRGVjZWxlcmF0aW9uLCAuOSksIHIgPSBHKHQuc3ByaW5nTWFzcywgMTApLCBzID0gITE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSB0ICYmICFzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gLShlIC0gaSkgKiBvLCB1ID0gaCAvIHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gKz0gdSwgZSArPSBuLCBuICo9IGEsIE1hdGguYWJzKGUgLSBpKSA8IC4wMDEgJiYgTWF0aC5hYnMobikgPCAuMDAxICYmIChzID0gITApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzZXRGcm9tOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0LCBuID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyA/IGkgOiBlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgSSA9IHtsaW5lYXI6IEMsIGVhc2U6IFAsIGVhc2VJbjogTSwgZWFzZU91dDogUn0sIEwgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJzcHJpbmdcIiA9PSB0KSByZXR1cm4gVChlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0O1xuICAgICAgICAgICAgICAgICAgICBKKHQpIHx8IChpID0gSVt0XSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuLCBvID0gaSwgYSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvKHQpLCBuID0gdFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzZXRGcm9tOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBnZXRWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA+PSAxICYmIG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIE8gPSBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICB0WzBdID0gMSwgdFsxXSA9IDAsIHRbMl0gPSAwLCB0WzNdID0gMCwgdFs0XSA9IDAsIHRbNV0gPSAxLCB0WzZdID0gMCwgdFs3XSA9IDAsIHRbOF0gPSAwLCB0WzldID0gMCwgdFsxMF0gPSAxLCB0WzExXSA9IDAsIHRbMTJdID0gZSwgdFsxM10gPSBpLCB0WzE0XSA9IG4sIHRbMTVdID0gMVxuICAgICAgICAgICAgICAgIH0sIHogPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICB0WzBdID0gMSwgdFsxXSA9IDAsIHRbMl0gPSAwLCB0WzNdID0gMCwgdFs0XSA9IDAsIHRbNV0gPSBNYXRoLmNvcyhlKSwgdFs2XSA9IC1NYXRoLnNpbihlKSwgdFs3XSA9IDAsIHRbOF0gPSAwLCB0WzldID0gTWF0aC5zaW4oZSksIHRbMTBdID0gTWF0aC5jb3MoZSksIHRbMTFdID0gMCwgdFsxMl0gPSAwLCB0WzEzXSA9IDAsIHRbMTRdID0gMCwgdFsxNV0gPSAxXG4gICAgICAgICAgICAgICAgfSwgRCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRbMF0gPSBNYXRoLmNvcyhlKSwgdFsxXSA9IDAsIHRbMl0gPSBNYXRoLnNpbihlKSwgdFszXSA9IDAsIHRbNF0gPSAwLCB0WzVdID0gMSwgdFs2XSA9IDAsIHRbN10gPSAwLCB0WzhdID0gLU1hdGguc2luKGUpLCB0WzldID0gMCwgdFsxMF0gPSBNYXRoLmNvcyhlKSwgdFsxMV0gPSAwLCB0WzEyXSA9IDAsIHRbMTNdID0gMCwgdFsxNF0gPSAwLCB0WzE1XSA9IDFcbiAgICAgICAgICAgICAgICB9LCBBID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdFswXSA9IE1hdGguY29zKGUpLCB0WzFdID0gLU1hdGguc2luKGUpLCB0WzJdID0gMCwgdFszXSA9IDAsIHRbNF0gPSBNYXRoLnNpbihlKSwgdFs1XSA9IE1hdGguY29zKGUpLCB0WzZdID0gMCwgdFs3XSA9IDAsIHRbOF0gPSAwLCB0WzldID0gMCwgdFsxMF0gPSAxLCB0WzExXSA9IDAsIHRbMTJdID0gMCwgdFsxM10gPSAwLCB0WzE0XSA9IDAsIHRbMTVdID0gMVxuICAgICAgICAgICAgICAgIH0sIFUgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICB0WzBdID0gMSwgdFsxXSA9IE1hdGgudGFuKGUpLCB0WzJdID0gMCwgdFszXSA9IDAsIHRbNF0gPSBNYXRoLnRhbihpKSwgdFs1XSA9IDEsIHRbNl0gPSAwLCB0WzddID0gMCwgdFs4XSA9IDAsIHRbOV0gPSAwLCB0WzEwXSA9IDEsIHRbMTFdID0gMCwgdFsxMl0gPSAwLCB0WzEzXSA9IDAsIHRbMTRdID0gMCwgdFsxNV0gPSAxXG4gICAgICAgICAgICAgICAgfSwgSCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRbMF0gPSBlLCB0WzFdID0gMCwgdFsyXSA9IDAsIHRbM10gPSAwLCB0WzRdID0gMCwgdFs1XSA9IGksIHRbNl0gPSAwLCB0WzddID0gMCwgdFs4XSA9IDAsIHRbOV0gPSAwLCB0WzEwXSA9IDEsIHRbMTFdID0gMCwgdFsxMl0gPSAwLCB0WzEzXSA9IDAsIHRbMTRdID0gMCwgdFsxNV0gPSAxXG4gICAgICAgICAgICAgICAgfSwgTiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRbMF0gPSAxLCB0WzFdID0gMCwgdFsyXSA9IDAsIHRbM10gPSAwLCB0WzRdID0gMCwgdFs1XSA9IDEsIHRbNl0gPSAwLCB0WzddID0gMCwgdFs4XSA9IDAsIHRbOV0gPSAwLCB0WzEwXSA9IDEsIHRbMTFdID0gMCwgdFsxMl0gPSAwLCB0WzEzXSA9IDAsIHRbMTRdID0gMCwgdFsxNV0gPSAxXG4gICAgICAgICAgICAgICAgfSwgQiA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVbMF0gPSB0WzBdLCBlWzFdID0gdFsxXSwgZVsyXSA9IHRbMl0sIGVbM10gPSB0WzNdLCBlWzRdID0gdFs0XSwgZVs1XSA9IHRbNV0sIGVbNl0gPSB0WzZdLCBlWzddID0gdFs3XSwgZVs4XSA9IHRbOF0sIGVbOV0gPSB0WzldLCBlWzEwXSA9IHRbMTBdLCBlWzExXSA9IHRbMTFdLCBlWzEyXSA9IHRbMTJdLCBlWzEzXSA9IHRbMTNdLCBlWzE0XSA9IHRbMTRdLCBlWzE1XSA9IHRbMTVdXG4gICAgICAgICAgICAgICAgfSwgRiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgRmxvYXQzMkFycmF5KDE2KSwgZSA9IG5ldyBGbG9hdDMyQXJyYXkoMTYpLCBpID0gbmV3IEZsb2F0MzJBcnJheSgxNik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOKHQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB0LCBhc0NTUzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBcIm1hdHJpeDNkKFwiLCBpID0gMDsgaSA8IDE1OyArK2kpIGUgKz0gTWF0aC5hYnModFtpXSkgPCAxZS00ID8gXCIwLFwiIDogdFtpXS50b0ZpeGVkKDEwKSArIFwiLFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICs9IE1hdGguYWJzKHRbMTVdKSA8IDFlLTQgPyBcIjApXCIgOiB0WzE1XS50b0ZpeGVkKDEwKSArIFwiKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjbGVhcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4odClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG4sIG8sIGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQih0LCBlKSwgTyhpLCBuLCBvLCBhKSwgVyhlLCBpLCB0KSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcm90YXRlWDogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQih0LCBlKSwgeihpLCBuKSwgVyhlLCBpLCB0KSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcm90YXRlWTogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQih0LCBlKSwgRChpLCBuKSwgVyhlLCBpLCB0KSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcm90YXRlWjogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQih0LCBlKSwgQShpLCBuKSwgVyhlLCBpLCB0KSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2NhbGU6IGZ1bmN0aW9uIChuLCBvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIodCwgZSksIEgoaSwgbiwgbyksIFcoZSwgaSwgdCksIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNrZXc6IGZ1bmN0aW9uIChuLCBvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIodCwgZSksIFUoaSwgbiwgbyksIFcoZSwgaSwgdCksIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIFcgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVswXSA9IHRbMF0gKiBlWzBdICsgdFsxXSAqIGVbNF0gKyB0WzJdICogZVs4XSArIHRbM10gKiBlWzEyXSwgaVsxXSA9IHRbMF0gKiBlWzFdICsgdFsxXSAqIGVbNV0gKyB0WzJdICogZVs5XSArIHRbM10gKiBlWzEzXSwgaVsyXSA9IHRbMF0gKiBlWzJdICsgdFsxXSAqIGVbNl0gKyB0WzJdICogZVsxMF0gKyB0WzNdICogZVsxNF0sIGlbM10gPSB0WzBdICogZVszXSArIHRbMV0gKiBlWzddICsgdFsyXSAqIGVbMTFdICsgdFszXSAqIGVbMTVdLCBpWzRdID0gdFs0XSAqIGVbMF0gKyB0WzVdICogZVs0XSArIHRbNl0gKiBlWzhdICsgdFs3XSAqIGVbMTJdLCBpWzVdID0gdFs0XSAqIGVbMV0gKyB0WzVdICogZVs1XSArIHRbNl0gKiBlWzldICsgdFs3XSAqIGVbMTNdLCBpWzZdID0gdFs0XSAqIGVbMl0gKyB0WzVdICogZVs2XSArIHRbNl0gKiBlWzEwXSArIHRbN10gKiBlWzE0XSwgaVs3XSA9IHRbNF0gKiBlWzNdICsgdFs1XSAqIGVbN10gKyB0WzZdICogZVsxMV0gKyB0WzddICogZVsxNV0sIGlbOF0gPSB0WzhdICogZVswXSArIHRbOV0gKiBlWzRdICsgdFsxMF0gKiBlWzhdICsgdFsxMV0gKiBlWzEyXSwgaVs5XSA9IHRbOF0gKiBlWzFdICsgdFs5XSAqIGVbNV0gKyB0WzEwXSAqIGVbOV0gKyB0WzExXSAqIGVbMTNdLCBpWzEwXSA9IHRbOF0gKiBlWzJdICsgdFs5XSAqIGVbNl0gKyB0WzEwXSAqIGVbMTBdICsgdFsxMV0gKiBlWzE0XSwgaVsxMV0gPSB0WzhdICogZVszXSArIHRbOV0gKiBlWzddICsgdFsxMF0gKiBlWzExXSArIHRbMTFdICogZVsxNV0sIGlbMTJdID0gdFsxMl0gKiBlWzBdICsgdFsxM10gKiBlWzRdICsgdFsxNF0gKiBlWzhdICsgdFsxNV0gKiBlWzEyXSwgaVsxM10gPSB0WzEyXSAqIGVbMV0gKyB0WzEzXSAqIGVbNV0gKyB0WzE0XSAqIGVbOV0gKyB0WzE1XSAqIGVbMTNdLCBpWzE0XSA9IHRbMTJdICogZVsyXSArIHRbMTNdICogZVs2XSArIHRbMTRdICogZVsxMF0gKyB0WzE1XSAqIGVbMTRdLCBpWzE1XSA9IHRbMTJdICogZVszXSArIHRbMTNdICogZVs3XSArIHRbMTRdICogZVsxMV0gKyB0WzE1XSAqIGVbMTVdLCBpXG4gICAgICAgICAgICAgICAgfSwgcSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gRigpLCBuID0ge29wYWNpdHk6IGUsIHdpZHRoOiBlLCBoZWlnaHQ6IGV9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHQucG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogdC5yb3RhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uUG9zdDogdC5yb3RhdGlvblBvc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBza2V3OiB0LnNrZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogdC5zY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlUG9zdDogdC5zY2FsZVBvc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiB0Lm9wYWNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdC5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBxKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24gPyB0aGlzLnBvc2l0aW9uLnNsaWNlKDApIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb24gPyB0aGlzLnJvdGF0aW9uLnNsaWNlKDApIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25Qb3N0OiB0aGlzLnJvdGF0aW9uUG9zdCA/IHRoaXMucm90YXRpb25Qb3N0LnNsaWNlKDApIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tldzogdGhpcy5za2V3ID8gdGhpcy5za2V3LnNsaWNlKDApIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHRoaXMuc2NhbGUgPyB0aGlzLnNjYWxlLnNsaWNlKDApIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVQb3N0OiB0aGlzLnNjYWxlUG9zdCA/IHRoaXMuc2NhbGVQb3N0LnNsaWNlKDApIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IHRoaXMub3BhY2l0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXNNYXRyaXg6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY2xlYXIoKSwgdGhpcy50cmFuc2Zvcm1PcmlnaW4gJiYgdC50cmFuc2xhdGUoLXRoaXMudHJhbnNmb3JtT3JpZ2luWzBdLCAtdGhpcy50cmFuc2Zvcm1PcmlnaW5bMV0sIC10aGlzLnRyYW5zZm9ybU9yaWdpblsyXSksIHRoaXMuc2NhbGUgJiYgdC5zY2FsZSh0aGlzLnNjYWxlWzBdLCB0aGlzLnNjYWxlWzFdKSwgdGhpcy5za2V3ICYmIHQuc2tldyh0aGlzLnNrZXdbMF0sIHRoaXMuc2tld1sxXSksIHRoaXMucm90YXRpb24gJiYgKHQucm90YXRlWCh0aGlzLnJvdGF0aW9uWzBdKSwgdC5yb3RhdGVZKHRoaXMucm90YXRpb25bMV0pLCB0LnJvdGF0ZVoodGhpcy5yb3RhdGlvblsyXSkpLCB0aGlzLnBvc2l0aW9uICYmIHQudHJhbnNsYXRlKHRoaXMucG9zaXRpb25bMF0sIHRoaXMucG9zaXRpb25bMV0sIHRoaXMucG9zaXRpb25bMl0pLCB0aGlzLnJvdGF0aW9uUG9zdCAmJiAodC5yb3RhdGVYKHRoaXMucm90YXRpb25Qb3N0WzBdKSwgdC5yb3RhdGVZKHRoaXMucm90YXRpb25Qb3N0WzFdKSwgdC5yb3RhdGVaKHRoaXMucm90YXRpb25Qb3N0WzJdKSksIHRoaXMuc2NhbGVQb3N0ICYmIHQuc2NhbGUodGhpcy5zY2FsZVBvc3RbMF0sIHRoaXMuc2NhbGVQb3N0WzFdKSwgdGhpcy50cmFuc2Zvcm1PcmlnaW4gJiYgdC50cmFuc2xhdGUodGhpcy50cmFuc2Zvcm1PcmlnaW5bMF0sIHRoaXMudHJhbnNmb3JtT3JpZ2luWzFdLCB0aGlzLnRyYW5zZm9ybU9yaWdpblsyXSksIHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ub3BhY2l0eSA9IHRoaXMub3BhY2l0eSwgbi53aWR0aCA9IHRoaXMud2lkdGggKyBcInB4XCIsIG4uaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyBcInB4XCIsIG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGogPSBmdW5jdGlvbiAodCwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQsIGEgPSBpLCByID0gbiwgcyA9IGEucG9zaXRpb24gIT09IGUsIGggPSBhLnJvdGF0aW9uICE9PSBlLCB1ID0gYS5yb3RhdGlvblBvc3QgIT09IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5zY2FsZSAhPT0gZSwgcCA9IGEuc2tldyAhPT0gZSwgYyA9IGEud2lkdGggIT09IGUsIGQgPSBhLmhlaWdodCAhPT0gZSwgZiA9IGEub3BhY2l0eSAhPT0gZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR3ZWVuOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYS5wb3NpdGlvblswXSAtIG8ucG9zaXRpb25bMF0sIGkgPSBhLnBvc2l0aW9uWzFdIC0gby5wb3NpdGlvblsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhLnBvc2l0aW9uWzJdIC0gby5wb3NpdGlvblsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5wb3NpdGlvblswXSA9IG8ucG9zaXRpb25bMF0gKyB0ICogZSwgci5wb3NpdGlvblsxXSA9IG8ucG9zaXRpb25bMV0gKyB0ICogaSwgci5wb3NpdGlvblsyXSA9IG8ucG9zaXRpb25bMl0gKyB0ICogblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IGEucm90YXRpb25bMF0gLSBvLnJvdGF0aW9uWzBdLCBtID0gYS5yb3RhdGlvblsxXSAtIG8ucm90YXRpb25bMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gYS5yb3RhdGlvblsyXSAtIG8ucm90YXRpb25bMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucm90YXRpb25bMF0gPSBvLnJvdGF0aW9uWzBdICsgdCAqIF8sIHIucm90YXRpb25bMV0gPSBvLnJvdGF0aW9uWzFdICsgdCAqIG0sIHIucm90YXRpb25bMl0gPSBvLnJvdGF0aW9uWzJdICsgdCAqIGdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBhLnJvdGF0aW9uUG9zdFswXSAtIG8ucm90YXRpb25Qb3N0WzBdLCB5ID0gYS5yb3RhdGlvblBvc3RbMV0gLSBvLnJvdGF0aW9uUG9zdFsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBhLnJvdGF0aW9uUG9zdFsyXSAtIG8ucm90YXRpb25Qb3N0WzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnJvdGF0aW9uUG9zdFswXSA9IG8ucm90YXRpb25Qb3N0WzBdICsgdCAqIHYsIHIucm90YXRpb25Qb3N0WzFdID0gby5yb3RhdGlvblBvc3RbMV0gKyB0ICogeSwgci5yb3RhdGlvblBvc3RbMl0gPSBvLnJvdGF0aW9uUG9zdFsyXSArIHQgKiB3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5zY2FsZVswXSAtIG8uc2NhbGVbMF0sIGsgPSBhLnNjYWxlWzFdIC0gby5zY2FsZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5zY2FsZVswXSA9IG8uc2NhbGVbMF0gKyB0ICogYiwgci5zY2FsZVsxXSA9IG8uc2NhbGVbMV0gKyB0ICoga1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IGEuc2tld1swXSAtIG8uc2tld1swXSwgUyA9IGEuc2tld1sxXSAtIG8uc2tld1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5za2V3WzBdID0gby5za2V3WzBdICsgdCAqIHgsIHIuc2tld1sxXSA9IG8uc2tld1sxXSArIHQgKiBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gYS53aWR0aCAtIG8ud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIud2lkdGggPSBvLndpZHRoICsgdCAqIEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEMgPSBhLmhlaWdodCAtIG8uaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmhlaWdodCA9IG8uaGVpZ2h0ICsgdCAqIENcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFAgPSBhLm9wYWNpdHkgLSBvLm9wYWNpdHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIub3BhY2l0eSA9IG8ub3BhY2l0eSArIHQgKiBQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXNNYXRyaXg6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5hc01hdHJpeCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBnZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuZ2V0UHJvcGVydGllcygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzZXRSZXZlcnNlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLCBhID0gdFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgViA9IGZ1bmN0aW9uICh0LCBpLCBuLCBvKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gdCgwLCBGKCkpLCByID0gaSwgcyA9IG4sIGggPSBvLCB1ID0gITE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0d2VlbjogZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ICYmIChpID0gMSAtIGkpLCBhLmNsZWFyKCksIGEgPSB0KGksIGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gcy53aWR0aCAtIHIud2lkdGgsIG8gPSBzLmhlaWdodCAtIHIuaGVpZ2h0LCBsID0gcy5vcGFjaXR5IC0gci5vcGFjaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMud2lkdGggIT09IGUgJiYgKGgud2lkdGggPSByLndpZHRoICsgaSAqIG4pLCBzLmhlaWdodCAhPT0gZSAmJiAoaC5oZWlnaHQgPSByLmhlaWdodCArIGkgKiBvKSwgcy5vcGFjaXR5ICE9PSBlICYmIChoLm9wYWNpdHkgPSByLm9wYWNpdHkgKyBpICogbClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFzTWF0cml4OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldFByb3BlcnRpZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaC5nZXRQcm9wZXJ0aWVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNldFJldmVyc2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gITBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIEcgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdCA/IGUgOiB0XG4gICAgICAgICAgICAgICAgfSwgWCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaSAmJiAobiA9IFwicGVyc3BlY3RpdmUoXCIgKyBpICsgXCJweCkgXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuYXNDU1MoKTtcbiAgICAgICAgICAgICAgICAgICAgdC5zdHlsZVtvXSA9IG4gKyBhXG4gICAgICAgICAgICAgICAgfSwgWSA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gZSkgdC5zdHlsZVtpXSA9IGVbaV1cbiAgICAgICAgICAgICAgICB9LCBKID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdFxuICAgICAgICAgICAgICAgIH0sICQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiB0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHQpIGVbaV0gPSB0W2ldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcy5jcmVhdGVNYXRyaXggPSBGLCBzLnNldEVsZW1lbnRUcmFuc2Zvcm0gPSBYLCBzXG4gICAgICAgIH0oKSwgbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSwgaSwgbiwgbykge1xuICAgICAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiB0KSB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk7IGVsc2UgaWYgKCF0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YXIgYSwgciA9IHQuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhID0gci5nZXRJbWFnZURhdGEoZSwgaSwgbiwgbylcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGFjY2VzcyBsb2NhbCBpbWFnZSBkYXRhOiBcIiArIHMpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVuYWJsZSB0byBhY2Nlc3MgaW1hZ2UgZGF0YTogXCIgKyBzKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBlKGUsIG4sIG8sIGEsIHIsIHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShpc05hTihzKSB8fCBzIDwgMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcyB8PSAwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHQoZSwgbiwgbywgYSwgcik7XG4gICAgICAgICAgICAgICAgICAgIGggPSBpKGgsIG4sIG8sIGEsIHIsIHMpLCBlLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaCwgbiwgbylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGkodCwgZSwgaSwgciwgcywgaCkge1xuICAgICAgICAgICAgICAgIHZhciB1LCBsLCBwLCBjLCBkLCBmLCBfLCBtLCBnLCB2LCB5LCB3LCBiLCBrLCB4LCBTLCBFLCBDLCBQLCBNLCBSLCBULCBJLCBMLCBPID0gdC5kYXRhLCB6ID0gaCArIGggKyAxLFxuICAgICAgICAgICAgICAgICAgICBEID0gciAtIDEsIEEgPSBzIC0gMSwgVSA9IGggKyAxLCBIID0gVSAqIChVICsgMSkgLyAyLCBOID0gbmV3IG4sIEIgPSBOO1xuICAgICAgICAgICAgICAgIGZvciAocCA9IDE7IHAgPCB6OyBwKyspIGlmIChCID0gQi5uZXh0ID0gbmV3IG4sIHAgPT0gVSkgdmFyIEYgPSBCO1xuICAgICAgICAgICAgICAgIEIubmV4dCA9IE47XG4gICAgICAgICAgICAgICAgdmFyIFcgPSBudWxsLCBxID0gbnVsbDtcbiAgICAgICAgICAgICAgICBfID0gZiA9IDA7XG4gICAgICAgICAgICAgICAgdmFyIGogPSBvW2hdLCBWID0gYVtoXTtcbiAgICAgICAgICAgICAgICBmb3IgKGwgPSAwOyBsIDwgczsgbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoUyA9IEUgPSBDID0gUCA9IG0gPSBnID0gdiA9IHkgPSAwLCB3ID0gVSAqIChNID0gT1tmXSksIGIgPSBVICogKFIgPSBPW2YgKyAxXSksIGsgPSBVICogKFQgPSBPW2YgKyAyXSksIHggPSBVICogKEkgPSBPW2YgKyAzXSksIG0gKz0gSCAqIE0sIGcgKz0gSCAqIFIsIHYgKz0gSCAqIFQsIHkgKz0gSCAqIEksIEIgPSBOLCBwID0gMDsgcCA8IFU7IHArKykgQi5yID0gTSwgQi5nID0gUiwgQi5iID0gVCwgQi5hID0gSSwgQiA9IEIubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gMTsgcCA8IFU7IHArKykgYyA9IGYgKyAoKEQgPCBwID8gRCA6IHApIDw8IDIpLCBtICs9IChCLnIgPSBNID0gT1tjXSkgKiAoTCA9IFUgLSBwKSwgZyArPSAoQi5nID0gUiA9IE9bYyArIDFdKSAqIEwsIHYgKz0gKEIuYiA9IFQgPSBPW2MgKyAyXSkgKiBMLCB5ICs9IChCLmEgPSBJID0gT1tjICsgM10pICogTCwgUyArPSBNLCBFICs9IFIsIEMgKz0gVCwgUCArPSBJLCBCID0gQi5uZXh0O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKFcgPSBOLCBxID0gRiwgdSA9IDA7IHUgPCByOyB1KyspIE9bZiArIDNdID0gSSA9IHkgKiBqID4+IFYsIDAgIT0gSSA/IChJID0gMjU1IC8gSSwgT1tmXSA9IChtICogaiA+PiBWKSAqIEksIE9bZiArIDFdID0gKGcgKiBqID4+IFYpICogSSwgT1tmICsgMl0gPSAodiAqIGogPj4gVikgKiBJKSA6IE9bZl0gPSBPW2YgKyAxXSA9IE9bZiArIDJdID0gMCwgbSAtPSB3LCBnIC09IGIsIHYgLT0gaywgeSAtPSB4LCB3IC09IFcuciwgYiAtPSBXLmcsIGsgLT0gVy5iLCB4IC09IFcuYSwgYyA9IF8gKyAoKGMgPSB1ICsgaCArIDEpIDwgRCA/IGMgOiBEKSA8PCAyLCBTICs9IFcuciA9IE9bY10sIEUgKz0gVy5nID0gT1tjICsgMV0sIEMgKz0gVy5iID0gT1tjICsgMl0sIFAgKz0gVy5hID0gT1tjICsgM10sIG0gKz0gUywgZyArPSBFLCB2ICs9IEMsIHkgKz0gUCwgVyA9IFcubmV4dCwgdyArPSBNID0gcS5yLCBiICs9IFIgPSBxLmcsIGsgKz0gVCA9IHEuYiwgeCArPSBJID0gcS5hLCBTIC09IE0sIEUgLT0gUiwgQyAtPSBULCBQIC09IEksIHEgPSBxLm5leHQsIGYgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgXyArPSByXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodSA9IDA7IHUgPCByOyB1KyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChFID0gQyA9IFAgPSBTID0gZyA9IHYgPSB5ID0gbSA9IDAsIGYgPSB1IDw8IDIsIHcgPSBVICogKE0gPSBPW2ZdKSwgYiA9IFUgKiAoUiA9IE9bZiArIDFdKSwgayA9IFUgKiAoVCA9IE9bZiArIDJdKSwgeCA9IFUgKiAoSSA9IE9bZiArIDNdKSwgbSArPSBIICogTSwgZyArPSBIICogUiwgdiArPSBIICogVCwgeSArPSBIICogSSwgQiA9IE4sIHAgPSAwOyBwIDwgVTsgcCsrKSBCLnIgPSBNLCBCLmcgPSBSLCBCLmIgPSBULCBCLmEgPSBJLCBCID0gQi5uZXh0O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGQgPSByLCBwID0gMTsgcCA8PSBoOyBwKyspIGYgPSBkICsgdSA8PCAyLCBtICs9IChCLnIgPSBNID0gT1tmXSkgKiAoTCA9IFUgLSBwKSwgZyArPSAoQi5nID0gUiA9IE9bZiArIDFdKSAqIEwsIHYgKz0gKEIuYiA9IFQgPSBPW2YgKyAyXSkgKiBMLCB5ICs9IChCLmEgPSBJID0gT1tmICsgM10pICogTCwgUyArPSBNLCBFICs9IFIsIEMgKz0gVCwgUCArPSBJLCBCID0gQi5uZXh0LCBwIDwgQSAmJiAoZCArPSByKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gdSwgVyA9IE4sIHEgPSBGLCBsID0gMDsgbCA8IHM7IGwrKykgYyA9IGYgPDwgMiwgT1tjICsgM10gPSBJID0geSAqIGogPj4gViwgSSA+IDAgPyAoSSA9IDI1NSAvIEksIE9bY10gPSAobSAqIGogPj4gVikgKiBJLCBPW2MgKyAxXSA9IChnICogaiA+PiBWKSAqIEksIE9bYyArIDJdID0gKHYgKiBqID4+IFYpICogSSkgOiBPW2NdID0gT1tjICsgMV0gPSBPW2MgKyAyXSA9IDAsIG0gLT0gdywgZyAtPSBiLCB2IC09IGssIHkgLT0geCwgdyAtPSBXLnIsIGIgLT0gVy5nLCBrIC09IFcuYiwgeCAtPSBXLmEsIGMgPSB1ICsgKChjID0gbCArIFUpIDwgQSA/IGMgOiBBKSAqIHIgPDwgMiwgbSArPSBTICs9IFcuciA9IE9bY10sIGcgKz0gRSArPSBXLmcgPSBPW2MgKyAxXSwgdiArPSBDICs9IFcuYiA9IE9bYyArIDJdLCB5ICs9IFAgKz0gVy5hID0gT1tjICsgM10sIFcgPSBXLm5leHQsIHcgKz0gTSA9IHEuciwgYiArPSBSID0gcS5nLCBrICs9IFQgPSBxLmIsIHggKz0gSSA9IHEuYSwgUyAtPSBNLCBFIC09IFIsIEMgLT0gVCwgUCAtPSBJLCBxID0gcS5uZXh0LCBmICs9IHJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnIgPSAwLCB0aGlzLmcgPSAwLCB0aGlzLmIgPSAwLCB0aGlzLmEgPSAwLCB0aGlzLm5leHQgPSBudWxsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvID0gWzUxMiwgNTEyLCA0NTYsIDUxMiwgMzI4LCA0NTYsIDMzNSwgNTEyLCA0MDUsIDMyOCwgMjcxLCA0NTYsIDM4OCwgMzM1LCAyOTIsIDUxMiwgNDU0LCA0MDUsIDM2NCwgMzI4LCAyOTgsIDI3MSwgNDk2LCA0NTYsIDQyMCwgMzg4LCAzNjAsIDMzNSwgMzEyLCAyOTIsIDI3MywgNTEyLCA0ODIsIDQ1NCwgNDI4LCA0MDUsIDM4MywgMzY0LCAzNDUsIDMyOCwgMzEyLCAyOTgsIDI4NCwgMjcxLCAyNTksIDQ5NiwgNDc1LCA0NTYsIDQzNywgNDIwLCA0MDQsIDM4OCwgMzc0LCAzNjAsIDM0NywgMzM1LCAzMjMsIDMxMiwgMzAyLCAyOTIsIDI4MiwgMjczLCAyNjUsIDUxMiwgNDk3LCA0ODIsIDQ2OCwgNDU0LCA0NDEsIDQyOCwgNDE3LCA0MDUsIDM5NCwgMzgzLCAzNzMsIDM2NCwgMzU0LCAzNDUsIDMzNywgMzI4LCAzMjAsIDMxMiwgMzA1LCAyOTgsIDI5MSwgMjg0LCAyNzgsIDI3MSwgMjY1LCAyNTksIDUwNywgNDk2LCA0ODUsIDQ3NSwgNDY1LCA0NTYsIDQ0NiwgNDM3LCA0MjgsIDQyMCwgNDEyLCA0MDQsIDM5NiwgMzg4LCAzODEsIDM3NCwgMzY3LCAzNjAsIDM1NCwgMzQ3LCAzNDEsIDMzNSwgMzI5LCAzMjMsIDMxOCwgMzEyLCAzMDcsIDMwMiwgMjk3LCAyOTIsIDI4NywgMjgyLCAyNzgsIDI3MywgMjY5LCAyNjUsIDI2MSwgNTEyLCA1MDUsIDQ5NywgNDg5LCA0ODIsIDQ3NSwgNDY4LCA0NjEsIDQ1NCwgNDQ3LCA0NDEsIDQzNSwgNDI4LCA0MjIsIDQxNywgNDExLCA0MDUsIDM5OSwgMzk0LCAzODksIDM4MywgMzc4LCAzNzMsIDM2OCwgMzY0LCAzNTksIDM1NCwgMzUwLCAzNDUsIDM0MSwgMzM3LCAzMzIsIDMyOCwgMzI0LCAzMjAsIDMxNiwgMzEyLCAzMDksIDMwNSwgMzAxLCAyOTgsIDI5NCwgMjkxLCAyODcsIDI4NCwgMjgxLCAyNzgsIDI3NCwgMjcxLCAyNjgsIDI2NSwgMjYyLCAyNTksIDI1NywgNTA3LCA1MDEsIDQ5NiwgNDkxLCA0ODUsIDQ4MCwgNDc1LCA0NzAsIDQ2NSwgNDYwLCA0NTYsIDQ1MSwgNDQ2LCA0NDIsIDQzNywgNDMzLCA0MjgsIDQyNCwgNDIwLCA0MTYsIDQxMiwgNDA4LCA0MDQsIDQwMCwgMzk2LCAzOTIsIDM4OCwgMzg1LCAzODEsIDM3NywgMzc0LCAzNzAsIDM2NywgMzYzLCAzNjAsIDM1NywgMzU0LCAzNTAsIDM0NywgMzQ0LCAzNDEsIDMzOCwgMzM1LCAzMzIsIDMyOSwgMzI2LCAzMjMsIDMyMCwgMzE4LCAzMTUsIDMxMiwgMzEwLCAzMDcsIDMwNCwgMzAyLCAyOTksIDI5NywgMjk0LCAyOTIsIDI4OSwgMjg3LCAyODUsIDI4MiwgMjgwLCAyNzgsIDI3NSwgMjczLCAyNzEsIDI2OSwgMjY3LCAyNjUsIDI2MywgMjYxLCAyNTldLFxuICAgICAgICAgICAgICAgIGEgPSBbOSwgMTEsIDEyLCAxMywgMTMsIDE0LCAxNCwgMTUsIDE1LCAxNSwgMTUsIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0XTtcbiAgICAgICAgICAgIHJldHVybiBlXG4gICAgICAgIH0oKTtcbiAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLnRvQmxvYiB8fCBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLCBcInRvQmxvYlwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gYXRvYih0aGlzLnRvRGF0YVVSTChlLCBpKS5zcGxpdChcIixcIilbMV0pLCBvID0gbi5sZW5ndGgsIGEgPSBuZXcgVWludDhBcnJheShvKSwgciA9IDA7IHIgPCBvOyByKyspIGFbcl0gPSBuLmNoYXJDb2RlQXQocik7XG4gICAgICAgICAgICAgICAgdChuZXcgQmxvYihbYV0sIHt0eXBlOiBlIHx8IFwiaW1hZ2UvcG5nXCJ9KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG4uZW51bWVyYWJsZSA9IG4uZW51bWVyYWJsZSB8fCAhMSwgbi5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG4gJiYgKG4ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBuLmtleSwgbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiB0KGUucHJvdG90eXBlLCBpKSwgbiAmJiB0KGUsIG4pLCBlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSgpLCBjID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHRcbiAgICAgICAgICAgIH0gOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiB0ICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiB0XG4gICAgICAgICAgICB9LCBkID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdC5kYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlLCBpLCBuID0ge30sIG8gPSB0LmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoZSBpbiBvKSBvLmhhc093blByb3BlcnR5KGUpICYmIG9bZV0ubmFtZSAmJiAvXmRhdGEtW2Etel9cXC1cXGRdKiQvaS50ZXN0KG9bZV0ubmFtZSkgJiYgKGkgPSBmKG9bZV0ubmFtZS5zdWJzdHIoNSkpLCBuW2ldID0gb1tlXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0LmRhdGFzZXRcbiAgICAgICAgICAgIH0sIGYgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0LnJlcGxhY2UoL1xcLS4vZywgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY2hhckF0KDEpLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgXyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCBpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5hdHRyaWJ1dGVzKSwgbiA9IGkubGVuZ3RoLCBvID0gMDsgbyA8IG47IG8rKykgZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaVtvXS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaVtvXS52YWx1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBlXG4gICAgICAgICAgICB9LCBtID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB4OiBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB0Lm9mZnNldFggPyB0LmxheWVyWCA6IHQub2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgeTogXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdC5vZmZzZXRZID8gdC5sYXllclkgOiB0Lm9mZnNldFlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBnID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgbiA9IHt9LCBvID0gZSB8fCB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShpKSAmJiAobltpXSA9IFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIG9baV0gPyB0W2ldIDogb1tpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5cbiAgICAgICAgICAgIH0sIHYgPSB7RVNDOiAyNywgUkVUVVJOOiAxM30sIHkgPSB7XG4gICAgICAgICAgICAgICAgRE9XTjogW1widG91Y2hzdGFydFwiLCBcInBvaW50ZXJkb3duXCIsIFwibW91c2Vkb3duXCJdLFxuICAgICAgICAgICAgICAgIE1PVkU6IFtcInRvdWNobW92ZVwiLCBcInBvaW50ZXJtb3ZlXCIsIFwibW91c2Vtb3ZlXCJdLFxuICAgICAgICAgICAgICAgIFVQOiBbXCJ0b3VjaGVuZFwiLCBcInRvdWNoY2FuY2VsXCIsIFwicG9pbnRlcnVwXCIsIFwibW91c2V1cFwiXVxuICAgICAgICAgICAgfSwgdyA9IHtcbiAgICAgICAgICAgICAgICBqcGVnOiBcImltYWdlL2pwZWdcIixcbiAgICAgICAgICAgICAgICBqcGc6IFwiaW1hZ2UvanBlZ1wiLFxuICAgICAgICAgICAgICAgIGpwZTogXCJpbWFnZS9qcGVnXCIsXG4gICAgICAgICAgICAgICAgcG5nOiBcImltYWdlL3BuZ1wiLFxuICAgICAgICAgICAgICAgIGdpZjogXCJpbWFnZS9naWZcIixcbiAgICAgICAgICAgICAgICBibXA6IFwiaW1hZ2UvYm1wXCJcbiAgICAgICAgICAgIH0sIGIgPSAvKFxcLnBuZ3xcXC5ibXB8XFwuZ2lmfFxcLmpwZ3xcXC5qcGV8XFwuanBnfFxcLmpwZWcpJC8sIGsgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAoaS5jbGFzc05hbWUgPSBlKSwgaVxuICAgICAgICAgICAgfSwgeCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgZS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihlLCBpLCAhMSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgUyA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgZS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBpLCAhMSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgRSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNoYW5nZWRUb3VjaGVzID8gdC5jaGFuZ2VkVG91Y2hlc1swXSA6IHQ7XG4gICAgICAgICAgICAgICAgaWYgKGUpIHJldHVybiB7eDogZS5wYWdlWCwgeTogZS5wYWdlWX1cbiAgICAgICAgICAgIH0sIEMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gLjUsIG4gPSAuNSwgbyA9IE1hdGguUEkgLyAxODAgKiBlLCBhID0gTWF0aC5jb3MobyksIHIgPSBNYXRoLnNpbihvKSwgcyA9IHQueCwgaCA9IHQueSxcbiAgICAgICAgICAgICAgICAgICAgdSA9IHQueCArIHQud2lkdGgsIGwgPSB0LnkgKyB0LmhlaWdodCwgcCA9IGEgKiAocyAtIGkpICsgciAqIChoIC0gbikgKyBpLFxuICAgICAgICAgICAgICAgICAgICBjID0gYSAqIChoIC0gbikgLSByICogKHMgLSBpKSArIG4sIGQgPSBhICogKHUgLSBpKSArIHIgKiAobCAtIG4pICsgaSwgZiA9IGEgKiAobCAtIG4pIC0gciAqICh1IC0gaSkgKyBuO1xuICAgICAgICAgICAgICAgIHAgPD0gZCA/ICh0LnggPSBwLCB0LndpZHRoID0gZCAtIHApIDogKHQueCA9IGQsIHQud2lkdGggPSBwIC0gZCksIGMgPD0gZiA/ICh0LnkgPSBjLCB0LmhlaWdodCA9IGYgLSBjKSA6ICh0LnkgPSBmLCB0LmhlaWdodCA9IGMgLSBmKVxuICAgICAgICAgICAgfSwgUCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBFKHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlLnggLT0gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LCBlLnkgLT0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsIGVcbiAgICAgICAgICAgIH0sIE0gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgdC5zbGljZSgxKVxuICAgICAgICAgICAgfSwgUiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXG4gICAgICAgICAgICB9LCBUID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdFt0Lmxlbmd0aCAtIDFdXG4gICAgICAgICAgICB9LCBJID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZSwgTWF0aC5taW4oaSwgdCkpXG4gICAgICAgICAgICB9LCBMID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybiAhMTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIGlmIChlW2ldID09PSB0KSByZXR1cm4gITA7XG4gICAgICAgICAgICAgICAgcmV0dXJuICExXG4gICAgICAgICAgICB9LCBPID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IFwiUE9TVFwiLCBuID0gYXJndW1lbnRzWzJdLFxuICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzWzNdLCBhID0gYXJndW1lbnRzWzRdLCByID0gYXJndW1lbnRzWzVdLCBzID0gYXJndW1lbnRzWzZdLCBoID0gbmV3IFhNTEh0dHBSZXF1ZXN0O1xuICAgICAgICAgICAgICAgIGEgJiYgaC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcihcInByb2dyZXNzXCIsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGEodC5sb2FkZWQsIHQudG90YWwpXG4gICAgICAgICAgICAgICAgfSksIGgub3BlbihpLCB0LCAhMCksIG8gJiYgbyhoLCBuKSwgaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICg0ID09PSBoLnJlYWR5U3RhdGUgJiYgaC5zdGF0dXMgPj0gMjAwICYmIGguc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGgucmVzcG9uc2VUZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0Lmxlbmd0aCkgcmV0dXJuIHZvaWQgcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuaW5kZXhPZihcIkNvbnRlbnQtTGVuZ3RoXCIpICE9PSAtMSkgcmV0dXJuIHZvaWQgcyhcImZpbGUtdG9vLWJpZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gSlNPTi5wYXJzZShoLnJlc3BvbnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcIm9iamVjdFwiID09PSAoXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgZSA/IFwidW5kZWZpbmVkXCIgOiBjKGUpKSAmJiBcImZhaWx1cmVcIiA9PT0gZS5zdGF0dXMpIHJldHVybiB2b2lkIHMoZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHIoZSB8fCB0KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKDQgPT09IGgucmVhZHlTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBKU09OLnBhcnNlKGgucmVzcG9uc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFwib2JqZWN0XCIgPT09IChcInVuZGVmaW5lZFwiID09IHR5cGVvZiBuID8gXCJ1bmRlZmluZWRcIiA6IGMobikpICYmIFwiZmFpbHVyZVwiID09PSBuLnN0YXR1cykgcmV0dXJuIHZvaWQgcyhuLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcyhcImZhaWxcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGguc2VuZChuKVxuICAgICAgICAgICAgfSwgeiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdCAmJiAodC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSBcIlwiLCB0LnN0eWxlLnRyYW5zZm9ybSA9IFwiXCIpXG4gICAgICAgICAgICB9LCBEID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCAvIDFlNlxuICAgICAgICAgICAgfSwgQSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdLCBlID0gdm9pZCAwLCBpID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIGZvciAoZSBpbiB3KSB3Lmhhc093blByb3BlcnR5KGUpICYmIChpID0gd1tlXSwgdC5pbmRleE9mKGkpID09IC0xICYmIHQucHVzaChpKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRcbiAgICAgICAgICAgIH0sIFUgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImltYWdlL2pwZWdcIiA9PT0gdFxuICAgICAgICAgICAgfSwgSCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgZm9yIChlIGluIHcpIGlmICh3Lmhhc093blByb3BlcnR5KGUpICYmIHdbZV0gPT09IHQpIHJldHVybiBlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0XG4gICAgICAgICAgICB9LCBOID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICBmb3IgKGUgaW4gdykgaWYgKHcuaGFzT3duUHJvcGVydHkoZSkgJiYgdC5pbmRleE9mKHdbZV0pICE9PSAtMSkgcmV0dXJuIHdbZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0sIEIgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0LnNwbGl0KFwiL1wiKS5wb3AoKS5zcGxpdChcIj9cIikuc2hpZnQoKVxuICAgICAgICAgICAgfSwgRiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IGUgPyBhcmd1bWVudHNbMV0gOiBcIlwiO1xuICAgICAgICAgICAgICAgIHJldHVybiAoaSArIHQpLnNsaWNlKC1pLmxlbmd0aClcbiAgICAgICAgICAgIH0sIFcgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0LmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIEYodC5nZXRNb250aCgpICsgMSwgXCIwMFwiKSArIFwiLVwiICsgRih0LmdldERhdGUoKSwgXCIwMFwiKSArIFwiX1wiICsgRih0LmdldEhvdXJzKCksIFwiMDBcIikgKyBcIi1cIiArIEYodC5nZXRNaW51dGVzKCksIFwiMDBcIikgKyBcIi1cIiArIEYodC5nZXRTZWNvbmRzKCksIFwiMDBcIilcbiAgICAgICAgICAgIH0sIHEgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB0Lm5hbWUgPyBXKG5ldyBEYXRlKSArIFwiLlwiICsgSChqKHQpKSA6IHQubmFtZVxuICAgICAgICAgICAgfSwgaiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQudHlwZSB8fCBcImltYWdlL2pwZWdcIlxuICAgICAgICAgICAgfSwgViA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgaWYgKFwic3RyaW5nXCIgIT0gdHlwZW9mIHQpIHJldHVybiBXKG5ldyBEYXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IEIodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuc3BsaXQoXCIuXCIpLnNoaWZ0KClcbiAgICAgICAgICAgIH0sIEcgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbdF0sIGUsIHt0eXBlOiB0LnR5cGUsIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKX0pXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZSwgdC5uYW1lID0gZSwgdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIFggPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAvXmRhdGE6aW1hZ2UvLnRlc3QodClcbiAgICAgICAgICAgIH0sIFkgPSBmdW5jdGlvbiAodCwgZSwgaSwgbiwgbywgYSkge1xuICAgICAgICAgICAgICAgIHQgPSBcIlwiICsgdCArICh0LmluZGV4T2YoXCI/XCIpICE9PSAtMSA/IFwiJlwiIDogXCI/XCIpICsgXCJ1cmw9XCIgKyBuO1xuICAgICAgICAgICAgICAgIHZhciByID0gbmV3IFhNTEh0dHBSZXF1ZXN0O1xuICAgICAgICAgICAgICAgIHIub3BlbihcIkdFVFwiLCB0LCAhMCksIGUociksIHIucmVzcG9uc2VUeXBlID0gXCJqc29uXCIsIHIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJmYWlsdXJlXCIgPT09IHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdm9pZCBvKHRoaXMucmVzcG9uc2UubWVzc2FnZSkgOiB2b2lkIEoodGhpcy5yZXNwb25zZS5ib2R5LCBpLCBhKVxuICAgICAgICAgICAgICAgIH0sIHIuc2VuZCgpXG4gICAgICAgICAgICB9LCBKID0gZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICB2YXIgbyA9IG5ldyBYTUxIdHRwUmVxdWVzdDtcbiAgICAgICAgICAgICAgICBvLm9wZW4oXCJHRVRcIiwgdCwgITApLCBlKG8pLCBvLnJlc3BvbnNlVHlwZSA9IFwiYmxvYlwiLCBvLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvLnN0YXR1cyA+PSAyMDAgJiYgby5zdGF0dXMgPCAzMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gQih0KSwgciA9IE4odGhpcy5yZXNwb25zZS50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGIudGVzdChhKSB8fCAoYSArPSBcIi5cIiArIEgocikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBHKHRoaXMucmVzcG9uc2UsIGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaShndChzLCByKSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG4oby5zdGF0dXMgKyBcIjogXCIgKyBvLnN0YXR1c1RleHQpXG4gICAgICAgICAgICAgICAgfSwgby5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBuKClcbiAgICAgICAgICAgICAgICB9LCBvLnNlbmQoKVxuICAgICAgICAgICAgfSwgJCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB0LnNwbGl0KFwiLFwiKVsxXSwgaSA9IGUucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhdG9iKGkpXG4gICAgICAgICAgICB9LCBaID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gJCh0KSwgbiA9IG5ldyBBcnJheUJ1ZmZlcihpLmxlbmd0aCksIG8gPSBuZXcgVWludDhBcnJheShuKSwgYSA9IDA7IGEgPCBpLmxlbmd0aDsgYSsrKSBvW2FdID0gaS5jaGFyQ29kZUF0KGEpO1xuICAgICAgICAgICAgICAgIHZhciByID0gd3QodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIGUgJiYgKGUgPSBXKG5ldyBEYXRlKSArIFwiLlwiICsgSChyKSksIEcoSyhuLCByKSwgZSlcbiAgICAgICAgICAgIH0sIEsgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gd2luZG93LkJsb2JCdWlsZGVyID0gd2luZG93LkJsb2JCdWlsZGVyIHx8IHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlciB8fCB3aW5kb3cuTW96QmxvYkJ1aWxkZXIgfHwgd2luZG93Lk1TQmxvYkJ1aWxkZXI7XG4gICAgICAgICAgICAgICAgaWYgKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBuZXcgaTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uYXBwZW5kKHQpLCBuLmdldEJsb2IoZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCbG9iKFt0XSwge3R5cGU6IGV9KVxuICAgICAgICAgICAgfSwgUSA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG8gPSBcInN0cmluZ1wiICE9IHR5cGVvZiB0IHx8IDAgIT09IHQuaW5kZXhPZihcImRhdGE6aW1hZ2VcIik7XG4gICAgICAgICAgICAgICAgbi5wYXJzZU1ldGFEYXRhKHQsIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0ge2NhbnZhczogITAsIGNyb3NzT3JpZ2luOiBvfTtcbiAgICAgICAgICAgICAgICAgICAgZSAmJiAoci5tYXhXaWR0aCA9IGUud2lkdGgsIHIubWF4SGVpZ2h0ID0gZS5oZWlnaHQpLCBhLmV4aWYgJiYgKHIub3JpZW50YXRpb24gPSBhLmV4aWYuZ2V0KFwiT3JpZW50YXRpb25cIikpLCBuKHQsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJlcnJvclwiID09PSB0LnR5cGUgPyB2b2lkIGkoKSA6IHZvaWQgaSh0LCBhKVxuICAgICAgICAgICAgICAgICAgICB9LCByKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCB0dCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG4sIG8sIGEsIHIsIHMgPSBlIC8gdDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcyA8IGkgPyAociA9IGUsIGEgPSByIC8gaSwgbiA9IC41ICogKHQgLSBhKSwgbyA9IDApIDogKGEgPSB0LCByID0gYSAqIGksIG4gPSAwLCBvID0gLjUgKiAoZSAtIHIpKSwge1xuICAgICAgICAgICAgICAgICAgICB4OiBuLCB5OiBvLCBoZWlnaHQ6IHIsIHdpZHRoOiBhXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSBlID8gYXJndW1lbnRzWzFdIDoge30sIG8gPSBhcmd1bWVudHNbMl0sIGEgPSBrKFwiY2FudmFzXCIpLFxuICAgICAgICAgICAgICAgICAgICByID0gbi5yb3RhdGlvbiwgcyA9IG4uY3JvcCwgaCA9IG4uc2l6ZSwgdSA9IG4uZmlsdGVycywgbCA9IG4ubWluU2l6ZTtcbiAgICAgICAgICAgICAgICBpZiAocykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IHIgJSAxODAgIT09IDAsIGMgPSB7d2lkdGg6IHAgPyB0LmhlaWdodCA6IHQud2lkdGgsIGhlaWdodDogcCA/IHQud2lkdGggOiB0LmhlaWdodH07XG4gICAgICAgICAgICAgICAgICAgIHMueCA8IDAgJiYgKHMueCA9IDApLCBzLnkgPCAwICYmIChzLnkgPSAwKSwgcy53aWR0aCA+IGMud2lkdGggJiYgKHMud2lkdGggPSBjLndpZHRoKSwgcy5oZWlnaHQgPiBjLmhlaWdodCAmJiAocy5oZWlnaHQgPSBjLmhlaWdodCksIHMueSArIHMuaGVpZ2h0ID4gYy5oZWlnaHQgJiYgKHMueSA9IE1hdGgubWF4KDAsIGMuaGVpZ2h0IC0gcy5oZWlnaHQpKSwgcy54ICsgcy53aWR0aCA+IGMud2lkdGggJiYgKHMueCA9IE1hdGgubWF4KDAsIGMud2lkdGggLSBzLndpZHRoKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gcy54IC8gYy53aWR0aCwgZiA9IHMueSAvIGMuaGVpZ2h0LCBfID0gcy53aWR0aCAvIGMud2lkdGgsIG0gPSBzLmhlaWdodCAvIGMuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBhLndpZHRoID0gcy53aWR0aCwgYS5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBhLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgOTAgPT09IHIgPyAoZy50cmFuc2xhdGUoLjUgKiBhLndpZHRoLCAuNSAqIGEuaGVpZ2h0KSwgZy5yb3RhdGUoLTkwICogTWF0aC5QSSAvIDE4MCksIGcuZHJhd0ltYWdlKHQsICgxIC0gZikgKiB0LndpZHRoIC0gdC53aWR0aCAqIG0sIHMueCwgcy5oZWlnaHQsIHMud2lkdGgsIC41ICogLWEuaGVpZ2h0LCAuNSAqIC1hLndpZHRoLCBhLmhlaWdodCwgYS53aWR0aCkpIDogMTgwID09PSByID8gKGcudHJhbnNsYXRlKC41ICogYS53aWR0aCwgLjUgKiBhLmhlaWdodCksIGcucm90YXRlKC0xODAgKiBNYXRoLlBJIC8gMTgwKSwgZy5kcmF3SW1hZ2UodCwgKDEgLSAoZCArIF8pKSAqIGMud2lkdGgsICgxIC0gKGYgKyBtKSkgKiBjLmhlaWdodCwgXyAqIGMud2lkdGgsIG0gKiBjLmhlaWdodCwgLjUgKiAtYS53aWR0aCwgLjUgKiAtYS5oZWlnaHQsIGEud2lkdGgsIGEuaGVpZ2h0KSkgOiAyNzAgPT09IHIgPyAoZy50cmFuc2xhdGUoLjUgKiBhLndpZHRoLCAuNSAqIGEuaGVpZ2h0KSwgZy5yb3RhdGUoLTI3MCAqIE1hdGguUEkgLyAxODApLCBnLmRyYXdJbWFnZSh0LCBzLnksICgxIC0gZCkgKiB0LmhlaWdodCAtIHQuaGVpZ2h0ICogXywgcy5oZWlnaHQsIHMud2lkdGgsIC41ICogLWEuaGVpZ2h0LCAuNSAqIC1hLndpZHRoLCBhLmhlaWdodCwgYS53aWR0aCkpIDogZy5kcmF3SW1hZ2UodCwgcy54LCBzLnksIHMud2lkdGgsIHMuaGVpZ2h0LCAwLCAwLCBhLndpZHRoLCBhLmhlaWdodClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBoLndpZHRoIC8gYS53aWR0aCwgeSA9IGguaGVpZ2h0IC8gYS5oZWlnaHQsIHcgPSBNYXRoLm1pbih2LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgaShhLCB3LCBoLCBsKSwgdS5zaGFycGVuID4gMCAmJiBudChhLCBhdCh1LnNoYXJwZW4pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvKGEpXG4gICAgICAgICAgICB9LCBpdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRJbWFnZURhdGEoMCwgMCwgdC53aWR0aCwgdC5oZWlnaHQpXG4gICAgICAgICAgICB9LCBudCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICBpLnB1dEltYWdlRGF0YShlKGl0KHQpLCB0LndpZHRoLCB0LmhlaWdodCksIDAsIDApXG4gICAgICAgICAgICB9LCBvdCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgICAgICAgIG4ud2lkdGggPSB0LCBuLmhlaWdodCA9IGU7XG4gICAgICAgICAgICAgICAgdmFyIG8gPSBuLmdldENvbnRleHQoXCIyZFwiKSwgYSA9IG8uY3JlYXRlSW1hZ2VEYXRhKG4ud2lkdGgsIG4uaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiBhLnNldChpLmRhdGEpLCBhXG4gICAgICAgICAgICB9LCBhdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBbMCwgLTEsIDAsIC0xLCA1LCAtMSwgMCwgLTEsIDBdLCBhID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoby5sZW5ndGgpKSwgciA9IC41ICogYSB8IDAsIHMgPSBvdChpLCBuKSwgaCA9IHMuZGF0YSwgdSA9IGUuZGF0YSwgbCA9IG4sIHAgPSB2b2lkIDA7IGwtLTspIGZvciAocCA9IGk7IHAtLTspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSBsLCBkID0gcCwgZiA9IDQgKiAobCAqIGkgKyBwKSwgXyA9IDAsIG0gPSAwLCBnID0gMCwgdiA9IDAsIHkgPSAwOyB5IDwgYTsgeSsrKSBmb3IgKHZhciB3ID0gMDsgdyA8IGE7IHcrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYyArIHkgLSByLCBrID0gZCArIHcgLSByO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiID49IDAgJiYgYiA8IG4gJiYgayA+PSAwICYmIGsgPCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gNCAqIChiICogaSArIGspLCBTID0gb1t5ICogYSArIHddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICs9IHVbeF0gKiBTLCBtICs9IHVbeCArIDFdICogUywgZyArPSB1W3ggKyAyXSAqIFMsIHYgKz0gdVt4ICsgM10gKiBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaFtmXSA9IF8gKiB0ICsgdVtmXSAqICgxIC0gdCksIGhbZiArIDFdID0gbSAqIHQgKyB1W2YgKyAxXSAqICgxIC0gdCksIGhbZiArIDJdID0gZyAqIHQgKyB1W2YgKyAyXSAqICgxIC0gdCksIGhbZiArIDNdID0gdVtmICsgM11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHJ0ID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IE1hdGguYWJzKHQud2lkdGggLSBlLndpZHRoKSwgbiA9IE1hdGguYWJzKHQuaGVpZ2h0IC0gZS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChpLCBuKVxuICAgICAgICAgICAgfSwgc3QgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBodCh0LCAxKVxuICAgICAgICAgICAgfSwgaHQgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLCBvID0gbi5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG4ud2lkdGggPSB0LndpZHRoLCBuLmhlaWdodCA9IHQuaGVpZ2h0LCBvLmRyYXdJbWFnZSh0LCAwLCAwKSwgZSA+IDAgJiYgMSAhPT0gZSAmJiBpKG4sIGUsIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodC53aWR0aCAqIGUpLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQodC5oZWlnaHQgKiBlKVxuICAgICAgICAgICAgICAgIH0sIHt3aWR0aDogMCwgaGVpZ2h0OiAwfSksIG5cbiAgICAgICAgICAgIH0sIHV0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC53aWR0aCAmJiB0LmhlaWdodFxuICAgICAgICAgICAgfSwgbHQgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gZS5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgdXQoZSkgPyBpLmRyYXdJbWFnZSh0LCAwLCAwLCBlLndpZHRoLCBlLmhlaWdodCkgOiAoZS53aWR0aCA9IHQud2lkdGgsIGUuaGVpZ2h0ID0gdC5oZWlnaHQsIGkuZHJhd0ltYWdlKHQsIDAsIDApKVxuICAgICAgICAgICAgfSwgcHQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGwodCwgMCwgMCwgdC53aWR0aCwgdC5oZWlnaHQsIDMpXG4gICAgICAgICAgICB9LCBjdCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHQud2lkdGgsIDEwKSA+PSBlLndpZHRoICYmIHBhcnNlSW50KHQuaGVpZ2h0LCAxMCkgPj0gZS5oZWlnaHRcbiAgICAgICAgICAgIH0sIGR0ID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge3g6IHQueCAqIGUsIHk6IHQueSAqIGksIHdpZHRoOiB0LndpZHRoICogZSwgaGVpZ2h0OiB0LmhlaWdodCAqIGl9XG4gICAgICAgICAgICB9LCBmdCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt4OiB0LnggLyBlLCB5OiB0LnkgLyBpLCB3aWR0aDogdC53aWR0aCAvIGUsIGhlaWdodDogdC5oZWlnaHQgLyBpfVxuICAgICAgICAgICAgfSwgX3QgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGlmICh0ICYmIFwiXCIgIT09IHQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKSwgbiA9IHQucGFyZW50Tm9kZSwgbyA9IHQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpLmFwcGVuZENoaWxkKHQpLCBpLnJlc2V0KCksIG8gPyBuLmluc2VydEJlZm9yZSh0LCBvKSA6IG4uYXBwZW5kQ2hpbGQodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG10ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJvYmplY3RcIiA9PT0gKFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHZhbHVlID8gXCJ1bmRlZmluZWRcIiA6IGModmFsdWUpKSAmJiBudWxsICE9PSB2YWx1ZSA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodCkpIDogdFxuICAgICAgICAgICAgfSwgZ3QgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSBlID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBuID0gdC5zbGljZSgwLCB0LnNpemUsIGkgfHwgdC50eXBlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbi5uYW1lID0gdC5uYW1lLCBuLmxhc3RNb2RpZmllZCA9IG5ldyBEYXRlKHQubGFzdE1vZGlmaWVkKSwgblxuICAgICAgICAgICAgfSwgdnQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gbXQodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5wdXQuZmlsZSA9IGd0KHQuaW5wdXQuZmlsZSksIGUub3V0cHV0LmltYWdlID0gc3QodC5vdXRwdXQuaW1hZ2UpLCBlXG4gICAgICAgICAgICB9LCB5dCA9IGZ1bmN0aW9uICh0LCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgaSA/IHQudG9EYXRhVVJMKGksIFUoaSkgJiYgXCJudW1iZXJcIiA9PSB0eXBlb2YgbiA/IG4gLyAxMDAgOiBlKSA6IG51bGxcbiAgICAgICAgICAgIH0sIHd0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBlID0gdC5zdWJzdHIoMCwgMTYpLm1hdGNoKC9eLis7Lyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUubGVuZ3RoID8gZVswXS5zdWJzdHJpbmcoNSwgZVswXS5sZW5ndGggLSAxKSA6IG51bGxcbiAgICAgICAgICAgIH0sIGJ0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IFtdLCBuID0gYXJndW1lbnRzWzJdLCBvID0gYXJndW1lbnRzWzNdLFxuICAgICAgICAgICAgICAgICAgICBhID0gYXJndW1lbnRzWzRdLCByID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyOiBtdCh0LnNlcnZlciksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiBtdCh0Lm1ldGEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LmlucHV0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdC5pbnB1dC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHQuaW5wdXQuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdC5pbnB1dC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaW5wdXQuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiB0LmlucHV0LmZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIEwoXCJpbnB1dFwiLCBpKSAmJiAhYSAmJiAoci5pbnB1dC5pbWFnZSA9IHl0KHQuaW5wdXQuaW1hZ2UsIHQuaW5wdXQudHlwZSkpLCBMKFwib3V0cHV0XCIsIGkpICYmIChyLm91dHB1dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbyA/IFYodC5pbnB1dC5uYW1lKSArIFwiLlwiICsgbyA6IHQuaW5wdXQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogd1tvXSB8fCB0LmlucHV0LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0Lm91dHB1dC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0Lm91dHB1dC5oZWlnaHRcbiAgICAgICAgICAgICAgICB9LCByLm91dHB1dC5pbWFnZSA9IHl0KHQub3V0cHV0LmltYWdlLCByLm91dHB1dC50eXBlLCBuKSwgci5vdXRwdXQudHlwZSA9IHd0KHIub3V0cHV0LmltYWdlKSwgXCJpbWFnZS9wbmdcIiA9PT0gci5vdXRwdXQudHlwZSAmJiAoci5vdXRwdXQubmFtZSA9IFYoci5pbnB1dC5uYW1lKSArIFwiLnBuZ1wiKSksIEwoXCJhY3Rpb25zXCIsIGkpICYmIChyLmFjdGlvbnMgPSBtdCh0LmFjdGlvbnMpKSwgclxuICAgICAgICAgICAgfSwga3QgPSBmdW5jdGlvbiAodCwgaSwgbikge1xuICAgICAgICAgICAgICAgIHZhciBvID0gdC5vdXRwdXQuaW1hZ2UsIGEgPSBuID8gVih0LmlucHV0Lm5hbWUpICsgXCIuXCIgKyBuIDogdC5pbnB1dC5uYW1lLCByID0gd1tuXSB8fCB0LmlucHV0LnR5cGU7XG4gICAgICAgICAgICAgICAgXCJpbWFnZS9wbmdcIiA9PT0gciAmJiAoYSA9IFYodC5pbnB1dC5uYW1lKSArIFwiLnBuZ1wiKSwgby50b0Jsb2IoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFwibXNTYXZlQmxvYlwiIGluIHdpbmRvdy5uYXZpZ2F0b3IpIHJldHVybiB2b2lkIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYih0LCBhKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAod2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMKS5jcmVhdGVPYmplY3RVUkwodCksIGkgPSBrKFwiYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgaS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCIsIGkuZG93bmxvYWQgPSBhLCBpLmhyZWYgPSBlLCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpLCBpLmNsaWNrKCksIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpKSwgKHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTCkucmV2b2tlT2JqZWN0VVJMKGUpXG4gICAgICAgICAgICAgICAgICAgIH0sIDApXG4gICAgICAgICAgICAgICAgfSwgciwgXCJudW1iZXJcIiA9PSB0eXBlb2YgaSA/IGkgLyAxMDAgOiBlKVxuICAgICAgICAgICAgfSwgeHQgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIHZhciBuID0gaS5xdWVyeVNlbGVjdG9yKHQpO1xuICAgICAgICAgICAgICAgIG4gJiYgKG4uc3R5bGUuZGlzcGxheSA9IGUgPyBcIlwiIDogXCJub25lXCIpXG4gICAgICAgICAgICB9LCBTdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpXG4gICAgICAgICAgICB9LCBFdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpXG4gICAgICAgICAgICB9LCBDdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBrKFwiZGl2XCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0LnBhcmVudE5vZGUgJiYgKHQubmV4dFNpYmxpbmcgPyB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsIHQubmV4dFNpYmxpbmcpIDogdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGUpKSwgZS5hcHBlbmRDaGlsZCh0KSwgZVxuICAgICAgICAgICAgfSwgUHQgPSBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgIHZhciBvID0gKG4gLSA5MCkgKiBNYXRoLlBJIC8gMTgwO1xuICAgICAgICAgICAgICAgIHJldHVybiB7eDogdCArIGkgKiBNYXRoLmNvcyhvKSwgeTogZSArIGkgKiBNYXRoLnNpbihvKX1cbiAgICAgICAgICAgIH0sIE10ID0gZnVuY3Rpb24gKHQsIGUsIGksIG4sIG8pIHtcbiAgICAgICAgICAgICAgICB2YXIgYSA9IFB0KHQsIGUsIGksIG8pLCByID0gUHQodCwgZSwgaSwgbiksIHMgPSBvIC0gbiA8PSAxODAgPyBcIjBcIiA6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgICBoID0gW1wiTVwiLCBhLngsIGEueSwgXCJBXCIsIGksIGksIDAsIHMsIDAsIHIueCwgci55XS5qb2luKFwiIFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaFxuICAgICAgICAgICAgfSwgUnQgPSBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBNdCh0LCBlLCBpLCAwLCAzNjAgKiBuKVxuICAgICAgICAgICAgfSwgVHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB7XG4gICAgICAgICAgICAgICAgICAgIG46IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbywgYSwgciwgcywgaCwgdSwgbCwgcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gdC55ICsgdC5oZWlnaHQsIG8gPSBJKGUueSwgMCwgciksIHIgLSBvIDwgaS5taW4uaGVpZ2h0ICYmIChvID0gciAtIGkubWluLmhlaWdodCksIGggPSBuID8gKHIgLSBvKSAvIG4gOiB0LndpZHRoLCBoIDwgaS5taW4ud2lkdGggJiYgKGggPSBpLm1pbi53aWR0aCwgbyA9IHIgLSBoICogbiksIGwgPSAuNSAqIChoIC0gdC53aWR0aCksIHMgPSB0LnggLSBsLCBhID0gdC54ICsgdC53aWR0aCArIGwsIChzIDwgMCB8fCBNYXRoLnJvdW5kKGEpID4gTWF0aC5yb3VuZChpLndpZHRoKSkgJiYgKHAgPSBNYXRoLm1pbih0LngsIGkud2lkdGggLSAodC54ICsgdC53aWR0aCkpLCBzID0gdC54IC0gcCwgYSA9IHQueCArIHQud2lkdGggKyBwLCBoID0gYSAtIHMsIHUgPSBoICogbiwgbyA9IHIgLSB1KSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSAtIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByIC0gb1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBzOiBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHIsIHMsIGgsIHUsIGwsIHA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9IHQueSwgciA9IEkoZS55LCBvLCBpLmhlaWdodCksIHIgLSBvIDwgaS5taW4uaGVpZ2h0ICYmIChyID0gbyArIGkubWluLmhlaWdodCksIGggPSBuID8gKHIgLSBvKSAvIG4gOiB0LndpZHRoLCBoIDwgaS5taW4ud2lkdGggJiYgKGggPSBpLm1pbi53aWR0aCwgciA9IG8gKyBoICogbiksIGwgPSAuNSAqIChoIC0gdC53aWR0aCksIHMgPSB0LnggLSBsLCBhID0gdC54ICsgdC53aWR0aCArIGwsIChzIDwgMCB8fCBNYXRoLnJvdW5kKGEpID4gTWF0aC5yb3VuZChpLndpZHRoKSkgJiYgKHAgPSBNYXRoLm1pbih0LngsIGkud2lkdGggLSAodC54ICsgdC53aWR0aCkpLCBzID0gdC54IC0gcCwgYSA9IHQueCArIHQud2lkdGggKyBwLCBoID0gYSAtIHMsIHUgPSBoICogbiwgciA9IG8gKyB1KSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSAtIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByIC0gb1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBlOiBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHIsIHMsIGgsIHUsIGwsIHA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyA9IHQueCwgYSA9IEkoZS54LCBzLCBpLndpZHRoKSwgYSAtIHMgPCBpLm1pbi53aWR0aCAmJiAoYSA9IHMgKyBpLm1pbi53aWR0aCksIHUgPSBuID8gKGEgLSBzKSAqIG4gOiB0LmhlaWdodCwgdSA8IGkubWluLmhlaWdodCAmJiAodSA9IGkubWluLmhlaWdodCwgYSA9IHMgKyB1IC8gbiksIGwgPSAuNSAqICh1IC0gdC5oZWlnaHQpLCBvID0gdC55IC0gbCwgciA9IHQueSArIHQuaGVpZ2h0ICsgbCwgKG8gPCAwIHx8IE1hdGgucm91bmQocikgPiBNYXRoLnJvdW5kKGkuaGVpZ2h0KSkgJiYgKHAgPSBNYXRoLm1pbih0LnksIGkuaGVpZ2h0IC0gKHQueSArIHQuaGVpZ2h0KSksIG8gPSB0LnkgLSBwLCByID0gdC55ICsgdC5oZWlnaHQgKyBwLCB1ID0gciAtIG8sIGggPSB1IC8gbiwgYSA9IHMgKyBoKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSAtIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByIC0gb1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB3OiBmdW5jdGlvbiBuKHQsIGUsIGksIG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhLCByLCBzLCBoLCBuLCB1LCBsLCBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPSB0LnggKyB0LndpZHRoLCBoID0gSShlLngsIDAsIHIpLCByIC0gaCA8IGkubWluLndpZHRoICYmIChoID0gciAtIGkubWluLndpZHRoKSwgdSA9IG8gPyAociAtIGgpICogbyA6IHQuaGVpZ2h0LCB1IDwgaS5taW4uaGVpZ2h0ICYmICh1ID0gaS5taW4uaGVpZ2h0LCBoID0gciAtIHUgLyBvKSwgbCA9IC41ICogKHUgLSB0LmhlaWdodCksIGEgPSB0LnkgLSBsLCBzID0gdC55ICsgdC5oZWlnaHQgKyBsLCAoYSA8IDAgfHwgTWF0aC5yb3VuZChzKSA+IE1hdGgucm91bmQoaS5oZWlnaHQpKSAmJiAocCA9IE1hdGgubWluKHQueSwgaS5oZWlnaHQgLSAodC55ICsgdC5oZWlnaHQpKSwgYSA9IHQueSAtIHAsIHMgPSB0LnkgKyB0LmhlaWdodCArIHAsIHUgPSBzIC0gYSwgbiA9IHUgLyBvLCBoID0gciAtIG4pLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiByIC0gaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHMgLSBhXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIG5lOiBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHIsIHMsIGgsIHUsIGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyA9IHQueCwgciA9IHQueSArIHQuaGVpZ2h0LCBhID0gSShlLngsIHMsIGkud2lkdGgpLCBhIC0gcyA8IGkubWluLndpZHRoICYmIChhID0gcyArIGkubWluLndpZHRoKSwgdSA9IG4gPyAoYSAtIHMpICogbiA6IEkociAtIGUueSwgaS5taW4uaGVpZ2h0LCByKSwgdSA8IGkubWluLmhlaWdodCAmJiAodSA9IGkubWluLmhlaWdodCwgYSA9IHMgKyB1IC8gbiksIG8gPSB0LnkgLSAodSAtIHQuaGVpZ2h0KSwgKG8gPCAwIHx8IE1hdGgucm91bmQocikgPiBNYXRoLnJvdW5kKGkuaGVpZ2h0KSkgJiYgKGwgPSBNYXRoLm1pbih0LnksIGkuaGVpZ2h0IC0gKHQueSArIHQuaGVpZ2h0KSksIG8gPSB0LnkgLSBsLCB1ID0gciAtIG8sIGggPSB1IC8gbiwgYSA9IHMgKyBoKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSAtIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByIC0gb1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBzZTogZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCByLCBzLCBoLCB1LCBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB0LngsIG8gPSB0LnksIGEgPSBJKGUueCwgcywgaS53aWR0aCksIGEgLSBzIDwgaS5taW4ud2lkdGggJiYgKGEgPSBzICsgaS5taW4ud2lkdGgpLCB1ID0gbiA/IChhIC0gcykgKiBuIDogSShlLnkgLSB0LnksIGkubWluLmhlaWdodCwgaS5oZWlnaHQgLSBvKSwgdSA8IGkubWluLmhlaWdodCAmJiAodSA9IGkubWluLmhlaWdodCwgYSA9IHMgKyB1IC8gbiksIHIgPSB0LnkgKyB0LmhlaWdodCArICh1IC0gdC5oZWlnaHQpLCAobyA8IDAgfHwgTWF0aC5yb3VuZChyKSA+IE1hdGgucm91bmQoaS5oZWlnaHQpKSAmJiAobCA9IE1hdGgubWluKHQueSwgaS5oZWlnaHQgLSAodC55ICsgdC5oZWlnaHQpKSwgciA9IHQueSArIHQuaGVpZ2h0ICsgbCwgdSA9IHIgLSBvLCBoID0gdSAvIG4sIGEgPSBzICsgaCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEgLSBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciAtIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgc3c6IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbywgYSwgciwgcywgaCwgdSwgbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gdC54ICsgdC53aWR0aCwgbyA9IHQueSwgcyA9IEkoZS54LCAwLCBhKSwgYSAtIHMgPCBpLm1pbi53aWR0aCAmJiAocyA9IGEgLSBpLm1pbi53aWR0aCksIHUgPSBuID8gKGEgLSBzKSAqIG4gOiBJKGUueSAtIHQueSwgaS5taW4uaGVpZ2h0LCBpLmhlaWdodCAtIG8pLCB1IDwgaS5taW4uaGVpZ2h0ICYmICh1ID0gaS5taW4uaGVpZ2h0LCBzID0gYSAtIHUgLyBuKSwgciA9IHQueSArIHQuaGVpZ2h0ICsgKHUgLSB0LmhlaWdodCksIChvIDwgMCB8fCBNYXRoLnJvdW5kKHIpID4gTWF0aC5yb3VuZChpLmhlaWdodCkpICYmIChsID0gTWF0aC5taW4odC55LCBpLmhlaWdodCAtICh0LnkgKyB0LmhlaWdodCkpLCByID0gdC55ICsgdC5oZWlnaHQgKyBsLCB1ID0gciAtIG8sIGggPSB1IC8gbiwgcyA9IGEgLSBoKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSAtIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByIC0gb1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBudzogZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCByLCBzLCBoLCB1LCBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPSB0LnggKyB0LndpZHRoLCByID0gdC55ICsgdC5oZWlnaHQsIHMgPSBJKGUueCwgMCwgYSksIGEgLSBzIDwgaS5taW4ud2lkdGggJiYgKHMgPSBhIC0gaS5taW4ud2lkdGgpLCB1ID0gbiA/IChhIC0gcykgKiBuIDogSShyIC0gZS55LCBpLm1pbi5oZWlnaHQsIHIpLCB1IDwgaS5taW4uaGVpZ2h0ICYmICh1ID0gaS5taW4uaGVpZ2h0LCBzID0gYSAtIHUgLyBuKSwgbyA9IHQueSAtICh1IC0gdC5oZWlnaHQpLCAobyA8IDAgfHwgTWF0aC5yb3VuZChyKSA+IE1hdGgucm91bmQoaS5oZWlnaHQpKSAmJiAobCA9IE1hdGgubWluKHQueSwgaS5oZWlnaHQgLSAodC55ICsgdC5oZWlnaHQpKSwgbyA9IHQueSAtIGwsIHUgPSByIC0gbywgaCA9IHUgLyBuLCBzID0gYSAtIGgpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhIC0gcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHIgLSBvXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0KHRoaXMsIG4pLCB0aGlzLl9lbGVtZW50ID0gaSwgdGhpcy5faW50ZXJhY3Rpb24gPSBudWxsLCB0aGlzLl9taW5XaWR0aCA9IDEsIHRoaXMuX21pbkhlaWdodCA9IDEsIHRoaXMuX3JhdGlvID0gbnVsbCwgdGhpcy5fcmVjdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9zcGFjZSA9IHt3aWR0aDogMCwgaGVpZ2h0OiAwfSwgdGhpcy5fcmVjdENoYW5nZWQgPSAhMSwgdGhpcy5faW5pdCgpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcChuLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9pbml0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBcInNsaW0tY3JvcC1hcmVhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBrKFwiZGl2XCIsIFwiZ3JpZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gaSkgaWYgKGkuaGFzT3duUHJvcGVydHkoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBrKFwiYnV0dG9uXCIsIGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKG4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gayhcImJ1dHRvblwiLCBcImNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChvKSwgeChkb2N1bWVudCwgeS5ET1dOLCB0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwicmVzZXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcmFjdGlvbiA9IG51bGwsIHRoaXMuX3JlY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9yZWN0Q2hhbmdlZCA9ICEwLCB0aGlzLl9yZWRyYXcoKSwgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInJlc2NhbGVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAhPT0gdCAmJiAodGhpcy5faW50ZXJhY3Rpb24gPSBudWxsLCB0aGlzLl9yZWN0Q2hhbmdlZCA9ICEwLCB0aGlzLl9yZWN0LnggKj0gdCwgdGhpcy5fcmVjdC55ICo9IHQsIHRoaXMuX3JlY3Qud2lkdGggKj0gdCwgdGhpcy5fcmVjdC5oZWlnaHQgKj0gdCwgdGhpcy5fcmVkcmF3KCksIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjaGFuZ2VcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwibGltaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3BhY2Uud2lkdGggPSB0LCB0aGlzLl9zcGFjZS5oZWlnaHQgPSBlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJvZmZzZXRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3BhY2UueCA9IHQsIHRoaXMuX3NwYWNlLnkgPSBlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJyZXNpemVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJhY3Rpb24gPSBudWxsLCB0aGlzLl9yZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBJKHQsIDAsIHRoaXMuX3NwYWNlLndpZHRoIC0gdGhpcy5fbWluV2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBJKGUsIDAsIHRoaXMuX3NwYWNlLmhlaWdodCAtIHRoaXMuX21pbkhlaWdodCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBJKGksIHRoaXMuX21pbldpZHRoLCB0aGlzLl9zcGFjZS53aWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogSShuLCB0aGlzLl9taW5IZWlnaHQsIHRoaXMuX3NwYWNlLmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9yZWN0Q2hhbmdlZCA9ICEwLCB0aGlzLl9yZWRyYXcoKSwgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImhhbmRsZUV2ZW50XCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInRvdWNoc3RhcnRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwicG9pbnRlcmRvd25cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwibW91c2Vkb3duXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vblN0YXJ0RHJhZyh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJ0b3VjaG1vdmVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwicG9pbnRlcm1vdmVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwibW91c2Vtb3ZlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRyYWcodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwidG91Y2hlbmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwidG91Y2hjYW5jZWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwicG9pbnRlcnVwXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcIm1vdXNldXBcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uU3RvcERyYWcodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25TdGFydERyYWdcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jb250YWlucyh0LnRhcmdldCkgJiYgKHQucHJldmVudERlZmF1bHQoKSwgeChkb2N1bWVudCwgeS5NT1ZFLCB0aGlzKSwgeChkb2N1bWVudCwgeS5VUCwgdGhpcyksIHRoaXMuX2ludGVyYWN0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0LnRhcmdldC5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogUCh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2ludGVyYWN0aW9uLm9mZnNldC54IC09IHRoaXMuX3JlY3QueCwgdGhpcy5faW50ZXJhY3Rpb24ub2Zmc2V0LnkgLT0gdGhpcy5fcmVjdC55LCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtZHJhZ2dpbmdcIiwgXCJ0cnVlXCIpLCB0aGlzLl9yZWRyYXcoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkRyYWdcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gUCh0KSwgbiA9IHRoaXMuX2ludGVyYWN0aW9uLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjXCIgPT09IG4gPyAodGhpcy5fcmVjdC54ID0gSShlLnggLSB0aGlzLl9pbnRlcmFjdGlvbi5vZmZzZXQueCwgMCwgdGhpcy5fc3BhY2Uud2lkdGggLSB0aGlzLl9yZWN0LndpZHRoKSwgdGhpcy5fcmVjdC55ID0gSShlLnkgLSB0aGlzLl9pbnRlcmFjdGlvbi5vZmZzZXQueSwgMCwgdGhpcy5fc3BhY2UuaGVpZ2h0IC0gdGhpcy5fcmVjdC5oZWlnaHQpKSA6IGlbbl0gJiYgKHRoaXMuX3JlY3QgPSBpW25dKHRoaXMuX3JlY3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54IC0gdGhpcy5fc3BhY2UueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZS55IC0gdGhpcy5fc3BhY2UueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX3NwYWNlLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuX3NwYWNlLmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiB7d2lkdGg6IHRoaXMuX21pbldpZHRoLCBoZWlnaHQ6IHRoaXMuX21pbkhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9yYXRpbykpLCB0aGlzLl9yZWN0Q2hhbmdlZCA9ICEwLCB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiaW5wdXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25TdG9wRHJhZ1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCksIFMoZG9jdW1lbnQsIHkuTU9WRSwgdGhpcyksIFMoZG9jdW1lbnQsIHkuVVAsIHRoaXMpLCB0aGlzLl9pbnRlcmFjdGlvbiA9IG51bGwsIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1kcmFnZ2luZ1wiLCBcImZhbHNlXCIpLCB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2hhbmdlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3JlZHJhd1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVjdENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBcInRyYW5zbGF0ZShcIiArIHRoaXMuX3JlY3QueCArIFwicHgsXCIgKyB0aGlzLl9yZWN0LnkgKyBcInB4KTtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJcXG5cXHRcXHRcXHRcXHRcXHQtd2Via2l0LXRyYW5zZm9ybTogXCIgKyBlICsgXCI7XFxuXFx0XFx0XFx0XFx0XFx0dHJhbnNmb3JtOiBcIiArIGUgKyBcIjtcXG5cXHRcXHRcXHRcXHRcXHR3aWR0aDpcIiArIHRoaXMuX3JlY3Qud2lkdGggKyBcInB4O1xcblxcdFxcdFxcdFxcdFxcdGhlaWdodDpcIiArIHRoaXMuX3JlY3QuaGVpZ2h0ICsgXCJweDtcXG5cXHRcXHRcXHRcXHRcIiwgdGhpcy5fcmVjdENoYW5nZWQgPSAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcmFjdGlvbiAmJiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5fcmVkcmF3KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZGVzdHJveVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyYWN0aW9uID0gITEsIHRoaXMuX3JlY3RDaGFuZ2VkID0gITEsIFMoZG9jdW1lbnQsIHkuRE9XTiwgdGhpcyksIFMoZG9jdW1lbnQsIHkuTU9WRSwgdGhpcyksIFMoZG9jdW1lbnQsIHkuVVAsIHRoaXMpLCBFdCh0aGlzLl9lbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZWxlbWVudFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwic3BhY2VcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJhcmVhXCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fcmVjdC54IC8gdGhpcy5fc3BhY2Uud2lkdGgsIGUgPSB0aGlzLl9yZWN0LnkgLyB0aGlzLl9zcGFjZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9yZWN0LndpZHRoIC8gdGhpcy5fc3BhY2Uud2lkdGgsIG4gPSB0aGlzLl9yZWN0LmhlaWdodCAvIHRoaXMuX3NwYWNlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3g6IHQsIHk6IGUsIHdpZHRoOiBpLCBoZWlnaHQ6IG59XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJkaXJ0eVwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAhPT0gdGhpcy5fcmVjdC54IHx8IDAgIT09IHRoaXMuX3JlY3QueSB8fCAwICE9PSB0aGlzLl9yZWN0LndpZHRoIHx8IDAgIT09IHRoaXMuX3JlY3QuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJtaW5XaWR0aFwiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluV2lkdGggPSBNYXRoLm1heCh0LCAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwibWluSGVpZ2h0XCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5IZWlnaHQgPSBNYXRoLm1heCh0LCAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwicmF0aW9cIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhdGlvID0gdFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XSksIG5cbiAgICAgICAgICAgICAgICB9KClcbiAgICAgICAgICAgIH0oKSwgSXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBbXCJpbnB1dFwiLCBcImNoYW5nZVwiXSwgbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSBlID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICB0KHRoaXMsIG4pLCB0aGlzLl9lbGVtZW50ID0gaSwgdGhpcy5fb3B0aW9ucyA9IGcobi5vcHRpb25zKCksIG8pLCB0aGlzLl9yYXRpbyA9IG51bGwsIHRoaXMuX291dHB1dCA9IG51bGwsIHRoaXMuX3JvdGF0aW5nID0gITEsIHRoaXMuX2lucHV0ID0gbnVsbCwgdGhpcy5fcHJldmlldyA9IG51bGwsIHRoaXMuX3ByZXZpZXdCbHVycmVkID0gbnVsbCwgdGhpcy5fYmx1cnJlZFByZXZpZXcgPSAhMSwgdGhpcy5fY3JvcHBlciA9IG51bGwsIHRoaXMuX3N0cmFpZ2h0Q3JvcCA9IG51bGwsIHRoaXMuX3ByZXZpZXdXcmFwcGVyID0gbnVsbCwgdGhpcy5fY3VycmVudFdpbmRvd1NpemUgPSB7fSwgdGhpcy5fYnRuR3JvdXAgPSBudWxsLCB0aGlzLl9tYXNrRnJhbWUgPSBudWxsLCB0aGlzLl9kaXJ0eSA9ICExLCB0aGlzLl93cmFwcGVyUm90YXRpb24gPSAwLCB0aGlzLl93cmFwcGVyU2NhbGUgPSAxLCB0aGlzLl9pbml0KClcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwKG4sIFt7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2luaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBcInNsaW0taW1hZ2UtZWRpdG9yXCIsIHRoaXMuX2NvbnRhaW5lciA9IGsoXCJkaXZcIiwgXCJzbGltLWNvbnRhaW5lclwiKSwgdGhpcy5fd3JhcHBlciA9IGsoXCJkaXZcIiwgXCJzbGltLXdyYXBwZXJcIiksIHRoaXMuX3N0YWdlID0gayhcImRpdlwiLCBcInNsaW0tc3RhZ2VcIiksIHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9zdGFnZSksIHRoaXMuX2Nyb3BwZXIgPSBuZXcgVHQsIGkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9jcm9wcGVyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLCB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9zdGFnZS5hcHBlbmRDaGlsZCh0aGlzLl9jcm9wcGVyLmVsZW1lbnQpLCB0aGlzLl9wcmV2aWV3V3JhcHBlciA9IGsoXCJkaXZcIiwgXCJzbGltLWltYWdlLWVkaXRvci1wcmV2aWV3IHNsaW0tY3JvcC1wcmV2aWV3XCIpLCB0aGlzLl9wcmV2aWV3Qmx1cnJlZCA9IGsoXCJjYW52YXNcIiwgXCJzbGltLWNyb3AtYmx1clwiKSwgdGhpcy5fcHJldmlld1dyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5fcHJldmlld0JsdXJyZWQpLCB0aGlzLl93cmFwcGVyLmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXdXcmFwcGVyKSwgdGhpcy5fcHJldmlld01hc2sgPSBrKFwiZGl2XCIsIFwic2xpbS1jcm9wLW1hc2tcIiksIHRoaXMuX3ByZXZpZXcgPSBrKFwiaW1nXCIpLCB0aGlzLl9wcmV2aWV3TWFzay5hcHBlbmRDaGlsZCh0aGlzLl9wcmV2aWV3KSwgdGhpcy5fY3JvcHBlci5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXdNYXNrKSwgdGhpcy5fYnRuR3JvdXAgPSBrKFwiZGl2XCIsIFwic2xpbS1lZGl0b3ItYnRuLWdyb3VwXCIpLCBuLkJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFIoZSksIG4gPSB0Ll9vcHRpb25zW1wiYnV0dG9uXCIgKyBpICsgXCJMYWJlbFwiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Ll9vcHRpb25zW1wiYnV0dG9uXCIgKyBpICsgXCJUaXRsZVwiXSwgYSA9IHQuX29wdGlvbnNbXCJidXR0b25cIiArIGkgKyBcIkNsYXNzTmFtZVwiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBrKFwiYnV0dG9uXCIsIFwic2xpbS1lZGl0b3ItYnRuIHNsaW0tYnRuLVwiICsgZSArIChhID8gXCIgXCIgKyBhIDogXCJcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmlubmVySFRNTCA9IG4sIHIudGl0bGUgPSBvIHx8IG4sIHIudHlwZSA9IFwiYnV0dG9uXCIsIHIuc2V0QXR0cmlidXRlKFwiZGF0YS1hY3Rpb25cIiwgZSksIHIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHQpLCB0Ll9idG5Hcm91cC5hcHBlbmRDaGlsZChyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl91dGlsc0dyb3VwID0gayhcImRpdlwiLCBcInNsaW0tZWRpdG9yLXV0aWxzLWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gayhcImJ1dHRvblwiLCBcInNsaW0tZWRpdG9yLXV0aWxzLWJ0biBzbGltLWJ0bi1yb3RhdGVcIiArICh0aGlzLl9vcHRpb25zLmJ1dHRvblJvdGF0ZUNsYXNzTmFtZSA/IFwiIFwiICsgdGhpcy5fb3B0aW9ucy5idXR0b25Sb3RhdGVDbGFzc05hbWUgOiBcIlwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWFjdGlvblwiLCBcInJvdGF0ZVwiKSwgZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcyksIGUudGl0bGUgPSB0aGlzLl9vcHRpb25zLmJ1dHRvblJvdGF0ZVRpdGxlLCB0aGlzLl91dGlsc0dyb3VwLmFwcGVuZENoaWxkKGUpLCB0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fd3JhcHBlciksIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSwgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl91dGlsc0dyb3VwKSwgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9idG5Hcm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImRpcnR5XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlydHkgPSAhMFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaGFuZGxlRXZlbnRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiY2xpY2tcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2xpY2sodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiY2hhbmdlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkdyaWRDaGFuZ2UodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiaW5wdXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uR3JpZElucHV0KHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImtleWRvd25cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uS2V5RG93bih0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJyZXNpemVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uUmVzaXplKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uS2V5RG93blwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQua2V5Q29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHYuUkVUVVJOOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugdi5FU0M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYW5jZWwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkNsaWNrXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcInNsaW0tYnRuLWNhbmNlbFwiKSAmJiB0aGlzLl9jYW5jZWwoKSwgdC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwic2xpbS1idG4tY29uZmlybVwiKSAmJiB0aGlzLl9jb25maXJtKCksIHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcInNsaW0tYnRuLXJvdGF0ZVwiKSAmJiB0aGlzLl9yb3RhdGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uUmVzaXplXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFdpbmRvd1NpemUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9yZWRyYXcoKSwgdGhpcy5fcmVkcmF3Q3JvcHBlcih0aGlzLl9jcm9wcGVyLmFyZWEpLCB0aGlzLl91cGRhdGVXcmFwcGVyU2NhbGUoKSwgdGhpcy5fcmVkcmF3V3JhcHBlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfcmVkcmF3V3JhcHBlclwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdS5jcmVhdGVNYXRyaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNjYWxlKHRoaXMuX3dyYXBwZXJTY2FsZSwgdGhpcy5fd3JhcHBlclNjYWxlKSwgdC5yb3RhdGVaKHRoaXMuX3dyYXBwZXJSb3RhdGlvbiAqIChNYXRoLlBJIC8gMTgwKSksIHUuc2V0RWxlbWVudFRyYW5zZm9ybSh0aGlzLl9wcmV2aWV3V3JhcHBlciwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkdyaWRJbnB1dFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZHJhd0Nyb3BNYXNrKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkdyaWRDaGFuZ2VcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWRyYXdDcm9wTWFzaygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfdXBkYXRlV3JhcHBlclJvdGF0aW9uXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5taW5TaXplLndpZHRoID4gdGhpcy5faW5wdXQuaGVpZ2h0IHx8IHRoaXMuX29wdGlvbnMubWluU2l6ZS5oZWlnaHQgPiB0aGlzLl9pbnB1dC53aWR0aCA/IHRoaXMuX3dyYXBwZXJSb3RhdGlvbiArPSAxODAgOiB0aGlzLl93cmFwcGVyUm90YXRpb24gKz0gOTBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl91cGRhdGVXcmFwcGVyU2NhbGVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3dyYXBwZXJSb3RhdGlvbiAlIDE4MCAhPT0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2NvbnRhaW5lci5vZmZzZXRXaWR0aCwgaSA9IHRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fd3JhcHBlci5vZmZzZXRIZWlnaHQsIG8gPSB0aGlzLl93cmFwcGVyLm9mZnNldFdpZHRoLCBhID0gZSAvIG47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgKiBvID4gaSAmJiAoYSA9IGkgLyBvKSwgdGhpcy5fd3JhcHBlclNjYWxlID0gYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLl93cmFwcGVyU2NhbGUgPSAxXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfY2FuY2VsXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm90YXRpbmcgfHwgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNhbmNlbFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9jb25maXJtXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9yb3RhdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3dyYXBwZXJSb3RhdGlvbiAlIDE4MCAhPT0gMCwgZSA9IHRoaXMuX2Nyb3BwZXIuYXJlYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBkdChlLCB0ID8gdGhpcy5faW5wdXQuaGVpZ2h0IDogdGhpcy5faW5wdXQud2lkdGgsIHQgPyB0aGlzLl9pbnB1dC53aWR0aCA6IHRoaXMuX2lucHV0LmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjb25maXJtXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiB0aGlzLl93cmFwcGVyUm90YXRpb24gJSAzNjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JvcDogaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfcm90YXRlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcm90YXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm90YXRpbmcgPSAhMCwgdGhpcy5fdXBkYXRlV3JhcHBlclJvdGF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gMSA9PT0gdGhpcy5yYXRpbyB8fCBudWxsID09PSB0aGlzLl9yYXRpbyA/IHRoaXMuX2Nyb3BwZXIuYXJlYSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgQyhlLCA5MCksIHRoaXMuX3VwZGF0ZVdyYXBwZXJTY2FsZSgpLCB0aGlzLl9oaWRlQ3JvcHBlcigpLCB1KHRoaXMuX3ByZXZpZXdXcmFwcGVyLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogWzAsIDAsIHRoaXMuX3dyYXBwZXJSb3RhdGlvbiAqIChNYXRoLlBJIC8gMTgwKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogW3RoaXMuX3dyYXBwZXJTY2FsZSwgdGhpcy5fd3JhcHBlclNjYWxlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogXCJzcHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0NvbnN0YW50OiAuOCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0RlY2VsZXJhdGlvbjogLjY1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9yZWRyYXdDcm9wcGVyKGUpLCB0Ll9zaG93Q3JvcHBlcigpLCB0Ll9yb3RhdGluZyA9ICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3Nob3dDcm9wcGVyXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdSh0aGlzLl9zdGFnZSwge2Vhc2luZzogXCJlYXNlXCIsIGR1cmF0aW9uOiAyNTAsIGZyb21PcGFjaXR5OiAwLCBvcGFjaXR5OiAxfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9oaWRlQ3JvcHBlclwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUodGhpcy5fc3RhZ2UsIHtkdXJhdGlvbjogMCwgZnJvbU9wYWNpdHk6IDAsIG9wYWNpdHk6IDB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3JlZHJhd0Nyb3BNYXNrXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLCBlID0gdGhpcy5fd3JhcHBlclJvdGF0aW9uICUgMzYwLCBpID0gdGhpcy5fd3JhcHBlclNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0ge3dpZHRoOiB0aGlzLl93cmFwcGVyLm9mZnNldFdpZHRoLCBoZWlnaHQ6IHRoaXMuX3dyYXBwZXIub2Zmc2V0SGVpZ2h0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuX2Nyb3BwZXIuYXJlYSwgYSA9IHt4OiAwLCB5OiAwfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBlID8gKGEueCA9IC1vLngsIGEueSA9IC1vLnkpIDogOTAgPT09IGUgPyAoYS54ID0gLSgxIC0gby55KSwgYS55ID0gLW8ueCkgOiAxODAgPT09IGUgPyAoYS54ID0gLSgxIC0gby54KSwgYS55ID0gLSgxIC0gby55KSkgOiAyNzAgPT09IGUgJiYgKGEueCA9IC1vLnksIGEueSA9IC0oMSAtIG8ueCkpLCBhLnggKj0gbi53aWR0aCwgYS55ICo9IG4uaGVpZ2h0LCBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9tYXNrRnJhbWUpLCB0aGlzLl9tYXNrRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFwic2NhbGUoXCIgKyBpICsgXCIpIHJvdGF0ZShcIiArIC1lICsgXCJkZWcpIHRyYW5zbGF0ZShcIiArIGEueCArIFwicHgsIFwiICsgYS55ICsgXCJweCk7XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX3ByZXZpZXcuc3R5bGUuY3NzVGV4dCA9IFwiXFxuXFx0XFx0XFx0XFx0XFx0d2lkdGg6IFwiICsgdC5fcHJldmlld1NpemUud2lkdGggKyBcInB4O1xcblxcdFxcdFxcdFxcdFxcdGhlaWdodDogXCIgKyB0Ll9wcmV2aWV3U2l6ZS5oZWlnaHQgKyBcInB4O1xcblxcdFxcdFxcdFxcdFxcdC13ZWJraXQtdHJhbnNmb3JtOiBcIiArIG4gKyBcIjtcXG5cXHRcXHRcXHRcXHRcXHR0cmFuc2Zvcm06IFwiICsgbiArIFwiO1xcblxcdFxcdFxcdFxcdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm9wZW5cIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpLCBuLCBvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dCAmJiAhdGhpcy5fZGlydHkgJiYgdGhpcy5fcmF0aW8gPT09IGUpIHJldHVybiB2b2lkIG8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50V2luZG93U2l6ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2RpcnR5ID0gITEsIHRoaXMuX3dyYXBwZXJSb3RhdGlvbiA9IG4gfHwgMCwgdGhpcy5fYmx1cnJlZFByZXZpZXcgPSAhMSwgdGhpcy5fcmF0aW8gPSBlLCB0aGlzLl9wcmV2aWV3U2l6ZSA9IG51bGwsIHRoaXMuX2VsZW1lbnQuc3R5bGUub3BhY2l0eSA9IFwiMFwiLCB0aGlzLl9pbnB1dCA9IHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuICUgMTgwICE9PSAwLCBzID0gZnQoaSwgciA/IHQuaGVpZ2h0IDogdC53aWR0aCwgciA/IHQud2lkdGggOiB0LmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJldmlldy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuX3ByZXZpZXcub25sb2FkID0gbnVsbCwgYS5fY3JvcHBlci5yYXRpbyA9IGEucmF0aW8sIGEuX3JlZHJhdygpLCBhLl9yZWRyYXdDcm9wcGVyKHMpLCBvKCksIGEuX2VsZW1lbnQuc3R5bGUub3BhY2l0eSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9wcmV2aWV3LnNyYyA9IFwiXCIsIHRoaXMuX3ByZXZpZXcuc3JjID0gaHQodGhpcy5faW5wdXQsIE1hdGgubWluKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRXaWR0aCAvIHRoaXMuX2lucHV0LndpZHRoLCB0aGlzLl9jb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gdGhpcy5faW5wdXQuaGVpZ2h0KSAqIHRoaXMuX29wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbykudG9EYXRhVVJMKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9yZWRyYXdDcm9wcGVyXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fd3JhcHBlclJvdGF0aW9uICUgMTgwICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZSA/IHRoaXMuX2lucHV0LmhlaWdodCAvIHRoaXMuX2lucHV0LndpZHRoIDogdGhpcy5faW5wdXQud2lkdGggLyB0aGlzLl9pbnB1dC5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl93cmFwcGVyLm9mZnNldFdpZHRoLCBvID0gdGhpcy5fd3JhcHBlci5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLl9jb250YWluZXIub2Zmc2V0V2lkdGgsIHIgPSB0aGlzLl9jb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVdyYXBwZXJTY2FsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy5fd3JhcHBlclNjYWxlICogKGUgPyBvIDogbiksIGggPSB0aGlzLl93cmFwcGVyU2NhbGUgKiAoZSA/IG4gOiBvKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUgPyAuNSAqIChhIC0gcykgOiB0aGlzLl93cmFwcGVyLm9mZnNldExlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlID8gLjUgKiAociAtIGgpIDogdGhpcy5fd3JhcHBlci5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhZ2Uuc3R5bGUuY3NzVGV4dCA9IFwiXFxuXFx0XFx0XFx0XFx0bGVmdDpcIiArIHUgKyBcInB4O1xcblxcdFxcdFxcdFxcdHRvcDpcIiArIGwgKyBcInB4O1xcblxcdFxcdFxcdFxcdHdpZHRoOlwiICsgcyArIFwicHg7XFxuXFx0XFx0XFx0XFx0aGVpZ2h0OlwiICsgaCArIFwicHg7XFxuXFx0XFx0XFx0XCIsIHRoaXMuX2Nyb3BwZXIubGltaXQocywgcyAvIGkpLCB0aGlzLl9jcm9wcGVyLm9mZnNldCh1ICsgdGhpcy5fZWxlbWVudC5vZmZzZXRMZWZ0LCBsICsgdGhpcy5fZWxlbWVudC5vZmZzZXRUb3ApLCB0aGlzLl9jcm9wcGVyLm1pbldpZHRoID0gdGhpcy5fd3JhcHBlclNjYWxlICogdGhpcy5fb3B0aW9ucy5taW5TaXplLndpZHRoICogdGhpcy5zY2FsYXIsIHRoaXMuX2Nyb3BwZXIubWluSGVpZ2h0ID0gdGhpcy5fd3JhcHBlclNjYWxlICogdGhpcy5fb3B0aW9ucy5taW5TaXplLmhlaWdodCAqIHRoaXMuc2NhbGFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdCA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdC54ICogcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdC55ICogaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQud2lkdGggKiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaGVpZ2h0ICogaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB0dChzLCBoLCB0aGlzLl9yYXRpbyB8fCBoIC8gcyksIHRoaXMuX2Nyb3BwZXIucmVzaXplKHAueCwgcC55LCBwLndpZHRoLCBwLmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9yZWRyYXdcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2lucHV0LmhlaWdodCAvIHRoaXMuX2lucHV0LndpZHRoLCBlID0gdGhpcy5fY29udGFpbmVyLmNsaWVudFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodCwgbiA9IGUsIG8gPSBuICogdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID4gaSAmJiAobyA9IGksIG4gPSBvIC8gdCksIG4gPSBNYXRoLnJvdW5kKG4pLCBvID0gTWF0aC5yb3VuZChvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChlIC0gbikgLyAyLCByID0gKGkgLSBvKSAvIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fd3JhcHBlci5zdHlsZS5jc3NUZXh0ID0gXCJcXG5cXHRcXHRcXHRcXHRsZWZ0OlwiICsgYSArIFwicHg7XFxuXFx0XFx0XFx0XFx0dG9wOlwiICsgciArIFwicHg7XFxuXFx0XFx0XFx0XFx0d2lkdGg6XCIgKyBuICsgXCJweDtcXG5cXHRcXHRcXHRcXHRoZWlnaHQ6XCIgKyBvICsgXCJweDtcXG5cXHRcXHRcXHRcIiwgdGhpcy5fcHJldmlld0JsdXJyZWQuc3R5bGUuY3NzVGV4dCA9IFwiXFxuXFx0XFx0XFx0XFx0d2lkdGg6XCIgKyBuICsgXCJweDtcXG5cXHRcXHRcXHRcXHRoZWlnaHQ6XCIgKyBvICsgXCJweDtcXG5cXHRcXHRcXHRcIiwgdGhpcy5fcHJldmlldy5zdHlsZS5jc3NUZXh0ID0gXCJcXG5cXHRcXHRcXHRcXHR3aWR0aDpcIiArIG4gKyBcInB4O1xcblxcdFxcdFxcdFxcdGhlaWdodDpcIiArIG8gKyBcInB4O1xcblxcdFxcdFxcdFwiLCB0aGlzLl9wcmV2aWV3U2l6ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2JsdXJyZWRQcmV2aWV3IHx8ICh0aGlzLl9wcmV2aWV3Qmx1cnJlZC53aWR0aCA9IDMwMCwgdGhpcy5fcHJldmlld0JsdXJyZWQuaGVpZ2h0ID0gdGhpcy5fcHJldmlld0JsdXJyZWQud2lkdGggKiB0LCBsdCh0aGlzLl9pbnB1dCwgdGhpcy5fcHJldmlld0JsdXJyZWQpLCBwdCh0aGlzLl9wcmV2aWV3Qmx1cnJlZCwgMyksIHRoaXMuX2JsdXJyZWRQcmV2aWV3ID0gITApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJzaG93XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IGUgPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50V2luZG93U2l6ZS53aWR0aCA9PT0gd2luZG93LmlubmVyV2lkdGggJiYgdGhpcy5fY3VycmVudFdpbmRvd1NpemUuaGVpZ2h0ID09PSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgKHRoaXMuX3JlZHJhdygpLCB0aGlzLl9yZWRyYXdDcm9wcGVyKHRoaXMuX2Nyb3BwZXIuYXJlYSkpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzKSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl93cmFwcGVyUm90YXRpb24gKiAoTWF0aC5QSSAvIDE4MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdSh0aGlzLl9wcmV2aWV3V3JhcHBlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUm90YXRpb246IFswLCAwLCBpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IFswLCAwLCBpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFt0aGlzLl93cmFwcGVyU2NhbGUgLSAuMDIsIHRoaXMuX3dyYXBwZXJTY2FsZSAtIC4wMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbdGhpcy5fd3JhcHBlclNjYWxlLCB0aGlzLl93cmFwcGVyU2NhbGVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwic3ByaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0NvbnN0YW50OiAuMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nRGVjZWxlcmF0aW9uOiAuODUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiA0NTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fY3JvcHBlci5kaXJ0eSA/IHUodGhpcy5fc3RhZ2UsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogODUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeih0aGlzKSwgdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHUodGhpcy5fc3RhZ2UsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogMWUzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeih0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHUodGhpcy5fYnRuR3JvdXAuY2hpbGROb2Rlcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsuOSwgLjldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogWzEsIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMWUzICsgMTAwICogdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwic3ByaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0NvbnN0YW50OiAuMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nRGVjZWxlcmF0aW9uOiAuODUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdSh0aGlzLl91dGlsc0dyb3VwLmNoaWxkTm9kZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbLjksIC45XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogXCJzcHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nQ29uc3RhbnQ6IC4zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdEZWNlbGVyYXRpb246IC44NSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDEyNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaGlkZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcyksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMpLCB1KHRoaXMuX3V0aWxzR3JvdXAuY2hpbGROb2Rlcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDI1MFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1KHRoaXMuX2J0bkdyb3VwLmNoaWxkTm9kZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAyMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzNTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdShbdGhpcy5fc3RhZ2UsIHRoaXMuX3ByZXZpZXdXcmFwcGVyXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246IFswLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFswLCAtMjUwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogXCJzcHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nQ29uc3RhbnQ6IC4zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdEZWNlbGVyYXRpb246IC43NSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9uZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZGVzdHJveVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdCh0aGlzLl9idG5Hcm91cC5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fY3JvcHBlci5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fY3JvcHBlci5kZXN0cm95KCksIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAmJiBFdCh0aGlzLl9lbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2hvd1JvdGF0ZUJ1dHRvblwiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA/IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInNsaW0tcm90YXRpb24tZGlzYWJsZWRcIikgOiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJzbGltLXJvdGF0aW9uLWRpc2FibGVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJlbGVtZW50XCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJyYXRpb1wiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJpbnB1dFwiID09PSB0aGlzLl9yYXRpbyA/IHRoaXMuX2lucHV0LmhlaWdodCAvIHRoaXMuX2lucHV0LndpZHRoIDogdGhpcy5fcmF0aW9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm9mZnNldFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwib3JpZ2luYWxcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJzY2FsYXJcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdTaXplLndpZHRoIC8gdGhpcy5faW5wdXQud2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfV0sIFt7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwib3B0aW9uc1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNhbmNlbENsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ29uZmlybUNsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ2FuY2VsTGFiZWw6IFwiQ2FuY2VsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNvbmZpcm1MYWJlbDogXCJDb25maXJtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNhbmNlbFRpdGxlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Db25maXJtVGl0bGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJvdGF0ZVRpdGxlOiBcIlJvdGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Sb3RhdGVDbGFzc05hbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVBpeGVsUmF0aW86IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblNpemU6IHt3aWR0aDogMCwgaGVpZ2h0OiAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfV0pLCBuXG4gICAgICAgICAgICAgICAgfSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuLkJ1dHRvbnMgPSBbXCJjYW5jZWxcIiwgXCJjb25maXJtXCJdLCBuXG4gICAgICAgICAgICB9KFR0KSwgTHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBbXCJkcmFnZW50ZXJcIiwgXCJkcmFnb3ZlclwiLCBcImRyYWdsZWF2ZVwiLCBcImRyb3BcIl07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQodGhpcywgbiksIHRoaXMuX2VsZW1lbnQgPSBpLCB0aGlzLl9hY2NlcHQgPSBbXSwgdGhpcy5fYWxsb3dVUkxzID0gITEsIHRoaXMuX2RyYWdQYXRoID0gbnVsbCwgdGhpcy5faW5pdCgpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcChuLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImlzVmFsaWREYXRhVHJhbnNmZXJcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZmlsZXMgJiYgdC5maWxlcy5sZW5ndGggPyB0aGlzLmFyZVZhbGlkRGF0YVRyYW5zZmVyRmlsZXModC5maWxlcykgOiB0Lml0ZW1zICYmIHQuaXRlbXMubGVuZ3RoID8gdGhpcy5hcmVWYWxpZERhdGFUcmFuc2Zlckl0ZW1zKHQuaXRlbXMpIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiYXJlVmFsaWREYXRhVHJhbnNmZXJGaWxlc1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuX2FjY2VwdC5sZW5ndGggfHwgIXQgfHwgdGhpcy5fYWNjZXB0LmluZGV4T2YodFswXS50eXBlKSAhPT0gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImFyZVZhbGlkRGF0YVRyYW5zZmVySXRlbXNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9hY2NlcHQubGVuZ3RoIHx8ICF0IHx8ICh0aGlzLl9hbGxvd1VSTHMgJiYgXCJzdHJpbmdcIiA9PT0gdFswXS5raW5kID8gbnVsbCA6IHRbMF0udHlwZSAmJiAwID09PSB0WzBdLnR5cGUuaW5kZXhPZihcImFwcGxpY2F0aW9uXCIpID8gbnVsbCA6IHRoaXMuX2FjY2VwdC5pbmRleE9mKHRbMF0udHlwZSkgIT09IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwicmVzZXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmZpbGVzID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2luaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBcInNsaW0tZmlsZS1ob3BwZXJcIiwgaS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLCB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJoYW5kbGVFdmVudFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJkcmFnZW50ZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZHJhZ292ZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRHJhZ092ZXIodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZHJhZ2xlYXZlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRyYWdMZWF2ZSh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJkcm9wXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRyb3AodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25Ecm9wXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2FsbG93VVJMcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHZvaWQgMCwgbiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmRhdGFUcmFuc2Zlci5nZXREYXRhKFwidXJsXCIpLCBuID0gdC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcInRleHQvaHRtbFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiYgbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5tYXRjaCgvc3JjXFxzKj1cXHMqXCIoLis/KVwiLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvICYmIChlID0gb1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkgJiYgaS5sZW5ndGggJiYgKGUgPSBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgdGhpcy5fZWxlbWVudC5maWxlcyA9IFt7cmVtb3RlOiBlfV07IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuaXNWYWxpZERhdGFUcmFuc2Zlcih0LmRhdGFUcmFuc2Zlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkgcmV0dXJuIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJmaWxlLWludmFsaWQtZHJvcFwiKSksIHZvaWQodGhpcy5fZHJhZ1BhdGggPSBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5maWxlcyA9IHQuZGF0YVRyYW5zZmVyLmZpbGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJmaWxlLWRyb3BcIiwge2RldGFpbDogbSh0KX0pKSwgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZVwiKSksIHRoaXMuX2RyYWdQYXRoID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uRHJhZ092ZXJcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpLCB0LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gXCJjb3B5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmlzVmFsaWREYXRhVHJhbnNmZXIodC5kYXRhVHJhbnNmZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlIHx8IGUgPyAodGhpcy5fZHJhZ1BhdGggfHwgKHRoaXMuX2RyYWdQYXRoID0gW10pLCB0aGlzLl9kcmFnUGF0aC5wdXNoKG0odCkpLCB2b2lkIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJmaWxlLW92ZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IFQodGhpcy5fZHJhZ1BhdGgpLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBUKHRoaXMuX2RyYWdQYXRoKS55XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIDogKHQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcIm5vbmVcIiwgdm9pZCB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiZmlsZS1pbnZhbGlkXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkRyYWdMZWF2ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiZmlsZS1vdXRcIiwge2RldGFpbDogbSh0KX0pKSwgdGhpcy5fZHJhZ1BhdGggPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJkZXN0cm95XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgRXQodGhpcy5fZWxlbWVudCksIHRoaXMuX2VsZW1lbnQgPSBudWxsLCB0aGlzLl9kcmFnUGF0aCA9IG51bGwsIHRoaXMuX2FjY2VwdCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImVsZW1lbnRcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImRyYWdQYXRoXCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kcmFnUGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZW5hYmxlZFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiA9PT0gdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gdCA/IFwiXCIgOiBcIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiYWxsb3dVUkxzXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1VSTHMgPSB0XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJhY2NlcHRcIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjY2VwdCA9IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hY2NlcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfV0pLCBuXG4gICAgICAgICAgICAgICAgfSgpXG4gICAgICAgICAgICB9KCksIE90ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0KHRoaXMsIGkpLCB0aGlzLl9lbGVtZW50ID0gbnVsbCwgdGhpcy5faW5uZXIgPSBudWxsLCB0aGlzLl9pbml0KClcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwKGksIFt7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2luaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50ID0gayhcImRpdlwiLCBcInNsaW0tcG9wb3ZlclwiKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0YXRlXCIsIFwib2ZmXCIpLCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgITApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJzaG93XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLCBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0YXRlXCIsIFwib25cIiksIHUodGhpcy5fZWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDM1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoodC5fZWxlbWVudCksIGkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImhpZGVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IGUgPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHRoaXMuX2VsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDEsIG9wYWNpdHk6IDAsIGR1cmF0aW9uOiA1MDAsIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHQuX2VsZW1lbnQpLCB0Ll9lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtc3RhdGVcIiwgXCJvZmZcIiksIGkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImRlc3Ryb3lcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgJiYgKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSwgdGhpcy5fZWxlbWVudCA9IG51bGwsIHRoaXMuX2lubmVyID0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImlubmVyXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbm5lciA9IHQsIHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCAmJiB0aGlzLl9lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCksIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faW5uZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJjbGFzc05hbWVcIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gXCJzbGltLXBvcG92ZXJcIiArIChudWxsID09PSB0ID8gXCJcIiA6IFwiIFwiICsgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfV0pLCBpXG4gICAgICAgICAgICAgICAgfSgpXG4gICAgICAgICAgICB9KCksIHp0ID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpdChlKS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHQsIDEwKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCBEdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiRElWXCIgPT09IHQubm9kZU5hbWUgfHwgXCJTUEFOXCIgPT09IHQubm9kZU5hbWVcbiAgICAgICAgICAgIH0sIEF0ID0ge0FVVE86IFwiYXV0b1wiLCBJTklUSUFMOiBcImluaXRpYWxcIiwgTUFOVUFMOiBcIm1hbnVhbFwifSwgVXQgPSBbXCJ4XCIsIFwieVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCJdLFxuICAgICAgICAgICAgSHQgPSBbXCJmaWxlLWludmFsaWQtZHJvcFwiLCBcImZpbGUtaW52YWxpZFwiLCBcImZpbGUtZHJvcFwiLCBcImZpbGUtb3ZlclwiLCBcImZpbGUtb3V0XCIsIFwiY2xpY2tcIl0sXG4gICAgICAgICAgICBOdCA9IFtcImNhbmNlbFwiLCBcImNvbmZpcm1cIl0sIEJ0ID0gW1wicmVtb3ZlXCIsIFwiZWRpdFwiLCBcImRvd25sb2FkXCIsIFwidXBsb2FkXCJdLCBGdCA9IG51bGwsIFd0ID0gMCxcbiAgICAgICAgICAgIHF0ID0gJ1xcbjxkaXYgY2xhc3M9XCJzbGltLWxvYWRlclwiPlxcblxcdDxzdmc+XFxuXFx0XFx0PHBhdGggY2xhc3M9XCJzbGltLWxvYWRlci1iYWNrZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIzXCIgLz5cXG5cXHRcXHQ8cGF0aCBjbGFzcz1cInNsaW0tbG9hZGVyLWZvcmVncm91bmRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjNcIiAvPlxcblxcdDwvc3ZnPlxcbjwvZGl2PlxcbicsXG4gICAgICAgICAgICBqdCA9ICdcXG48ZGl2IGNsYXNzPVwic2xpbS11cGxvYWQtc3RhdHVzXCI+PC9kaXY+XFxuJywgVnQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gdC5zcGxpdChcIixcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt3aWR0aDogcGFyc2VJbnQoZVswXSwgMTApLCBoZWlnaHQ6IHBhcnNlSW50KGVbMV0sIDEwKX1cbiAgICAgICAgICAgIH0sIEd0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkobikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICB0KHRoaXMsIGkpLCBGdCB8fCAoRnQgPSBuZXcgT3QpLCB0aGlzLl91aWQgPSBXdCsrLCB0aGlzLl9vcHRpb25zID0gZyhpLm9wdGlvbnMoKSwgbyksIHRoaXMuX29wdGlvbnMuZm9yY2VTaXplICYmIChcInN0cmluZ1wiID09IHR5cGVvZiB0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZSAmJiAodGhpcy5fb3B0aW9ucy5mb3JjZVNpemUgPSBWdCh0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZSkpLCB0aGlzLl9vcHRpb25zLnJhdGlvID0gdGhpcy5fb3B0aW9ucy5mb3JjZVNpemUud2lkdGggKyBcIjpcIiArIHRoaXMuX29wdGlvbnMuZm9yY2VTaXplLmhlaWdodCwgdGhpcy5fb3B0aW9ucy5zaXplID0gbXQodGhpcy5fb3B0aW9ucy5mb3JjZVNpemUpKSwgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdGhpcy5fb3B0aW9ucy5zaXplICYmICh0aGlzLl9vcHRpb25zLnNpemUgPSBWdCh0aGlzLl9vcHRpb25zLnNpemUpKSwgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdGhpcy5fb3B0aW9ucy5taW5TaXplICYmICh0aGlzLl9vcHRpb25zLm1pblNpemUgPSBWdCh0aGlzLl9vcHRpb25zLm1pblNpemUpKSwgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdGhpcy5fb3B0aW9ucy5wb3N0ICYmICh0aGlzLl9vcHRpb25zLnBvc3QgPSB0aGlzLl9vcHRpb25zLnBvc3Quc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5fb3JpZ2luYWxFbGVtZW50ID0gbiwgdGhpcy5fb3JpZ2luYWxFbGVtZW50SW5uZXIgPSBuLmlubmVySFRNTCwgdGhpcy5fb3JpZ2luYWxFbGVtZW50QXR0cmlidXRlcyA9IF8obiksIER0KG4pID8gdGhpcy5fZWxlbWVudCA9IG4gOiAodGhpcy5fZWxlbWVudCA9IEN0KG4pLCB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IG4uY2xhc3NOYW1lLCBuLmNsYXNzTmFtZSA9IFwiXCIsIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1yYXRpb1wiLCB0aGlzLl9vcHRpb25zLnJhdGlvKSksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChcInNsaW1cIiksIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1zdGF0ZVwiLCBcImluaXRcIiksIHRoaXMuX3N0YXRlID0gW10sIHRoaXMuX3RpbWVycyA9IFtdLCB0aGlzLl9pbnB1dCA9IG51bGwsIHRoaXMuX2lucHV0UmVmZXJlbmNlID0gbnVsbCwgdGhpcy5fb3V0cHV0ID0gbnVsbCwgdGhpcy5fcmF0aW8gPSBudWxsLCB0aGlzLl9pc1JlcXVpcmVkID0gITEsIHRoaXMuX2ltYWdlSG9wcGVyID0gbnVsbCwgdGhpcy5faW1hZ2VFZGl0b3IgPSBudWxsLCB0aGlzLl9wcm9ncmVzc0VuYWJsZWQgPSAhMCwgdGhpcy5fZGF0YSA9IHt9LCB0aGlzLl9yZXNldERhdGEoKSwgdGhpcy5fZHJpcCA9IG51bGwsIHRoaXMuX2hhc0luaXRpYWxJbWFnZSA9ICExLCB0aGlzLl9pbml0aWFsQ3JvcCA9IHRoaXMuX29wdGlvbnMuY3JvcCwgdGhpcy5faW5pdGlhbFJvdGF0aW9uID0gdGhpcy5fb3B0aW9ucy5yb3RhdGlvbiAmJiB0aGlzLl9vcHRpb25zLnJvdGF0aW9uICUgOTAgPT09IDAgPyB0aGlzLl9vcHRpb25zLnJvdGF0aW9uIDogbnVsbCwgdGhpcy5faXNCZWluZ0Rlc3Ryb3llZCA9ICExLCBpLnN1cHBvcnRlZCA/IHRoaXMuX2luaXQoKSA6IHRoaXMuX2ZhbGxiYWNrKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcChpLCBbe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2V0Um90YXRpb25cIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXCJudW1iZXJcIiA9PSB0eXBlb2YgdCB8fCB0ICUgOTAgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLmFjdGlvbnMucm90YXRpb24gPSB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uICUgMTgwICE9PSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhLmlucHV0LmltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSA/IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UuaGVpZ2h0IDogdGhpcy5fZGF0YS5pbnB1dC5pbWFnZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpID8gdGhpcy5fZGF0YS5pbnB1dC5pbWFnZS53aWR0aCA6IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcCA9IHR0KG4sIG8sIHRoaXMuX3JhdGlvKSwgdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AudHlwZSA9IEF0LkFVVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5pbnB1dC5pbWFnZSAmJiBlICYmIHRoaXMuX21hbnVhbFRyYW5zZm9ybShlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2V0U2l6ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT0gdHlwZW9mIHQgJiYgKHQgPSBWdCh0KSksIHQgJiYgdC53aWR0aCAmJiB0LmhlaWdodCAmJiAodGhpcy5fb3B0aW9ucy5zaXplID0gbXQodCksIHRoaXMuX2RhdGEuYWN0aW9ucy5zaXplID0gbXQodCksIHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UgJiYgZSAmJiB0aGlzLl9tYW51YWxUcmFuc2Zvcm0oZSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJzZXRGb3JjZVNpemVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmICh0ID0gVnQodCkpLCB0ICYmIHQud2lkdGggJiYgdC5oZWlnaHQgJiYgKHRoaXMuX29wdGlvbnMuc2l6ZSA9IG10KHQpLCB0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZSA9IG10KHQpLCB0aGlzLl9kYXRhLmFjdGlvbnMuc2l6ZSA9IG10KHQpLCB0aGlzLnNldFJhdGlvKHRoaXMuX29wdGlvbnMuZm9yY2VTaXplLndpZHRoICsgXCI6XCIgKyB0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZS5oZWlnaHQsIGUpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2V0UmF0aW9cIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmICh0aGlzLl9vcHRpb25zLnJhdGlvID0gdCwgdGhpcy5faXNGaXhlZFJhdGlvKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB6dCh0aGlzLl9vcHRpb25zLnJhdGlvLCBcIjpcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmF0aW8gPSBuWzFdIC8gblswXSwgdGhpcy5fZGF0YS5pbnB1dC5pbWFnZSAmJiBlID8gdGhpcy5fY3JvcEF1dG8oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5fc2NhbGVEcm9wQXJlYShpLl9yYXRpbyksIGUgJiYgZSh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogKHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UgJiYgKHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wID0gdHQodGhpcy5fZGF0YS5pbnB1dC5pbWFnZS53aWR0aCwgdGhpcy5fZGF0YS5pbnB1dC5pbWFnZS5oZWlnaHQsIHRoaXMuX3JhdGlvKSwgdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AudHlwZSA9IEF0LkFVVE8pLCB0aGlzLl9zY2FsZURyb3BBcmVhKHRoaXMuX3JhdGlvKSwgZSAmJiBlKG51bGwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXNBdHRhY2hlZFRvXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQgPT09IHQgfHwgdGhpcy5fb3JpZ2luYWxFbGVtZW50ID09PSB0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXNEZXRhY2hlZFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwibG9hZFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSBlID8gYXJndW1lbnRzWzFdIDoge30sIG4gPSBhcmd1bWVudHNbMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGkgPyBuID0gaSA6ICh0aGlzLl9vcHRpb25zLmNyb3AgPSBpLmNyb3AsIHRoaXMuX29wdGlvbnMucm90YXRpb24gPSBpLnJvdGF0aW9uLCB0aGlzLl9pbml0aWFsUm90YXRpb24gPSBpLnJvdGF0aW9uICYmIGkucm90YXRpb24gJSA5MCA9PT0gMCA/IGkucm90YXRpb24gOiBudWxsLCB0aGlzLl9pbml0aWFsQ3JvcCA9IHRoaXMuX29wdGlvbnMuY3JvcCksIHRoaXMuX2xvYWQodCwgbiwge2Jsb2NrUHVzaDogaS5ibG9ja1B1c2h9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwidXBsb2FkXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9VcGxvYWQodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImRvd25sb2FkXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb0Rvd25sb2FkKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInJlbW92ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RvUmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImRlc3Ryb3lcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvRGVzdHJveSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJlZGl0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb0VkaXQoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiY3JvcFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nyb3AodC54LCB0LnksIHQud2lkdGgsIHQuaGVpZ2h0LCBlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiY29udGFpbnNJbWFnZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IHRoaXMuX2RhdGEuaW5wdXQubmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2Nhbkluc3RhbnRFZGl0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5pbnN0YW50RWRpdCAmJiAhdGhpcy5faXNJbml0aWFsaXNpbmdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9nZXRGaWxlSW5wdXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFt0eXBlPWZpbGVdXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZ2V0SW5pdGlhbEltYWdlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW1nXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZ2V0SW5wdXRFbGVtZW50XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0RmlsZUlucHV0KCkgfHwgdGhpcy5fZ2V0SW5pdGlhbEltYWdlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9nZXRSYXRpb1NwYWNlckVsZW1lbnRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNoaWxkcmVuWzBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaXNJbWFnZU9ubHlcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIklOUFVUXCIgIT09IHRoaXMuX2lucHV0Lm5vZGVOYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaXNGaXhlZFJhdGlvXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5yYXRpby5pbmRleE9mKFwiOlwiKSAhPT0gLTFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9pc0F1dG9Dcm9wXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AudHlwZSA9PT0gQXQuQVVUT1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3RvZ2dsZUJ1dHRvblwiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHh0KCcuc2xpbS1idG5bZGF0YS1hY3Rpb249XCInICsgdCArICdcIl0nLCBlLCB0aGlzLl9lbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2NsZWFyU3RhdGVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlID0gW10sIHRoaXMuX3VwZGF0ZVN0YXRlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9yZW1vdmVTdGF0ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlID0gdGhpcy5fc3RhdGUuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgIT09IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl91cGRhdGVTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfYWRkU3RhdGVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBMKHQsIHRoaXMuX3N0YXRlKSB8fCAodGhpcy5fc3RhdGUucHVzaCh0KSwgdGhpcy5fdXBkYXRlU3RhdGUoKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl91cGRhdGVTdGF0ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudCAmJiB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtc3RhdGVcIiwgdGhpcy5fc3RhdGUuam9pbihcIixcIikpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfcmVzZXREYXRhXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiBtdCh0aGlzLl9vcHRpb25zLm1ldGEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiB7ZmllbGQ6IHRoaXMuX2lucHV0UmVmZXJlbmNlLCBuYW1lOiBudWxsLCB0eXBlOiBudWxsLCB3aWR0aDogMCwgaGVpZ2h0OiAwLCBmaWxlOiBudWxsfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IHtpbWFnZTogbnVsbCwgd2lkdGg6IDAsIGhlaWdodDogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczoge3JvdGF0aW9uOiBudWxsLCBjcm9wOiBudWxsLCBzaXplOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fb3V0cHV0ICYmICh0aGlzLl9vdXRwdXQudmFsdWUgPSBcIlwiKSwgX3QodGhpcy5fZ2V0RmlsZUlucHV0KCkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaW5pdFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGlhbGlzaW5nID0gITAsIHRoaXMuX2FkZFN0YXRlKFwiZW1wdHlcIiksIEwoXCJpbnB1dFwiLCB0aGlzLl9vcHRpb25zLnBvc3QpICYmICh0aGlzLl9pbnB1dFJlZmVyZW5jZSA9IFwic2xpbV9pbnB1dF9cIiArIHRoaXMuX3VpZCksIHRoaXMuX2lucHV0ID0gdGhpcy5fZ2V0SW5wdXRFbGVtZW50KCksIHRoaXMuX2lucHV0IHx8ICh0aGlzLl9pbnB1dCA9IGsoXCJpbnB1dFwiKSwgdGhpcy5faW5wdXQudHlwZSA9IFwiZmlsZVwiLCB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0KSksIHRoaXMuX2lzUmVxdWlyZWQgPSB0aGlzLl9pbnB1dC5yZXF1aXJlZCA9PT0gITAsIHRoaXMuX291dHB1dCA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0W3R5cGU9aGlkZGVuXVwiKSwgdGhpcy5fb3V0cHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBKU09OLnBhcnNlKHRoaXMuX291dHB1dC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IEltYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNyYyA9IGUub3V0cHV0LmltYWdlLCBuLnNldEF0dHJpYnV0ZShcImRhdGEtZmlsZW5hbWVcIiwgZS5vdXRwdXQubmFtZSksIHRoaXMuX2VsZW1lbnQuaW5zZXJ0QmVmb3JlKG4sIHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5fb3V0cHV0ID0gayhcImlucHV0XCIpLCB0aGlzLl9vdXRwdXQudHlwZSA9IFwiaGlkZGVuXCIsIHRoaXMuX291dHB1dC5uYW1lID0gdGhpcy5faW5wdXQubmFtZSB8fCB0aGlzLl9vcHRpb25zLmRlZmF1bHRJbnB1dE5hbWUsIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0LnJlbW92ZUF0dHJpYnV0ZShcIm5hbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGsoXCJkaXZcIiwgXCJzbGltLWFyZWFcIiksIGEgPSB0aGlzLl9nZXRJbml0aWFsSW1hZ2UoKSwgciA9IChhIHx8IHt9KS5zcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgPyBhLmdldEF0dHJpYnV0ZShcImRhdGEtZmlsZW5hbWVcIikgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgciA/IHRoaXMuX2hhc0luaXRpYWxJbWFnZSA9ICEwIDogKHRoaXMuX2luaXRpYWxDcm9wID0gbnVsbCwgdGhpcy5faW5pdGlhbFJvdGF0aW9uID0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9ICdcXG5cXHRcXHQ8ZGl2IGNsYXNzPVwic2xpbS1yZXN1bHRcIj5cXG5cXHRcXHRcXHQ8aW1nIGNsYXNzPVwiaW5cIiBzdHlsZT1cIm9wYWNpdHk6MFwiICcgKyAociA/ICdzcmM9XCInICsgciArICdcIicgOiBcIlwiKSArICc+PGltZz48aW1nIHN0eWxlPVwib3BhY2l0eTowXCI+XFxuXFx0XFx0PC9kaXY+JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pc0ltYWdlT25seSgpKSBvLmlubmVySFRNTCA9IFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBxdCArIFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBqdCArIFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBoICsgJ1xcblxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XCJzbGltLXN0YXR1c1wiPjxkaXYgY2xhc3M9XCJzbGltLWxhYmVsLWxvYWRpbmdcIj4nICsgKHRoaXMuX29wdGlvbnMubGFiZWxMb2FkaW5nIHx8IFwiXCIpICsgXCI8L2Rpdj48L2Rpdj5cXG5cXHRcXHRcXHRcIjsgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTChcImlucHV0XCIsIHRoaXMuX29wdGlvbnMucG9zdCkgJiYgKHRoaXMuX2RhdGEuaW5wdXQuZmllbGQgPSB0aGlzLl9pbnB1dFJlZmVyZW5jZSwgdGhpcy5fb3B0aW9ucy5zZXJ2aWNlIHx8ICh0aGlzLl9pbnB1dC5uYW1lID0gdGhpcy5faW5wdXRSZWZlcmVuY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoXCJhY2NlcHRcIikgJiYgXCJpbWFnZS8qXCIgIT09IHRoaXMuX2lucHV0LmdldEF0dHJpYnV0ZShcImFjY2VwdFwiKSA/IHUgPSB0aGlzLl9pbnB1dC5hY2NlcHQuc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogKHUgPSBBKCksIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZShcImFjY2VwdFwiLCB1LmpvaW4oXCIsXCIpKSksIHRoaXMuX2ltYWdlSG9wcGVyID0gbmV3IEx0LCB0aGlzLl9pbWFnZUhvcHBlci5hY2NlcHQgPSB1LCB0aGlzLl9pbWFnZUhvcHBlci5hbGxvd1VSTHMgPSBcInN0cmluZ1wiID09IHR5cGVvZiB0aGlzLl9vcHRpb25zLmZldGNoZXIsIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2VIb3BwZXIuZWxlbWVudCksIEh0LmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5faW1hZ2VIb3BwZXIuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGUsIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8uaW5uZXJIVE1MID0gXCJcXG5cXHRcXHRcXHRcXHRcIiArIHF0ICsgXCJcXG5cXHRcXHRcXHRcXHRcIiArIGp0ICsgJ1xcblxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XCJzbGltLWRyaXBcIj48c3Bhbj48c3Bhbj48L3NwYW4+PC9zcGFuPjwvZGl2PlxcblxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XCJzbGltLXN0YXR1c1wiPjxkaXYgY2xhc3M9XCJzbGltLWxhYmVsXCI+JyArICh0aGlzLl9vcHRpb25zLmxhYmVsIHx8IFwiXCIpICsgJzwvZGl2PjxkaXYgY2xhc3M9XCJzbGltLWxhYmVsLWxvYWRpbmdcIj4nICsgKHRoaXMuX29wdGlvbnMubGFiZWxMb2FkaW5nIHx8IFwiXCIpICsgXCI8L2Rpdj48L2Rpdj5cXG5cXHRcXHRcXHRcXHRcIiArIGggKyBcIlxcblxcdFxcdFxcdFwiLCB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChvKSwgdGhpcy5fYnRuR3JvdXAgPSBrKFwiZGl2XCIsIFwic2xpbS1idG4tZ3JvdXBcIiksIHRoaXMuX2J0bkdyb3VwLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIiwgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9idG5Hcm91cCksIEJ0LmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Ll9pc0J1dHRvbkFsbG93ZWQoZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFIoZSksIG4gPSB0Ll9vcHRpb25zW1wiYnV0dG9uXCIgKyBpICsgXCJMYWJlbFwiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuX29wdGlvbnNbXCJidXR0b25cIiArIGkgKyBcIlRpdGxlXCJdIHx8IG4sIGEgPSB0Ll9vcHRpb25zW1wiYnV0dG9uXCIgKyBpICsgXCJDbGFzc05hbWVcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBrKFwiYnV0dG9uXCIsIFwic2xpbS1idG4gc2xpbS1idG4tXCIgKyBlICsgKGEgPyBcIiBcIiArIGEgOiBcIlwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5pbm5lckhUTUwgPSBuLCByLnRpdGxlID0gbywgci50eXBlID0gXCJidXR0b25cIiwgci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdCksIHIuc2V0QXR0cmlidXRlKFwiZGF0YS1hY3Rpb25cIiwgZSksIHQuX2J0bkdyb3VwLmFwcGVuZENoaWxkKHIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5faXNGaXhlZFJhdGlvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHp0KHRoaXMuX29wdGlvbnMucmF0aW8sIFwiOlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yYXRpbyA9IGxbMV0gLyBsWzBdLCB0aGlzLl9zY2FsZURyb3BBcmVhKHRoaXMuX3JhdGlvKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlUHJvZ3Jlc3MoLjUpLCByID8gdGhpcy5fbG9hZChyLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fb25Jbml0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtuYW1lOiBzfSkgOiB0aGlzLl9vbkluaXQoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uSW5pdFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXNpbmcgPSAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX29wdGlvbnMuZGlkSW5pdC5hcHBseSh0LCBbdC5kYXRhLCB0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll90aW1lcnMucHVzaChlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuc2F2ZUluaXRpYWxJbWFnZSAmJiB0aGlzLmNvbnRhaW5zSW1hZ2UoKSA/IHRoaXMuX29wdGlvbnMuc2VydmljZSB8fCB0aGlzLl9zYXZlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICExKSA6ICh0aGlzLl9vcHRpb25zLnNlcnZpY2UgJiYgdGhpcy5jb250YWluc0ltYWdlKCkgJiYgdGhpcy5fdG9nZ2xlQnV0dG9uKFwidXBsb2FkXCIsICExKSwgZSgpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3VwZGF0ZVByb2dyZXNzXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBNYXRoLm1pbiguOTk5OTksIHQpLCB0aGlzLl9lbGVtZW50ICYmIHRoaXMuX3Byb2dyZXNzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tbG9hZGVyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5vZmZzZXRXaWR0aCwgbiA9IGUucXVlcnlTZWxlY3RvckFsbChcInBhdGhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcGFyc2VJbnQoblswXS5nZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIiksIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblswXS5zZXRBdHRyaWJ1dGUoXCJkXCIsIFJ0KC41ICogaSwgLjUgKiBpLCAuNSAqIGkgLSBvLCAuOTk5OSkpLCBuWzFdLnNldEF0dHJpYnV0ZShcImRcIiwgUnQoLjUgKiBpLCAuNSAqIGksIC41ICogaSAtIG8sIHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zdGFydFByb2dyZXNzXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzc0VuYWJsZWQgPSAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxvYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3BQcm9ncmVzc0xvb3AoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSwgbi5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSwgZS5fcHJvZ3Jlc3NFbmFibGVkID0gITAsIGUuX3VwZGF0ZVByb2dyZXNzKDApLCBlLl9wcm9ncmVzc0VuYWJsZWQgPSAhMSwgdShuLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3Byb2dyZXNzRW5hYmxlZCA9ICEwLCB0ICYmIHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3N0b3BQcm9ncmVzc1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxvYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVByb2dyZXNzKDEpLCB1KGksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIiksIGkucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIiksIHQuX3VwZGF0ZVByb2dyZXNzKC41KSwgdC5fcHJvZ3Jlc3NFbmFibGVkID0gITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfc3RhcnRQcm9ncmVzc0xvb3BcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1sb2FkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpLCBlLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpLCB0aGlzLl91cGRhdGVQcm9ncmVzcyguNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gMWUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHQsIFwic3RvcFwiKSwgdSh0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogWzAsIDAsIC0oMiAqIE1hdGguUEkpICogaV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwibGluZWFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMWUzICogaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdShlLCB7ZnJvbU9wYWNpdHk6IDAsIG9wYWNpdHk6IDEsIGR1cmF0aW9uOiAyNTB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zdG9wUHJvZ3Jlc3NMb29wXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxvYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUoaSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IHBhcnNlRmxvYXQoaS5zdHlsZS5vcGFjaXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KGUsIFwic3RvcFwiKSwgZS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSwgaS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSwgdCAmJiB0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaXNCdXR0b25BbGxvd2VkXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZWRpdFwiID09PSB0ID8gdGhpcy5fb3B0aW9ucy5lZGl0IDogXCJkb3dubG9hZFwiID09PSB0ID8gdGhpcy5fb3B0aW9ucy5kb3dubG9hZCA6IFwidXBsb2FkXCIgPT09IHQgPyAhIXRoaXMuX29wdGlvbnMuc2VydmljZSAmJiAhdGhpcy5fb3B0aW9ucy5wdXNoIDogXCJyZW1vdmVcIiAhPT0gdCB8fCAhdGhpcy5faXNJbWFnZU9ubHkoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2ZhbGxiYWNrXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGsoXCJkaXZcIiwgXCJzbGltLWFyZWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0LmlubmVySFRNTCA9ICdcXG5cXHRcXHRcXHQ8ZGl2IGNsYXNzPVwic2xpbS1zdGF0dXNcIj48ZGl2IGNsYXNzPVwic2xpbS1sYWJlbFwiPicgKyAodGhpcy5fb3B0aW9ucy5sYWJlbCB8fCBcIlwiKSArIFwiPC9kaXY+PC9kaXY+XFxuXFx0XFx0XCIsIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodCksIHRoaXMuX3Rocm93RXJyb3IodGhpcy5fb3B0aW9ucy5zdGF0dXNOb1N1cHBvcnQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJoYW5kbGVFdmVudFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiY2xpY2tcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25DbGljayh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiY2hhbmdlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJjYW5jZWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25DYW5jZWwodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImNvbmZpcm1cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25Db25maXJtKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJmaWxlLW92ZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25GaWxlT3Zlcih0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZmlsZS1vdXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25GaWxlT3V0KHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJmaWxlLWRyb3BcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25Ecm9wRmlsZSh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZmlsZS1pbnZhbGlkXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uSW52YWxpZEZpbGUodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImZpbGUtaW52YWxpZC1kcm9wXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uSW52YWxpZEZpbGVEcm9wKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZ2V0SW50cm9cIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1yZXN1bHQgLmluXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZ2V0T3V0cm9cIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1yZXN1bHQgLm91dFwiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2dldEluT3V0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnNsaW0tcmVzdWx0IGltZ1wiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2dldERyaXBcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kcmlwIHx8ICh0aGlzLl9kcmlwID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tZHJpcCA+IHNwYW5cIikpLCB0aGlzLl9kcmlwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfdGhyb3dFcnJvclwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFN0YXRlKFwiZXJyb3JcIiksIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxhYmVsXCIpLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlIHx8IChlID0gayhcImRpdlwiLCBcInNsaW0tZXJyb3JcIiksIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLXN0YXR1c1wiKS5hcHBlbmRDaGlsZChlKSksIGUuaW5uZXJIVE1MID0gdCwgdGhpcy5fb3B0aW9ucy5kaWRUaHJvd0Vycm9yLmFwcGx5KHRoaXMsIFt0XSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9yZW1vdmVFcnJvclwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlU3RhdGUoXCJlcnJvclwiKSwgdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tbGFiZWxcIikuc3R5bGUuZGlzcGxheSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vcGVuRmlsZURpYWxvZ1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRXJyb3IoKSwgdGhpcy5faW5wdXQuY2xpY2soKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uQ2xpY2tcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsIGkgPSB0LnRhcmdldC5jbGFzc0xpc3QsIG4gPSB0LnRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbnRhaW5zKFwic2xpbS1maWxlLWhvcHBlclwiKSkgcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSwgdm9pZCB0aGlzLl9vcGVuRmlsZURpYWxvZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLmdldEF0dHJpYnV0ZShcImRhdGEtYWN0aW9uXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwicmVtb3ZlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMud2lsbFJlbW92ZS5hcHBseSh0aGlzLCBbdGhpcy5kYXRhLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9kb1JlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZWRpdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb0VkaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZG93bmxvYWRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9Eb3dubG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJ1cGxvYWRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9VcGxvYWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uSW52YWxpZEZpbGVEcm9wXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkludmFsaWRGaWxlKCksIHRoaXMuX3JlbW92ZVN0YXRlKFwiZmlsZS1vdmVyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9nZXREcmlwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1KHQuZmlyc3RDaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21TY2FsZTogWy41LCAuNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFswLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMTUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoodC5maXJzdENoaWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25JbnZhbGlkRmlsZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9pbWFnZUhvcHBlci5hY2NlcHQubWFwKEgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9vcHRpb25zLnN0YXR1c0ZpbGVUeXBlLnJlcGxhY2UoXCIkMFwiLCB0LmpvaW4oXCIsIFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90aHJvd0Vycm9yKGUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25JbWFnZVRvb1NtYWxsXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX29wdGlvbnMuc3RhdHVzSW1hZ2VUb29TbWFsbC5yZXBsYWNlKFwiJDBcIiwgdGhpcy5fb3B0aW9ucy5taW5TaXplLndpZHRoICsgXCIgw5cgXCIgKyB0aGlzLl9vcHRpb25zLm1pblNpemUuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rocm93RXJyb3IodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbk92ZXJXZWlnaHRGaWxlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX29wdGlvbnMuc3RhdHVzRmlsZVNpemUucmVwbGFjZShcIiQwXCIsIHRoaXMuX29wdGlvbnMubWF4RmlsZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGhyb3dFcnJvcih0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uTG9jYWxVUkxQcm9ibGVtXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGhyb3dFcnJvcih0aGlzLl9vcHRpb25zLnN0YXR1c0xvY2FsVXJsUHJvYmxlbSB8fCB0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uUmVtb3RlVVJMUHJvYmxlbVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rocm93RXJyb3IodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkZpbGVPdmVyXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkU3RhdGUoXCJmaWxlLW92ZXJcIiksIHRoaXMuX3JlbW92ZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2dldERyaXAoKSwgaSA9IHUuY3JlYXRlTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpLnRyYW5zbGF0ZSh0LmRldGFpbC54LCB0LmRldGFpbC55LCAwKSwgdS5zZXRFbGVtZW50VHJhbnNmb3JtKGUsIGkpLCAxID09IHRoaXMuX2ltYWdlSG9wcGVyLmRyYWdQYXRoLmxlbmd0aCAmJiAoZS5zdHlsZS5vcGFjaXR5ID0gMSwgdShlLmZpcnN0Q2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFswLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogWy41LCAuNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDE1MFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25GaWxlT3V0XCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlU3RhdGUoXCJmaWxlLW92ZXJcIiksIHRoaXMuX3JlbW92ZVN0YXRlKFwiZmlsZS1pbnZhbGlkXCIpLCB0aGlzLl9yZW1vdmVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXREcmlwKCksIGkgPSB1LmNyZWF0ZU1hdHJpeCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaS50cmFuc2xhdGUodC5kZXRhaWwueCwgdC5kZXRhaWwueSwgMCksIHUuc2V0RWxlbWVudFRyYW5zZm9ybShlLCBpKSwgdShlLmZpcnN0Q2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsuNSwgLjVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IC41LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KGUuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uRHJvcEZpbGVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTdGF0ZShcImZpbGUtb3ZlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fZ2V0RHJpcCgpLCBuID0gdS5jcmVhdGVNYXRyaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG4udHJhbnNsYXRlKHQuZGV0YWlsLngsIHQuZGV0YWlsLnksIDApLCB1LnNldEVsZW1lbnRUcmFuc2Zvcm0oaSwgbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuX2ltYWdlSG9wcGVyLmRyYWdQYXRoLmxlbmd0aCwgYSA9IHRoaXMuX2ltYWdlSG9wcGVyLmRyYWdQYXRoW28gLSBNYXRoLm1pbigxMCwgbyldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmRldGFpbC54IC0gYS54LCBzID0gdC5kZXRhaWwueSAtIGEueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHUoaSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogW3QuZGV0YWlsLngsIHQuZGV0YWlsLnksIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBbdC5kZXRhaWwueCArIHIsIHQuZGV0YWlsLnkgKyBzLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdShpLmZpcnN0Q2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsuNSwgLjVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMiwgMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHooaS5maXJzdENoaWxkKSwgZS5fbG9hZCh0LnRhcmdldC5maWxlc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uQ2hhbmdlXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdC50YXJnZXQuZmlsZXMubGVuZ3RoICYmIHRoaXMuX2xvYWQodC50YXJnZXQuZmlsZXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfbG9hZFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gZSA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbnNJbWFnZSgpKSByZXR1cm4gY2xlYXJUaW1lb3V0KHRoaXMuX3JlcGxhY2VUaW1lb3V0KSwgdm9pZCB0aGlzLl9kb1JlbW92ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX3JlcGxhY2VUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9sb2FkKHQsIGksIG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTdGF0ZShcImVtcHR5XCIpLCB0aGlzLl9hZGRTdGF0ZShcImJ1c3lcIiksIHRoaXMuX3N0YXJ0UHJvZ3Jlc3NMb29wKCksIHRoaXMuX2ltYWdlSG9wcGVyICYmICh0aGlzLl9pbWFnZUhvcHBlci5lbmFibGVkID0gITEpLCBjbGVhclRpbWVvdXQodGhpcy5fbG9hZFRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobi5fbG9hZFRpbWVvdXQpLCBuLl9sb2FkVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5faXNCZWluZ0Rlc3Ryb3llZCB8fCAobi5fYWRkU3RhdGUoXCJsb2FkaW5nXCIpLCB1KG4uX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxhYmVsLWxvYWRpbmdcIiksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyNTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5faW1hZ2VIb3BwZXIgJiYgKG4uX2ltYWdlSG9wcGVyLmVuYWJsZWQgPSAhMCksIG4uX3JlbW92ZVN0YXRlKFwibG9hZGluZ1wiKSwgbi5fcmVtb3ZlU3RhdGUoXCJidXN5XCIpLCBuLl9hZGRTdGF0ZShcImVtcHR5XCIpLCBuLl9zdG9wUHJvZ3Jlc3NMb29wKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiB0KSByZXR1cm4gdm9pZChYKHQpID8gdGhpcy5fbG9hZChaKHQpLCBpLCBvKSA6IChhKCksIEoodCwgdGhpcy5fb3B0aW9ucy53aWxsTG9hZCwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fbG9hZCh0LCBpLCBvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcigpLCBuLl9vbkxvY2FsVVJMUHJvYmxlbShcIjxwPlwiICsgdCArIFwiPC9wPlwiKSwgaSAmJiBpLmFwcGx5KG4sIFtcImxvY2FsLXVybC1wcm9ibGVtXCJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgdC5yZW1vdGUpIHJldHVybiBYKHQucmVtb3RlKSA/IHZvaWQgdGhpcy5fbG9hZChaKHQucmVtb3RlKSwgaSwgbykgOiB2b2lkKHRoaXMuX29wdGlvbnMuZmV0Y2hlciAmJiBZKHRoaXMuX29wdGlvbnMuZmV0Y2hlciwgdGhpcy5fb3B0aW9ucy53aWxsRmV0Y2gsIHRoaXMuX29wdGlvbnMud2lsbExvYWQsIHQucmVtb3RlLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKCksIG4uX29uUmVtb3RlVVJMUHJvYmxlbShcIjxwPlwiICsgdCArIFwiPC9wPlwiKSwgaSAmJiBpLmFwcGx5KG4sIFtcInJlbW90ZS11cmwtcHJvYmxlbVwiXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9sb2FkKHQsIGksIG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW1hZ2VIb3BwZXIgJiYgdGhpcy5faW1hZ2VIb3BwZXIuYWNjZXB0LmluZGV4T2Yocy50eXBlKSA9PT0gLTEpIHJldHVybiByKCksIHRoaXMuX29uSW52YWxpZEZpbGUoKSwgdm9pZChpICYmIGkuYXBwbHkodGhpcywgW1wiZmlsZS1pbnZhbGlkXCJdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMuc2l6ZSAmJiB0aGlzLl9vcHRpb25zLm1heEZpbGVTaXplICYmIEQocy5zaXplKSA+IHRoaXMuX29wdGlvbnMubWF4RmlsZVNpemUpIHJldHVybiByKCksIHRoaXMuX29uT3ZlcldlaWdodEZpbGUoKSwgdm9pZChpICYmIGkuYXBwbHkodGhpcywgW1wiZmlsZS10b28tYmlnXCJdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW1hZ2VFZGl0b3IgJiYgdGhpcy5faW1hZ2VFZGl0b3IuZGlydHkoKSwgdGhpcy5fZGF0YS5pbnB1dC5uYW1lID0gbyAmJiBvLm5hbWUgPyBvLm5hbWUgOiBxKHMpLCB0aGlzLl9kYXRhLmlucHV0LnR5cGUgPSBqKHMpLCB0aGlzLl9kYXRhLmlucHV0LnNpemUgPSBzLnNpemUsIHRoaXMuX2RhdGEuaW5wdXQuZmlsZSA9IHMsIFEocywgdGhpcy5fb3B0aW9ucy5pbnRlcm5hbENhbnZhc1NpemUsIGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5faW1hZ2VIb3BwZXIgJiYgKG4uX2ltYWdlSG9wcGVyLmVuYWJsZWQgPSAhMCksIG4uX3JlbW92ZVN0YXRlKFwibG9hZGluZ1wiKSwgbi5fcmVtb3ZlU3RhdGUoXCJidXN5XCIpLCBuLl9hZGRTdGF0ZShcImVtcHR5XCIpLCBuLl9zdG9wUHJvZ3Jlc3NMb29wKCksIG4uX3Jlc2V0RGF0YSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIGEoKSwgdm9pZChpICYmIGkuYXBwbHkobiwgW1wiZmlsZS1ub3QtZm91bmRcIl0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdCh0LCBuLl9vcHRpb25zLm1pblNpemUpKSByZXR1cm4gYSgpLCBuLl9vbkltYWdlVG9vU21hbGwoKSwgdm9pZChpICYmIGkuYXBwbHkobiwgW1wiaW1hZ2UtdG9vLXNtYWxsXCJdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5fb3B0aW9ucy5kaWRMb2FkLmFwcGx5KG4sIFtzLCB0LCBlLCBuXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICE9PSAhMCkgcmV0dXJuIGEoKSwgciAhPT0gITEgJiYgbi5fdGhyb3dFcnJvcihyKSwgdm9pZChpICYmIGkuYXBwbHkobiwgW3JdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX3JlbW92ZVN0YXRlKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5faW1hZ2VIb3BwZXIgJiYgbi5fb3B0aW9ucy5kcm9wUmVwbGFjZSAmJiAobi5faW1hZ2VIb3BwZXIuZW5hYmxlZCA9ICEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5fZ2V0SW50cm8oKSwgaSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsxLjI1LCAxLjI1XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogWzEsIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeihlKSwgZS5zdHlsZS5vcGFjaXR5ID0gMSwgdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNEZXRhY2hlZCgpID8gaS5kdXJhdGlvbiA9IDEgOiAoaS5lYXNpbmcgPSBcInNwcmluZ1wiLCBpLnNwcmluZ0NvbnN0YW50ID0gLjMsIGkuc3ByaW5nRGVjZWxlcmF0aW9uID0gLjcpLCBuLl9jYW5JbnN0YW50RWRpdCgpICYmIChpLmRlbGF5ID0gNTAwLCBpLmR1cmF0aW9uID0gMSwgbi5fZG9FZGl0KCkpLCB1KGUsIGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2xvYWRDYW52YXModCwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2FkZFN0YXRlKFwicHJldmlld1wiKSwgaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fY2FuSW5zdGFudEVkaXQoKSB8fCB0IHx8IG4uX3Nob3dCdXR0b25zKCksIHQgfHwgKG4uX3N0b3BQcm9ncmVzc0xvb3AoKSwgbi5fcmVtb3ZlU3RhdGUoXCJidXN5XCIpKSwgaSAmJiBpLmFwcGx5KG4sIFtudWxsLCBuLmRhdGFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fY2FuSW5zdGFudEVkaXQoKSB8fCBuLl9zaG93QnV0dG9ucygpLCBuLl9yZW1vdmVTdGF0ZShcImJ1c3lcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge2Jsb2NrUHVzaDogby5ibG9ja1B1c2h9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfbG9hZENhbnZhc1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuIHx8IChuID0ge30pLCAhdGhpcy5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UgPSB0LCB0aGlzLl9kYXRhLmlucHV0LndpZHRoID0gdC53aWR0aCwgdGhpcy5fZGF0YS5pbnB1dC5oZWlnaHQgPSB0LmhlaWdodCwgdGhpcy5faW5pdGlhbFJvdGF0aW9uICYmICh0aGlzLl9kYXRhLmFjdGlvbnMucm90YXRpb24gPSB0aGlzLl9pbml0aWFsUm90YXRpb24sIHRoaXMuX2luaXRpYWxSb3RhdGlvbiA9IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uICUgMTgwICE9PSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzRml4ZWRSYXRpbygpIHx8ICh0aGlzLl9pbml0aWFsQ3JvcCA/IHRoaXMuX3JhdGlvID0gdGhpcy5faW5pdGlhbENyb3AuaGVpZ2h0IC8gdGhpcy5faW5pdGlhbENyb3Aud2lkdGggOiB0aGlzLl9yYXRpbyA9IGEgPyB0LndpZHRoIC8gdC5oZWlnaHQgOiB0LmhlaWdodCAvIHQud2lkdGgsIHRoaXMuX3NjYWxlRHJvcEFyZWEodGhpcy5fcmF0aW8pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5fb3B0aW9ucy5zaXplICYmIChvLl9kYXRhLmFjdGlvbnMuc2l6ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBvLl9vcHRpb25zLnNpemUud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG8uX29wdGlvbnMuc2l6ZS5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8uX2FwcGx5VHJhbnNmb3Jtcyh0LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvLl9nZXRJbnRybygpLCByID0gYS5vZmZzZXRXaWR0aCAvIHQud2lkdGgsIHMgPSAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX29wdGlvbnMuc2VydmljZSAmJiBvLl9vcHRpb25zLnB1c2ggJiYgIW4uYmxvY2tQdXNoICYmIChvLl9oYXNJbml0aWFsSW1hZ2UgfHwgby5fY2FuSW5zdGFudEVkaXQoKSB8fCAocyA9ICEwLCBvLl9zdG9wUHJvZ3Jlc3NMb29wKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLl9zdGFydFByb2dyZXNzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5fdXBkYXRlUHJvZ3Jlc3MoLjEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIG8uX2Nhbkluc3RhbnRFZGl0KCkgfHwgby5fc2F2ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5faXNCZWluZ0Rlc3Ryb3llZCB8fCBzICYmIChvLl9zdG9wUHJvZ3Jlc3MoKSwgaSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IFwiYXV0b1wiID09PSBvLl9vcHRpb25zLmRldmljZVBpeGVsUmF0aW8gPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IG8uX29wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuc3JjID0gXCJcIiwgYS5zcmMgPSBodCh0LCByICogaCkudG9EYXRhVVJMKCksIGEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEub25sb2FkID0gbnVsbCwgby5faXNCZWluZ0Rlc3Ryb3llZCB8fCBlICYmIGUocylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxDcm9wID8gKHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wID0gbXQodGhpcy5faW5pdGlhbENyb3ApLCB0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcC50eXBlID0gQXQuSU5JVElBTCwgdGhpcy5faW5pdGlhbENyb3AgPSBudWxsLCByKCkpIDogdGhpcy5fb3B0aW9ucy53aWxsQ3JvcEluaXRpYWwuYXBwbHkodGhpcywgW3RoaXMuZGF0YSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA/IChvLl9kYXRhLmFjdGlvbnMuY3JvcCA9IGUsIG8uX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPSBBdC5JTklUSUFMKSA6IChvLl9kYXRhLmFjdGlvbnMuY3JvcCA9IHR0KGEgPyB0LmhlaWdodCA6IHQud2lkdGgsIGEgPyB0LndpZHRoIDogdC5oZWlnaHQsIG8uX3JhdGlvKSwgby5fZGF0YS5hY3Rpb25zLmNyb3AudHlwZSA9IEF0LkFVVE8pLCByKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9hcHBseVRyYW5zZm9ybXNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsIG4gPSBtdCh0aGlzLl9kYXRhLmFjdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbi5maWx0ZXJzID0ge3NoYXJwZW46IHRoaXMuX29wdGlvbnMuZmlsdGVyU2hhcnBlbiAvIDEwMH0sIHRoaXMuX29wdGlvbnMuZm9yY2VNaW5TaXplID8gbi5taW5TaXplID0gdGhpcy5fb3B0aW9ucy5taW5TaXplIDogbi5taW5TaXplID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZXQodCwgbiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuX29wdGlvbnMuZm9yY2VTaXplIHx8IGkuX29wdGlvbnMuc2l6ZSAmJiAxID09IHJ0KGkuX29wdGlvbnMuc2l6ZSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGsoXCJjYW52YXNcIiksIG4ud2lkdGggPSBpLl9vcHRpb25zLnNpemUud2lkdGgsIG4uaGVpZ2h0ID0gaS5fb3B0aW9ucy5zaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5kcmF3SW1hZ2UodCwgMCwgMCwgaS5fb3B0aW9ucy5zaXplLndpZHRoLCBpLl9vcHRpb25zLnNpemUuaGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5fb3B0aW9ucy5mb3JjZU1pblNpemUgJiYgaS5fb3B0aW9ucy5zaXplICYmIGkuX29wdGlvbnMubWluU2l6ZS53aWR0aCA9PT0gaS5fb3B0aW9ucy5zaXplLndpZHRoICYmIGkuX29wdGlvbnMubWluU2l6ZS5oZWlnaHQgPT09IGkuX29wdGlvbnMuc2l6ZS5oZWlnaHQgJiYgKG4ud2lkdGggPCBpLl9vcHRpb25zLm1pblNpemUud2lkdGggfHwgbi5oZWlnaHQgPCBpLl9vcHRpb25zLm1pblNpemUuaGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IE1hdGgubWF4KG4ud2lkdGgsIGkuX29wdGlvbnMubWluU2l6ZS53aWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gTWF0aC5tYXgobi5oZWlnaHQsIGkuX29wdGlvbnMubWluU2l6ZS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gayhcImNhbnZhc1wiKSwgbi53aWR0aCA9IGEsIG4uaGVpZ2h0ID0gcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBuLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kcmF3SW1hZ2UodCwgMCwgMCwgYSwgcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuX29wdGlvbnMuZm9yY2VNaW5TaXplICYmIDEgPT09IGkuX3JhdGlvICYmIChuLndpZHRoIDwgaS5fb3B0aW9ucy5taW5TaXplLndpZHRoIHx8IG4uaGVpZ2h0IDwgaS5fb3B0aW9ucy5taW5TaXplLmhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGsoXCJjYW52YXNcIiksIG4ud2lkdGggPSBpLl9vcHRpb25zLm1pblNpemUud2lkdGgsIG4uaGVpZ2h0ID0gaS5fb3B0aW9ucy5taW5TaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBuLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5kcmF3SW1hZ2UodCwgMCwgMCwgbi53aWR0aCwgbi5oZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX2RhdGEub3V0cHV0LndpZHRoID0gbi53aWR0aCwgaS5fZGF0YS5vdXRwdXQuaGVpZ2h0ID0gbi5oZWlnaHQsIGkuX2RhdGEub3V0cHV0LmltYWdlID0gbiwgaS5fb25UcmFuc2Zvcm1DYW52YXMoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5fZGF0YSA9IHQsIGkuX29wdGlvbnMuZGlkVHJhbnNmb3JtLmFwcGx5KGksIFtpLmRhdGEsIGldKSwgZShpLl9kYXRhLm91dHB1dC5pbWFnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vblRyYW5zZm9ybUNhbnZhc1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMud2lsbFRyYW5zZm9ybS5hcHBseSh0aGlzLCBbdGhpcy5kYXRhLCB0LCB0aGlzXSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9hcHBlbmRFZGl0b3JcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ltYWdlRWRpdG9yIHx8ICh0aGlzLl9pbWFnZUVkaXRvciA9IG5ldyBJdChrKFwiZGl2XCIpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluU2l6ZTogdGhpcy5fb3B0aW9ucy5taW5TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVBpeGVsUmF0aW86IHRoaXMuX29wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Db25maXJtQ2xhc3NOYW1lOiB0aGlzLl9vcHRpb25zLmJ1dHRvbkNvbmZpcm1DbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ2FuY2VsQ2xhc3NOYW1lOiB0aGlzLl9vcHRpb25zLmJ1dHRvbkNhbmNlbENsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Sb3RhdGVDbGFzc05hbWU6IHRoaXMuX29wdGlvbnMuYnV0dG9uUm90YXRlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNvbmZpcm1MYWJlbDogdGhpcy5fb3B0aW9ucy5idXR0b25Db25maXJtTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ2FuY2VsTGFiZWw6IHRoaXMuX29wdGlvbnMuYnV0dG9uQ2FuY2VsTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUm90YXRlTGFiZWw6IHRoaXMuX29wdGlvbnMuYnV0dG9uUm90YXRlTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ29uZmlybVRpdGxlOiB0aGlzLl9vcHRpb25zLmJ1dHRvbkNvbmZpcm1UaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25DYW5jZWxUaXRsZTogdGhpcy5fb3B0aW9ucy5idXR0b25DYW5jZWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Sb3RhdGVUaXRsZTogdGhpcy5fb3B0aW9ucy5idXR0b25Sb3RhdGVUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIE50LmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9pbWFnZUVkaXRvci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3NjYWxlRHJvcEFyZWFcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2dldFJhdGlvU3BhY2VyRWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiB0aGlzLl9lbGVtZW50ICYmIChlLnN0eWxlLm1hcmdpbkJvdHRvbSA9IDEwMCAqIHQgKyBcIiVcIiwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXJhdGlvXCIsIFwiMTpcIiArIHQpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uQ2FuY2VsXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlU3RhdGUoXCJlZGl0b3JcIiksIHRoaXMuX29wdGlvbnMuZGlkQ2FuY2VsLmFwcGx5KHRoaXMsIFt0aGlzXSksIHRoaXMuX3Nob3dCdXR0b25zKCksIHRoaXMuX2hpZGVFZGl0b3IoKSwgdGhpcy5fb3B0aW9ucy5pbnN0YW50RWRpdCAmJiAhdGhpcy5faGFzSW5pdGlhbEltYWdlICYmIHRoaXMuX2lzQXV0b0Nyb3AoKSAmJiB0aGlzLl9kb1JlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25Db25maXJtXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLCBpID0gdGhpcy5fb3B0aW9ucy5zZXJ2aWNlICYmIHRoaXMuX29wdGlvbnMucHVzaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPyB0aGlzLl9zdGFydFByb2dyZXNzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl91cGRhdGVQcm9ncmVzcyguMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogdGhpcy5fc3RhcnRQcm9ncmVzc0xvb3AoKSwgdGhpcy5fcmVtb3ZlU3RhdGUoXCJlZGl0b3JcIiksIHRoaXMuX2FkZFN0YXRlKFwiYnVzeVwiKSwgdGhpcy5fb3V0cHV0LnZhbHVlID0gXCJcIiwgdGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uID0gdC5kZXRhaWwucm90YXRpb24sIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wID0gdC5kZXRhaWwuY3JvcCwgdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AudHlwZSA9IEF0Lk1BTlVBTCwgdGhpcy5fYXBwbHlUcmFuc2Zvcm1zKHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fb3B0aW9ucy5kaWRDb25maXJtLmFwcGx5KGUsIFtlLmRhdGEsIGVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuX2dldEluT3V0KCksIG8gPSBcIm91dFwiID09PSBuWzBdLmNsYXNzTmFtZSA/IG5bMF0gOiBuWzFdLCBhID0gbyA9PT0gblswXSA/IG5bMV0gOiBuWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY2xhc3NOYW1lID0gXCJpblwiLCBvLnN0eWxlLm9wYWNpdHkgPSBcIjBcIiwgby5zdHlsZS56SW5kZXggPSBcIjJcIiwgYS5jbGFzc05hbWUgPSBcIm91dFwiLCBhLnN0eWxlLnpJbmRleCA9IFwiMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gXCJhdXRvXCIgPT09IGUuX29wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbyA/IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogZS5fb3B0aW9ucy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3JjID0gXCJcIiwgby5zcmMgPSBodCh0LCBvLm9mZnNldFdpZHRoIC8gdC53aWR0aCAqIHIpLnRvRGF0YVVSTCgpLCBvLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5vbmxvYWQgPSBudWxsLCBcImZyZWVcIiA9PT0gZS5fb3B0aW9ucy5yYXRpbyAmJiAoZS5fcmF0aW8gPSBvLm5hdHVyYWxIZWlnaHQgLyBvLm5hdHVyYWxXaWR0aCwgZS5fc2NhbGVEcm9wQXJlYShlLl9yYXRpbykpLCBlLl9oaWRlRWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9zaG93UHJldmlldyhvLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fc2F2ZShmdW5jdGlvbiAodCwgbiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl90b2dnbGVCdXR0b24oXCJ1cGxvYWRcIiwgITApLCBpID8gZS5fc3RvcFByb2dyZXNzKCkgOiBlLl9zdG9wUHJvZ3Jlc3NMb29wKCksIGUuX3JlbW92ZVN0YXRlKFwiYnVzeVwiKSwgZS5fc2hvd0J1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl90aW1lcnMucHVzaCh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfY3JvcEF1dG9cIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpID0gdGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uICUgMTgwICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0dChpID8gdGhpcy5fZGF0YS5pbnB1dC5pbWFnZS5oZWlnaHQgOiB0aGlzLl9kYXRhLmlucHV0LmltYWdlLndpZHRoLCBpID8gdGhpcy5fZGF0YS5pbnB1dC5pbWFnZS53aWR0aCA6IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UuaGVpZ2h0LCB0aGlzLl9yYXRpbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcm9wKG4ueCwgbi55LCBuLndpZHRoLCBuLmhlaWdodCwgdCwgQXQuQVVUTylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9jcm9wXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgaSwgbiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IGUgPyBhcmd1bWVudHNbNF0gOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgciA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gZSA/IGFyZ3VtZW50c1s1XSA6IEF0Lk1BTlVBTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX291dHB1dC52YWx1ZSA9IFwiXCIsIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPSByLCB0aGlzLl9tYW51YWxUcmFuc2Zvcm0oYSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9tYW51YWxUcmFuc2Zvcm1cIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFByb2dyZXNzTG9vcCgpLCB0aGlzLl9hZGRTdGF0ZShcImJ1c3lcIiksIHRoaXMuX2FwcGx5VHJhbnNmb3Jtcyh0aGlzLl9kYXRhLmlucHV0LmltYWdlLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5fZ2V0SW5PdXQoKSwgbyA9IFwib3V0XCIgPT09IG5bMF0uY2xhc3NOYW1lID8gblswXSA6IG5bMV0sIGEgPSBvID09PSBuWzBdID8gblsxXSA6IG5bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jbGFzc05hbWUgPSBcImluXCIsIG8uc3R5bGUub3BhY2l0eSA9IFwiMVwiLCBvLnN0eWxlLnpJbmRleCA9IFwiMlwiLCBhLmNsYXNzTmFtZSA9IFwib3V0XCIsIGEuc3R5bGUuekluZGV4ID0gXCIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBcImF1dG9cIiA9PT0gZS5fb3B0aW9ucy5kZXZpY2VQaXhlbFJhdGlvID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiBlLl9vcHRpb25zLmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgby5zcmMgPSBcIlwiLCBvLnNyYyA9IGh0KGksIG8ub2Zmc2V0V2lkdGggLyBpLndpZHRoICogcikudG9EYXRhVVJMKCksIG8ub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLm9ubG9hZCA9IG51bGwsIFwiZnJlZVwiID09PSBlLl9vcHRpb25zLnJhdGlvICYmIChlLl9yYXRpbyA9IG8ubmF0dXJhbEhlaWdodCAvIG8ubmF0dXJhbFdpZHRoLCBlLl9zY2FsZURyb3BBcmVhKGUuX3JhdGlvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5fb3B0aW9ucy5zZXJ2aWNlICYmIGUuX29wdGlvbnMucHVzaCwgbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3NhdmUoZnVuY3Rpb24gKG4sIG8sIGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpIHx8IGUuX3N0b3BQcm9ncmVzc0xvb3AoKSwgZS5fcmVtb3ZlU3RhdGUoXCJidXN5XCIpLCB0LmFwcGx5KGUsIFtlLmRhdGFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA/IGUuX3N0YXJ0UHJvZ3Jlc3MobikgOiBuKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3NhdmVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4gPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSkgfHwgYXJndW1lbnRzWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLmRhdGFCYXNlNjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXJ2aWNlIHx8IHRoaXMuX2lzSW5pdGlhbGlzaW5nICYmICF0aGlzLl9pc0ltYWdlT25seSgpIHx8IHRoaXMuX29wdGlvbnMud2lsbFNhdmUuYXBwbHkodGhpcywgW28sIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX3N0b3JlKGUpLCB0Ll9vcHRpb25zLmRpZFNhdmUuYXBwbHkodCwgW2UsIHRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXNdKSwgdGhpcy5faXNCZWluZ0Rlc3Ryb3llZCB8fCAodGhpcy5fb3B0aW9ucy5zZXJ2aWNlICYmIG4gJiYgdGhpcy5fb3B0aW9ucy53aWxsU2F2ZS5hcHBseSh0aGlzLCBbbywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fYWRkU3RhdGUoXCJ1cGxvYWRcIiksIHQuX2ltYWdlSG9wcGVyICYmIHQuX29wdGlvbnMuZHJvcFJlcGxhY2UgJiYgKHQuX2ltYWdlSG9wcGVyLmVuYWJsZWQgPSAhMSksIHQuX3VwbG9hZChlLCBmdW5jdGlvbiAobiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5faW1hZ2VIb3BwZXIgJiYgdC5fb3B0aW9ucy5kcm9wUmVwbGFjZSAmJiAodC5faW1hZ2VIb3BwZXIuZW5hYmxlZCA9ICEwKSwgbiB8fCB0Ll9zdG9yZVNlcnZlclJlc3BvbnNlKG8pLCB0Ll9vcHRpb25zLmRpZFVwbG9hZC5hcHBseSh0LCBbbiwgZSwgbywgdF0pLCB0Ll9yZW1vdmVTdGF0ZShcInVwbG9hZFwiKSwgaShuLCBlLCBvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXNdKSwgdGhpcy5fb3B0aW9ucy5zZXJ2aWNlICYmIG4gfHwgaSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3N0b3JlU2VydmVyUmVzcG9uc2VcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1JlcXVpcmVkICYmICh0aGlzLl9pbnB1dC5yZXF1aXJlZCA9ICExKSwgdGhpcy5fZGF0YS5zZXJ2ZXIgPSB0LCB0aGlzLl9vdXRwdXQudmFsdWUgPSBcIm9iamVjdFwiID09PSAoXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdCA/IFwidW5kZWZpbmVkXCIgOiBjKHQpKSA/IEpTT04uc3RyaW5naWZ5KHRoaXMuX2RhdGEuc2VydmVyKSA6IHRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zdG9yZVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzUmVxdWlyZWQgJiYgKHRoaXMuX2lucHV0LnJlcXVpcmVkID0gITEpLCB0aGlzLl9vdXRwdXQudmFsdWUgPSBKU09OLnN0cmluZ2lmeSh0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3VwbG9hZFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdE91dHB1dChmdW5jdGlvbiAodCwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gaS5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tdXBsb2FkLXN0YXR1c1wiKSwgYSA9IGkuX29wdGlvbnMud2lsbFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5fdXBkYXRlUHJvZ3Jlc3MoTWF0aC5tYXgoLjEsIHQgLyBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmlubmVySFRNTCA9IGkuX29wdGlvbnMuc3RhdHVzVXBsb2FkU3VjY2Vzcywgby5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0YXRlXCIsIFwic3VjY2Vzc1wiKSwgby5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3R5bGUub3BhY2l0eSA9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMmUzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5fdGltZXJzLnB1c2godClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5fdGltZXJzLnB1c2gobiksIGUobnVsbCwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gXCJmaWxlLXRvby1iaWdcIiA9PT0gdCA/IGkuX29wdGlvbnMuc3RhdHVzQ29udGVudExlbmd0aCA6IGkuX29wdGlvbnMuZGlkUmVjZWl2ZVNlcnZlckVycm9yLmFwcGx5KGksIFt0LCBpLl9vcHRpb25zLnN0YXR1c1Vua25vd25SZXNwb25zZSwgaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmlubmVySFRNTCA9IG4sIG8uc2V0QXR0cmlidXRlKFwiZGF0YS1zdGF0ZVwiLCBcImVycm9yXCIpLCBvLnN0eWxlLm9wYWNpdHkgPSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5fdGltZXJzLnB1c2goYSksIGUodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09IHR5cGVvZiBpLl9vcHRpb25zLnNlcnZpY2UgPyBPKGkuX29wdGlvbnMuc2VydmljZSwgaS5fb3B0aW9ucy51cGxvYWRNZXRob2QsIG4sIGEsIHIsIHMsIGgpIDogXCJmdW5jdGlvblwiID09IHR5cGVvZiBpLl9vcHRpb25zLnNlcnZpY2UgJiYgaS5fb3B0aW9ucy5zZXJ2aWNlLmFwcGx5KGksIFtcImZpbGVcIiA9PT0gaS5fb3B0aW9ucy5zZXJ2aWNlRm9ybWF0ID8gdCA6IG4sIHIsIHMsIGgsIGldKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInJlcXVlc3RPdXRwdXRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5pbnB1dC5maWxlID8gKGUgfHwgKGUgPSB0aGlzLmRhdGFCYXNlNjQpLCB2b2lkIG4ucGFyc2VNZXRhRGF0YSh0aGlzLl9kYXRhLmlucHV0LmZpbGUsIGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXSwgciA9IG5ldyBGb3JtRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTChcImlucHV0XCIsIGkuX29wdGlvbnMucG9zdCkgJiYgKGEucHVzaChpLl9kYXRhLmlucHV0LmZpbGUpLCByLmFwcGVuZChpLl9pbnB1dFJlZmVyZW5jZSwgaS5fZGF0YS5pbnB1dC5maWxlLCBpLl9kYXRhLmlucHV0LmZpbGUubmFtZSkpLCBMKFwib3V0cHV0XCIsIGkuX29wdGlvbnMucG9zdCkgJiYgbnVsbCAhPT0gaS5fZGF0YS5vdXRwdXQuaW1hZ2UgJiYgaS5fb3B0aW9ucy51cGxvYWRCYXNlNjQgPT09ICExKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gWihlLm91dHB1dC5pbWFnZSwgZS5vdXRwdXQubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmltYWdlSGVhZCAmJiBpLl9vcHRpb25zLmNvcHlJbWFnZUhlYWQpIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IEJsb2IoW28uaW1hZ2VIZWFkLCBuLmJsb2JTbGljZS5jYWxsKHMsIDIwKV0sIHt0eXBlOiB3dChlLm91dHB1dC5pbWFnZSl9KSwgcyA9IEcocywgZS5vdXRwdXQubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBcInNsaW1fb3V0cHV0X1wiICsgaS5fdWlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm91dHB1dC5pbWFnZSA9IG51bGwsIGUub3V0cHV0LmZpZWxkID0gdSwgci5hcHBlbmQodSwgcywgZS5vdXRwdXQubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5hcHBlbmQoaS5fb3V0cHV0Lm5hbWUsIEpTT04uc3RyaW5naWZ5KGUpKSwgdChhLCByKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge21heE1ldGFEYXRhU2l6ZTogMjYyMTQ0LCBkaXNhYmxlSW1hZ2VIZWFkOiAhMX0pKSA6IHZvaWQgdChudWxsLCBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3Nob3dFZGl0b3JcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEZ0LmNsYXNzTmFtZSA9IHRoaXMuX29wdGlvbnMucG9wb3ZlckNsYXNzTmFtZSwgRnQuc2hvdygpLCB0aGlzLl9pbWFnZUVkaXRvci5zaG93KClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9oaWRlRWRpdG9yXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbWFnZUVkaXRvci5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ0LmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWVycy5wdXNoKHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfc2hvd1ByZXZpZXdcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1KHQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246IFswLCA1MCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFswLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsxLjUsIDEuNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogXCJzcHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdDb25zdGFudDogLjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nRGVjZWxlcmF0aW9uOiAuNyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHQpLCBlICYmIGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaGlkZVJlc3VsdFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0SW50cm8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgdShlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbMSwgMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsuNSwgLjVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBcInNwcmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0NvbnN0YW50OiAuMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdEZWNlbGVyYXRpb246IC43NSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KGUpLCB0ICYmIHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfc2hvd0J1dHRvbnNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYnRuR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9idG5Hcm91cC5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbLjUsIC41XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBbMCwgMTAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9uZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiB0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RldGFjaGVkKCkgPyBlLmR1cmF0aW9uID0gMSA6IChlLmRlbGF5ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI1MCArIDUwICogdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUuZWFzaW5nID0gXCJzcHJpbmdcIiwgZS5zcHJpbmdDb25zdGFudCA9IC4zLCBlLnNwcmluZ0RlY2VsZXJhdGlvbiA9IC44NSksIHUodGhpcy5fYnRuR3JvdXAuY2hpbGROb2RlcywgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9oaWRlQnV0dG9uc1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9idG5Hcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsuODUsIC44NV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxEb25lOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9idG5Hcm91cC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCIsIHQgJiYgdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEZXRhY2hlZCgpID8gaS5kdXJhdGlvbiA9IDEgOiAoaS5lYXNpbmcgPSBcInNwcmluZ1wiLCBpLnNwcmluZ0NvbnN0YW50ID0gLjMsIGkuc3ByaW5nRGVjZWxlcmF0aW9uID0gLjc1KSwgdSh0aGlzLl9idG5Hcm91cC5jaGlsZE5vZGVzLCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2hpZGVTdGF0dXNcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tdXBsb2FkLXN0YXR1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuc3R5bGUub3BhY2l0eSA9IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9kb0VkaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UgJiYgKHRoaXMuX2FkZFN0YXRlKFwiZWRpdG9yXCIpLCB0aGlzLl9pbWFnZUVkaXRvciB8fCB0aGlzLl9hcHBlbmRFZGl0b3IoKSwgdGhpcy5faW1hZ2VFZGl0b3Iuc2hvd1JvdGF0ZUJ1dHRvbiA9IHRoaXMuX29wdGlvbnMucm90YXRlQnV0dG9uLCBGdC5pbm5lciA9IHRoaXMuX2ltYWdlRWRpdG9yLmVsZW1lbnQsIHRoaXMuX2ltYWdlRWRpdG9yLm9wZW4oc3QodGhpcy5fZGF0YS5pbnB1dC5pbWFnZSksIFwiZnJlZVwiID09PSB0aGlzLl9vcHRpb25zLnJhdGlvID8gbnVsbCA6IHRoaXMuX3JhdGlvLCB0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcCwgdGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fc2hvd0VkaXRvcigpLCB0Ll9oaWRlQnV0dG9ucygpLCB0Ll9oaWRlU3RhdHVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2RvUmVtb3ZlXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0ltYWdlT25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJTdGF0ZSgpLCB0aGlzLl9hZGRTdGF0ZShcImVtcHR5XCIpLCB0aGlzLl9oYXNJbml0aWFsSW1hZ2UgPSAhMSwgdGhpcy5faW1hZ2VIb3BwZXIgJiYgKHRoaXMuX2ltYWdlSG9wcGVyLmVuYWJsZWQgPSAhMCksIHRoaXMuX2lzUmVxdWlyZWQgJiYgKHRoaXMuX2lucHV0LnJlcXVpcmVkID0gITApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fZ2V0T3V0cm8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmIChpLnN0eWxlLm9wYWNpdHkgPSBcIjBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzZXREYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5faXNCZWluZ0Rlc3Ryb3llZCB8fCAoZS5faGlkZUJ1dHRvbnMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdG9nZ2xlQnV0dG9uKFwidXBsb2FkXCIsICEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5faGlkZVN0YXR1cygpLCBlLl9oaWRlUmVzdWx0KCksIGUuX29wdGlvbnMuZGlkUmVtb3ZlLmFwcGx5KGUsIFtuLCBlXSksIHQgJiYgdCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuaXNEZXRhY2hlZCgpID8gMCA6IDI1MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVycy5wdXNoKG8pLCBuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZG9VcGxvYWRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLmlucHV0LmltYWdlICYmICh0aGlzLl9hZGRTdGF0ZShcInVwbG9hZFwiKSwgdGhpcy5fc3RhcnRQcm9ncmVzcygpLCB0aGlzLl9oaWRlQnV0dG9ucyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdG9nZ2xlQnV0dG9uKFwidXBsb2FkXCIsICExKSwgZS5fc2F2ZShmdW5jdGlvbiAoaSwgbiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9yZW1vdmVTdGF0ZShcInVwbG9hZFwiKSwgZS5fc3RvcFByb2dyZXNzKCksIHQgJiYgdC5hcHBseShlLCBbaSwgbiwgb10pLCBpICYmIGUuX3RvZ2dsZUJ1dHRvbihcInVwbG9hZFwiLCAhMCksIGUuX3Nob3dCdXR0b25zKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZG9Eb3dubG9hZFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9kYXRhLm91dHB1dC5pbWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYga3QodGhpcy5fZGF0YSwgdGhpcy5fb3B0aW9ucy5qcGVnQ29tcHJlc3Npb24sIHRoaXMuX29wdGlvbnMuZm9yY2VUeXBlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2RvRGVzdHJveVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgIT09IGUuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lm5hbWUgPT09IGUubmFtZSAmJiB0LnZhbHVlID09PSBlLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzQmVpbmdEZXN0cm95ZWQgPSAhMCwgdGhpcy5fdGltZXJzLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl90aW1lcnMgPSBbXSwgdSh0aGlzLl9lbGVtZW50LCBcImRldGFjaFwiKSwgdGhpcy5faW1hZ2VIb3BwZXIgJiYgKEh0LmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9pbWFnZUhvcHBlci5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodCwgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9pbWFnZUhvcHBlci5kZXN0cm95KCksIHRoaXMuX2ltYWdlSG9wcGVyID0gbnVsbCksIHRoaXMuX2ltYWdlRWRpdG9yICYmIChOdC5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5faW1hZ2VFZGl0b3IuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5faW1hZ2VFZGl0b3IuZGVzdHJveSgpLCB0aGlzLl9pbWFnZUVkaXRvciA9IG51bGwpLCBTdCh0aGlzLl9idG5Hcm91cC5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzKSwgdGhpcy5fZWxlbWVudCAhPT0gdGhpcy5fb3JpZ2luYWxFbGVtZW50ICYmIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAmJiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHRoaXMuX29yaWdpbmFsRWxlbWVudCwgdGhpcy5fZWxlbWVudCksIHRoaXMuX29yaWdpbmFsRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl9vcmlnaW5hbEVsZW1lbnRJbm5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gXyh0aGlzLl9vcmlnaW5hbEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdChpLCBlLl9vcmlnaW5hbEVsZW1lbnRBdHRyaWJ1dGVzKSB8fCBlLl9vcmlnaW5hbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGkubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9vcmlnaW5hbEVsZW1lbnRBdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KG4sIGkpIHx8IGUuX29yaWdpbmFsRWxlbWVudC5zZXRBdHRyaWJ1dGUobi5uYW1lLCBuLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIFd0ID0gTWF0aC5tYXgoMCwgV3QgLSAxKSwgRnQgJiYgMCA9PT0gV3QgJiYgKEZ0LmRlc3Ryb3koKSwgRnQgPSBudWxsKSwgdGhpcy5fb3JpZ2luYWxFbGVtZW50ID0gbnVsbCwgdGhpcy5fZWxlbWVudCA9IG51bGwsIHRoaXMuX2lucHV0ID0gbnVsbCwgdGhpcy5fb3V0cHV0ID0gbnVsbCwgdGhpcy5fYnRuR3JvdXAgPSBudWxsLCB0aGlzLl9vcHRpb25zID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZGF0YUJhc2U2NFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidCh0aGlzLl9kYXRhLCB0aGlzLl9vcHRpb25zLnBvc3QsIHRoaXMuX29wdGlvbnMuanBlZ0NvbXByZXNzaW9uLCB0aGlzLl9vcHRpb25zLmZvcmNlVHlwZSwgbnVsbCAhPT0gdGhpcy5fb3B0aW9ucy5zZXJ2aWNlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZGF0YVwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2dCh0aGlzLl9kYXRhKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZWxlbWVudFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJzZXJ2aWNlXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuc2VydmljZSA9IHRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInNpemVcIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTaXplKHQsIG51bGwpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJyb3RhdGlvblwiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJvdGF0aW9uKHQsIG51bGwpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJmb3JjZVNpemVcIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JjZVNpemUodCwgbnVsbClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInJhdGlvXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmF0aW8odCwgbnVsbClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1dLCBbe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwib3B0aW9uc1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdDogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFudEVkaXQ6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZEJhc2U2NDogITEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aW86IFwiZnJlZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVBpeGVsUmF0aW86IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9wOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Q6IFtcIm91dHB1dFwiLCBcImFjdGlvbnNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlRm9ybWF0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclNoYXJwZW46IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaDogITEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdElucHV0TmFtZTogXCJzbGltW11cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5TaXplOiB7d2lkdGg6IDAsIGhlaWdodDogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganBlZ0NvbXByZXNzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZE1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQ6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVJbml0aWFsSW1hZ2U6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlVHlwZTogITEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VTaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlTWluU2l6ZTogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcFJlcGxhY2U6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxDYW52YXNTaXplOiB7d2lkdGg6IDQwOTYsIGhlaWdodDogNDA5Nn0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weUltYWdlSGVhZDogITEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlQnV0dG9uOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyQ2xhc3NOYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIjxwPkRyb3AgeW91ciBpbWFnZSBoZXJlPC9wPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsTG9hZGluZzogXCI8cD5Mb2FkaW5nIGltYWdlLi4uPC9wPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0ZpbGVUeXBlOiBcIjxwPkludmFsaWQgZmlsZSB0eXBlLCBleHBlY3RzOiAkMC48L3A+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzRmlsZVNpemU6IFwiPHA+RmlsZSBpcyB0b28gYmlnLCBtYXhpbXVtIGZpbGUgc2l6ZTogJDAgTUIuPC9wPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05vU3VwcG9ydDogXCI8cD5Zb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBpbWFnZSBjcm9wcGluZy48L3A+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSW1hZ2VUb29TbWFsbDogXCI8cD5JbWFnZSBpcyB0b28gc21hbGwsIG1pbmltdW0gc2l6ZSBpczogJDAgcGl4ZWxzLjwvcD5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb250ZW50TGVuZ3RoOiAnPHNwYW4gY2xhc3M9XCJzbGltLXVwbG9hZC1zdGF0dXMtaWNvblwiPjwvc3Bhbj4gVGhlIGZpbGUgaXMgcHJvYmFibHkgdG9vIGJpZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVW5rbm93blJlc3BvbnNlOiAnPHNwYW4gY2xhc3M9XCJzbGltLXVwbG9hZC1zdGF0dXMtaWNvblwiPjwvc3Bhbj4gQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVXBsb2FkU3VjY2VzczogJzxzcGFuIGNsYXNzPVwic2xpbS11cGxvYWQtc3RhdHVzLWljb25cIj48L3NwYW4+IFNhdmVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNMb2NhbFVybFByb2JsZW06IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkSW5pdDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExvYWQ6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2F2ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFVwbG9hZDogZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJFcnJvcjogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlbW92ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFRyYW5zZm9ybTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENvbmZpcm06IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFRocm93RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxDcm9wSW5pdGlhbDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZShudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbFRyYW5zZm9ybTogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbFNhdmU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxSZW1vdmU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbFJlcXVlc3Q6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsRmV0Y2g6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsTG9hZDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJ0LmNvbmNhdChJdC5CdXR0b25zKS5jb25jYXQoXCJyb3RhdGVcIikuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gUihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0W1wiYnV0dG9uXCIgKyBpICsgXCJDbGFzc05hbWVcIl0gPSBudWxsLCB0W1wiYnV0dG9uXCIgKyBpICsgXCJMYWJlbFwiXSA9IGksIHRbXCJidXR0b25cIiArIGkgKyBcIlRpdGxlXCJdID0gaVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1dKSwgaVxuICAgICAgICAgICAgfSgpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBcIjxwPlwiICsgdCArIFwiPC9wPlwiIDogbnVsbFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IHdpbmRvdywgaSA9IHQuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpLmZvckVhY2goZnVuY3Rpb24gKHQsIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgZVtpW25dXSAmJiAoZSA9IGVbaVtuXV0pXG4gICAgICAgICAgICAgICAgfSksIGUgIT09IHdpbmRvdyA/IGUgOiBudWxsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpID0gW10sIG4gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwLCBuID0gaS5sZW5ndGg7IGUgPCBuOyBlKyspIGlmIChpW2VdLmlzQXR0YWNoZWRUbyh0KSkgcmV0dXJuIGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgICAgICB9LCBvID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdFxuICAgICAgICAgICAgfSwgYSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidHJ1ZVwiID09PSB0XG4gICAgICAgICAgICB9LCByID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgXCJ0cnVlXCIgPT09IHRcbiAgICAgICAgICAgIH0sIHMgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0KGUpXG4gICAgICAgICAgICB9LCBoID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCA/IGUodCkgOiBudWxsXG4gICAgICAgICAgICB9LCB1ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBlID0genQodCwgXCIsXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlWzBdLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGVbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBsID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCA/IHBhcnNlRmxvYXQodCkgOiBudWxsXG4gICAgICAgICAgICB9LCBwID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCA/IHBhcnNlSW50KHQsIDEwKSA6IG51bGxcbiAgICAgICAgICAgIH0sIGMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB7fTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpdChcIixcIikubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh0LCAxMClcbiAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uICh0LCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVbVXRbaV1dID0gdFxuICAgICAgICAgICAgICAgIH0pLCBlXG4gICAgICAgICAgICB9LCBmID0ge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkOiBhLFxuICAgICAgICAgICAgICAgIGVkaXQ6IHIsXG4gICAgICAgICAgICAgICAgaW5zdGFudEVkaXQ6IGEsXG4gICAgICAgICAgICAgICAgbWluU2l6ZTogdSxcbiAgICAgICAgICAgICAgICBzaXplOiB1LFxuICAgICAgICAgICAgICAgIGZvcmNlU2l6ZTogdSxcbiAgICAgICAgICAgICAgICBmb3JjZU1pblNpemU6IHIsXG4gICAgICAgICAgICAgICAgaW50ZXJuYWxDYW52YXNTaXplOiB1LFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcInVuZGVmaW5lZFwiID09IHR5cGVvZiB0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlKHQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA/IGkgOiB0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlRm9ybWF0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdCA/IG51bGwgOiB0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmZXRjaGVyOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdCA/IG51bGwgOiB0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwdXNoOiBhLFxuICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdCA/IG51bGwgOiBwYXJzZUludCh0LCAxMClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNyb3A6IGMsXG4gICAgICAgICAgICAgICAgcG9zdDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPyB0LnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICB9KSA6IG51bGxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRJbnB1dE5hbWU6IG8sXG4gICAgICAgICAgICAgICAgcmF0aW86IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8gdCA6IG51bGxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1heEZpbGVTaXplOiBsLFxuICAgICAgICAgICAgICAgIGZpbHRlclNoYXJwZW46IHAsXG4gICAgICAgICAgICAgICAganBlZ0NvbXByZXNzaW9uOiBwLFxuICAgICAgICAgICAgICAgIHVwbG9hZEJhc2U2NDogYSxcbiAgICAgICAgICAgICAgICBmb3JjZVR5cGU6IG8sXG4gICAgICAgICAgICAgICAgZHJvcFJlcGxhY2U6IHIsXG4gICAgICAgICAgICAgICAgc2F2ZUluaXRpYWxJbWFnZTogYSxcbiAgICAgICAgICAgICAgICBjb3B5SW1hZ2VIZWFkOiBhLFxuICAgICAgICAgICAgICAgIHJvdGF0ZUJ1dHRvbjogcixcbiAgICAgICAgICAgICAgICBsYWJlbDogcyxcbiAgICAgICAgICAgICAgICBsYWJlbExvYWRpbmc6IHMsXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzTmFtZTogbyxcbiAgICAgICAgICAgICAgICBkZXZpY2VQaXhlbFJhdGlvOiBvLFxuICAgICAgICAgICAgICAgIHVwbG9hZE1ldGhvZDogb1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFtcIkZpbGVTaXplXCIsIFwiRmlsZVR5cGVcIiwgXCJOb1N1cHBvcnRcIiwgXCJJbWFnZVRvb1NtYWxsXCJdLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBmW1wic3RhdHVzXCIgKyB0XSA9IHNcbiAgICAgICAgICAgIH0pLCBbXCJDb250ZW50TGVuZ3RoXCIsIFwiVW5rbm93blJlc3BvbnNlXCIsIFwiVXBsb2FkU3VjY2Vzc1wiLCBcImxvY2FsVXJsUHJvYmxlbVwiXS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgZltcInN0YXR1c1wiICsgdF0gPSBvXG4gICAgICAgICAgICB9KSwgW1wiSW5pdFwiLCBcIkxvYWRcIiwgXCJTYXZlXCIsIFwiVXBsb2FkXCIsIFwiUmVtb3ZlXCIsIFwiVHJhbnNmb3JtXCIsIFwiUmVjZWl2ZVNlcnZlckVycm9yXCIsIFwiQ29uZmlybVwiLCBcIkNhbmNlbFwiLCBcIlRocm93RXJyb3JcIl0uZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGZbXCJkaWRcIiArIHRdID0gaFxuICAgICAgICAgICAgfSksIFtcIkNyb3BJbml0aWFsXCIsIFwiVHJhbnNmb3JtXCIsIFwiU2F2ZVwiLCBcIlJlbW92ZVwiLCBcIlJlcXVlc3RcIiwgXCJMb2FkXCIsIFwiRmV0Y2hcIl0uZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGZbXCJ3aWxsXCIgKyB0XSA9IGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIF8gPSBbXCJDbGFzc05hbWVcIiwgXCJMYWJlbFwiLCBcIlRpdGxlXCJdO1xuICAgICAgICAgICAgQnQuY29uY2F0KEl0LkJ1dHRvbnMpLmNvbmNhdChcInJvdGF0ZVwiKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBSKHQpO1xuICAgICAgICAgICAgICAgIF8uZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICBmW1wiYnV0dG9uXCIgKyBlICsgdF0gPSBvXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pLCBHdC5zdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoXCJbb2JqZWN0IE9wZXJhTWluaV1cIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdpbmRvdy5vcGVyYW1pbmkpIHx8IFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHdpbmRvdy5GaWxlUmVhZGVyIHx8ICEoXCJzbGljZVwiIGluIEJsb2IucHJvdG90eXBlKSB8fCBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB3aW5kb3cuVVJMIHx8IFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKVxuICAgICAgICAgICAgfSgpLCBHdC5wYXJzZSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUsIGksIG4sIG8gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGUgPSB0LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuc2xpbTpub3QoW2RhdGEtc3RhdGVdKVwiKSwgbiA9IGUubGVuZ3RoOyBuLS07KSBpID0gZVtuXSwgby5wdXNoKEd0LmNyZWF0ZShpLCBHdC5nZXRPcHRpb25zRnJvbUF0dHJpYnV0ZXMoaSkpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb1xuICAgICAgICAgICAgfSwgR3QuZ2V0T3B0aW9uc0Zyb21BdHRyaWJ1dGVzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IGQodCksIGkgPSB7bWV0YToge319O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGZbbl0sIGEgPSBlW25dO1xuICAgICAgICAgICAgICAgICAgICBvID8gKGEgPSBvKGEpLCBhID0gbnVsbCA9PT0gYSA/IG10KEd0Lm9wdGlvbnMoKVtuXSkgOiBhLCBpW25dID0gYSkgOiAwID09PSBuLmluZGV4T2YoXCJtZXRhXCIpICYmIChpLm1ldGFbTShuLnN1YnN0cig0KSldID0gYSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlcbiAgICAgICAgICAgIH0sIEd0LmZpbmQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gaS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaXNBdHRhY2hlZFRvKHQpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUgPyBlWzBdIDogbnVsbFxuICAgICAgICAgICAgfSwgR3QuY3JlYXRlID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIUd0LmZpbmQodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZSB8fCAoZSA9IEd0LmdldE9wdGlvbnNGcm9tQXR0cmlidXRlcyh0KSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IEd0KHQsIGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5wdXNoKG4pLCBuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgR3QuZGVzdHJveSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBuKHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhKGUgPCAwKSAmJiAoaVtlXS5kZXN0cm95KCksIGkuc3BsaWNlKGUsIDEpLCAhMClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSgpLCBHdFxuICAgIH0oKSwgdC5TbGltLnN1cHBvcnRlZCkgXCJsb2FkaW5nXCIgIT09IGRvY3VtZW50LnJlYWR5U3RhdGUgPyBpKCkgOiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCBpKTsgZWxzZSB7XG4gICAgICAgIHZhciBuID0gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2xpbVwiKSwgbyA9IDAsIGEgPSBuLmxlbmd0aDtcbiAgICAgICAgZm9yIChvID0gMDsgbyA8IGE7IG8rKykgbltvXS5jbGFzc05hbWUgPSBcIlwiXG4gICAgfVxufSh3aW5kb3cpO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLFVBQVVBLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2IsU0FBU0MsQ0FBQyxHQUFHO0lBQ1RGLENBQUMsQ0FBQ0csSUFBSSxDQUFDQyxLQUFLLENBQUNDLFFBQVEsQ0FBQztFQUMxQjtFQUVBLElBQUlMLENBQUMsRUFBRSxJQUFJQSxDQUFDLENBQUNHLElBQUksR0FBRyxZQUFZO0lBQzVCLFNBQVNILENBQUMsQ0FBQ0EsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7TUFDYixJQUFJLEVBQUVELENBQUMsWUFBWUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJSyxT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VUFDRnpGLENBQUMsQ0FBQzJFLElBQUksR0FBR25FLENBQUMsQ0FBQ3NFLEtBQUssRUFBRTlFLENBQUMsQ0FBQzhFLEtBQUssR0FBR3RFLENBQUMsQ0FBQ21FLElBQUk7VUFDbEM7UUFDSixLQUFLLENBQUM7VUFDRjNFLENBQUMsQ0FBQzJFLElBQUksR0FBR25FLENBQUMsQ0FBQ3NFLEtBQUssRUFBRTlFLENBQUMsQ0FBQzRFLEdBQUcsR0FBR3BFLENBQUMsQ0FBQ3dFLE1BQU0sRUFBRWhGLENBQUMsQ0FBQzhFLEtBQUssR0FBR3RFLENBQUMsQ0FBQ21FLElBQUksRUFBRTNFLENBQUMsQ0FBQ2dGLE1BQU0sR0FBR3hFLENBQUMsQ0FBQ29FLEdBQUc7VUFDdEU7UUFDSixLQUFLLENBQUM7VUFDRjVFLENBQUMsQ0FBQzRFLEdBQUcsR0FBR3BFLENBQUMsQ0FBQ3dFLE1BQU0sRUFBRWhGLENBQUMsQ0FBQ2dGLE1BQU0sR0FBR3hFLENBQUMsQ0FBQ29FLEdBQUc7VUFDbEM7UUFDSixLQUFLLENBQUM7VUFDRjVFLENBQUMsQ0FBQzJFLElBQUksR0FBR25FLENBQUMsQ0FBQ29FLEdBQUcsRUFBRTVFLENBQUMsQ0FBQzRFLEdBQUcsR0FBR3BFLENBQUMsQ0FBQ21FLElBQUksRUFBRTNFLENBQUMsQ0FBQzhFLEtBQUssR0FBR3RFLENBQUMsQ0FBQ3dFLE1BQU0sRUFBRWhGLENBQUMsQ0FBQ2dGLE1BQU0sR0FBR3hFLENBQUMsQ0FBQ3NFLEtBQUs7VUFDdEU7UUFDSixLQUFLLENBQUM7VUFDRjlFLENBQUMsQ0FBQzJFLElBQUksR0FBR25FLENBQUMsQ0FBQ29FLEdBQUcsRUFBRTVFLENBQUMsQ0FBQzRFLEdBQUcsR0FBR3BFLENBQUMsQ0FBQ3NFLEtBQUssRUFBRTlFLENBQUMsQ0FBQzhFLEtBQUssR0FBR3RFLENBQUMsQ0FBQ3dFLE1BQU0sRUFBRWhGLENBQUMsQ0FBQ2dGLE1BQU0sR0FBR3hFLENBQUMsQ0FBQ21FLElBQUk7VUFDdEU7UUFDSixLQUFLLENBQUM7VUFDRjNFLENBQUMsQ0FBQzJFLElBQUksR0FB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QUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxFQUFFRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdFLENBQUMsRUFBRUYsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHTyxDQUFDLEVBQUVQLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO1VBQ3hLLENBQUM7VUFBRTBPLENBQUMsR0FBRyxTQUFKQSxDQUFDLENBQWExTyxDQUFDLEVBQUVDLENBQUMsRUFBRTtZQUNuQkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHYSxJQUFJLENBQUM4TSxHQUFHLENBQUMxTixDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUNhLElBQUksQ0FBQzhOLEdBQUcsQ0FBQzFPLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQzhOLEdBQUcsQ0FBQzFPLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdhLElBQUksQ0FBQzhNLEdBQUcsQ0FBQzFOLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztVQUNqTixDQUFDO1VBQUU0TyxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhNU8sQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDbkJELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2EsSUFBSSxDQUFDOE0sR0FBRyxDQUFDMU4sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2EsSUFBSSxDQUFDOE4sR0FBRyxDQUFDMU8sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDYSxJQUFJLENBQUM4TixHQUFHLENBQUMxTyxDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHYSxJQUFJLENBQUM4TSxHQUFHLENBQUMxTixDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7VUFDak4sQ0FBQztVQUFFNk8sQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYTdPLENBQUMsRUFBRUMsQ0FBQyxFQUFFO1lBQ25CRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQzhNLEdBQUcsQ0FBQzFOLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2EsSUFBSSxDQUFDOE4sR0FBRyxDQUFDMU8sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2EsSUFBSSxDQUFDOE4sR0FBRyxDQUFDMU8sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2EsSUFBSSxDQUFDOE0sR0FBRyxDQUFDMU4sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO1VBQ2pOLENBQUM7VUFBRThPLENBQUMsR0FBRyxTQUFKQSxDQUFDLENBQWE5TyxDQUFDLEVBQUVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO1lBQ3RCRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQ2tPLEdBQUcsQ0FBQzlPLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQ2tPLEdBQUcsQ0FBQzdPLENBQUMsQ0FBQyxFQUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztVQUM1TCxDQUFDO1VBQUVnUCxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhaFAsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtZQUN0QkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0UsQ0FBQyxFQUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztVQUN4SyxDQUFDO1VBQUVpUCxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhalAsQ0FBQyxFQUFFO1lBQ2hCQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztVQUN4SyxDQUFDO1VBQUVrUCxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhbFAsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDbkJBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENB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RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdGLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdGLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMs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LEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1VBQy92Q0UsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxF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\n//# sourceURL=webpack-internal:///./resources/js/slim.kickstart.min.js\n"); +eval("function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/*\n * Slim v4.19.0 - Image Cropping Made Easy\n * Copyright (c) 2018 Rik Schennink - http://slimimagecropper.com\n */\n!function (t, e) {\n function i() {\n t.Slim.parse(document);\n }\n if (t) if (t.Slim = function () {\n function t(t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function i(t, e, i, n) {\n if (!(e >= 1)) {\n for (var o = t.width, a = t.height, r = Math.max(n.width, Math.min(i.width, Math.round(t.width * e))), s = Math.max(n.height, Math.min(i.height, Math.round(t.height * e))), h = st(t), u = void 0, l = void 0; o > r && a > s;) {\n u = document.createElement(\"canvas\"), o = Math.round(.5 * h.width), a = Math.round(.5 * h.height), o < r && (o = r), a < s && (a = s), u.width = o, u.height = a, l = u.getContext(\"2d\"), l.drawImage(h, 0, 0, o, a), h = st(u);\n }\n t.width = r, t.height = s, l = t.getContext(\"2d\"), l.drawImage(h, 0, 0, r, s);\n }\n }\n !function () {\n function t(t, i) {\n i = i || {\n bubbles: !1,\n cancelable: !1,\n detail: e\n };\n var n = document.createEvent(\"CustomEvent\");\n return n.initCustomEvent(t, i.bubbles, i.cancelable, i.detail), n;\n }\n return \"function\" != typeof window.CustomEvent && (t.prototype = window.Event.prototype, void (window.CustomEvent = t));\n }();\n var n = function n(t, e, i) {\n var o,\n a,\n r = document.createElement(\"img\");\n if (r.onerror = e, r.onload = function () {\n !a || i && i.noRevoke || n.revokeObjectURL(a), e && e(n.scale(r, i));\n }, n.isInstanceOf(\"Blob\", t) || n.isInstanceOf(\"File\", t)) o = a = n.createObjectURL(t), r._type = t.type;else {\n if (\"string\" != typeof t) return !1;\n o = t, i && i.crossOrigin && (r.crossOrigin = i.crossOrigin);\n }\n return o ? (r.src = o, r) : n.readFile(t, function (t) {\n var i = t.target;\n i && i.result ? r.src = i.result : e && e(t);\n });\n },\n o = window.createObjectURL && window || window.URL && URL.revokeObjectURL && URL || window.webkitURL && webkitURL;\n n.isInstanceOf = function (t, e) {\n return Object.prototype.toString.call(e) === \"[object \" + t + \"]\";\n }, n.transformCoordinates = function () {}, n.getTransformedOptions = function (t, e) {\n var i,\n n,\n o,\n a,\n r = e.aspectRatio;\n if (!r) return e;\n i = {};\n for (n in e) {\n e.hasOwnProperty(n) && (i[n] = e[n]);\n }\n return i.crop = !0, o = t.naturalWidth || t.width, a = t.naturalHeight || t.height, o / a > r ? (i.maxWidth = a * r, i.maxHeight = a) : (i.maxWidth = o, i.maxHeight = o / r), i;\n }, n.renderImageToCanvas = function (t, e, i, n, o, a, r, s, h, u) {\n return t.getContext(\"2d\").drawImage(e, i, n, o, a, r, s, h, u), t;\n }, n.hasCanvasOption = function (t) {\n return t.canvas || t.crop || !!t.aspectRatio;\n }, n.scale = function (t, i) {\n function o() {\n var t = Math.max((h || b) / b, (u || k) / k);\n t > 1 && (b *= t, k *= t);\n }\n function a() {\n var t = Math.min((r || b) / b, (s || k) / k);\n t < 1 && (b *= t, k *= t);\n }\n i = i || {};\n var r,\n s,\n h,\n u,\n l,\n p,\n c,\n d,\n f,\n _,\n m,\n g = document.createElement(\"canvas\"),\n v = t.getContext || n.hasCanvasOption(i) && g.getContext,\n y = t.naturalWidth || t.width,\n w = t.naturalHeight || t.height,\n b = y,\n k = w;\n if (v && (i = n.getTransformedOptions(t, i), c = i.left || 0, d = i.top || 0, i.sourceWidth ? (l = i.sourceWidth, i.right !== e && i.left === e && (c = y - l - i.right)) : l = y - c - (i.right || 0), i.sourceHeight ? (p = i.sourceHeight, i.bottom !== e && i.top === e && (d = w - p - i.bottom)) : p = w - d - (i.bottom || 0), b = l, k = p), r = i.maxWidth, s = i.maxHeight, h = i.minWidth, u = i.minHeight, v && r && s && i.crop ? (b = r, k = s, m = l / p - r / s, m < 0 ? (p = s * l / r, i.top === e && i.bottom === e && (d = (w - p) / 2)) : m > 0 && (l = r * p / s, i.left === e && i.right === e && (c = (y - l) / 2))) : ((i.contain || i.cover) && (h = r = r || h, u = s = s || u), i.cover ? (a(), o()) : (o(), a())), v) {\n if (f = i.pixelRatio, f > 1 && (g.style.width = b + \"px\", g.style.height = k + \"px\", b *= f, k *= f, g.getContext(\"2d\").scale(f, f)), _ = i.downsamplingRatio, _ > 0 && _ < 1 && b < l && k < p) for (; l * _ > b;) {\n g.width = l * _, g.height = p * _, n.renderImageToCanvas(g, t, c, d, l, p, 0, 0, g.width, g.height), l = g.width, p = g.height, t = document.createElement(\"canvas\"), t.width = l, t.height = p, n.renderImageToCanvas(t, g, 0, 0, l, p, 0, 0, l, p);\n }\n return g.width = b, g.height = k, n.transformCoordinates(g, i), n.renderImageToCanvas(g, t, c, d, l, p, 0, 0, b, k);\n }\n return t.width = b, t.height = k, t;\n }, n.createObjectURL = function (t) {\n return !!o && o.createObjectURL(t);\n }, n.revokeObjectURL = function (t) {\n return !!o && o.revokeObjectURL(t);\n }, n.readFile = function (t, e, i) {\n if (window.FileReader) {\n var n = new FileReader();\n if (n.onload = n.onerror = e, i = i || \"readAsDataURL\", n[i]) return n[i](t), n;\n }\n return !1;\n };\n var a = n.hasCanvasOption,\n r = n.transformCoordinates,\n s = n.getTransformedOptions;\n n.hasCanvasOption = function (t) {\n return !!t.orientation || a.call(n, t);\n }, n.transformCoordinates = function (t, e) {\n r.call(n, t, e);\n var i = t.getContext(\"2d\"),\n o = t.width,\n a = t.height,\n s = t.style.width,\n h = t.style.height,\n u = e.orientation;\n if (u && !(u > 8)) switch (u > 4 && (t.width = a, t.height = o, t.style.width = h, t.style.height = s), u) {\n case 2:\n i.translate(o, 0), i.scale(-1, 1);\n break;\n case 3:\n i.translate(o, a), i.rotate(Math.PI);\n break;\n case 4:\n i.translate(0, a), i.scale(1, -1);\n break;\n case 5:\n i.rotate(.5 * Math.PI), i.scale(1, -1);\n break;\n case 6:\n i.rotate(.5 * Math.PI), i.translate(0, -a);\n break;\n case 7:\n i.rotate(.5 * Math.PI), i.translate(o, -a), i.scale(-1, 1);\n break;\n case 8:\n i.rotate(-.5 * Math.PI), i.translate(-o, 0);\n }\n }, n.getTransformedOptions = function (t, e) {\n var i,\n o,\n a = s.call(n, t, e),\n r = a.orientation;\n if (!r || r > 8 || 1 === r) return a;\n i = {};\n for (o in a) {\n a.hasOwnProperty(o) && (i[o] = a[o]);\n }\n switch (a.orientation) {\n case 2:\n i.left = a.right, i.right = a.left;\n break;\n case 3:\n i.left = a.right, i.top = a.bottom, i.right = a.left, i.bottom = a.top;\n break;\n case 4:\n i.top = a.bottom, i.bottom = a.top;\n break;\n case 5:\n i.left = a.top, i.top = a.left, i.right = a.bottom, i.bottom = a.right;\n break;\n case 6:\n i.left = a.top, i.top = a.right, i.right = a.bottom, i.bottom = a.left;\n break;\n case 7:\n i.left = a.bottom, i.top = a.right, i.right = a.top, i.bottom = a.left;\n break;\n case 8:\n i.left = a.bottom, i.top = a.left, i.right = a.top, i.bottom = a.right;\n }\n return a.orientation > 4 && (i.maxWidth = a.maxHeight, i.maxHeight = a.maxWidth, i.minWidth = a.minHeight, i.minHeight = a.minWidth, i.sourceWidth = a.sourceHeight, i.sourceHeight = a.sourceWidth), i;\n };\n var h = window.Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice);\n n.blobSlice = h && function () {\n var t = this.slice || this.webkitSlice || this.mozSlice;\n return t.apply(this, arguments);\n }, n.metaDataParsers = {\n jpeg: {\n 65505: []\n }\n }, n.parseMetaData = function (t, e, i) {\n i = i || {};\n var o = this,\n a = i.maxMetaDataSize || 262144,\n r = {},\n s = !(window.DataView && t && t.size >= 12 && \"image/jpeg\" === t.type && n.blobSlice);\n !s && n.readFile(n.blobSlice.call(t, 0, a), function (t) {\n if (t.target.error) return void e(r);\n var a,\n s,\n h,\n u,\n l = t.target.result,\n p = new DataView(l),\n c = 2,\n d = p.byteLength - 4,\n f = c;\n if (65496 === p.getUint16(0)) {\n for (; c < d && (a = p.getUint16(c), a >= 65504 && a <= 65519 || 65534 === a) && (s = p.getUint16(c + 2) + 2, !(c + s > p.byteLength));) {\n if (h = n.metaDataParsers.jpeg[a]) for (u = 0; u < h.length; u += 1) {\n h[u].call(o, p, c, s, r, i);\n }\n c += s, f = c;\n }\n !i.disableImageHead && f > 6 && (l.slice ? r.imageHead = l.slice(0, f) : r.imageHead = new Uint8Array(l).subarray(0, f));\n }\n e(r);\n }, \"readAsArrayBuffer\") || e(r);\n }, n.ExifMap = function () {\n return this;\n }, n.ExifMap.prototype.map = {\n Orientation: 274\n }, n.ExifMap.prototype.get = function (t) {\n return this[t] || this[this.map[t]];\n }, n.getExifThumbnail = function (t, e, i) {\n var n, o, a;\n if (i && !(e + i > t.byteLength)) {\n for (n = [], o = 0; o < i; o += 1) {\n a = t.getUint8(e + o), n.push((a < 16 ? \"0\" : \"\") + a.toString(16));\n }\n return \"data:image/jpeg,%\" + n.join(\"%\");\n }\n }, n.exifTagTypes = {\n 1: {\n getValue: function getValue(t, e) {\n return t.getUint8(e);\n },\n size: 1\n },\n 2: {\n getValue: function getValue(t, e) {\n return String.fromCharCode(t.getUint8(e));\n },\n size: 1,\n ascii: !0\n },\n 3: {\n getValue: function getValue(t, e, i) {\n return t.getUint16(e, i);\n },\n size: 2\n },\n 4: {\n getValue: function getValue(t, e, i) {\n return t.getUint32(e, i);\n },\n size: 4\n },\n 5: {\n getValue: function getValue(t, e, i) {\n return t.getUint32(e, i) / t.getUint32(e + 4, i);\n },\n size: 8\n },\n 9: {\n getValue: function getValue(t, e, i) {\n return t.getInt32(e, i);\n },\n size: 4\n },\n 10: {\n getValue: function getValue(t, e, i) {\n return t.getInt32(e, i) / t.getInt32(e + 4, i);\n },\n size: 8\n }\n }, n.exifTagTypes[7] = n.exifTagTypes[1], n.getExifValue = function (t, e, i, o, a, r) {\n var s,\n h,\n u,\n l,\n p,\n c,\n d = n.exifTagTypes[o];\n if (d && (s = d.size * a, h = s > 4 ? e + t.getUint32(i + 8, r) : i + 8, !(h + s > t.byteLength))) {\n if (1 === a) return d.getValue(t, h, r);\n for (u = [], l = 0; l < a; l += 1) {\n u[l] = d.getValue(t, h + l * d.size, r);\n }\n if (d.ascii) {\n for (p = \"\", l = 0; l < u.length && (c = u[l], \"\\0\" !== c); l += 1) {\n p += c;\n }\n return p;\n }\n return u;\n }\n }, n.parseExifTag = function (t, e, i, o, a) {\n var r = t.getUint16(i, o);\n a.exif[r] = n.getExifValue(t, e, i, t.getUint16(i + 2, o), t.getUint32(i + 4, o), o);\n }, n.parseExifTags = function (t, e, i, n, o) {\n var a, r, s;\n if (!(i + 6 > t.byteLength || (a = t.getUint16(i, n), r = i + 2 + 12 * a, r + 4 > t.byteLength))) {\n for (s = 0; s < a; s += 1) {\n this.parseExifTag(t, e, i + 2 + 12 * s, n, o);\n }\n return t.getUint32(r, n);\n }\n }, n.parseExifData = function (t, e, i, o, a) {\n if (!a.disableExif) {\n var r,\n s,\n h,\n u = e + 10;\n if (1165519206 === t.getUint32(e + 4) && !(u + 8 > t.byteLength) && 0 === t.getUint16(e + 8)) {\n switch (t.getUint16(u)) {\n case 18761:\n r = !0;\n break;\n case 19789:\n r = !1;\n break;\n default:\n return;\n }\n 42 === t.getUint16(u + 2, r) && (s = t.getUint32(u + 4, r), o.exif = new n.ExifMap(), s = n.parseExifTags(t, u, u + s, r, o), s && !a.disableExifThumbnail && (h = {\n exif: {}\n }, s = n.parseExifTags(t, u, u + s, r, h), h.exif[513] && (o.exif.Thumbnail = n.getExifThumbnail(t, u + h.exif[513], h.exif[514]))), o.exif[34665] && !a.disableExifSub && n.parseExifTags(t, u, u + o.exif[34665], r, o), o.exif[34853] && !a.disableExifGps && n.parseExifTags(t, u, u + o.exif[34853], r, o));\n }\n }\n }, n.metaDataParsers.jpeg[65505].push(n.parseExifData);\n var u = function () {\n var t = [],\n i = [],\n n = [],\n o = \"transform\",\n a = window.getComputedStyle(document.documentElement, \"\"),\n r = (Array.prototype.slice.call(a).join(\"\").match(/-(moz|webkit|ms)-/) || \"\" === a.OLink && [\"\", \"o\"])[1];\n \"webkit\" === r && (o = \"webkitTransform\");\n var s = function s(t, i, n) {\n var o = t;\n if (o.length !== e) {\n for (var a = {\n chainers: [],\n then: function then(t) {\n return this.snabbt(t);\n },\n snabbt: function snabbt(t) {\n var e = this.chainers.length;\n return this.chainers.forEach(function (i, n) {\n i.snabbt(h(t, n, e));\n }), a;\n },\n setValue: function setValue(t) {\n return this.chainers.forEach(function (e) {\n e.setValue(t);\n }), a;\n },\n finish: function finish() {\n return this.chainers.forEach(function (t) {\n t.finish();\n }), a;\n },\n rollback: function rollback() {\n return this.chainers.forEach(function (t) {\n t.rollback();\n }), a;\n }\n }, r = 0, s = o.length; r < s; ++r) {\n \"string\" == typeof i ? a.chainers.push(u(o[r], i, h(n, r, s))) : a.chainers.push(u(o[r], h(i, r, s), n));\n }\n return a;\n }\n return \"string\" == typeof i ? u(o, i, h(n, 0, 1)) : u(o, h(i, 0, 1), n);\n },\n h = function h(t, e, i) {\n if (!t) return t;\n var n = $(t);\n J(t.delay) && (n.delay = t.delay(e, i)), J(t.callback) && (n.complete = function () {\n t.callback.call(this, e, i);\n });\n var o = J(t.allDone),\n a = J(t.complete);\n (a || o) && (n.complete = function () {\n a && t.complete.call(this, e, i), o && e == i - 1 && t.allDone();\n }), J(t.valueFeeder) && (n.valueFeeder = function (n, o) {\n return t.valueFeeder(n, o, e, i);\n }), J(t.easing) && (n.easing = function (n) {\n return t.easing(n, e, i);\n });\n var r = [\"position\", \"rotation\", \"skew\", \"rotationPost\", \"scale\", \"width\", \"height\", \"opacity\", \"fromPosition\", \"fromRotation\", \"fromSkew\", \"fromRotationPost\", \"fromScale\", \"fromWidth\", \"fromHeight\", \"fromOpacity\", \"transformOrigin\", \"duration\", \"delay\"];\n return r.forEach(function (o) {\n J(t[o]) && (n[o] = t[o](e, i));\n }), n;\n },\n u = function u(t, e, n) {\n function o(e) {\n if (f.tick(e), f.updateElement(t), !f.isStopped()) return f.completed() ? void (a.loop > 1 && !f.isStopped() ? (a.loop -= 1, f.restart(), k(o)) : (a.complete && a.complete.call(t), _.length && (a = _.pop(), s = y(a, u, !0), u = y(a, $(u)), a = w(s, u, a), f = S(a), i.push([t, f]), f.tick(e), k(o)))) : k(o);\n }\n if (\"attention\" === e) return l(t, n);\n if (\"stop\" === e) return p(t);\n if (\"detach\" === e) return d(t);\n var a = e;\n m();\n var r = v(t),\n s = r;\n s = y(a, s, !0);\n var u = $(r);\n u = y(a, u);\n var c = w(s, u, a),\n f = S(c);\n i.push([t, f]), f.updateElement(t, !0);\n var _ = [],\n g = {\n snabbt: function snabbt(t) {\n return _.unshift(h(t, 0, 1)), g;\n },\n then: function then(t) {\n return this.snabbt(t);\n }\n };\n return k(o), a.manual ? f : g;\n },\n l = function l(t, e) {\n function n(i) {\n a.tick(i), a.updateElement(t), a.completed() ? (e.callback && e.callback(t), e.loop && e.loop > 1 && (e.loop--, a.restart(), k(n))) : k(n);\n }\n var o = y(e, q({}));\n e.movement = o;\n var a = E(e);\n i.push([t, a]), k(n);\n },\n p = function p(t) {\n for (var e = 0, n = i.length; e < n; ++e) {\n var o = i[e],\n a = o[0],\n r = o[1];\n a === t && r.stop();\n }\n },\n c = function c(t, e) {\n for (var i = 0, n = t.length; i < n; ++i) {\n if (t[i][0] === e) return i;\n }\n return -1;\n },\n d = function d(t) {\n var e,\n o,\n a = [],\n r = i.concat(n),\n s = r.length;\n for (o = 0; o < s; ++o) {\n e = r[o][0], (t.contains(e) || t === e) && a.push(e);\n }\n for (s = a.length, o = 0; o < s; ++o) {\n f(a[o]);\n }\n },\n f = function f(t) {\n p(t);\n var e = c(i, t);\n e >= 0 && i.splice(e, 1), e = c(n, t), e >= 0 && n.splice(e, 1);\n },\n _ = function _(t, e) {\n for (var i = 0, n = t.length; i < n; ++i) {\n var o = t[i],\n a = o[0],\n r = o[1];\n if (a === e) {\n var s = r.getCurrentState();\n return r.stop(), s;\n }\n }\n },\n m = function m() {\n n = n.filter(function (t) {\n return g(t[0]).body;\n });\n },\n g = function g(t) {\n for (var e = t; e.parentNode;) {\n e = e.parentNode;\n }\n return e;\n },\n v = function v(t) {\n var e = _(i, t);\n return e ? e : _(n, t);\n },\n y = function y(t, e, i) {\n e || (e = q({\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n rotationPost: [0, 0, 0],\n scale: [1, 1],\n skew: [0, 0]\n }));\n var n = \"position\",\n o = \"rotation\",\n a = \"skew\",\n r = \"rotationPost\",\n s = \"scale\",\n h = \"scalePost\",\n u = \"width\",\n l = \"height\",\n p = \"opacity\";\n return i && (n = \"fromPosition\", o = \"fromRotation\", a = \"fromSkew\", r = \"fromRotationPost\", s = \"fromScale\", h = \"fromScalePost\", u = \"fromWidth\", l = \"fromHeight\", p = \"fromOpacity\"), e.position = G(t[n], e.position), e.rotation = G(t[o], e.rotation), e.rotationPost = G(t[r], e.rotationPost), e.skew = G(t[a], e.skew), e.scale = G(t[s], e.scale), e.scalePost = G(t[h], e.scalePost), e.opacity = t[p], e.width = t[u], e.height = t[l], e;\n },\n w = function w(t, e, i) {\n return i.startState = t, i.endState = e, i;\n },\n b = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (t) {\n return setTimeout(t, 1e3 / 60);\n },\n k = function k(e) {\n 0 === t.length && b(x), t.push(e);\n },\n x = function x(e) {\n for (var o = t.length, a = 0; a < o; ++a) {\n t[a](e);\n }\n t.splice(0, o);\n var r = i.filter(function (t) {\n return t[1].completed();\n });\n n = n.filter(function (t) {\n for (var e = 0, i = r.length; e < i; ++e) {\n if (t[0] === r[e][0]) return !1;\n }\n return !0;\n }), n = n.concat(r), i = i.filter(function (t) {\n return !t[1].completed();\n }), 0 !== t.length && b(x);\n },\n S = function S(t) {\n var i = t.startState,\n n = t.endState,\n o = G(t.duration, 500),\n a = G(t.delay, 0),\n r = t.perspective,\n s = L(G(t.easing, \"linear\"), t),\n h = 0 === o ? n.clone() : i.clone();\n t.transformOrigin;\n h.transformOrigin = t.transformOrigin;\n var u,\n l,\n p = 0,\n c = 0,\n d = !1,\n f = !1,\n _ = t.manual,\n m = 0,\n g = a / o;\n return l = t.valueFeeder ? V(t.valueFeeder, i, n, h) : j(i, n, h), {\n stop: function stop() {\n d = !0;\n },\n isStopped: function isStopped() {\n return d;\n },\n finish: function finish(t) {\n _ = !1;\n var e = o * m;\n p = c - e, u = t, s.resetFrom = m;\n },\n rollback: function rollback(t) {\n _ = !1, l.setReverse();\n var e = o * (1 - m);\n p = c - e, u = t, s.resetFrom = m;\n },\n restart: function restart() {\n p = e, s.resetFrom(0);\n },\n tick: function tick(t) {\n if (!d) {\n if (_) return c = t, void this.updateCurrentTransform();\n if (p || (p = t), t - p > a) {\n f = !0, c = t - a;\n var e = Math.min(Math.max(0, c - p), o);\n s.tick(e / o), this.updateCurrentTransform(), this.completed() && u && u();\n }\n }\n },\n getCurrentState: function getCurrentState() {\n return h;\n },\n setValue: function setValue(t) {\n f = !0, m = Math.min(Math.max(t, 1e-4), 1 + g);\n },\n updateCurrentTransform: function updateCurrentTransform() {\n var t = s.getValue();\n if (_) {\n var e = Math.max(1e-5, m - g);\n s.tick(e), t = s.getValue();\n }\n l.tween(t);\n },\n completed: function completed() {\n return !!d || 0 !== p && s.completed();\n },\n updateElement: function updateElement(t, e) {\n if (f || e) {\n var i = l.asMatrix(),\n n = l.getProperties();\n X(t, i, r), Y(t, n);\n }\n }\n };\n },\n E = function E(t) {\n var i = t.movement;\n t.initialVelocity = .1, t.equilibriumPosition = 0;\n var n = T(t),\n o = !1,\n a = i.position,\n r = i.rotation,\n s = i.rotationPost,\n h = i.scale,\n u = i.skew,\n l = q({\n position: a ? [0, 0, 0] : e,\n rotation: r ? [0, 0, 0] : e,\n rotationPost: s ? [0, 0, 0] : e,\n scale: h ? [0, 0] : e,\n skew: u ? [0, 0] : e\n });\n return {\n stop: function stop() {\n o = !0;\n },\n isStopped: function isStopped(t) {\n return o;\n },\n tick: function tick(t) {\n o || n.equilibrium || (n.tick(), this.updateMovement());\n },\n updateMovement: function updateMovement() {\n var t = n.getValue();\n a && (l.position[0] = i.position[0] * t, l.position[1] = i.position[1] * t, l.position[2] = i.position[2] * t), r && (l.rotation[0] = i.rotation[0] * t, l.rotation[1] = i.rotation[1] * t, l.rotation[2] = i.rotation[2] * t), s && (l.rotationPost[0] = i.rotationPost[0] * t, l.rotationPost[1] = i.rotationPost[1] * t, l.rotationPost[2] = i.rotationPost[2] * t), h && (l.scale[0] = 1 + i.scale[0] * t, l.scale[1] = 1 + i.scale[1] * t), u && (l.skew[0] = i.skew[0] * t, l.skew[1] = i.skew[1] * t);\n },\n updateElement: function updateElement(t) {\n X(t, l.asMatrix()), Y(t, l.getProperties());\n },\n getCurrentState: function getCurrentState() {\n return l;\n },\n completed: function completed() {\n return n.equilibrium || o;\n },\n restart: function restart() {\n n = T(t);\n }\n };\n },\n C = function C(t) {\n return t;\n },\n P = function P(t) {\n return (Math.cos(t * Math.PI + Math.PI) + 1) / 2;\n },\n M = function M(t) {\n return t * t;\n },\n R = function R(t) {\n return -Math.pow(t - 1, 2) + 1;\n },\n T = function T(t) {\n var e = G(t.startPosition, 0),\n i = G(t.equilibriumPosition, 1),\n n = G(t.initialVelocity, 0),\n o = G(t.springConstant, .8),\n a = G(t.springDeceleration, .9),\n r = G(t.springMass, 10),\n s = !1;\n return {\n tick: function tick(t) {\n if (0 !== t && !s) {\n var h = -(e - i) * o,\n u = h / r;\n n += u, e += n, n *= a, Math.abs(e - i) < .001 && Math.abs(n) < .001 && (s = !0);\n }\n },\n resetFrom: function resetFrom(t) {\n e = t, n = 0;\n },\n getValue: function getValue() {\n return s ? i : e;\n },\n completed: function completed() {\n return s;\n }\n };\n },\n I = {\n linear: C,\n ease: P,\n easeIn: M,\n easeOut: R\n },\n L = function L(t, e) {\n if (\"spring\" == t) return T(e);\n var i = t;\n J(t) || (i = I[t]);\n var n,\n o = i,\n a = 0;\n return {\n tick: function tick(t) {\n a = o(t), n = t;\n },\n resetFrom: function resetFrom(t) {\n n = 0;\n },\n getValue: function getValue() {\n return a;\n },\n completed: function completed() {\n return n >= 1 && n;\n }\n };\n },\n O = function O(t, e, i, n) {\n t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = e, t[13] = i, t[14] = n, t[15] = 1;\n },\n z = function z(t, e) {\n t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = Math.cos(e), t[6] = -Math.sin(e), t[7] = 0, t[8] = 0, t[9] = Math.sin(e), t[10] = Math.cos(e), t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n D = function D(t, e) {\n t[0] = Math.cos(e), t[1] = 0, t[2] = Math.sin(e), t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = -Math.sin(e), t[9] = 0, t[10] = Math.cos(e), t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n A = function A(t, e) {\n t[0] = Math.cos(e), t[1] = -Math.sin(e), t[2] = 0, t[3] = 0, t[4] = Math.sin(e), t[5] = Math.cos(e), t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n U = function U(t, e, i) {\n t[0] = 1, t[1] = Math.tan(e), t[2] = 0, t[3] = 0, t[4] = Math.tan(i), t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n H = function H(t, e, i) {\n t[0] = e, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = i, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n N = function N(t) {\n t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1;\n },\n B = function B(t, e) {\n e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4], e[5] = t[5], e[6] = t[6], e[7] = t[7], e[8] = t[8], e[9] = t[9], e[10] = t[10], e[11] = t[11], e[12] = t[12], e[13] = t[13], e[14] = t[14], e[15] = t[15];\n },\n F = function F() {\n var t = new Float32Array(16),\n e = new Float32Array(16),\n i = new Float32Array(16);\n return N(t), {\n data: t,\n asCSS: function asCSS() {\n for (var e = \"matrix3d(\", i = 0; i < 15; ++i) {\n e += Math.abs(t[i]) < 1e-4 ? \"0,\" : t[i].toFixed(10) + \",\";\n }\n return e += Math.abs(t[15]) < 1e-4 ? \"0)\" : t[15].toFixed(10) + \")\";\n },\n clear: function clear() {\n N(t);\n },\n translate: function translate(n, o, a) {\n return B(t, e), O(i, n, o, a), W(e, i, t), this;\n },\n rotateX: function rotateX(n) {\n return B(t, e), z(i, n), W(e, i, t), this;\n },\n rotateY: function rotateY(n) {\n return B(t, e), D(i, n), W(e, i, t), this;\n },\n rotateZ: function rotateZ(n) {\n return B(t, e), A(i, n), W(e, i, t), this;\n },\n scale: function scale(n, o) {\n return B(t, e), H(i, n, o), W(e, i, t), this;\n },\n skew: function skew(n, o) {\n return B(t, e), U(i, n, o), W(e, i, t), this;\n }\n };\n },\n W = function W(t, e, i) {\n return i[0] = t[0] * e[0] + t[1] * e[4] + t[2] * e[8] + t[3] * e[12], i[1] = t[0] * e[1] + t[1] * e[5] + t[2] * e[9] + t[3] * e[13], i[2] = t[0] * e[2] + t[1] * e[6] + t[2] * e[10] + t[3] * e[14], i[3] = t[0] * e[3] + t[1] * e[7] + t[2] * e[11] + t[3] * e[15], i[4] = t[4] * e[0] + t[5] * e[4] + t[6] * e[8] + t[7] * e[12], i[5] = t[4] * e[1] + t[5] * e[5] + t[6] * e[9] + t[7] * e[13], i[6] = t[4] * e[2] + t[5] * e[6] + t[6] * e[10] + t[7] * e[14], i[7] = t[4] * e[3] + t[5] * e[7] + t[6] * e[11] + t[7] * e[15], i[8] = t[8] * e[0] + t[9] * e[4] + t[10] * e[8] + t[11] * e[12], i[9] = t[8] * e[1] + t[9] * e[5] + t[10] * e[9] + t[11] * e[13], i[10] = t[8] * e[2] + t[9] * e[6] + t[10] * e[10] + t[11] * e[14], i[11] = t[8] * e[3] + t[9] * e[7] + t[10] * e[11] + t[11] * e[15], i[12] = t[12] * e[0] + t[13] * e[4] + t[14] * e[8] + t[15] * e[12], i[13] = t[12] * e[1] + t[13] * e[5] + t[14] * e[9] + t[15] * e[13], i[14] = t[12] * e[2] + t[13] * e[6] + t[14] * e[10] + t[15] * e[14], i[15] = t[12] * e[3] + t[13] * e[7] + t[14] * e[11] + t[15] * e[15], i;\n },\n q = function q(t) {\n var i = F(),\n n = {\n opacity: e,\n width: e,\n height: e\n };\n return {\n position: t.position,\n rotation: t.rotation,\n rotationPost: t.rotationPost,\n skew: t.skew,\n scale: t.scale,\n scalePost: t.scalePost,\n opacity: t.opacity,\n width: t.width,\n height: t.height,\n clone: function clone() {\n return q({\n position: this.position ? this.position.slice(0) : e,\n rotation: this.rotation ? this.rotation.slice(0) : e,\n rotationPost: this.rotationPost ? this.rotationPost.slice(0) : e,\n skew: this.skew ? this.skew.slice(0) : e,\n scale: this.scale ? this.scale.slice(0) : e,\n scalePost: this.scalePost ? this.scalePost.slice(0) : e,\n height: this.height,\n width: this.width,\n opacity: this.opacity\n });\n },\n asMatrix: function asMatrix() {\n var t = i;\n return t.clear(), this.transformOrigin && t.translate(-this.transformOrigin[0], -this.transformOrigin[1], -this.transformOrigin[2]), this.scale && t.scale(this.scale[0], this.scale[1]), this.skew && t.skew(this.skew[0], this.skew[1]), this.rotation && (t.rotateX(this.rotation[0]), t.rotateY(this.rotation[1]), t.rotateZ(this.rotation[2])), this.position && t.translate(this.position[0], this.position[1], this.position[2]), this.rotationPost && (t.rotateX(this.rotationPost[0]), t.rotateY(this.rotationPost[1]), t.rotateZ(this.rotationPost[2])), this.scalePost && t.scale(this.scalePost[0], this.scalePost[1]), this.transformOrigin && t.translate(this.transformOrigin[0], this.transformOrigin[1], this.transformOrigin[2]), t;\n },\n getProperties: function getProperties() {\n return n.opacity = this.opacity, n.width = this.width + \"px\", n.height = this.height + \"px\", n;\n }\n };\n },\n j = function j(t, i, n) {\n var o = t,\n a = i,\n r = n,\n s = a.position !== e,\n h = a.rotation !== e,\n u = a.rotationPost !== e,\n l = a.scale !== e,\n p = a.skew !== e,\n c = a.width !== e,\n d = a.height !== e,\n f = a.opacity !== e;\n return {\n tween: function tween(t) {\n if (s) {\n var e = a.position[0] - o.position[0],\n i = a.position[1] - o.position[1],\n n = a.position[2] - o.position[2];\n r.position[0] = o.position[0] + t * e, r.position[1] = o.position[1] + t * i, r.position[2] = o.position[2] + t * n;\n }\n if (h) {\n var _ = a.rotation[0] - o.rotation[0],\n m = a.rotation[1] - o.rotation[1],\n g = a.rotation[2] - o.rotation[2];\n r.rotation[0] = o.rotation[0] + t * _, r.rotation[1] = o.rotation[1] + t * m, r.rotation[2] = o.rotation[2] + t * g;\n }\n if (u) {\n var v = a.rotationPost[0] - o.rotationPost[0],\n y = a.rotationPost[1] - o.rotationPost[1],\n w = a.rotationPost[2] - o.rotationPost[2];\n r.rotationPost[0] = o.rotationPost[0] + t * v, r.rotationPost[1] = o.rotationPost[1] + t * y, r.rotationPost[2] = o.rotationPost[2] + t * w;\n }\n if (p) {\n var b = a.scale[0] - o.scale[0],\n k = a.scale[1] - o.scale[1];\n r.scale[0] = o.scale[0] + t * b, r.scale[1] = o.scale[1] + t * k;\n }\n if (l) {\n var x = a.skew[0] - o.skew[0],\n S = a.skew[1] - o.skew[1];\n r.skew[0] = o.skew[0] + t * x, r.skew[1] = o.skew[1] + t * S;\n }\n if (c) {\n var E = a.width - o.width;\n r.width = o.width + t * E;\n }\n if (d) {\n var C = a.height - o.height;\n r.height = o.height + t * C;\n }\n if (f) {\n var P = a.opacity - o.opacity;\n r.opacity = o.opacity + t * P;\n }\n },\n asMatrix: function asMatrix() {\n return r.asMatrix();\n },\n getProperties: function getProperties() {\n return r.getProperties();\n },\n setReverse: function setReverse() {\n var t = o;\n o = a, a = t;\n }\n };\n },\n V = function V(t, i, n, o) {\n var a = t(0, F()),\n r = i,\n s = n,\n h = o,\n u = !1;\n return {\n tween: function tween(i) {\n u && (i = 1 - i), a.clear(), a = t(i, a);\n var n = s.width - r.width,\n o = s.height - r.height,\n l = s.opacity - r.opacity;\n s.width !== e && (h.width = r.width + i * n), s.height !== e && (h.height = r.height + i * o), s.opacity !== e && (h.opacity = r.opacity + i * l);\n },\n asMatrix: function asMatrix() {\n return a;\n },\n getProperties: function getProperties() {\n return h.getProperties();\n },\n setReverse: function setReverse() {\n u = !0;\n }\n };\n },\n G = function G(t, e) {\n return \"undefined\" == typeof t ? e : t;\n },\n X = function X(t, e, i) {\n var n = \"\";\n i && (n = \"perspective(\" + i + \"px) \");\n var a = e.asCSS();\n t.style[o] = n + a;\n },\n Y = function Y(t, e) {\n for (var i in e) {\n t.style[i] = e[i];\n }\n },\n J = function J(t) {\n return \"function\" == typeof t;\n },\n $ = function $(t) {\n if (!t) return t;\n var e = {};\n for (var i in t) {\n e[i] = t[i];\n }\n return e;\n };\n return s.createMatrix = F, s.setElementTransform = X, s;\n }(),\n l = function () {\n function t(t, e, i, n, o) {\n if (\"string\" == typeof t) t = document.getElementById(t);else if (!t instanceof HTMLCanvasElement) return;\n var a,\n r = t.getContext(\"2d\");\n try {\n try {\n a = r.getImageData(e, i, n, o);\n } catch (s) {\n throw new Error(\"unable to access local image data: \" + s);\n }\n } catch (s) {\n throw new Error(\"unable to access image data: \" + s);\n }\n return a;\n }\n function e(e, n, o, a, r, s) {\n if (!(isNaN(s) || s < 1)) {\n s |= 0;\n var h = t(e, n, o, a, r);\n h = i(h, n, o, a, r, s), e.getContext(\"2d\").putImageData(h, n, o);\n }\n }\n function i(t, e, i, r, s, h) {\n var u,\n l,\n p,\n c,\n d,\n f,\n _,\n m,\n g,\n v,\n y,\n w,\n b,\n k,\n x,\n S,\n E,\n C,\n P,\n M,\n R,\n T,\n I,\n L,\n O = t.data,\n z = h + h + 1,\n D = r - 1,\n A = s - 1,\n U = h + 1,\n H = U * (U + 1) / 2,\n N = new n(),\n B = N;\n for (p = 1; p < z; p++) {\n if (B = B.next = new n(), p == U) var F = B;\n }\n B.next = N;\n var W = null,\n q = null;\n _ = f = 0;\n var j = o[h],\n V = a[h];\n for (l = 0; l < s; l++) {\n for (S = E = C = P = m = g = v = y = 0, w = U * (M = O[f]), b = U * (R = O[f + 1]), k = U * (T = O[f + 2]), x = U * (I = O[f + 3]), m += H * M, g += H * R, v += H * T, y += H * I, B = N, p = 0; p < U; p++) {\n B.r = M, B.g = R, B.b = T, B.a = I, B = B.next;\n }\n for (p = 1; p < U; p++) {\n c = f + ((D < p ? D : p) << 2), m += (B.r = M = O[c]) * (L = U - p), g += (B.g = R = O[c + 1]) * L, v += (B.b = T = O[c + 2]) * L, y += (B.a = I = O[c + 3]) * L, S += M, E += R, C += T, P += I, B = B.next;\n }\n for (W = N, q = F, u = 0; u < r; u++) {\n O[f + 3] = I = y * j >> V, 0 != I ? (I = 255 / I, O[f] = (m * j >> V) * I, O[f + 1] = (g * j >> V) * I, O[f + 2] = (v * j >> V) * I) : O[f] = O[f + 1] = O[f + 2] = 0, m -= w, g -= b, v -= k, y -= x, w -= W.r, b -= W.g, k -= W.b, x -= W.a, c = _ + ((c = u + h + 1) < D ? c : D) << 2, S += W.r = O[c], E += W.g = O[c + 1], C += W.b = O[c + 2], P += W.a = O[c + 3], m += S, g += E, v += C, y += P, W = W.next, w += M = q.r, b += R = q.g, k += T = q.b, x += I = q.a, S -= M, E -= R, C -= T, P -= I, q = q.next, f += 4;\n }\n _ += r;\n }\n for (u = 0; u < r; u++) {\n for (E = C = P = S = g = v = y = m = 0, f = u << 2, w = U * (M = O[f]), b = U * (R = O[f + 1]), k = U * (T = O[f + 2]), x = U * (I = O[f + 3]), m += H * M, g += H * R, v += H * T, y += H * I, B = N, p = 0; p < U; p++) {\n B.r = M, B.g = R, B.b = T, B.a = I, B = B.next;\n }\n for (d = r, p = 1; p <= h; p++) {\n f = d + u << 2, m += (B.r = M = O[f]) * (L = U - p), g += (B.g = R = O[f + 1]) * L, v += (B.b = T = O[f + 2]) * L, y += (B.a = I = O[f + 3]) * L, S += M, E += R, C += T, P += I, B = B.next, p < A && (d += r);\n }\n for (f = u, W = N, q = F, l = 0; l < s; l++) {\n c = f << 2, O[c + 3] = I = y * j >> V, I > 0 ? (I = 255 / I, O[c] = (m * j >> V) * I, O[c + 1] = (g * j >> V) * I, O[c + 2] = (v * j >> V) * I) : O[c] = O[c + 1] = O[c + 2] = 0, m -= w, g -= b, v -= k, y -= x, w -= W.r, b -= W.g, k -= W.b, x -= W.a, c = u + ((c = l + U) < A ? c : A) * r << 2, m += S += W.r = O[c], g += E += W.g = O[c + 1], v += C += W.b = O[c + 2], y += P += W.a = O[c + 3], W = W.next, w += M = q.r, b += R = q.g, k += T = q.b, x += I = q.a, S -= M, E -= R, C -= T, P -= I, q = q.next, f += r;\n }\n }\n return t;\n }\n function n() {\n this.r = 0, this.g = 0, this.b = 0, this.a = 0, this.next = null;\n }\n var o = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259],\n a = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n return e;\n }();\n HTMLCanvasElement.prototype.toBlob || Object.defineProperty(HTMLCanvasElement.prototype, \"toBlob\", {\n value: function value(t, e, i) {\n for (var n = atob(this.toDataURL(e, i).split(\",\")[1]), o = n.length, a = new Uint8Array(o), r = 0; r < o; r++) {\n a[r] = n.charCodeAt(r);\n }\n t(new Blob([a], {\n type: e || \"image/png\"\n }));\n }\n });\n var p = function () {\n function t(t, e) {\n for (var i = 0; i < e.length; i++) {\n var n = e[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n }\n return function (e, i, n) {\n return i && t(e.prototype, i), n && t(e, n), e;\n };\n }(),\n c = \"function\" == typeof Symbol && \"symbol\" == _typeof(Symbol.iterator) ? function (t) {\n return _typeof(t);\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : _typeof(t);\n },\n d = function d(t) {\n if (\"undefined\" == typeof t.dataset) {\n var e,\n i,\n n = {},\n o = t.attributes;\n for (e in o) {\n o.hasOwnProperty(e) && o[e].name && /^data-[a-z_\\-\\d]*$/i.test(o[e].name) && (i = f(o[e].name.substr(5)), n[i] = o[e].value);\n }\n return n;\n }\n return t.dataset;\n },\n f = function f(t) {\n return t.replace(/\\-./g, function (t) {\n return t.charAt(1).toUpperCase();\n });\n },\n _ = function _(t) {\n for (var e = [], i = Array.prototype.slice.call(t.attributes), n = i.length, o = 0; o < n; o++) {\n e.push({\n name: i[o].name,\n value: i[o].value\n });\n }\n return e;\n },\n m = function m(t) {\n return {\n x: \"undefined\" == typeof t.offsetX ? t.layerX : t.offsetX,\n y: \"undefined\" == typeof t.offsetY ? t.layerY : t.offsetY\n };\n },\n g = function g(t, e) {\n var i,\n n = {},\n o = e || {};\n for (i in t) {\n t.hasOwnProperty(i) && (n[i] = \"undefined\" == typeof o[i] ? t[i] : o[i]);\n }\n return n;\n },\n v = {\n ESC: 27,\n RETURN: 13\n },\n y = {\n DOWN: [\"touchstart\", \"pointerdown\", \"mousedown\"],\n MOVE: [\"touchmove\", \"pointermove\", \"mousemove\"],\n UP: [\"touchend\", \"touchcancel\", \"pointerup\", \"mouseup\"]\n },\n w = {\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n jpe: \"image/jpeg\",\n png: \"image/png\",\n gif: \"image/gif\",\n bmp: \"image/bmp\"\n },\n b = /(\\.png|\\.bmp|\\.gif|\\.jpg|\\.jpe|\\.jpg|\\.jpeg)$/,\n k = function k(t, e) {\n var i = document.createElement(t);\n return e && (i.className = e), i;\n },\n x = function x(t, e, i) {\n e.forEach(function (e) {\n t.addEventListener(e, i, !1);\n });\n },\n S = function S(t, e, i) {\n e.forEach(function (e) {\n t.removeEventListener(e, i, !1);\n });\n },\n E = function E(t) {\n var e = t.changedTouches ? t.changedTouches[0] : t;\n if (e) return {\n x: e.pageX,\n y: e.pageY\n };\n },\n C = function C(t, e) {\n var i = .5,\n n = .5,\n o = Math.PI / 180 * e,\n a = Math.cos(o),\n r = Math.sin(o),\n s = t.x,\n h = t.y,\n u = t.x + t.width,\n l = t.y + t.height,\n p = a * (s - i) + r * (h - n) + i,\n c = a * (h - n) - r * (s - i) + n,\n d = a * (u - i) + r * (l - n) + i,\n f = a * (l - n) - r * (u - i) + n;\n p <= d ? (t.x = p, t.width = d - p) : (t.x = d, t.width = p - d), c <= f ? (t.y = c, t.height = f - c) : (t.y = f, t.height = c - f);\n },\n P = function P(t) {\n var e = E(t);\n return e.x -= window.pageXOffset || document.documentElement.scrollLeft, e.y -= window.pageYOffset || document.documentElement.scrollTop, e;\n },\n M = function M(t) {\n return t.charAt(0).toLowerCase() + t.slice(1);\n },\n R = function R(t) {\n return t.charAt(0).toUpperCase() + t.slice(1);\n },\n T = function T(t) {\n return t[t.length - 1];\n },\n I = function I(t, e, i) {\n return Math.max(e, Math.min(i, t));\n },\n L = function L(t, e) {\n if (!e) return !1;\n for (var i = 0; i < e.length; i++) {\n if (e[i] === t) return !0;\n }\n return !1;\n },\n O = function O(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : \"POST\",\n n = arguments[2],\n o = arguments[3],\n a = arguments[4],\n r = arguments[5],\n s = arguments[6],\n h = new XMLHttpRequest();\n a && h.upload.addEventListener(\"progress\", function (t) {\n a(t.loaded, t.total);\n }), h.open(i, t, !0), o && o(h, n), h.onreadystatechange = function () {\n if (4 === h.readyState && h.status >= 200 && h.status < 300) {\n var t = h.responseText;\n if (!t.length) return void r();\n if (t.indexOf(\"Content-Length\") !== -1) return void s(\"file-too-big\");\n var e = void 0;\n try {\n e = JSON.parse(h.responseText);\n } catch (i) {}\n if (\"object\" === (\"undefined\" == typeof e ? \"undefined\" : c(e)) && \"failure\" === e.status) return void s(e.message);\n r(e || t);\n } else if (4 === h.readyState) {\n var n = void 0;\n try {\n n = JSON.parse(h.responseText);\n } catch (i) {}\n if (\"object\" === (\"undefined\" == typeof n ? \"undefined\" : c(n)) && \"failure\" === n.status) return void s(n.message);\n s(\"fail\");\n }\n }, h.send(n);\n },\n z = function z(t) {\n t && (t.style.webkitTransform = \"\", t.style.transform = \"\");\n },\n D = function D(t) {\n return t / 1e6;\n },\n A = function A() {\n var t = [],\n e = void 0,\n i = void 0;\n for (e in w) {\n w.hasOwnProperty(e) && (i = w[e], t.indexOf(i) == -1 && t.push(i));\n }\n return t;\n },\n U = function U(t) {\n return \"image/jpeg\" === t;\n },\n H = function H(t) {\n var e = void 0;\n for (e in w) {\n if (w.hasOwnProperty(e) && w[e] === t) return e;\n }\n return t;\n },\n N = function N(t) {\n var e = void 0;\n for (e in w) {\n if (w.hasOwnProperty(e) && t.indexOf(w[e]) !== -1) return w[e];\n }\n return null;\n },\n B = function B(t) {\n return t.split(\"/\").pop().split(\"?\").shift();\n },\n F = function F(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : \"\";\n return (i + t).slice(-i.length);\n },\n W = function W(t) {\n return t.getFullYear() + \"-\" + F(t.getMonth() + 1, \"00\") + \"-\" + F(t.getDate(), \"00\") + \"_\" + F(t.getHours(), \"00\") + \"-\" + F(t.getMinutes(), \"00\") + \"-\" + F(t.getSeconds(), \"00\");\n },\n q = function q(t) {\n return \"undefined\" == typeof t.name ? W(new Date()) + \".\" + H(j(t)) : t.name;\n },\n j = function j(t) {\n return t.type || \"image/jpeg\";\n },\n V = function V(t) {\n if (\"string\" != typeof t) return W(new Date());\n var e = B(t);\n return e.split(\".\").shift();\n },\n G = function G(t, e) {\n try {\n return new File([t], e, {\n type: t.type,\n lastModified: Date.now()\n });\n } catch (i) {\n return t.lastModified = new Date(), t.name = e, t;\n }\n },\n X = function X(t) {\n return /^data:image/.test(t);\n },\n Y = function Y(t, e, i, n, o, a) {\n t = \"\" + t + (t.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"url=\" + n;\n var r = new XMLHttpRequest();\n r.open(\"GET\", t, !0), e(r), r.responseType = \"json\", r.onload = function () {\n return \"failure\" === this.response.status ? void o(this.response.message) : void J(this.response.body, i, a);\n }, r.send();\n },\n J = function J(t, e, i, n) {\n var o = new XMLHttpRequest();\n o.open(\"GET\", t, !0), e(o), o.responseType = \"blob\", o.onload = function (e) {\n if (o.status >= 200 && o.status < 300) {\n var a = B(t),\n r = N(this.response.type);\n b.test(a) || (a += \".\" + H(r));\n var s = G(this.response, a);\n i(gt(s, r));\n } else n(o.status + \": \" + o.statusText);\n }, o.onerror = function () {\n n();\n }, o.send();\n },\n $ = function $(t) {\n var e = t.split(\",\")[1],\n i = e.replace(/\\s/g, \"\");\n return atob(i);\n },\n Z = function Z(t, e) {\n for (var i = $(t), n = new ArrayBuffer(i.length), o = new Uint8Array(n), a = 0; a < i.length; a++) {\n o[a] = i.charCodeAt(a);\n }\n var r = wt(t);\n return \"undefined\" == typeof e && (e = W(new Date()) + \".\" + H(r)), G(K(n, r), e);\n },\n K = function K(t, e) {\n var i = window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n if (i) {\n var n = new i();\n return n.append(t), n.getBlob(e);\n }\n return new Blob([t], {\n type: e\n });\n },\n Q = function Q(t, e, i) {\n var o = \"string\" != typeof t || 0 !== t.indexOf(\"data:image\");\n n.parseMetaData(t, function (a) {\n var r = {\n canvas: !0,\n crossOrigin: o\n };\n e && (r.maxWidth = e.width, r.maxHeight = e.height), a.exif && (r.orientation = a.exif.get(\"Orientation\")), n(t, function (t) {\n return \"error\" === t.type ? void i() : void i(t, a);\n }, r);\n });\n },\n tt = function tt(t, e, i) {\n var n,\n o,\n a,\n r,\n s = e / t;\n return s < i ? (r = e, a = r / i, n = .5 * (t - a), o = 0) : (a = t, r = a * i, n = 0, o = .5 * (e - r)), {\n x: n,\n y: o,\n height: r,\n width: a\n };\n },\n et = function et(t) {\n var n = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {},\n o = arguments[2],\n a = k(\"canvas\"),\n r = n.rotation,\n s = n.crop,\n h = n.size,\n u = n.filters,\n l = n.minSize;\n if (s) {\n var p = r % 180 !== 0,\n c = {\n width: p ? t.height : t.width,\n height: p ? t.width : t.height\n };\n s.x < 0 && (s.x = 0), s.y < 0 && (s.y = 0), s.width > c.width && (s.width = c.width), s.height > c.height && (s.height = c.height), s.y + s.height > c.height && (s.y = Math.max(0, c.height - s.height)), s.x + s.width > c.width && (s.x = Math.max(0, c.width - s.width));\n var d = s.x / c.width,\n f = s.y / c.height,\n _ = s.width / c.width,\n m = s.height / c.height;\n a.width = s.width, a.height = s.height;\n var g = a.getContext(\"2d\");\n 90 === r ? (g.translate(.5 * a.width, .5 * a.height), g.rotate(-90 * Math.PI / 180), g.drawImage(t, (1 - f) * t.width - t.width * m, s.x, s.height, s.width, .5 * -a.height, .5 * -a.width, a.height, a.width)) : 180 === r ? (g.translate(.5 * a.width, .5 * a.height), g.rotate(-180 * Math.PI / 180), g.drawImage(t, (1 - (d + _)) * c.width, (1 - (f + m)) * c.height, _ * c.width, m * c.height, .5 * -a.width, .5 * -a.height, a.width, a.height)) : 270 === r ? (g.translate(.5 * a.width, .5 * a.height), g.rotate(-270 * Math.PI / 180), g.drawImage(t, s.y, (1 - d) * t.height - t.height * _, s.height, s.width, .5 * -a.height, .5 * -a.width, a.height, a.width)) : g.drawImage(t, s.x, s.y, s.width, s.height, 0, 0, a.width, a.height);\n }\n if (h) {\n var v = h.width / a.width,\n y = h.height / a.height,\n w = Math.min(v, y);\n i(a, w, h, l), u.sharpen > 0 && nt(a, at(u.sharpen));\n }\n o(a);\n },\n it = function it(t) {\n var e = t.getContext(\"2d\");\n return e.getImageData(0, 0, t.width, t.height);\n },\n nt = function nt(t, e) {\n var i = t.getContext(\"2d\");\n i.putImageData(e(it(t), t.width, t.height), 0, 0);\n },\n ot = function ot(t, e, i) {\n var n = document.createElement(\"canvas\");\n n.width = t, n.height = e;\n var o = n.getContext(\"2d\"),\n a = o.createImageData(n.width, n.height);\n return i && a.set(i.data), a;\n },\n at = function at(t) {\n return function (e, i, n) {\n for (var o = [0, -1, 0, -1, 5, -1, 0, -1, 0], a = Math.round(Math.sqrt(o.length)), r = .5 * a | 0, s = ot(i, n), h = s.data, u = e.data, l = n, p = void 0; l--;) {\n for (p = i; p--;) {\n for (var c = l, d = p, f = 4 * (l * i + p), _ = 0, m = 0, g = 0, v = 0, y = 0; y < a; y++) {\n for (var w = 0; w < a; w++) {\n var b = c + y - r,\n k = d + w - r;\n if (b >= 0 && b < n && k >= 0 && k < i) {\n var x = 4 * (b * i + k),\n S = o[y * a + w];\n _ += u[x] * S, m += u[x + 1] * S, g += u[x + 2] * S, v += u[x + 3] * S;\n }\n }\n }\n h[f] = _ * t + u[f] * (1 - t), h[f + 1] = m * t + u[f + 1] * (1 - t), h[f + 2] = g * t + u[f + 2] * (1 - t), h[f + 3] = u[f + 3];\n }\n }\n return s;\n };\n },\n rt = function rt(t, e) {\n var i = Math.abs(t.width - e.width),\n n = Math.abs(t.height - e.height);\n return Math.max(i, n);\n },\n st = function st(t) {\n return ht(t, 1);\n },\n ht = function ht(t, e) {\n if (!t) return null;\n var n = document.createElement(\"canvas\"),\n o = n.getContext(\"2d\");\n return n.width = t.width, n.height = t.height, o.drawImage(t, 0, 0), e > 0 && 1 !== e && i(n, e, {\n width: Math.round(t.width * e),\n height: Math.round(t.height * e)\n }, {\n width: 0,\n height: 0\n }), n;\n },\n ut = function ut(t) {\n return t.width && t.height;\n },\n lt = function lt(t, e) {\n var i = e.getContext(\"2d\");\n ut(e) ? i.drawImage(t, 0, 0, e.width, e.height) : (e.width = t.width, e.height = t.height, i.drawImage(t, 0, 0));\n },\n pt = function pt(t) {\n l(t, 0, 0, t.width, t.height, 3);\n },\n ct = function ct(t, e) {\n return parseInt(t.width, 10) >= e.width && parseInt(t.height, 10) >= e.height;\n },\n dt = function dt(t, e, i) {\n return {\n x: t.x * e,\n y: t.y * i,\n width: t.width * e,\n height: t.height * i\n };\n },\n ft = function ft(t, e, i) {\n return {\n x: t.x / e,\n y: t.y / i,\n width: t.width / e,\n height: t.height / i\n };\n },\n _t = function _t(t) {\n if (t && \"\" !== t.value) {\n try {\n t.value = \"\";\n } catch (e) {}\n if (t.value) {\n var i = document.createElement(\"form\"),\n n = t.parentNode,\n o = t.nextSibling;\n i.appendChild(t), i.reset(), o ? n.insertBefore(t, o) : n.appendChild(t);\n }\n }\n },\n mt = function mt(t) {\n return \"object\" === (\"undefined\" == typeof value ? \"undefined\" : c(value)) && null !== value ? JSON.parse(JSON.stringify(t)) : t;\n },\n gt = function gt(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : null;\n if (!t) return null;\n var n = t.slice(0, t.size, i || t.type);\n return n.name = t.name, n.lastModified = new Date(t.lastModified), n;\n },\n vt = function vt(t) {\n var e = mt(t);\n return e.input.file = gt(t.input.file), e.output.image = st(t.output.image), e;\n },\n yt = function yt(t, i, n) {\n return t && i ? t.toDataURL(i, U(i) && \"number\" == typeof n ? n / 100 : e) : null;\n },\n wt = function wt(t) {\n if (!t) return null;\n var e = t.substr(0, 16).match(/^.+;/);\n return e.length ? e[0].substring(5, e[0].length - 1) : null;\n },\n bt = function bt(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : [],\n n = arguments[2],\n o = arguments[3],\n a = arguments[4],\n r = {\n server: mt(t.server),\n meta: mt(t.meta),\n input: {\n name: t.input.name,\n type: t.input.type,\n size: t.input.size,\n width: t.input.width,\n height: t.input.height,\n field: t.input.field\n }\n };\n return L(\"input\", i) && !a && (r.input.image = yt(t.input.image, t.input.type)), L(\"output\", i) && (r.output = {\n name: o ? V(t.input.name) + \".\" + o : t.input.name,\n type: w[o] || t.input.type,\n width: t.output.width,\n height: t.output.height\n }, r.output.image = yt(t.output.image, r.output.type, n), r.output.type = wt(r.output.image), \"image/png\" === r.output.type && (r.output.name = V(r.input.name) + \".png\")), L(\"actions\", i) && (r.actions = mt(t.actions)), r;\n },\n kt = function kt(t, i, n) {\n var o = t.output.image,\n a = n ? V(t.input.name) + \".\" + n : t.input.name,\n r = w[n] || t.input.type;\n \"image/png\" === r && (a = V(t.input.name) + \".png\"), o.toBlob(function (t) {\n if (\"msSaveBlob\" in window.navigator) return void window.navigator.msSaveBlob(t, a);\n var e = (window.URL || window.webkitURL).createObjectURL(t),\n i = k(\"a\");\n i.style.display = \"none\", i.download = a, i.href = e, document.body.appendChild(i), i.click(), setTimeout(function () {\n document.body.removeChild(i), (window.URL || window.webkitURL).revokeObjectURL(e);\n }, 0);\n }, r, \"number\" == typeof i ? i / 100 : e);\n },\n xt = function xt(t, e, i) {\n var n = i.querySelector(t);\n n && (n.style.display = e ? \"\" : \"none\");\n },\n St = function St(t) {\n return Array.prototype.slice.call(t);\n },\n Et = function Et(t) {\n t.parentNode.removeChild(t);\n },\n Ct = function Ct(t) {\n var e = k(\"div\");\n return t.parentNode && (t.nextSibling ? t.parentNode.insertBefore(e, t.nextSibling) : t.parentNode.appendChild(e)), e.appendChild(t), e;\n },\n Pt = function Pt(t, e, i, n) {\n var o = (n - 90) * Math.PI / 180;\n return {\n x: t + i * Math.cos(o),\n y: e + i * Math.sin(o)\n };\n },\n Mt = function Mt(t, e, i, n, o) {\n var a = Pt(t, e, i, o),\n r = Pt(t, e, i, n),\n s = o - n <= 180 ? \"0\" : \"1\",\n h = [\"M\", a.x, a.y, \"A\", i, i, 0, s, 0, r.x, r.y].join(\" \");\n return h;\n },\n Rt = function Rt(t, e, i, n) {\n return Mt(t, e, i, 0, 360 * n);\n },\n Tt = function () {\n var i = {\n n: function n(t, e, i, _n) {\n var o, a, r, s, h, u, l, p;\n return r = t.y + t.height, o = I(e.y, 0, r), r - o < i.min.height && (o = r - i.min.height), h = _n ? (r - o) / _n : t.width, h < i.min.width && (h = i.min.width, o = r - h * _n), l = .5 * (h - t.width), s = t.x - l, a = t.x + t.width + l, (s < 0 || Math.round(a) > Math.round(i.width)) && (p = Math.min(t.x, i.width - (t.x + t.width)), s = t.x - p, a = t.x + t.width + p, h = a - s, u = h * _n, o = r - u), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n s: function s(t, e, i, n) {\n var o, a, r, s, h, u, l, p;\n return o = t.y, r = I(e.y, o, i.height), r - o < i.min.height && (r = o + i.min.height), h = n ? (r - o) / n : t.width, h < i.min.width && (h = i.min.width, r = o + h * n), l = .5 * (h - t.width), s = t.x - l, a = t.x + t.width + l, (s < 0 || Math.round(a) > Math.round(i.width)) && (p = Math.min(t.x, i.width - (t.x + t.width)), s = t.x - p, a = t.x + t.width + p, h = a - s, u = h * n, r = o + u), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n e: function e(t, _e, i, n) {\n var o, a, r, s, h, u, l, p;\n return s = t.x, a = I(_e.x, s, i.width), a - s < i.min.width && (a = s + i.min.width), u = n ? (a - s) * n : t.height, u < i.min.height && (u = i.min.height, a = s + u / n), l = .5 * (u - t.height), o = t.y - l, r = t.y + t.height + l, (o < 0 || Math.round(r) > Math.round(i.height)) && (p = Math.min(t.y, i.height - (t.y + t.height)), o = t.y - p, r = t.y + t.height + p, u = r - o, h = u / n, a = s + h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n w: function n(t, e, i, o) {\n var a, r, s, h, n, u, l, p;\n return r = t.x + t.width, h = I(e.x, 0, r), r - h < i.min.width && (h = r - i.min.width), u = o ? (r - h) * o : t.height, u < i.min.height && (u = i.min.height, h = r - u / o), l = .5 * (u - t.height), a = t.y - l, s = t.y + t.height + l, (a < 0 || Math.round(s) > Math.round(i.height)) && (p = Math.min(t.y, i.height - (t.y + t.height)), a = t.y - p, s = t.y + t.height + p, u = s - a, n = u / o, h = r - n), {\n x: h,\n y: a,\n width: r - h,\n height: s - a\n };\n },\n ne: function ne(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return s = t.x, r = t.y + t.height, a = I(e.x, s, i.width), a - s < i.min.width && (a = s + i.min.width), u = n ? (a - s) * n : I(r - e.y, i.min.height, r), u < i.min.height && (u = i.min.height, a = s + u / n), o = t.y - (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), o = t.y - l, u = r - o, h = u / n, a = s + h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n se: function se(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return s = t.x, o = t.y, a = I(e.x, s, i.width), a - s < i.min.width && (a = s + i.min.width), u = n ? (a - s) * n : I(e.y - t.y, i.min.height, i.height - o), u < i.min.height && (u = i.min.height, a = s + u / n), r = t.y + t.height + (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), r = t.y + t.height + l, u = r - o, h = u / n, a = s + h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n sw: function sw(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return a = t.x + t.width, o = t.y, s = I(e.x, 0, a), a - s < i.min.width && (s = a - i.min.width), u = n ? (a - s) * n : I(e.y - t.y, i.min.height, i.height - o), u < i.min.height && (u = i.min.height, s = a - u / n), r = t.y + t.height + (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), r = t.y + t.height + l, u = r - o, h = u / n, s = a - h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n },\n nw: function nw(t, e, i, n) {\n var o, a, r, s, h, u, l;\n return a = t.x + t.width, r = t.y + t.height, s = I(e.x, 0, a), a - s < i.min.width && (s = a - i.min.width), u = n ? (a - s) * n : I(r - e.y, i.min.height, r), u < i.min.height && (u = i.min.height, s = a - u / n), o = t.y - (u - t.height), (o < 0 || Math.round(r) > Math.round(i.height)) && (l = Math.min(t.y, i.height - (t.y + t.height)), o = t.y - l, u = r - o, h = u / n, s = a - h), {\n x: s,\n y: o,\n width: a - s,\n height: r - o\n };\n }\n };\n return function () {\n function n() {\n var i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : document.createElement(\"div\");\n t(this, n), this._element = i, this._interaction = null, this._minWidth = 1, this._minHeight = 1, this._ratio = null, this._rect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, this._space = {\n width: 0,\n height: 0\n }, this._rectChanged = !1, this._init();\n }\n return p(n, [{\n key: \"_init\",\n value: function value() {\n this._element.className = \"slim-crop-area\";\n var t = k(\"div\", \"grid\");\n this._element.appendChild(t);\n for (var e in i) {\n if (i.hasOwnProperty(e)) {\n var n = k(\"button\", e);\n this._element.appendChild(n);\n }\n }\n var o = k(\"button\", \"c\");\n this._element.appendChild(o), x(document, y.DOWN, this);\n }\n }, {\n key: \"reset\",\n value: function value() {\n this._interaction = null, this._rect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, this._rectChanged = !0, this._redraw(), this._element.dispatchEvent(new CustomEvent(\"change\"));\n }\n }, {\n key: \"rescale\",\n value: function value(t) {\n 1 !== t && (this._interaction = null, this._rectChanged = !0, this._rect.x *= t, this._rect.y *= t, this._rect.width *= t, this._rect.height *= t, this._redraw(), this._element.dispatchEvent(new CustomEvent(\"change\")));\n }\n }, {\n key: \"limit\",\n value: function value(t, e) {\n this._space.width = t, this._space.height = e;\n }\n }, {\n key: \"offset\",\n value: function value(t, e) {\n this._space.x = t, this._space.y = e;\n }\n }, {\n key: \"resize\",\n value: function value(t, e, i, n) {\n this._interaction = null, this._rect = {\n x: I(t, 0, this._space.width - this._minWidth),\n y: I(e, 0, this._space.height - this._minHeight),\n width: I(i, this._minWidth, this._space.width),\n height: I(n, this._minHeight, this._space.height)\n }, this._rectChanged = !0, this._redraw(), this._element.dispatchEvent(new CustomEvent(\"change\"));\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"touchstart\":\n case \"pointerdown\":\n case \"mousedown\":\n this._onStartDrag(t);\n break;\n case \"touchmove\":\n case \"pointermove\":\n case \"mousemove\":\n this._onDrag(t);\n break;\n case \"touchend\":\n case \"touchcancel\":\n case \"pointerup\":\n case \"mouseup\":\n this._onStopDrag(t);\n }\n }\n }, {\n key: \"_onStartDrag\",\n value: function value(t) {\n this._element.contains(t.target) && (t.preventDefault(), x(document, y.MOVE, this), x(document, y.UP, this), this._interaction = {\n type: t.target.className,\n offset: P(t)\n }, this._interaction.offset.x -= this._rect.x, this._interaction.offset.y -= this._rect.y, this._element.setAttribute(\"data-dragging\", \"true\"), this._redraw());\n }\n }, {\n key: \"_onDrag\",\n value: function value(t) {\n t.preventDefault();\n var e = P(t),\n n = this._interaction.type;\n \"c\" === n ? (this._rect.x = I(e.x - this._interaction.offset.x, 0, this._space.width - this._rect.width), this._rect.y = I(e.y - this._interaction.offset.y, 0, this._space.height - this._rect.height)) : i[n] && (this._rect = i[n](this._rect, {\n x: e.x - this._space.x,\n y: e.y - this._space.y\n }, {\n x: 0,\n y: 0,\n width: this._space.width,\n height: this._space.height,\n min: {\n width: this._minWidth,\n height: this._minHeight\n }\n }, this._ratio)), this._rectChanged = !0, this._element.dispatchEvent(new CustomEvent(\"input\"));\n }\n }, {\n key: \"_onStopDrag\",\n value: function value(t) {\n t.preventDefault(), S(document, y.MOVE, this), S(document, y.UP, this), this._interaction = null, this._element.setAttribute(\"data-dragging\", \"false\"), this._element.dispatchEvent(new CustomEvent(\"change\"));\n }\n }, {\n key: \"_redraw\",\n value: function value() {\n var t = this;\n if (this._rectChanged) {\n var e = \"translate(\" + this._rect.x + \"px,\" + this._rect.y + \"px);\";\n this._element.style.cssText = \"\\n\\t\\t\\t\\t\\t-webkit-transform: \" + e + \";\\n\\t\\t\\t\\t\\ttransform: \" + e + \";\\n\\t\\t\\t\\t\\twidth:\" + this._rect.width + \"px;\\n\\t\\t\\t\\t\\theight:\" + this._rect.height + \"px;\\n\\t\\t\\t\\t\", this._rectChanged = !1;\n }\n this._interaction && requestAnimationFrame(function () {\n return t._redraw();\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this._interaction = !1, this._rectChanged = !1, S(document, y.DOWN, this), S(document, y.MOVE, this), S(document, y.UP, this), Et(this._element);\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"space\",\n get: function get() {\n return this._space;\n }\n }, {\n key: \"area\",\n get: function get() {\n var t = this._rect.x / this._space.width,\n e = this._rect.y / this._space.height,\n i = this._rect.width / this._space.width,\n n = this._rect.height / this._space.height;\n return {\n x: t,\n y: e,\n width: i,\n height: n\n };\n }\n }, {\n key: \"dirty\",\n get: function get() {\n return 0 !== this._rect.x || 0 !== this._rect.y || 0 !== this._rect.width || 0 !== this._rect.height;\n }\n }, {\n key: \"minWidth\",\n set: function set(t) {\n this._minWidth = Math.max(t, 1);\n }\n }, {\n key: \"minHeight\",\n set: function set(t) {\n this._minHeight = Math.max(t, 1);\n }\n }, {\n key: \"ratio\",\n set: function set(t) {\n this._ratio = t;\n }\n }]), n;\n }();\n }(),\n It = function () {\n var i = [\"input\", \"change\"],\n n = function () {\n function n() {\n var i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : document.createElement(\"div\"),\n o = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {};\n t(this, n), this._element = i, this._options = g(n.options(), o), this._ratio = null, this._output = null, this._rotating = !1, this._input = null, this._preview = null, this._previewBlurred = null, this._blurredPreview = !1, this._cropper = null, this._straightCrop = null, this._previewWrapper = null, this._currentWindowSize = {}, this._btnGroup = null, this._maskFrame = null, this._dirty = !1, this._wrapperRotation = 0, this._wrapperScale = 1, this._init();\n }\n return p(n, [{\n key: \"_init\",\n value: function value() {\n var t = this;\n this._element.className = \"slim-image-editor\", this._container = k(\"div\", \"slim-container\"), this._wrapper = k(\"div\", \"slim-wrapper\"), this._stage = k(\"div\", \"slim-stage\"), this._container.appendChild(this._stage), this._cropper = new Tt(), i.forEach(function (e) {\n t._cropper.element.addEventListener(e, t);\n }), this._stage.appendChild(this._cropper.element), this._previewWrapper = k(\"div\", \"slim-image-editor-preview slim-crop-preview\"), this._previewBlurred = k(\"canvas\", \"slim-crop-blur\"), this._previewWrapper.appendChild(this._previewBlurred), this._wrapper.appendChild(this._previewWrapper), this._previewMask = k(\"div\", \"slim-crop-mask\"), this._preview = k(\"img\"), this._previewMask.appendChild(this._preview), this._cropper.element.appendChild(this._previewMask), this._btnGroup = k(\"div\", \"slim-editor-btn-group\"), n.Buttons.forEach(function (e) {\n var i = R(e),\n n = t._options[\"button\" + i + \"Label\"],\n o = t._options[\"button\" + i + \"Title\"],\n a = t._options[\"button\" + i + \"ClassName\"],\n r = k(\"button\", \"slim-editor-btn slim-btn-\" + e + (a ? \" \" + a : \"\"));\n r.innerHTML = n, r.title = o || n, r.type = \"button\", r.setAttribute(\"data-action\", e), r.addEventListener(\"click\", t), t._btnGroup.appendChild(r);\n }), this._utilsGroup = k(\"div\", \"slim-editor-utils-group\");\n var e = k(\"button\", \"slim-editor-utils-btn slim-btn-rotate\" + (this._options.buttonRotateClassName ? \" \" + this._options.buttonRotateClassName : \"\"));\n e.setAttribute(\"data-action\", \"rotate\"), e.addEventListener(\"click\", this), e.title = this._options.buttonRotateTitle, this._utilsGroup.appendChild(e), this._container.appendChild(this._wrapper), this._element.appendChild(this._container), this._element.appendChild(this._utilsGroup), this._element.appendChild(this._btnGroup);\n }\n }, {\n key: \"dirty\",\n value: function value() {\n this._dirty = !0;\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"click\":\n this._onClick(t);\n break;\n case \"change\":\n this._onGridChange(t);\n break;\n case \"input\":\n this._onGridInput(t);\n break;\n case \"keydown\":\n this._onKeyDown(t);\n break;\n case \"resize\":\n this._onResize(t);\n }\n }\n }, {\n key: \"_onKeyDown\",\n value: function value(t) {\n switch (t.keyCode) {\n case v.RETURN:\n this._confirm();\n break;\n case v.ESC:\n this._cancel();\n }\n }\n }, {\n key: \"_onClick\",\n value: function value(t) {\n t.target.classList.contains(\"slim-btn-cancel\") && this._cancel(), t.target.classList.contains(\"slim-btn-confirm\") && this._confirm(), t.target.classList.contains(\"slim-btn-rotate\") && this._rotate();\n }\n }, {\n key: \"_onResize\",\n value: function value() {\n this._currentWindowSize = {\n width: window.innerWidth,\n height: window.innerHeight\n }, this._redraw(), this._redrawCropper(this._cropper.area), this._updateWrapperScale(), this._redrawWrapper();\n }\n }, {\n key: \"_redrawWrapper\",\n value: function value() {\n var t = u.createMatrix();\n t.scale(this._wrapperScale, this._wrapperScale), t.rotateZ(this._wrapperRotation * (Math.PI / 180)), u.setElementTransform(this._previewWrapper, t);\n }\n }, {\n key: \"_onGridInput\",\n value: function value() {\n this._redrawCropMask();\n }\n }, {\n key: \"_onGridChange\",\n value: function value() {\n this._redrawCropMask();\n }\n }, {\n key: \"_updateWrapperRotation\",\n value: function value() {\n this._options.minSize.width > this._input.height || this._options.minSize.height > this._input.width ? this._wrapperRotation += 180 : this._wrapperRotation += 90;\n }\n }, {\n key: \"_updateWrapperScale\",\n value: function value() {\n var t = this._wrapperRotation % 180 !== 0;\n if (t) {\n var e = this._container.offsetWidth,\n i = this._container.offsetHeight,\n n = this._wrapper.offsetHeight,\n o = this._wrapper.offsetWidth,\n a = e / n;\n a * o > i && (a = i / o), this._wrapperScale = a;\n } else this._wrapperScale = 1;\n }\n }, {\n key: \"_cancel\",\n value: function value() {\n this._rotating || this._element.dispatchEvent(new CustomEvent(\"cancel\"));\n }\n }, {\n key: \"_confirm\",\n value: function value() {\n if (!this._rotating) {\n var t = this._wrapperRotation % 180 !== 0,\n e = this._cropper.area,\n i = dt(e, t ? this._input.height : this._input.width, t ? this._input.width : this._input.height);\n this._element.dispatchEvent(new CustomEvent(\"confirm\", {\n detail: {\n rotation: this._wrapperRotation % 360,\n crop: i\n }\n }));\n }\n }\n }, {\n key: \"_rotate\",\n value: function value() {\n var t = this;\n if (!this._rotating) {\n this._rotating = !0, this._updateWrapperRotation();\n var e = 1 === this.ratio || null === this._ratio ? this._cropper.area : null;\n e && C(e, 90), this._updateWrapperScale(), this._hideCropper(), u(this._previewWrapper, {\n rotation: [0, 0, this._wrapperRotation * (Math.PI / 180)],\n scale: [this._wrapperScale, this._wrapperScale],\n easing: \"spring\",\n springConstant: .8,\n springDeceleration: .65,\n complete: function complete() {\n t._redrawCropper(e), t._showCropper(), t._rotating = !1;\n }\n });\n }\n }\n }, {\n key: \"_showCropper\",\n value: function value() {\n u(this._stage, {\n easing: \"ease\",\n duration: 250,\n fromOpacity: 0,\n opacity: 1\n });\n }\n }, {\n key: \"_hideCropper\",\n value: function value() {\n u(this._stage, {\n duration: 0,\n fromOpacity: 0,\n opacity: 0\n });\n }\n }, {\n key: \"_redrawCropMask\",\n value: function value() {\n var t = this,\n e = this._wrapperRotation % 360,\n i = this._wrapperScale,\n n = {\n width: this._wrapper.offsetWidth,\n height: this._wrapper.offsetHeight\n },\n o = this._cropper.area,\n a = {\n x: 0,\n y: 0\n };\n 0 === e ? (a.x = -o.x, a.y = -o.y) : 90 === e ? (a.x = -(1 - o.y), a.y = -o.x) : 180 === e ? (a.x = -(1 - o.x), a.y = -(1 - o.y)) : 270 === e && (a.x = -o.y, a.y = -(1 - o.x)), a.x *= n.width, a.y *= n.height, cancelAnimationFrame(this._maskFrame), this._maskFrame = requestAnimationFrame(function () {\n var n = \"scale(\" + i + \") rotate(\" + -e + \"deg) translate(\" + a.x + \"px, \" + a.y + \"px);\";\n t._preview.style.cssText = \"\\n\\t\\t\\t\\t\\twidth: \" + t._previewSize.width + \"px;\\n\\t\\t\\t\\t\\theight: \" + t._previewSize.height + \"px;\\n\\t\\t\\t\\t\\t-webkit-transform: \" + n + \";\\n\\t\\t\\t\\t\\ttransform: \" + n + \";\\n\\t\\t\\t\\t\";\n });\n }\n }, {\n key: \"open\",\n value: function value(t, e, i, n, o) {\n var a = this;\n if (this._input && !this._dirty && this._ratio === e) return void o();\n this._currentWindowSize = {\n width: window.innerWidth,\n height: window.innerHeight\n }, this._dirty = !1, this._wrapperRotation = n || 0, this._blurredPreview = !1, this._ratio = e, this._previewSize = null, this._element.style.opacity = \"0\", this._input = t;\n var r = n % 180 !== 0,\n s = ft(i, r ? t.height : t.width, r ? t.width : t.height);\n this._preview.onload = function () {\n a._preview.onload = null, a._cropper.ratio = a.ratio, a._redraw(), a._redrawCropper(s), o(), a._element.style.opacity = \"\";\n }, this._preview.src = \"\", this._preview.src = ht(this._input, Math.min(this._container.offsetWidth / this._input.width, this._container.offsetHeight / this._input.height) * this._options.devicePixelRatio).toDataURL();\n }\n }, {\n key: \"_redrawCropper\",\n value: function value(t) {\n var e = this._wrapperRotation % 180 !== 0,\n i = e ? this._input.height / this._input.width : this._input.width / this._input.height,\n n = this._wrapper.offsetWidth,\n o = this._wrapper.offsetHeight,\n a = this._container.offsetWidth,\n r = this._container.offsetHeight;\n this._updateWrapperScale();\n var s = this._wrapperScale * (e ? o : n),\n h = this._wrapperScale * (e ? n : o),\n u = e ? .5 * (a - s) : this._wrapper.offsetLeft,\n l = e ? .5 * (r - h) : this._wrapper.offsetTop;\n this._stage.style.cssText = \"\\n\\t\\t\\t\\tleft:\" + u + \"px;\\n\\t\\t\\t\\ttop:\" + l + \"px;\\n\\t\\t\\t\\twidth:\" + s + \"px;\\n\\t\\t\\t\\theight:\" + h + \"px;\\n\\t\\t\\t\", this._cropper.limit(s, s / i), this._cropper.offset(u + this._element.offsetLeft, l + this._element.offsetTop), this._cropper.minWidth = this._wrapperScale * this._options.minSize.width * this.scalar, this._cropper.minHeight = this._wrapperScale * this._options.minSize.height * this.scalar;\n var p = null;\n p = t ? {\n x: t.x * s,\n y: t.y * h,\n width: t.width * s,\n height: t.height * h\n } : tt(s, h, this._ratio || h / s), this._cropper.resize(p.x, p.y, p.width, p.height);\n }\n }, {\n key: \"_redraw\",\n value: function value() {\n var t = this._input.height / this._input.width,\n e = this._container.clientWidth,\n i = this._container.clientHeight,\n n = e,\n o = n * t;\n o > i && (o = i, n = o / t), n = Math.round(n), o = Math.round(o);\n var a = (e - n) / 2,\n r = (i - o) / 2;\n this._wrapper.style.cssText = \"\\n\\t\\t\\t\\tleft:\" + a + \"px;\\n\\t\\t\\t\\ttop:\" + r + \"px;\\n\\t\\t\\t\\twidth:\" + n + \"px;\\n\\t\\t\\t\\theight:\" + o + \"px;\\n\\t\\t\\t\", this._previewBlurred.style.cssText = \"\\n\\t\\t\\t\\twidth:\" + n + \"px;\\n\\t\\t\\t\\theight:\" + o + \"px;\\n\\t\\t\\t\", this._preview.style.cssText = \"\\n\\t\\t\\t\\twidth:\" + n + \"px;\\n\\t\\t\\t\\theight:\" + o + \"px;\\n\\t\\t\\t\", this._previewSize = {\n width: n,\n height: o\n }, this._blurredPreview || (this._previewBlurred.width = 300, this._previewBlurred.height = this._previewBlurred.width * t, lt(this._input, this._previewBlurred), pt(this._previewBlurred, 3), this._blurredPreview = !0);\n }\n }, {\n key: \"show\",\n value: function value() {\n var t = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n this._currentWindowSize.width === window.innerWidth && this._currentWindowSize.height === window.innerHeight || (this._redraw(), this._redrawCropper(this._cropper.area)), document.addEventListener(\"keydown\", this), window.addEventListener(\"resize\", this);\n var i = this._wrapperRotation * (Math.PI / 180);\n u(this._previewWrapper, {\n fromRotation: [0, 0, i],\n rotation: [0, 0, i],\n fromPosition: [0, 0, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n fromScale: [this._wrapperScale - .02, this._wrapperScale - .02],\n scale: [this._wrapperScale, this._wrapperScale],\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .85,\n delay: 450,\n complete: function complete() {}\n }), this._cropper.dirty ? u(this._stage, {\n fromPosition: [0, 0, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n duration: 250,\n delay: 850,\n complete: function complete() {\n z(this), t();\n }\n }) : u(this._stage, {\n fromPosition: [0, 0, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n duration: 250,\n delay: 1e3,\n complete: function complete() {\n z(this);\n }\n }), u(this._btnGroup.childNodes, {\n fromScale: [.9, .9],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n delay: function delay(t) {\n return 1e3 + 100 * t;\n },\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .85,\n complete: function complete() {\n z(this);\n }\n }), u(this._utilsGroup.childNodes, {\n fromScale: [.9, .9],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .85,\n delay: 1250,\n complete: function complete() {\n z(this);\n }\n });\n }\n }, {\n key: \"hide\",\n value: function value() {\n var t = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n document.removeEventListener(\"keydown\", this), window.removeEventListener(\"resize\", this), u(this._utilsGroup.childNodes, {\n fromOpacity: 1,\n opacity: 0,\n duration: 250\n }), u(this._btnGroup.childNodes, {\n fromOpacity: 1,\n opacity: 0,\n delay: 200,\n duration: 350\n }), u([this._stage, this._previewWrapper], {\n fromPosition: [0, 0, 0],\n position: [0, -250, 0],\n fromOpacity: 1,\n opacity: 0,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .75,\n delay: 250,\n allDone: function allDone() {\n t();\n }\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n var t = this;\n St(this._btnGroup.children).forEach(function (e) {\n e.removeEventListener(\"click\", t);\n }), i.forEach(function (e) {\n t._cropper.element.removeEventListener(e, t);\n }), this._cropper.destroy(), this._element.parentNode && Et(this._element);\n }\n }, {\n key: \"showRotateButton\",\n set: function set(t) {\n t ? this._element.classList.remove(\"slim-rotation-disabled\") : this._element.classList.add(\"slim-rotation-disabled\");\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"ratio\",\n get: function get() {\n return \"input\" === this._ratio ? this._input.height / this._input.width : this._ratio;\n }\n }, {\n key: \"offset\",\n get: function get() {\n return this._element.getBoundingClientRect();\n }\n }, {\n key: \"original\",\n get: function get() {\n return this._input;\n }\n }, {\n key: \"scalar\",\n get: function get() {\n return this._previewSize.width / this._input.width;\n }\n }], [{\n key: \"options\",\n value: function value() {\n return {\n buttonCancelClassName: null,\n buttonConfirmClassName: null,\n buttonCancelLabel: \"Cancel\",\n buttonConfirmLabel: \"Confirm\",\n buttonCancelTitle: null,\n buttonConfirmTitle: null,\n buttonRotateTitle: \"Rotate\",\n buttonRotateClassName: null,\n devicePixelRatio: null,\n minSize: {\n width: 0,\n height: 0\n }\n };\n }\n }]), n;\n }();\n return n.Buttons = [\"cancel\", \"confirm\"], n;\n }(Tt),\n Lt = function () {\n var i = [\"dragenter\", \"dragover\", \"dragleave\", \"drop\"];\n return function () {\n function n() {\n var i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : document.createElement(\"div\");\n t(this, n), this._element = i, this._accept = [], this._allowURLs = !1, this._dragPath = null, this._init();\n }\n return p(n, [{\n key: \"isValidDataTransfer\",\n value: function value(t) {\n return t.files && t.files.length ? this.areValidDataTransferFiles(t.files) : t.items && t.items.length ? this.areValidDataTransferItems(t.items) : null;\n }\n }, {\n key: \"areValidDataTransferFiles\",\n value: function value(t) {\n return !this._accept.length || !t || this._accept.indexOf(t[0].type) !== -1;\n }\n }, {\n key: \"areValidDataTransferItems\",\n value: function value(t) {\n return !this._accept.length || !t || (this._allowURLs && \"string\" === t[0].kind ? null : t[0].type && 0 === t[0].type.indexOf(\"application\") ? null : this._accept.indexOf(t[0].type) !== -1);\n }\n }, {\n key: \"reset\",\n value: function value() {\n this._element.files = null;\n }\n }, {\n key: \"_init\",\n value: function value() {\n var t = this;\n this._element.className = \"slim-file-hopper\", i.forEach(function (e) {\n t._element.addEventListener(e, t);\n });\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"dragenter\":\n case \"dragover\":\n this._onDragOver(t);\n break;\n case \"dragleave\":\n this._onDragLeave(t);\n break;\n case \"drop\":\n this._onDrop(t);\n }\n }\n }, {\n key: \"_onDrop\",\n value: function value(t) {\n t.preventDefault();\n var e = null;\n if (this._allowURLs) {\n var i = void 0,\n n = void 0;\n try {\n i = t.dataTransfer.getData(\"url\"), n = t.dataTransfer.getData(\"text/html\");\n } catch (t) {}\n if (n && n.length) {\n var o = n.match(/src\\s*=\\s*\"(.+?)\"/);\n o && (e = o[1]);\n } else i && i.length && (e = i);\n }\n if (e) this._element.files = [{\n remote: e\n }];else {\n var a = this.isValidDataTransfer(t.dataTransfer);\n if (!a) return this._element.dispatchEvent(new CustomEvent(\"file-invalid-drop\")), void (this._dragPath = null);\n this._element.files = t.dataTransfer.files;\n }\n this._element.dispatchEvent(new CustomEvent(\"file-drop\", {\n detail: m(t)\n })), this._element.dispatchEvent(new CustomEvent(\"change\")), this._dragPath = null;\n }\n }, {\n key: \"_onDragOver\",\n value: function value(t) {\n t.preventDefault(), t.dataTransfer.dropEffect = \"copy\";\n var e = this.isValidDataTransfer(t.dataTransfer);\n return null === e || e ? (this._dragPath || (this._dragPath = []), this._dragPath.push(m(t)), void this._element.dispatchEvent(new CustomEvent(\"file-over\", {\n detail: {\n x: T(this._dragPath).x,\n y: T(this._dragPath).y\n }\n }))) : (t.dataTransfer.dropEffect = \"none\", void this._element.dispatchEvent(new CustomEvent(\"file-invalid\")));\n }\n }, {\n key: \"_onDragLeave\",\n value: function value(t) {\n this._element.dispatchEvent(new CustomEvent(\"file-out\", {\n detail: m(t)\n })), this._dragPath = null;\n }\n }, {\n key: \"destroy\",\n value: function value() {\n var t = this;\n i.forEach(function (e) {\n t._element.removeEventListener(e, t);\n }), Et(this._element), this._element = null, this._dragPath = null, this._accept = null;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"dragPath\",\n get: function get() {\n return this._dragPath;\n }\n }, {\n key: \"enabled\",\n get: function get() {\n return \"\" === this._element.style.display;\n },\n set: function set(t) {\n this._element.style.display = t ? \"\" : \"none\";\n }\n }, {\n key: \"allowURLs\",\n set: function set(t) {\n this._allowURLs = t;\n }\n }, {\n key: \"accept\",\n set: function set(t) {\n this._accept = t;\n },\n get: function get() {\n return this._accept;\n }\n }]), n;\n }();\n }(),\n Ot = function () {\n return function () {\n function i() {\n t(this, i), this._element = null, this._inner = null, this._init();\n }\n return p(i, [{\n key: \"_init\",\n value: function value() {\n this._element = k(\"div\", \"slim-popover\"), this._element.setAttribute(\"data-state\", \"off\"), document.body.appendChild(this._element), this._element.addEventListener(\"touchmove\", function (t) {\n t.preventDefault();\n }, !0);\n }\n }, {\n key: \"show\",\n value: function value() {\n var t = this,\n i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n this._element.setAttribute(\"data-state\", \"on\"), u(this._element, {\n fromOpacity: 0,\n opacity: 1,\n duration: 350,\n complete: function complete() {\n z(t._element), i();\n }\n });\n }\n }, {\n key: \"hide\",\n value: function value() {\n var t = this,\n i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {};\n u(this._element, {\n fromOpacity: 1,\n opacity: 0,\n duration: 500,\n complete: function complete() {\n z(t._element), t._element.setAttribute(\"data-state\", \"off\"), i();\n }\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this._element.parentNode && (this._element.parentNode.removeChild(this._element), this._element = null, this._inner = null);\n }\n }, {\n key: \"inner\",\n set: function set(t) {\n this._inner = t, this._element.firstChild && this._element.removeChild(this._element.firstChild), this._element.appendChild(this._inner);\n }\n }, {\n key: \"className\",\n set: function set(t) {\n this._element.className = \"slim-popover\" + (null === t ? \"\" : \" \" + t);\n }\n }]), i;\n }();\n }(),\n zt = function zt(t, e) {\n return t.split(e).map(function (t) {\n return parseInt(t, 10);\n });\n },\n Dt = function Dt(t) {\n return \"DIV\" === t.nodeName || \"SPAN\" === t.nodeName;\n },\n At = {\n AUTO: \"auto\",\n INITIAL: \"initial\",\n MANUAL: \"manual\"\n },\n Ut = [\"x\", \"y\", \"width\", \"height\"],\n Ht = [\"file-invalid-drop\", \"file-invalid\", \"file-drop\", \"file-over\", \"file-out\", \"click\"],\n Nt = [\"cancel\", \"confirm\"],\n Bt = [\"remove\", \"edit\", \"download\", \"upload\"],\n Ft = null,\n Wt = 0,\n qt = '\\n
\\n\\t\\n\\t\\t\\n\\t\\t\\n\\t\\n
\\n',\n jt = '\\n
\\n',\n Vt = function Vt(t) {\n var e = t.split(\",\");\n return {\n width: parseInt(e[0], 10),\n height: parseInt(e[1], 10)\n };\n },\n Gt = function () {\n function i(n) {\n var o = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {};\n t(this, i), Ft || (Ft = new Ot()), this._uid = Wt++, this._options = g(i.options(), o), this._options.forceSize && (\"string\" == typeof this._options.forceSize && (this._options.forceSize = Vt(this._options.forceSize)), this._options.ratio = this._options.forceSize.width + \":\" + this._options.forceSize.height, this._options.size = mt(this._options.forceSize)), \"string\" == typeof this._options.size && (this._options.size = Vt(this._options.size)), \"string\" == typeof this._options.minSize && (this._options.minSize = Vt(this._options.minSize)), \"string\" == typeof this._options.post && (this._options.post = this._options.post.split(\",\").map(function (t) {\n return t.trim();\n })), this._originalElement = n, this._originalElementInner = n.innerHTML, this._originalElementAttributes = _(n), Dt(n) ? this._element = n : (this._element = Ct(n), this._element.className = n.className, n.className = \"\", this._element.setAttribute(\"data-ratio\", this._options.ratio)), this._element.classList.add(\"slim\"), this._element.setAttribute(\"data-state\", \"init\"), this._state = [], this._timers = [], this._input = null, this._inputReference = null, this._output = null, this._ratio = null, this._isRequired = !1, this._imageHopper = null, this._imageEditor = null, this._progressEnabled = !0, this._data = {}, this._resetData(), this._drip = null, this._hasInitialImage = !1, this._initialCrop = this._options.crop, this._initialRotation = this._options.rotation && this._options.rotation % 90 === 0 ? this._options.rotation : null, this._isBeingDestroyed = !1, i.supported ? this._init() : this._fallback();\n }\n return p(i, [{\n key: \"setRotation\",\n value: function value(t, e) {\n if (\"number\" == typeof t || t % 90 === 0) {\n this._data.actions.rotation = t;\n var i = this._data.actions.rotation % 180 !== 0;\n if (this._data.input.image) {\n var n = i ? this._data.input.image.height : this._data.input.image.width,\n o = i ? this._data.input.image.width : this._data.input.image.height;\n this._data.actions.crop = tt(n, o, this._ratio), this._data.actions.crop.type = At.AUTO;\n }\n this._data.input.image && e && this._manualTransform(e);\n }\n }\n }, {\n key: \"setSize\",\n value: function value(t, e) {\n \"string\" == typeof t && (t = Vt(t)), t && t.width && t.height && (this._options.size = mt(t), this._data.actions.size = mt(t), this._data.input.image && e && this._manualTransform(e));\n }\n }, {\n key: \"setForceSize\",\n value: function value(t, e) {\n \"string\" == typeof t && (t = Vt(t)), t && t.width && t.height && (this._options.size = mt(t), this._options.forceSize = mt(t), this._data.actions.size = mt(t), this.setRatio(this._options.forceSize.width + \":\" + this._options.forceSize.height, e));\n }\n }, {\n key: \"setRatio\",\n value: function value(t, e) {\n var i = this;\n if (t && \"string\" == typeof t && (this._options.ratio = t, this._isFixedRatio())) {\n var n = zt(this._options.ratio, \":\");\n this._ratio = n[1] / n[0], this._data.input.image && e ? this._cropAuto(function (t) {\n i._scaleDropArea(i._ratio), e && e(t);\n }) : (this._data.input.image && (this._data.actions.crop = tt(this._data.input.image.width, this._data.input.image.height, this._ratio), this._data.actions.crop.type = At.AUTO), this._scaleDropArea(this._ratio), e && e(null));\n }\n }\n }, {\n key: \"isAttachedTo\",\n value: function value(t) {\n return this._element === t || this._originalElement === t;\n }\n }, {\n key: \"isDetached\",\n value: function value() {\n return null === this._element.parentNode;\n }\n }, {\n key: \"load\",\n value: function value(t) {\n var i = arguments.length > 1 && arguments[1] !== e ? arguments[1] : {},\n n = arguments[2];\n \"function\" == typeof i ? n = i : (this._options.crop = i.crop, this._options.rotation = i.rotation, this._initialRotation = i.rotation && i.rotation % 90 === 0 ? i.rotation : null, this._initialCrop = this._options.crop), this._load(t, n, {\n blockPush: i.blockPush\n });\n }\n }, {\n key: \"upload\",\n value: function value(t) {\n this._doUpload(t);\n }\n }, {\n key: \"download\",\n value: function value() {\n this._doDownload();\n }\n }, {\n key: \"remove\",\n value: function value() {\n return this._doRemove();\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this._doDestroy();\n }\n }, {\n key: \"edit\",\n value: function value() {\n this._doEdit();\n }\n }, {\n key: \"crop\",\n value: function value(t, e) {\n this._crop(t.x, t.y, t.width, t.height, e);\n }\n }, {\n key: \"containsImage\",\n value: function value() {\n return null !== this._data.input.name;\n }\n }, {\n key: \"_canInstantEdit\",\n value: function value() {\n return this._options.instantEdit && !this._isInitialising;\n }\n }, {\n key: \"_getFileInput\",\n value: function value() {\n return this._element.querySelector(\"input[type=file]\");\n }\n }, {\n key: \"_getInitialImage\",\n value: function value() {\n return this._element.querySelector(\"img\");\n }\n }, {\n key: \"_getInputElement\",\n value: function value() {\n return this._getFileInput() || this._getInitialImage();\n }\n }, {\n key: \"_getRatioSpacerElement\",\n value: function value() {\n return this._element.children[0];\n }\n }, {\n key: \"_isImageOnly\",\n value: function value() {\n return \"INPUT\" !== this._input.nodeName;\n }\n }, {\n key: \"_isFixedRatio\",\n value: function value() {\n return this._options.ratio.indexOf(\":\") !== -1;\n }\n }, {\n key: \"_isAutoCrop\",\n value: function value() {\n return this._data.actions.crop.type === At.AUTO;\n }\n }, {\n key: \"_toggleButton\",\n value: function value(t, e) {\n xt('.slim-btn[data-action=\"' + t + '\"]', e, this._element);\n }\n }, {\n key: \"_clearState\",\n value: function value() {\n this._state = [], this._updateState();\n }\n }, {\n key: \"_removeState\",\n value: function value(t) {\n this._state = this._state.filter(function (e) {\n return e !== t;\n }), this._updateState();\n }\n }, {\n key: \"_addState\",\n value: function value(t) {\n L(t, this._state) || (this._state.push(t), this._updateState());\n }\n }, {\n key: \"_updateState\",\n value: function value() {\n this._element && this._element.setAttribute(\"data-state\", this._state.join(\",\"));\n }\n }, {\n key: \"_resetData\",\n value: function value() {\n this._data = {\n server: null,\n meta: mt(this._options.meta),\n input: {\n field: this._inputReference,\n name: null,\n type: null,\n width: 0,\n height: 0,\n file: null\n },\n output: {\n image: null,\n width: 0,\n height: 0\n },\n actions: {\n rotation: null,\n crop: null,\n size: null\n }\n }, this._output && (this._output.value = \"\"), _t(this._getFileInput());\n }\n }, {\n key: \"_init\",\n value: function value() {\n var t = this;\n if (this._isInitialising = !0, this._addState(\"empty\"), L(\"input\", this._options.post) && (this._inputReference = \"slim_input_\" + this._uid), this._input = this._getInputElement(), this._input || (this._input = k(\"input\"), this._input.type = \"file\", this._element.appendChild(this._input)), this._isRequired = this._input.required === !0, this._output = this._element.querySelector(\"input[type=hidden]\"), this._output) {\n var e = null;\n try {\n e = JSON.parse(this._output.value);\n } catch (i) {}\n if (e) {\n var n = new Image();\n n.src = e.output.image, n.setAttribute(\"data-filename\", e.output.name), this._element.insertBefore(n, this._element.firstChild);\n }\n } else this._output = k(\"input\"), this._output.type = \"hidden\", this._output.name = this._input.name || this._options.defaultInputName, this._element.appendChild(this._output);\n this._input.removeAttribute(\"name\");\n var o = k(\"div\", \"slim-area\"),\n a = this._getInitialImage(),\n r = (a || {}).src,\n s = a ? a.getAttribute(\"data-filename\") : null;\n r ? this._hasInitialImage = !0 : (this._initialCrop = null, this._initialRotation = null);\n var h = '\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
';\n if (this._isImageOnly()) o.innerHTML = \"\\n\\t\\t\\t\\t\" + qt + \"\\n\\t\\t\\t\\t\" + jt + \"\\n\\t\\t\\t\\t\" + h + '\\n\\t\\t\\t\\t
' + (this._options.labelLoading || \"\") + \"
\\n\\t\\t\\t\";else {\n L(\"input\", this._options.post) && (this._data.input.field = this._inputReference, this._options.service || (this._input.name = this._inputReference));\n var u = void 0;\n this._input.hasAttribute(\"accept\") && \"image/*\" !== this._input.getAttribute(\"accept\") ? u = this._input.accept.split(\",\").map(function (t) {\n return t.trim();\n }).filter(function (t) {\n return t.length > 0;\n }) : (u = A(), this._input.setAttribute(\"accept\", u.join(\",\"))), this._imageHopper = new Lt(), this._imageHopper.accept = u, this._imageHopper.allowURLs = \"string\" == typeof this._options.fetcher, this._element.appendChild(this._imageHopper.element), Ht.forEach(function (e) {\n t._imageHopper.element.addEventListener(e, t);\n }), o.innerHTML = \"\\n\\t\\t\\t\\t\" + qt + \"\\n\\t\\t\\t\\t\" + jt + '\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
' + (this._options.label || \"\") + '
' + (this._options.labelLoading || \"\") + \"
\\n\\t\\t\\t\\t\" + h + \"\\n\\t\\t\\t\", this._input.addEventListener(\"change\", this);\n }\n if (this._element.appendChild(o), this._btnGroup = k(\"div\", \"slim-btn-group\"), this._btnGroup.style.display = \"none\", this._element.appendChild(this._btnGroup), Bt.filter(function (e) {\n return t._isButtonAllowed(e);\n }).forEach(function (e) {\n var i = R(e),\n n = t._options[\"button\" + i + \"Label\"],\n o = t._options[\"button\" + i + \"Title\"] || n,\n a = t._options[\"button\" + i + \"ClassName\"],\n r = k(\"button\", \"slim-btn slim-btn-\" + e + (a ? \" \" + a : \"\"));\n r.innerHTML = n, r.title = o, r.type = \"button\", r.addEventListener(\"click\", t), r.setAttribute(\"data-action\", e), t._btnGroup.appendChild(r);\n }), this._isFixedRatio()) {\n var l = zt(this._options.ratio, \":\");\n this._ratio = l[1] / l[0], this._scaleDropArea(this._ratio);\n }\n this._updateProgress(.5), r ? this._load(r, function () {\n t._onInit();\n }, {\n name: s\n }) : this._onInit();\n }\n }, {\n key: \"_onInit\",\n value: function value() {\n var t = this;\n this._isInitialising = !1;\n var e = function e() {\n var e = setTimeout(function () {\n t._options.didInit.apply(t, [t.data, t]);\n }, 0);\n t._timers.push(e);\n };\n this._options.saveInitialImage && this.containsImage() ? this._options.service || this._save(function () {\n e();\n }, !1) : (this._options.service && this.containsImage() && this._toggleButton(\"upload\", !1), e());\n }\n }, {\n key: \"_updateProgress\",\n value: function value(t) {\n if (t = Math.min(.99999, t), this._element && this._progressEnabled) {\n var e = this._element.querySelector(\".slim-loader\");\n if (e) {\n var i = e.offsetWidth,\n n = e.querySelectorAll(\"path\"),\n o = parseInt(n[0].getAttribute(\"stroke-width\"), 10);\n n[0].setAttribute(\"d\", Rt(.5 * i, .5 * i, .5 * i - o, .9999)), n[1].setAttribute(\"d\", Rt(.5 * i, .5 * i, .5 * i - o, t));\n }\n }\n }\n }, {\n key: \"_startProgress\",\n value: function value(t) {\n var e = this;\n if (this._element) {\n this._progressEnabled = !1;\n var i = this._element.querySelector(\".slim-loader\");\n if (i) {\n var n = i.children[0];\n this._stopProgressLoop(function () {\n i.removeAttribute(\"style\"), n.removeAttribute(\"style\"), e._progressEnabled = !0, e._updateProgress(0), e._progressEnabled = !1, u(n, {\n fromOpacity: 0,\n opacity: 1,\n duration: 250,\n complete: function complete() {\n e._progressEnabled = !0, t && t();\n }\n });\n });\n }\n }\n }\n }, {\n key: \"_stopProgress\",\n value: function value() {\n var t = this;\n if (this._element) {\n var e = this._element.querySelector(\".slim-loader\");\n if (e) {\n var i = e.children[0];\n this._updateProgress(1), u(i, {\n fromOpacity: 1,\n opacity: 0,\n duration: 250,\n complete: function complete() {\n e.removeAttribute(\"style\"), i.removeAttribute(\"style\"), t._updateProgress(.5), t._progressEnabled = !1;\n }\n });\n }\n }\n }\n }, {\n key: \"_startProgressLoop\",\n value: function value() {\n if (this._element) {\n var t = this._element.querySelector(\".slim-loader\");\n if (t) {\n var e = t.children[0];\n t.removeAttribute(\"style\"), e.removeAttribute(\"style\"), this._updateProgress(.5);\n var i = 1e3;\n u(t, \"stop\"), u(t, {\n rotation: [0, 0, -(2 * Math.PI) * i],\n easing: \"linear\",\n duration: 1e3 * i\n }), u(e, {\n fromOpacity: 0,\n opacity: 1,\n duration: 250\n });\n }\n }\n }\n }, {\n key: \"_stopProgressLoop\",\n value: function value(t) {\n if (this._element) {\n var e = this._element.querySelector(\".slim-loader\");\n if (e) {\n var i = e.children[0];\n u(i, {\n fromOpacity: parseFloat(i.style.opacity),\n opacity: 0,\n duration: 250,\n complete: function complete() {\n u(e, \"stop\"), e.removeAttribute(\"style\"), i.removeAttribute(\"style\"), t && t();\n }\n });\n }\n }\n }\n }, {\n key: \"_isButtonAllowed\",\n value: function value(t) {\n return \"edit\" === t ? this._options.edit : \"download\" === t ? this._options.download : \"upload\" === t ? !!this._options.service && !this._options.push : \"remove\" !== t || !this._isImageOnly();\n }\n }, {\n key: \"_fallback\",\n value: function value() {\n var t = k(\"div\", \"slim-area\");\n t.innerHTML = '\\n\\t\\t\\t
' + (this._options.label || \"\") + \"
\\n\\t\\t\", this._element.appendChild(t), this._throwError(this._options.statusNoSupport);\n }\n }, {\n key: \"handleEvent\",\n value: function value(t) {\n switch (t.type) {\n case \"click\":\n this._onClick(t);\n break;\n case \"change\":\n this._onChange(t);\n break;\n case \"cancel\":\n this._onCancel(t);\n break;\n case \"confirm\":\n this._onConfirm(t);\n break;\n case \"file-over\":\n this._onFileOver(t);\n break;\n case \"file-out\":\n this._onFileOut(t);\n break;\n case \"file-drop\":\n this._onDropFile(t);\n break;\n case \"file-invalid\":\n this._onInvalidFile(t);\n break;\n case \"file-invalid-drop\":\n this._onInvalidFileDrop(t);\n }\n }\n }, {\n key: \"_getIntro\",\n value: function value() {\n return this._element.querySelector(\".slim-result .in\");\n }\n }, {\n key: \"_getOutro\",\n value: function value() {\n return this._element.querySelector(\".slim-result .out\");\n }\n }, {\n key: \"_getInOut\",\n value: function value() {\n return this._element.querySelectorAll(\".slim-result img\");\n }\n }, {\n key: \"_getDrip\",\n value: function value() {\n return this._drip || (this._drip = this._element.querySelector(\".slim-drip > span\")), this._drip;\n }\n }, {\n key: \"_throwError\",\n value: function value(t) {\n this._addState(\"error\"), this._element.querySelector(\".slim-label\").style.display = \"none\";\n var e = this._element.querySelector(\".slim-error\");\n e || (e = k(\"div\", \"slim-error\"), this._element.querySelector(\".slim-status\").appendChild(e)), e.innerHTML = t, this._options.didThrowError.apply(this, [t]);\n }\n }, {\n key: \"_removeError\",\n value: function value() {\n this._removeState(\"error\"), this._element.querySelector(\".slim-label\").style.display = \"\";\n var t = this._element.querySelector(\".slim-error\");\n t && t.parentNode.removeChild(t);\n }\n }, {\n key: \"_openFileDialog\",\n value: function value() {\n this._removeError(), this._input.click();\n }\n }, {\n key: \"_onClick\",\n value: function value(t) {\n var e = this,\n i = t.target.classList,\n n = t.target;\n if (i.contains(\"slim-file-hopper\")) return t.preventDefault(), void this._openFileDialog();\n switch (n.getAttribute(\"data-action\")) {\n case \"remove\":\n this._options.willRemove.apply(this, [this.data, function () {\n e._doRemove();\n }]);\n break;\n case \"edit\":\n this._doEdit();\n break;\n case \"download\":\n this._doDownload();\n break;\n case \"upload\":\n this._doUpload();\n }\n }\n }, {\n key: \"_onInvalidFileDrop\",\n value: function value() {\n this._onInvalidFile(), this._removeState(\"file-over\");\n var t = this._getDrip();\n u(t.firstChild, {\n fromScale: [.5, .5],\n scale: [0, 0],\n fromOpacity: .5,\n opacity: 0,\n duration: 150,\n complete: function complete() {\n z(t.firstChild);\n }\n });\n }\n }, {\n key: \"_onInvalidFile\",\n value: function value() {\n var t = this._imageHopper.accept.map(H),\n e = this._options.statusFileType.replace(\"$0\", t.join(\", \"));\n this._throwError(e);\n }\n }, {\n key: \"_onImageTooSmall\",\n value: function value() {\n var t = this._options.statusImageTooSmall.replace(\"$0\", this._options.minSize.width + \" × \" + this._options.minSize.height);\n this._throwError(t);\n }\n }, {\n key: \"_onOverWeightFile\",\n value: function value() {\n var t = this._options.statusFileSize.replace(\"$0\", this._options.maxFileSize);\n this._throwError(t);\n }\n }, {\n key: \"_onLocalURLProblem\",\n value: function value(t) {\n this._throwError(this._options.statusLocalUrlProblem || t);\n }\n }, {\n key: \"_onRemoteURLProblem\",\n value: function value(t) {\n this._throwError(t);\n }\n }, {\n key: \"_onFileOver\",\n value: function value(t) {\n this._addState(\"file-over\"), this._removeError();\n var e = this._getDrip(),\n i = u.createMatrix();\n i.translate(t.detail.x, t.detail.y, 0), u.setElementTransform(e, i), 1 == this._imageHopper.dragPath.length && (e.style.opacity = 1, u(e.firstChild, {\n fromOpacity: 0,\n opacity: .5,\n fromScale: [0, 0],\n scale: [.5, .5],\n duration: 150\n }));\n }\n }, {\n key: \"_onFileOut\",\n value: function value(t) {\n this._removeState(\"file-over\"), this._removeState(\"file-invalid\"), this._removeError();\n var e = this._getDrip(),\n i = u.createMatrix();\n i.translate(t.detail.x, t.detail.y, 0), u.setElementTransform(e, i), u(e.firstChild, {\n fromScale: [.5, .5],\n scale: [0, 0],\n fromOpacity: .5,\n opacity: 0,\n duration: 150,\n complete: function complete() {\n z(e.firstChild);\n }\n });\n }\n }, {\n key: \"_onDropFile\",\n value: function value(t) {\n var e = this;\n this._removeState(\"file-over\");\n var i = this._getDrip(),\n n = u.createMatrix();\n n.translate(t.detail.x, t.detail.y, 0), u.setElementTransform(i, n);\n var o = this._imageHopper.dragPath.length,\n a = this._imageHopper.dragPath[o - Math.min(10, o)],\n r = t.detail.x - a.x,\n s = t.detail.y - a.y;\n u(i, {\n fromPosition: [t.detail.x, t.detail.y, 0],\n position: [t.detail.x + r, t.detail.y + s, 0],\n duration: 200\n }), u(i.firstChild, {\n fromScale: [.5, .5],\n scale: [2, 2],\n fromOpacity: 1,\n opacity: 0,\n duration: 200,\n complete: function complete() {\n z(i.firstChild), e._load(t.target.files[0]);\n }\n });\n }\n }, {\n key: \"_onChange\",\n value: function value(t) {\n t.target.files.length && this._load(t.target.files[0]);\n }\n }, {\n key: \"_load\",\n value: function value(t, i) {\n var n = this,\n o = arguments.length > 2 && arguments[2] !== e ? arguments[2] : {};\n if (!this._isBeingDestroyed) {\n if (this.containsImage()) return clearTimeout(this._replaceTimeout), void this._doRemove(function () {\n n._replaceTimeout = setTimeout(function () {\n n._load(t, i, o);\n }, 100);\n });\n this._removeState(\"empty\"), this._addState(\"busy\"), this._startProgressLoop(), this._imageHopper && (this._imageHopper.enabled = !1), clearTimeout(this._loadTimeout);\n var a = function a() {\n clearTimeout(n._loadTimeout), n._loadTimeout = setTimeout(function () {\n n._isBeingDestroyed || (n._addState(\"loading\"), u(n._element.querySelector(\".slim-label-loading\"), {\n fromOpacity: 0,\n opacity: 1,\n duration: 250\n }));\n }, 500);\n },\n r = function r() {\n n._imageHopper && (n._imageHopper.enabled = !0), n._removeState(\"loading\"), n._removeState(\"busy\"), n._addState(\"empty\"), n._stopProgressLoop();\n };\n if (\"string\" == typeof t) return void (X(t) ? this._load(Z(t), i, o) : (a(), J(t, this._options.willLoad, function (t) {\n n._load(t, i, o);\n }, function (t) {\n setTimeout(function () {\n r(), n._onLocalURLProblem(\"

\" + t + \"

\"), i && i.apply(n, [\"local-url-problem\"]);\n }, 500);\n })));\n if (\"undefined\" != typeof t.remote) return X(t.remote) ? void this._load(Z(t.remote), i, o) : void (this._options.fetcher && Y(this._options.fetcher, this._options.willFetch, this._options.willLoad, t.remote, function (t) {\n r(), n._onRemoteURLProblem(\"

\" + t + \"

\"), i && i.apply(n, [\"remote-url-problem\"]);\n }, function (t) {\n n._load(t, i, o);\n }));\n var s = t;\n if (this._imageHopper && this._imageHopper.accept.indexOf(s.type) === -1) return r(), this._onInvalidFile(), void (i && i.apply(this, [\"file-invalid\"]));\n if (s.size && this._options.maxFileSize && D(s.size) > this._options.maxFileSize) return r(), this._onOverWeightFile(), void (i && i.apply(this, [\"file-too-big\"]));\n this._imageEditor && this._imageEditor.dirty(), this._data.input.name = o && o.name ? o.name : q(s), this._data.input.type = j(s), this._data.input.size = s.size, this._data.input.file = s, Q(s, this._options.internalCanvasSize, function (t, e) {\n var a = function a() {\n n._imageHopper && (n._imageHopper.enabled = !0), n._removeState(\"loading\"), n._removeState(\"busy\"), n._addState(\"empty\"), n._stopProgressLoop(), n._resetData();\n };\n if (!t) return a(), void (i && i.apply(n, [\"file-not-found\"]));\n if (!ct(t, n._options.minSize)) return a(), n._onImageTooSmall(), void (i && i.apply(n, [\"image-too-small\"]));\n var r = n._options.didLoad.apply(n, [s, t, e, n]);\n if (r !== !0) return a(), r !== !1 && n._throwError(r), void (i && i.apply(n, [r]));\n n._removeState(\"loading\");\n var h = function h(t) {\n n._imageHopper && n._options.dropReplace && (n._imageHopper.enabled = !0);\n var e = n._getIntro(),\n i = {\n fromScale: [1.25, 1.25],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n complete: function complete() {\n z(e), e.style.opacity = 1, t();\n }\n };\n n.isDetached() ? i.duration = 1 : (i.easing = \"spring\", i.springConstant = .3, i.springDeceleration = .7), n._canInstantEdit() && (i.delay = 500, i.duration = 1, n._doEdit()), u(e, i);\n };\n n._loadCanvas(t, function (t) {\n n._addState(\"preview\"), h(function () {\n n._canInstantEdit() || t || n._showButtons(), t || (n._stopProgressLoop(), n._removeState(\"busy\")), i && i.apply(n, [null, n.data]);\n });\n }, function () {\n n._canInstantEdit() || n._showButtons(), n._removeState(\"busy\");\n }, {\n blockPush: o.blockPush\n });\n });\n }\n }\n }, {\n key: \"_loadCanvas\",\n value: function value(t, e, i, n) {\n var o = this;\n if (n || (n = {}), !this._isBeingDestroyed) {\n this._data.input.image = t, this._data.input.width = t.width, this._data.input.height = t.height, this._initialRotation && (this._data.actions.rotation = this._initialRotation, this._initialRotation = null);\n var a = this._data.actions.rotation % 180 !== 0;\n this._isFixedRatio() || (this._initialCrop ? this._ratio = this._initialCrop.height / this._initialCrop.width : this._ratio = a ? t.width / t.height : t.height / t.width, this._scaleDropArea(this._ratio));\n var r = function r() {\n o._options.size && (o._data.actions.size = {\n width: o._options.size.width,\n height: o._options.size.height\n }), o._applyTransforms(t, function (t) {\n var a = o._getIntro(),\n r = a.offsetWidth / t.width,\n s = !1;\n o._options.service && o._options.push && !n.blockPush && (o._hasInitialImage || o._canInstantEdit() || (s = !0, o._stopProgressLoop(function () {\n o._startProgress(function () {\n o._updateProgress(.1);\n });\n }))), o._canInstantEdit() || o._save(function () {\n o._isBeingDestroyed || s && (o._stopProgress(), i());\n }, s);\n var h = \"auto\" === o._options.devicePixelRatio ? window.devicePixelRatio : o._options.devicePixelRatio;\n a.src = \"\", a.src = ht(t, r * h).toDataURL(), a.onload = function () {\n a.onload = null, o._isBeingDestroyed || e && e(s);\n };\n });\n };\n this._initialCrop ? (this._data.actions.crop = mt(this._initialCrop), this._data.actions.crop.type = At.INITIAL, this._initialCrop = null, r()) : this._options.willCropInitial.apply(this, [this.data, function (e) {\n e ? (o._data.actions.crop = e, o._data.actions.crop.type = At.INITIAL) : (o._data.actions.crop = tt(a ? t.height : t.width, a ? t.width : t.height, o._ratio), o._data.actions.crop.type = At.AUTO), r();\n }, this]);\n }\n }\n }, {\n key: \"_applyTransforms\",\n value: function value(t, e) {\n var i = this,\n n = mt(this._data.actions);\n n.filters = {\n sharpen: this._options.filterSharpen / 100\n }, this._options.forceMinSize ? n.minSize = this._options.minSize : n.minSize = {\n width: 0,\n height: 0\n }, et(t, n, function (t) {\n var n = t;\n if (i._options.forceSize || i._options.size && 1 == rt(i._options.size, t)) {\n n = k(\"canvas\"), n.width = i._options.size.width, n.height = i._options.size.height;\n var o = n.getContext(\"2d\");\n o.drawImage(t, 0, 0, i._options.size.width, i._options.size.height);\n }\n if (i._options.forceMinSize && i._options.size && i._options.minSize.width === i._options.size.width && i._options.minSize.height === i._options.size.height && (n.width < i._options.minSize.width || n.height < i._options.minSize.height)) {\n var a = Math.max(n.width, i._options.minSize.width),\n r = Math.max(n.height, i._options.minSize.height);\n n = k(\"canvas\"), n.width = a, n.height = r;\n var s = n.getContext(\"2d\");\n s.drawImage(t, 0, 0, a, r);\n }\n if (i._options.forceMinSize && 1 === i._ratio && (n.width < i._options.minSize.width || n.height < i._options.minSize.height)) {\n n = k(\"canvas\"), n.width = i._options.minSize.width, n.height = i._options.minSize.height;\n var h = n.getContext(\"2d\");\n h.drawImage(t, 0, 0, n.width, n.height);\n }\n i._data.output.width = n.width, i._data.output.height = n.height, i._data.output.image = n, i._onTransformCanvas(function (t) {\n i._data = t, i._options.didTransform.apply(i, [i.data, i]), e(i._data.output.image);\n });\n });\n }\n }, {\n key: \"_onTransformCanvas\",\n value: function value(t) {\n this._options.willTransform.apply(this, [this.data, t, this]);\n }\n }, {\n key: \"_appendEditor\",\n value: function value() {\n var t = this;\n this._imageEditor || (this._imageEditor = new It(k(\"div\"), {\n minSize: this._options.minSize,\n devicePixelRatio: this._options.devicePixelRatio,\n buttonConfirmClassName: this._options.buttonConfirmClassName,\n buttonCancelClassName: this._options.buttonCancelClassName,\n buttonRotateClassName: this._options.buttonRotateClassName,\n buttonConfirmLabel: this._options.buttonConfirmLabel,\n buttonCancelLabel: this._options.buttonCancelLabel,\n buttonRotateLabel: this._options.buttonRotateLabel,\n buttonConfirmTitle: this._options.buttonConfirmTitle,\n buttonCancelTitle: this._options.buttonCancelTitle,\n buttonRotateTitle: this._options.buttonRotateTitle\n }), Nt.forEach(function (e) {\n t._imageEditor.element.addEventListener(e, t);\n }));\n }\n }, {\n key: \"_scaleDropArea\",\n value: function value(t) {\n var e = this._getRatioSpacerElement();\n e && this._element && (e.style.marginBottom = 100 * t + \"%\", this._element.setAttribute(\"data-ratio\", \"1:\" + t));\n }\n }, {\n key: \"_onCancel\",\n value: function value(t) {\n this._removeState(\"editor\"), this._options.didCancel.apply(this, [this]), this._showButtons(), this._hideEditor(), this._options.instantEdit && !this._hasInitialImage && this._isAutoCrop() && this._doRemove();\n }\n }, {\n key: \"_onConfirm\",\n value: function value(t) {\n var e = this,\n i = this._options.service && this._options.push;\n i ? this._startProgress(function () {\n e._updateProgress(.1);\n }) : this._startProgressLoop(), this._removeState(\"editor\"), this._addState(\"busy\"), this._output.value = \"\", this._data.actions.rotation = t.detail.rotation, this._data.actions.crop = t.detail.crop, this._data.actions.crop.type = At.MANUAL, this._applyTransforms(this._data.input.image, function (t) {\n e._options.didConfirm.apply(e, [e.data, e]);\n var n = e._getInOut(),\n o = \"out\" === n[0].className ? n[0] : n[1],\n a = o === n[0] ? n[1] : n[0];\n o.className = \"in\", o.style.opacity = \"0\", o.style.zIndex = \"2\", a.className = \"out\", a.style.zIndex = \"1\";\n var r = \"auto\" === e._options.devicePixelRatio ? window.devicePixelRatio : e._options.devicePixelRatio;\n o.src = \"\", o.src = ht(t, o.offsetWidth / t.width * r).toDataURL(), o.onload = function () {\n o.onload = null, \"free\" === e._options.ratio && (e._ratio = o.naturalHeight / o.naturalWidth, e._scaleDropArea(e._ratio)), e._hideEditor();\n var t = setTimeout(function () {\n e._showPreview(o, function () {\n e._save(function (t, n, o) {\n e._toggleButton(\"upload\", !0), i ? e._stopProgress() : e._stopProgressLoop(), e._removeState(\"busy\"), e._showButtons();\n }, i);\n });\n }, 250);\n e._timers.push(t);\n };\n });\n }\n }, {\n key: \"_cropAuto\",\n value: function value() {\n var t = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function (t) {},\n i = this._data.actions.rotation % 180 !== 0,\n n = tt(i ? this._data.input.image.height : this._data.input.image.width, i ? this._data.input.image.width : this._data.input.image.height, this._ratio);\n this._crop(n.x, n.y, n.width, n.height, t, At.AUTO);\n }\n }, {\n key: \"_crop\",\n value: function value(t, i, n, o) {\n var a = arguments.length > 4 && arguments[4] !== e ? arguments[4] : function (t) {},\n r = arguments.length > 5 && arguments[5] !== e ? arguments[5] : At.MANUAL;\n this._output.value = \"\", this._data.actions.crop = {\n x: t,\n y: i,\n width: n,\n height: o\n }, this._data.actions.crop.type = r, this._manualTransform(a);\n }\n }, {\n key: \"_manualTransform\",\n value: function value(t) {\n var e = this;\n this._startProgressLoop(), this._addState(\"busy\"), this._applyTransforms(this._data.input.image, function (i) {\n var n = e._getInOut(),\n o = \"out\" === n[0].className ? n[0] : n[1],\n a = o === n[0] ? n[1] : n[0];\n o.className = \"in\", o.style.opacity = \"1\", o.style.zIndex = \"2\", a.className = \"out\", a.style.zIndex = \"0\";\n var r = \"auto\" === e._options.devicePixelRatio ? window.devicePixelRatio : e._options.devicePixelRatio;\n o.src = \"\", o.src = ht(i, o.offsetWidth / i.width * r).toDataURL(), o.onload = function () {\n o.onload = null, \"free\" === e._options.ratio && (e._ratio = o.naturalHeight / o.naturalWidth, e._scaleDropArea(e._ratio));\n var i = e._options.service && e._options.push,\n n = function n() {\n e._save(function (n, o, a) {\n i || e._stopProgressLoop(), e._removeState(\"busy\"), t.apply(e, [e.data]);\n }, i);\n };\n i ? e._startProgress(n) : n();\n };\n });\n }\n }, {\n key: \"_save\",\n value: function value() {\n var t = this,\n i = arguments.length > 0 && arguments[0] !== e ? arguments[0] : function () {},\n n = !(arguments.length > 1 && arguments[1] !== e) || arguments[1];\n if (!this._isBeingDestroyed) {\n var o = this.dataBase64;\n this._options.service || this._isInitialising && !this._isImageOnly() || this._options.willSave.apply(this, [o, function (e) {\n t._store(e), t._options.didSave.apply(t, [e, t]);\n }, this]), this._isBeingDestroyed || (this._options.service && n && this._options.willSave.apply(this, [o, function (e) {\n t._addState(\"upload\"), t._imageHopper && t._options.dropReplace && (t._imageHopper.enabled = !1), t._upload(e, function (n, o) {\n t._imageHopper && t._options.dropReplace && (t._imageHopper.enabled = !0), n || t._storeServerResponse(o), t._options.didUpload.apply(t, [n, e, o, t]), t._removeState(\"upload\"), i(n, e, o);\n });\n }, this]), this._options.service && n || i());\n }\n }\n }, {\n key: \"_storeServerResponse\",\n value: function value(t) {\n this._isRequired && (this._input.required = !1), this._data.server = t, this._output.value = \"object\" === (\"undefined\" == typeof t ? \"undefined\" : c(t)) ? JSON.stringify(this._data.server) : t;\n }\n }, {\n key: \"_store\",\n value: function value(t) {\n this._isRequired && (this._input.required = !1), this._output.value = JSON.stringify(t);\n }\n }, {\n key: \"_upload\",\n value: function value(t, e) {\n var i = this;\n this.requestOutput(function (t, n) {\n var o = i._element.querySelector(\".slim-upload-status\"),\n a = i._options.willRequest,\n r = function r(t, e) {\n i._updateProgress(Math.max(.1, t / e));\n },\n s = function s(t) {\n var n = setTimeout(function () {\n if (!i._isBeingDestroyed) {\n o.innerHTML = i._options.statusUploadSuccess, o.setAttribute(\"data-state\", \"success\"), o.style.opacity = 1;\n var t = setTimeout(function () {\n o.style.opacity = 0;\n }, 2e3);\n i._timers.push(t);\n }\n }, 250);\n i._timers.push(n), e(null, t);\n },\n h = function h(t) {\n var n = \"\";\n n = \"file-too-big\" === t ? i._options.statusContentLength : i._options.didReceiveServerError.apply(i, [t, i._options.statusUnknownResponse, i]);\n var a = setTimeout(function () {\n o.innerHTML = n, o.setAttribute(\"data-state\", \"error\"), o.style.opacity = 1;\n }, 250);\n i._timers.push(a), e(t);\n };\n \"string\" == typeof i._options.service ? O(i._options.service, i._options.uploadMethod, n, a, r, s, h) : \"function\" == typeof i._options.service && i._options.service.apply(i, [\"file\" === i._options.serviceFormat ? t : n, r, s, h, i]);\n }, t);\n }\n }, {\n key: \"requestOutput\",\n value: function value(t, e) {\n var i = this;\n return this._data.input.file ? (e || (e = this.dataBase64), void n.parseMetaData(this._data.input.file, function (o) {\n var a = [],\n r = new FormData();\n if (L(\"input\", i._options.post) && (a.push(i._data.input.file), r.append(i._inputReference, i._data.input.file, i._data.input.file.name)), L(\"output\", i._options.post) && null !== i._data.output.image && i._options.uploadBase64 === !1) {\n var s = Z(e.output.image, e.output.name);\n if (o.imageHead && i._options.copyImageHead) try {\n s = new Blob([o.imageHead, n.blobSlice.call(s, 20)], {\n type: wt(e.output.image)\n }), s = G(s, e.output.name);\n } catch (h) {}\n a.push(s);\n var u = \"slim_output_\" + i._uid;\n e.output.image = null, e.output.field = u, r.append(u, s, e.output.name);\n }\n r.append(i._output.name, JSON.stringify(e)), t(a, r);\n }, {\n maxMetaDataSize: 262144,\n disableImageHead: !1\n })) : void t(null, null);\n }\n }, {\n key: \"_showEditor\",\n value: function value() {\n Ft.className = this._options.popoverClassName, Ft.show(), this._imageEditor.show();\n }\n }, {\n key: \"_hideEditor\",\n value: function value() {\n this._imageEditor.hide();\n var t = setTimeout(function () {\n Ft.hide();\n }, 250);\n this._timers.push(t);\n }\n }, {\n key: \"_showPreview\",\n value: function value(t, e) {\n u(t, {\n fromPosition: [0, 50, 0],\n position: [0, 0, 0],\n fromScale: [1.5, 1.5],\n scale: [1, 1],\n fromOpacity: 0,\n opacity: 1,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .7,\n complete: function complete() {\n z(t), e && e();\n }\n });\n }\n }, {\n key: \"_hideResult\",\n value: function value(t) {\n var e = this._getIntro();\n e && u(e, {\n fromScale: [1, 1],\n scale: [.5, .5],\n fromOpacity: 1,\n opacity: 0,\n easing: \"spring\",\n springConstant: .3,\n springDeceleration: .75,\n complete: function complete() {\n z(e), t && t();\n }\n });\n }\n }, {\n key: \"_showButtons\",\n value: function value(t) {\n if (this._btnGroup) {\n this._btnGroup.style.display = \"\";\n var e = {\n fromScale: [.5, .5],\n scale: [1, 1],\n fromPosition: [0, 10, 0],\n position: [0, 0, 0],\n fromOpacity: 0,\n opacity: 1,\n complete: function complete() {\n z(this);\n },\n allDone: function allDone() {\n t && t();\n }\n };\n this.isDetached() ? e.duration = 1 : (e.delay = function (t) {\n return 250 + 50 * t;\n }, e.easing = \"spring\", e.springConstant = .3, e.springDeceleration = .85), u(this._btnGroup.childNodes, e);\n }\n }\n }, {\n key: \"_hideButtons\",\n value: function value(t) {\n var e = this;\n if (this._btnGroup) {\n var i = {\n fromScale: [1, 1],\n scale: [.85, .85],\n fromOpacity: 1,\n opacity: 0,\n allDone: function allDone() {\n e._btnGroup.style.display = \"none\", t && t();\n }\n };\n this.isDetached() ? i.duration = 1 : (i.easing = \"spring\", i.springConstant = .3, i.springDeceleration = .75), u(this._btnGroup.childNodes, i);\n }\n }\n }, {\n key: \"_hideStatus\",\n value: function value() {\n var t = this._element.querySelector(\".slim-upload-status\");\n t.style.opacity = 0;\n }\n }, {\n key: \"_doEdit\",\n value: function value() {\n var t = this;\n this._data.input.image && (this._addState(\"editor\"), this._imageEditor || this._appendEditor(), this._imageEditor.showRotateButton = this._options.rotateButton, Ft.inner = this._imageEditor.element, this._imageEditor.open(st(this._data.input.image), \"free\" === this._options.ratio ? null : this._ratio, this._data.actions.crop, this._data.actions.rotation, function () {\n t._showEditor(), t._hideButtons(), t._hideStatus();\n }));\n }\n }, {\n key: \"_doRemove\",\n value: function value(t) {\n var e = this;\n if (!this._isImageOnly()) {\n this._clearState(), this._addState(\"empty\"), this._hasInitialImage = !1, this._imageHopper && (this._imageHopper.enabled = !0), this._isRequired && (this._input.required = !0);\n var i = this._getOutro();\n i && (i.style.opacity = \"0\");\n var n = this.data;\n this._resetData();\n var o = setTimeout(function () {\n e._isBeingDestroyed || (e._hideButtons(function () {\n e._toggleButton(\"upload\", !0);\n }), e._hideStatus(), e._hideResult(), e._options.didRemove.apply(e, [n, e]), t && t());\n }, this.isDetached() ? 0 : 250);\n return this._timers.push(o), n;\n }\n }\n }, {\n key: \"_doUpload\",\n value: function value(t) {\n var e = this;\n this._data.input.image && (this._addState(\"upload\"), this._startProgress(), this._hideButtons(function () {\n e._toggleButton(\"upload\", !1), e._save(function (i, n, o) {\n e._removeState(\"upload\"), e._stopProgress(), t && t.apply(e, [i, n, o]), i && e._toggleButton(\"upload\", !0), e._showButtons();\n });\n }));\n }\n }, {\n key: \"_doDownload\",\n value: function value() {\n var t = this._data.output.image;\n t && kt(this._data, this._options.jpegCompression, this._options.forceType);\n }\n }, {\n key: \"_doDestroy\",\n value: function value() {\n function t(t, e) {\n return 0 !== e.filter(function (e) {\n return t.name === e.name && t.value === e.value;\n }).length;\n }\n var e = this;\n this._isBeingDestroyed = !0, this._timers.forEach(function (t) {\n clearTimeout(t);\n }), this._timers = [], u(this._element, \"detach\"), this._imageHopper && (Ht.forEach(function (t) {\n e._imageHopper.element.removeEventListener(t, e);\n }), this._imageHopper.destroy(), this._imageHopper = null), this._imageEditor && (Nt.forEach(function (t) {\n e._imageEditor.element.removeEventListener(t, e);\n }), this._imageEditor.destroy(), this._imageEditor = null), St(this._btnGroup.children).forEach(function (t) {\n t.removeEventListener(\"click\", e);\n }), this._input.removeEventListener(\"change\", this), this._element !== this._originalElement && this._element.parentNode && this._element.parentNode.replaceChild(this._originalElement, this._element), this._originalElement.innerHTML = this._originalElementInner;\n var i = _(this._originalElement);\n i.forEach(function (i) {\n t(i, e._originalElementAttributes) || e._originalElement.removeAttribute(i.name);\n }), this._originalElementAttributes.forEach(function (n) {\n t(n, i) || e._originalElement.setAttribute(n.name, n.value);\n }), Wt = Math.max(0, Wt - 1), Ft && 0 === Wt && (Ft.destroy(), Ft = null), this._originalElement = null, this._element = null, this._input = null, this._output = null, this._btnGroup = null, this._options = null;\n }\n }, {\n key: \"dataBase64\",\n get: function get() {\n return bt(this._data, this._options.post, this._options.jpegCompression, this._options.forceType, null !== this._options.service);\n }\n }, {\n key: \"data\",\n get: function get() {\n return vt(this._data);\n }\n }, {\n key: \"element\",\n get: function get() {\n return this._element;\n }\n }, {\n key: \"service\",\n set: function set(t) {\n this._options.service = t;\n }\n }, {\n key: \"size\",\n set: function set(t) {\n this.setSize(t, null);\n }\n }, {\n key: \"rotation\",\n set: function set(t) {\n this.setRotation(t, null);\n }\n }, {\n key: \"forceSize\",\n set: function set(t) {\n this.setForceSize(t, null);\n }\n }, {\n key: \"ratio\",\n set: function set(t) {\n this.setRatio(t, null);\n }\n }], [{\n key: \"options\",\n value: function value() {\n var t = {\n edit: !0,\n instantEdit: !1,\n uploadBase64: !1,\n meta: {},\n ratio: \"free\",\n devicePixelRatio: 1,\n size: null,\n rotation: null,\n crop: null,\n post: [\"output\", \"actions\"],\n service: null,\n serviceFormat: null,\n filterSharpen: 0,\n push: !1,\n defaultInputName: \"slim[]\",\n minSize: {\n width: 0,\n height: 0\n },\n maxFileSize: null,\n jpegCompression: null,\n uploadMethod: \"POST\",\n download: !1,\n saveInitialImage: !1,\n forceType: !1,\n forceSize: null,\n forceMinSize: !0,\n dropReplace: !0,\n fetcher: null,\n internalCanvasSize: {\n width: 4096,\n height: 4096\n },\n copyImageHead: !1,\n rotateButton: !0,\n popoverClassName: null,\n label: \"

Drop your image here

\",\n labelLoading: \"

Loading image...

\",\n statusFileType: \"

Invalid file type, expects: $0.

\",\n statusFileSize: \"

File is too big, maximum file size: $0 MB.

\",\n statusNoSupport: \"

Your browser does not support image cropping.

\",\n statusImageTooSmall: \"

Image is too small, minimum size is: $0 pixels.

\",\n statusContentLength: ' The file is probably too big',\n statusUnknownResponse: ' An unknown error occurred',\n statusUploadSuccess: ' Saved',\n statusLocalUrlProblem: null,\n didInit: function didInit(t) {},\n didLoad: function didLoad(t, e, i) {\n return !0;\n },\n didSave: function didSave(t) {},\n didUpload: function didUpload(t, e, i) {},\n didReceiveServerError: function didReceiveServerError(t, e) {\n return e;\n },\n didRemove: function didRemove(t) {},\n didTransform: function didTransform(t) {},\n didConfirm: function didConfirm(t) {},\n didCancel: function didCancel() {},\n didThrowError: function didThrowError() {},\n willCropInitial: function willCropInitial(t, e) {\n e(null);\n },\n willTransform: function willTransform(t, e) {\n e(t);\n },\n willSave: function willSave(t, e) {\n e(t);\n },\n willRemove: function willRemove(t, e) {\n e();\n },\n willRequest: function willRequest(t, e) {},\n willFetch: function willFetch(t) {},\n willLoad: function willLoad(t) {}\n };\n return Bt.concat(It.Buttons).concat(\"rotate\").forEach(function (e) {\n var i = R(e);\n t[\"button\" + i + \"ClassName\"] = null, t[\"button\" + i + \"Label\"] = i, t[\"button\" + i + \"Title\"] = i;\n }), t;\n }\n }]), i;\n }();\n return function () {\n function t(t) {\n return t ? \"

\" + t + \"

\" : null;\n }\n function e(t) {\n var e = window,\n i = t.split(\".\");\n return i.forEach(function (t, n) {\n e[i[n]] && (e = e[i[n]]);\n }), e !== window ? e : null;\n }\n var i = [],\n n = function n(t) {\n for (var e = 0, n = i.length; e < n; e++) {\n if (i[e].isAttachedTo(t)) return e;\n }\n return -1;\n },\n o = function o(t) {\n return t;\n },\n a = function a(t) {\n return \"true\" === t;\n },\n r = function r(t) {\n return !t || \"true\" === t;\n },\n s = function s(e) {\n return t(e);\n },\n h = function h(t) {\n return t ? e(t) : null;\n },\n u = function u(t) {\n if (!t) return null;\n var e = zt(t, \",\");\n return {\n width: e[0],\n height: e[1]\n };\n },\n l = function l(t) {\n return t ? parseFloat(t) : null;\n },\n p = function p(t) {\n return t ? parseInt(t, 10) : null;\n },\n c = function c(t) {\n if (!t) return null;\n var e = {};\n return t.split(\",\").map(function (t) {\n return parseInt(t, 10);\n }).forEach(function (t, i) {\n e[Ut[i]] = t;\n }), e;\n },\n f = {\n download: a,\n edit: r,\n instantEdit: a,\n minSize: u,\n size: u,\n forceSize: u,\n forceMinSize: r,\n internalCanvasSize: u,\n service: function service(t) {\n if (\"undefined\" == typeof t) return null;\n var i = e(t);\n return i ? i : t;\n },\n serviceFormat: function serviceFormat(t) {\n return \"undefined\" == typeof t ? null : t;\n },\n fetcher: function fetcher(t) {\n return \"undefined\" == typeof t ? null : t;\n },\n push: a,\n rotation: function rotation(t) {\n return \"undefined\" == typeof t ? null : parseInt(t, 10);\n },\n crop: c,\n post: function post(t) {\n return t ? t.split(\",\").map(function (t) {\n return t.trim();\n }) : null;\n },\n defaultInputName: o,\n ratio: function ratio(t) {\n return t ? t : null;\n },\n maxFileSize: l,\n filterSharpen: p,\n jpegCompression: p,\n uploadBase64: a,\n forceType: o,\n dropReplace: r,\n saveInitialImage: a,\n copyImageHead: a,\n rotateButton: r,\n label: s,\n labelLoading: s,\n popoverClassName: o,\n devicePixelRatio: o,\n uploadMethod: o\n };\n [\"FileSize\", \"FileType\", \"NoSupport\", \"ImageTooSmall\"].forEach(function (t) {\n f[\"status\" + t] = s;\n }), [\"ContentLength\", \"UnknownResponse\", \"UploadSuccess\", \"localUrlProblem\"].forEach(function (t) {\n f[\"status\" + t] = o;\n }), [\"Init\", \"Load\", \"Save\", \"Upload\", \"Remove\", \"Transform\", \"ReceiveServerError\", \"Confirm\", \"Cancel\", \"ThrowError\"].forEach(function (t) {\n f[\"did\" + t] = h;\n }), [\"CropInitial\", \"Transform\", \"Save\", \"Remove\", \"Request\", \"Load\", \"Fetch\"].forEach(function (t) {\n f[\"will\" + t] = h;\n });\n var _ = [\"ClassName\", \"Label\", \"Title\"];\n Bt.concat(It.Buttons).concat(\"rotate\").forEach(function (t) {\n var e = R(t);\n _.forEach(function (t) {\n f[\"button\" + e + t] = o;\n });\n }), Gt.supported = function () {\n return !(\"[object OperaMini]\" === Object.prototype.toString.call(window.operamini) || \"undefined\" == typeof window.addEventListener || \"undefined\" == typeof window.FileReader || !(\"slice\" in Blob.prototype) || \"undefined\" == typeof window.URL || \"undefined\" == typeof window.URL.createObjectURL);\n }(), Gt.parse = function (t) {\n var e,\n i,\n n,\n o = [];\n for (e = t.querySelectorAll(\".slim:not([data-state])\"), n = e.length; n--;) {\n i = e[n], o.push(Gt.create(i, Gt.getOptionsFromAttributes(i)));\n }\n return o;\n }, Gt.getOptionsFromAttributes = function (t) {\n var e = d(t),\n i = {\n meta: {}\n };\n for (var n in e) {\n var o = f[n],\n a = e[n];\n o ? (a = o(a), a = null === a ? mt(Gt.options()[n]) : a, i[n] = a) : 0 === n.indexOf(\"meta\") && (i.meta[M(n.substr(4))] = a);\n }\n return i;\n }, Gt.find = function (t) {\n var e = i.filter(function (e) {\n return e.isAttachedTo(t);\n });\n return e ? e[0] : null;\n }, Gt.create = function (t, e) {\n if (!Gt.find(t)) {\n e || (e = Gt.getOptionsFromAttributes(t));\n var n = new Gt(t, e);\n return i.push(n), n;\n }\n }, Gt.destroy = function (t) {\n var e = n(t);\n return !(e < 0) && (i[e].destroy(), i.splice(e, 1), !0);\n };\n }(), Gt;\n }(), t.Slim.supported) \"loading\" !== document.readyState ? i() : document.addEventListener(\"DOMContentLoaded\", i);else {\n var n = t.getElementsByClassName(\"slim\"),\n o = 0,\n a = n.length;\n for (o = 0; o < a; o++) {\n n[o].className = \"\";\n }\n }\n}(window);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0IiwiZSIsImkiLCJTbGltIiwicGFyc2UiLCJkb2N1bWVudCIsIlR5cGVFcnJvciIsIm4iLCJvIiwid2lkdGgiLCJhIiwiaGVpZ2h0IiwiciIsIk1hdGgiLCJtYXgiLCJtaW4iLCJyb3VuZCIsInMiLCJoIiwic3QiLCJ1IiwibCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZHJhd0ltYWdlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkZXRhaWwiLCJjcmVhdGVFdmVudCIsImluaXRDdXN0b21FdmVudCIsIndpbmRvdyIsIkN1c3RvbUV2ZW50IiwicHJvdG90eXBlIiwiRXZlbnQiLCJvbmVycm9yIiwib25sb2FkIiwibm9SZXZva2UiLCJyZXZva2VPYmplY3RVUkwiLCJzY2FsZSIsImlzSW5zdGFuY2VPZiIsImNyZWF0ZU9iamVjdFVSTCIsIl90eXBlIiwidHlwZSIsImNyb3NzT3JpZ2luIiwic3JjIiwicmVhZEZpbGUiLCJ0YXJnZXQiLCJyZXN1bHQiLCJVUkwiLCJ3ZWJraXRVUkwiLCJPYmplY3QiLCJ0b1N0cmluZyIsImNhbGwiLCJ0cmFuc2Zvcm1Db29yZGluYXRlcyIsImdldFRyYW5zZm9ybWVkT3B0aW9ucyIsImFzcGVjdFJhdGlvIiwiaGFzT3duUHJvcGVydHkiLCJjcm9wIiwibmF0dXJhbFdpZHRoIiwibmF0dXJhbEhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwicmVuZGVySW1hZ2VUb0NhbnZhcyIsImhhc0NhbnZhc09wdGlvbiIsImNhbnZhcyIsImIiLCJrIiwicCIsImMiLCJkIiwiZiIsIl8iLCJtIiwiZyIsInYiLCJ5IiwidyIsImxlZnQiLCJ0b3AiLCJzb3VyY2VXaWR0aCIsInJpZ2h0Iiwic291cmNlSGVpZ2h0IiwiYm90dG9tIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJjb250YWluIiwiY292ZXIiLCJwaXhlbFJhdGlvIiwic3R5bGUiLCJkb3duc2FtcGxpbmdSYXRpbyIsIkZpbGVSZWFkZXIiLCJvcmllbnRhdGlvbiIsInRyYW5zbGF0ZSIsInJvdGF0ZSIsIlBJIiwiQmxvYiIsInNsaWNlIiwid2Via2l0U2xpY2UiLCJtb3pTbGljZSIsImJsb2JTbGljZSIsImFwcGx5IiwiYXJndW1lbnRzIiwibWV0YURhdGFQYXJzZXJzIiwianBlZyIsInBhcnNlTWV0YURhdGEiLCJtYXhNZXRhRGF0YVNpemUiLCJEYXRhVmlldyIsInNpemUiLCJlcnJvciIsImJ5dGVMZW5ndGgiLCJnZXRVaW50MTYiLCJsZW5ndGgiLCJkaXNhYmxlSW1hZ2VIZWFkIiwiaW1hZ2VIZWFkIiwiVWludDhBcnJheSIsInN1YmFycmF5IiwiRXhpZk1hcCIsIm1hcCIsIk9yaWVudGF0aW9uIiwiZ2V0IiwiZ2V0RXhpZlRodW1ibmFpbCIsImdldFVpbnQ4IiwicHVzaCIsImpvaW4iLCJleGlmVGFnVHlwZXMiLCJnZXRWYWx1ZSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImFzY2lpIiwiZ2V0VWludDMyIiwiZ2V0SW50MzIiLCJnZXRFeGlmVmFsdWUiLCJwYXJzZUV4aWZUYWciLCJleGlmIiwicGFyc2VFeGlmVGFncyIsInBhcnNlRXhpZkRhdGEiLCJkaXNhYmxlRXhpZiIsImRpc2FibGVFeGlmVGh1bWJuYWlsIiwiVGh1bWJuYWlsIiwiZGlzYWJsZUV4aWZTdWIiLCJkaXNhYmxlRXhpZkdwcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudEVsZW1lbnQiLCJBcnJheSIsIm1hdGNoIiwiT0xpbmsiLCJjaGFpbmVycyIsInRoZW4iLCJzbmFiYnQiLCJmb3JFYWNoIiwic2V0VmFsdWUiLCJmaW5pc2giLCJyb2xsYmFjayIsIiQiLCJKIiwiZGVsYXkiLCJjYWxsYmFjayIsImNvbXBsZXRlIiwiYWxsRG9uZSIsInZhbHVlRmVlZGVyIiwiZWFzaW5nIiwidGljayIsInVwZGF0ZUVsZW1lbnQiLCJpc1N0b3BwZWQiLCJjb21wbGV0ZWQiLCJsb29wIiwicmVzdGFydCIsInBvcCIsIlMiLCJ1bnNoaWZ0IiwibWFudWFsIiwicSIsIm1vdmVtZW50IiwiRSIsInN0b3AiLCJjb25jYXQiLCJjb250YWlucyIsInNwbGljZSIsImdldEN1cnJlbnRTdGF0ZSIsImZpbHRlciIsImJvZHkiLCJwYXJlbnROb2RlIiwicG9zaXRpb24iLCJyb3RhdGlvbiIsInJvdGF0aW9uUG9zdCIsInNrZXciLCJHIiwic2NhbGVQb3N0Iiwib3BhY2l0eSIsInN0YXJ0U3RhdGUiLCJlbmRTdGF0ZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwic2V0VGltZW91dCIsIngiLCJkdXJhdGlvbiIsInBlcnNwZWN0aXZlIiwiTCIsImNsb25lIiwidHJhbnNmb3JtT3JpZ2luIiwiViIsImoiLCJyZXNldEZyb20iLCJzZXRSZXZlcnNlIiwidXBkYXRlQ3VycmVudFRyYW5zZm9ybSIsInR3ZWVuIiwiYXNNYXRyaXgiLCJnZXRQcm9wZXJ0aWVzIiwiWCIsIlkiLCJpbml0aWFsVmVsb2NpdHkiLCJlcXVpbGlicml1bVBvc2l0aW9uIiwiVCIsImVxdWlsaWJyaXVtIiwidXBkYXRlTW92ZW1lbnQiLCJDIiwiUCIsImNvcyIsIk0iLCJSIiwicG93Iiwic3RhcnRQb3NpdGlvbiIsInNwcmluZ0NvbnN0YW50Iiwic3ByaW5nRGVjZWxlcmF0aW9uIiwic3ByaW5nTWFzcyIsImFicyIsIkkiLCJsaW5lYXIiLCJlYXNlIiwiZWFzZUluIiwiZWFzZU91dCIsIk8iLCJ6Iiwic2luIiwiRCIsIkEiLCJVIiwidGFuIiwiSCIsIk4iLCJCIiwiRiIsIkZsb2F0MzJBcnJheSIsImRhdGEiLCJhc0NTUyIsInRvRml4ZWQiLCJjbGVhciIsIlciLCJyb3RhdGVYIiwicm90YXRlWSIsInJvdGF0ZVoiLCJjcmVhdGVNYXRyaXgiLCJzZXRFbGVtZW50VHJhbnNmb3JtIiwiZ2V0RWxlbWVudEJ5SWQiLCJIVE1MQ2FudmFzRWxlbWVudCIsImdldEltYWdlRGF0YSIsIkVycm9yIiwiaXNOYU4iLCJwdXRJbWFnZURhdGEiLCJuZXh0IiwidG9CbG9iIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImF0b2IiLCJ0b0RhdGFVUkwiLCJzcGxpdCIsImNoYXJDb2RlQXQiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJrZXkiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwiZGF0YXNldCIsImF0dHJpYnV0ZXMiLCJuYW1lIiwidGVzdCIsInN1YnN0ciIsInJlcGxhY2UiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsIm9mZnNldFgiLCJsYXllclgiLCJvZmZzZXRZIiwibGF5ZXJZIiwiRVNDIiwiUkVUVVJOIiwiRE9XTiIsIk1PVkUiLCJVUCIsImpwZyIsImpwZSIsInBuZyIsImdpZiIsImJtcCIsImNsYXNzTmFtZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2hhbmdlZFRvdWNoZXMiLCJwYWdlWCIsInBhZ2VZIiwicGFnZVhPZmZzZXQiLCJzY3JvbGxMZWZ0IiwicGFnZVlPZmZzZXQiLCJzY3JvbGxUb3AiLCJ0b0xvd2VyQ2FzZSIsIlhNTEh0dHBSZXF1ZXN0IiwidXBsb2FkIiwibG9hZGVkIiwidG90YWwiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInN0YXR1cyIsInJlc3BvbnNlVGV4dCIsImluZGV4T2YiLCJKU09OIiwibWVzc2FnZSIsInNlbmQiLCJ3ZWJraXRUcmFuc2Zvcm0iLCJ0cmFuc2Zvcm0iLCJzaGlmdCIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsIkRhdGUiLCJGaWxlIiwibGFzdE1vZGlmaWVkIiwibm93IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2UiLCJndCIsInN0YXR1c1RleHQiLCJaIiwiQXJyYXlCdWZmZXIiLCJ3dCIsIksiLCJCbG9iQnVpbGRlciIsIldlYktpdEJsb2JCdWlsZGVyIiwiTW96QmxvYkJ1aWxkZXIiLCJNU0Jsb2JCdWlsZGVyIiwiYXBwZW5kIiwiZ2V0QmxvYiIsIlEiLCJ0dCIsImV0IiwiZmlsdGVycyIsIm1pblNpemUiLCJzaGFycGVuIiwibnQiLCJhdCIsIml0Iiwib3QiLCJjcmVhdGVJbWFnZURhdGEiLCJzZXQiLCJzcXJ0IiwicnQiLCJodCIsInV0IiwibHQiLCJwdCIsImN0IiwicGFyc2VJbnQiLCJkdCIsImZ0IiwiX3QiLCJuZXh0U2libGluZyIsImFwcGVuZENoaWxkIiwicmVzZXQiLCJpbnNlcnRCZWZvcmUiLCJtdCIsInN0cmluZ2lmeSIsInZ0IiwiaW5wdXQiLCJmaWxlIiwib3V0cHV0IiwiaW1hZ2UiLCJ5dCIsInN1YnN0cmluZyIsImJ0Iiwic2VydmVyIiwibWV0YSIsImZpZWxkIiwiYWN0aW9ucyIsImt0IiwibmF2aWdhdG9yIiwibXNTYXZlQmxvYiIsImRpc3BsYXkiLCJkb3dubG9hZCIsImhyZWYiLCJjbGljayIsInJlbW92ZUNoaWxkIiwieHQiLCJxdWVyeVNlbGVjdG9yIiwiU3QiLCJFdCIsIkN0IiwiUHQiLCJNdCIsIlJ0IiwiVHQiLCJuZSIsInNlIiwic3ciLCJudyIsIl9lbGVtZW50IiwiX2ludGVyYWN0aW9uIiwiX21pbldpZHRoIiwiX21pbkhlaWdodCIsIl9yYXRpbyIsIl9yZWN0IiwiX3NwYWNlIiwiX3JlY3RDaGFuZ2VkIiwiX2luaXQiLCJfcmVkcmF3IiwiZGlzcGF0Y2hFdmVudCIsIl9vblN0YXJ0RHJhZyIsIl9vbkRyYWciLCJfb25TdG9wRHJhZyIsInByZXZlbnREZWZhdWx0Iiwib2Zmc2V0Iiwic2V0QXR0cmlidXRlIiwiY3NzVGV4dCIsIkl0IiwiX29wdGlvbnMiLCJvcHRpb25zIiwiX291dHB1dCIsIl9yb3RhdGluZyIsIl9pbnB1dCIsIl9wcmV2aWV3IiwiX3ByZXZpZXdCbHVycmVkIiwiX2JsdXJyZWRQcmV2aWV3IiwiX2Nyb3BwZXIiLCJfc3RyYWlnaHRDcm9wIiwiX3ByZXZpZXdXcmFwcGVyIiwiX2N1cnJlbnRXaW5kb3dTaXplIiwiX2J0bkdyb3VwIiwiX21hc2tGcmFtZSIsIl9kaXJ0eSIsIl93cmFwcGVyUm90YXRpb24iLCJfd3JhcHBlclNjYWxlIiwiX2NvbnRhaW5lciIsIl93cmFwcGVyIiwiX3N0YWdlIiwiZWxlbWVudCIsIl9wcmV2aWV3TWFzayIsIkJ1dHRvbnMiLCJpbm5lckhUTUwiLCJ0aXRsZSIsIl91dGlsc0dyb3VwIiwiYnV0dG9uUm90YXRlQ2xhc3NOYW1lIiwiYnV0dG9uUm90YXRlVGl0bGUiLCJfb25DbGljayIsIl9vbkdyaWRDaGFuZ2UiLCJfb25HcmlkSW5wdXQiLCJfb25LZXlEb3duIiwiX29uUmVzaXplIiwia2V5Q29kZSIsIl9jb25maXJtIiwiX2NhbmNlbCIsImNsYXNzTGlzdCIsIl9yb3RhdGUiLCJpbm5lcldpZHRoIiwiaW5uZXJIZWlnaHQiLCJfcmVkcmF3Q3JvcHBlciIsImFyZWEiLCJfdXBkYXRlV3JhcHBlclNjYWxlIiwiX3JlZHJhd1dyYXBwZXIiLCJfcmVkcmF3Q3JvcE1hc2siLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsIl91cGRhdGVXcmFwcGVyUm90YXRpb24iLCJyYXRpbyIsIl9oaWRlQ3JvcHBlciIsIl9zaG93Q3JvcHBlciIsImZyb21PcGFjaXR5IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJfcHJldmlld1NpemUiLCJkZXZpY2VQaXhlbFJhdGlvIiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImxpbWl0Iiwic2NhbGFyIiwicmVzaXplIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJmcm9tUm90YXRpb24iLCJmcm9tUG9zaXRpb24iLCJmcm9tU2NhbGUiLCJkaXJ0eSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsImRlc3Ryb3kiLCJyZW1vdmUiLCJhZGQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJidXR0b25DYW5jZWxDbGFzc05hbWUiLCJidXR0b25Db25maXJtQ2xhc3NOYW1lIiwiYnV0dG9uQ2FuY2VsTGFiZWwiLCJidXR0b25Db25maXJtTGFiZWwiLCJidXR0b25DYW5jZWxUaXRsZSIsImJ1dHRvbkNvbmZpcm1UaXRsZSIsIkx0IiwiX2FjY2VwdCIsIl9hbGxvd1VSTHMiLCJfZHJhZ1BhdGgiLCJmaWxlcyIsImFyZVZhbGlkRGF0YVRyYW5zZmVyRmlsZXMiLCJpdGVtcyIsImFyZVZhbGlkRGF0YVRyYW5zZmVySXRlbXMiLCJraW5kIiwiX29uRHJhZ092ZXIiLCJfb25EcmFnTGVhdmUiLCJfb25Ecm9wIiwiZGF0YVRyYW5zZmVyIiwiZ2V0RGF0YSIsInJlbW90ZSIsImlzVmFsaWREYXRhVHJhbnNmZXIiLCJkcm9wRWZmZWN0IiwiT3QiLCJfaW5uZXIiLCJmaXJzdENoaWxkIiwienQiLCJEdCIsIm5vZGVOYW1lIiwiQXQiLCJBVVRPIiwiSU5JVElBTCIsIk1BTlVBTCIsIlV0IiwiSHQiLCJOdCIsIkJ0IiwiRnQiLCJXdCIsInF0IiwianQiLCJWdCIsIkd0IiwiX3VpZCIsImZvcmNlU2l6ZSIsInBvc3QiLCJ0cmltIiwiX29yaWdpbmFsRWxlbWVudCIsIl9vcmlnaW5hbEVsZW1lbnRJbm5lciIsIl9vcmlnaW5hbEVsZW1lbnRBdHRyaWJ1dGVzIiwiX3N0YXRlIiwiX3RpbWVycyIsIl9pbnB1dFJlZmVyZW5jZSIsIl9pc1JlcXVpcmVkIiwiX2ltYWdlSG9wcGVyIiwiX2ltYWdlRWRpdG9yIiwiX3Byb2dyZXNzRW5hYmxlZCIsIl9kYXRhIiwiX3Jlc2V0RGF0YSIsIl9kcmlwIiwiX2hhc0luaXRpYWxJbWFnZSIsIl9pbml0aWFsQ3JvcCIsIl9pbml0aWFsUm90YXRpb24iLCJfaXNCZWluZ0Rlc3Ryb3llZCIsInN1cHBvcnRlZCIsIl9mYWxsYmFjayIsIl9tYW51YWxUcmFuc2Zvcm0iLCJzZXRSYXRpbyIsIl9pc0ZpeGVkUmF0aW8iLCJfY3JvcEF1dG8iLCJfc2NhbGVEcm9wQXJlYSIsIl9sb2FkIiwiYmxvY2tQdXNoIiwiX2RvVXBsb2FkIiwiX2RvRG93bmxvYWQiLCJfZG9SZW1vdmUiLCJfZG9EZXN0cm95IiwiX2RvRWRpdCIsIl9jcm9wIiwiaW5zdGFudEVkaXQiLCJfaXNJbml0aWFsaXNpbmciLCJfZ2V0RmlsZUlucHV0IiwiX2dldEluaXRpYWxJbWFnZSIsIl91cGRhdGVTdGF0ZSIsIl9hZGRTdGF0ZSIsIl9nZXRJbnB1dEVsZW1lbnQiLCJyZXF1aXJlZCIsIkltYWdlIiwiZGVmYXVsdElucHV0TmFtZSIsInJlbW92ZUF0dHJpYnV0ZSIsImdldEF0dHJpYnV0ZSIsIl9pc0ltYWdlT25seSIsImxhYmVsTG9hZGluZyIsInNlcnZpY2UiLCJoYXNBdHRyaWJ1dGUiLCJhY2NlcHQiLCJhbGxvd1VSTHMiLCJmZXRjaGVyIiwibGFiZWwiLCJfaXNCdXR0b25BbGxvd2VkIiwiX3VwZGF0ZVByb2dyZXNzIiwiX29uSW5pdCIsImRpZEluaXQiLCJzYXZlSW5pdGlhbEltYWdlIiwiY29udGFpbnNJbWFnZSIsIl9zYXZlIiwiX3RvZ2dsZUJ1dHRvbiIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJfc3RvcFByb2dyZXNzTG9vcCIsInBhcnNlRmxvYXQiLCJlZGl0IiwiX3Rocm93RXJyb3IiLCJzdGF0dXNOb1N1cHBvcnQiLCJfb25DaGFuZ2UiLCJfb25DYW5jZWwiLCJfb25Db25maXJtIiwiX29uRmlsZU92ZXIiLCJfb25GaWxlT3V0IiwiX29uRHJvcEZpbGUiLCJfb25JbnZhbGlkRmlsZSIsIl9vbkludmFsaWRGaWxlRHJvcCIsImRpZFRocm93RXJyb3IiLCJfcmVtb3ZlU3RhdGUiLCJfcmVtb3ZlRXJyb3IiLCJfb3BlbkZpbGVEaWFsb2ciLCJ3aWxsUmVtb3ZlIiwiX2dldERyaXAiLCJzdGF0dXNGaWxlVHlwZSIsInN0YXR1c0ltYWdlVG9vU21hbGwiLCJzdGF0dXNGaWxlU2l6ZSIsIm1heEZpbGVTaXplIiwic3RhdHVzTG9jYWxVcmxQcm9ibGVtIiwiZHJhZ1BhdGgiLCJjbGVhclRpbWVvdXQiLCJfcmVwbGFjZVRpbWVvdXQiLCJfc3RhcnRQcm9ncmVzc0xvb3AiLCJlbmFibGVkIiwiX2xvYWRUaW1lb3V0Iiwid2lsbExvYWQiLCJfb25Mb2NhbFVSTFByb2JsZW0iLCJ3aWxsRmV0Y2giLCJfb25SZW1vdGVVUkxQcm9ibGVtIiwiX29uT3ZlcldlaWdodEZpbGUiLCJpbnRlcm5hbENhbnZhc1NpemUiLCJfb25JbWFnZVRvb1NtYWxsIiwiZGlkTG9hZCIsImRyb3BSZXBsYWNlIiwiX2dldEludHJvIiwiaXNEZXRhY2hlZCIsIl9jYW5JbnN0YW50RWRpdCIsIl9sb2FkQ2FudmFzIiwiX3Nob3dCdXR0b25zIiwiX2FwcGx5VHJhbnNmb3JtcyIsIl9zdGFydFByb2dyZXNzIiwiX3N0b3BQcm9ncmVzcyIsIndpbGxDcm9wSW5pdGlhbCIsImZpbHRlclNoYXJwZW4iLCJmb3JjZU1pblNpemUiLCJfb25UcmFuc2Zvcm1DYW52YXMiLCJkaWRUcmFuc2Zvcm0iLCJ3aWxsVHJhbnNmb3JtIiwiYnV0dG9uUm90YXRlTGFiZWwiLCJfZ2V0UmF0aW9TcGFjZXJFbGVtZW50IiwibWFyZ2luQm90dG9tIiwiZGlkQ2FuY2VsIiwiX2hpZGVFZGl0b3IiLCJfaXNBdXRvQ3JvcCIsImRpZENvbmZpcm0iLCJfZ2V0SW5PdXQiLCJ6SW5kZXgiLCJfc2hvd1ByZXZpZXciLCJkYXRhQmFzZTY0Iiwid2lsbFNhdmUiLCJfc3RvcmUiLCJkaWRTYXZlIiwiX3VwbG9hZCIsIl9zdG9yZVNlcnZlclJlc3BvbnNlIiwiZGlkVXBsb2FkIiwicmVxdWVzdE91dHB1dCIsIndpbGxSZXF1ZXN0Iiwic3RhdHVzVXBsb2FkU3VjY2VzcyIsInN0YXR1c0NvbnRlbnRMZW5ndGgiLCJkaWRSZWNlaXZlU2VydmVyRXJyb3IiLCJzdGF0dXNVbmtub3duUmVzcG9uc2UiLCJ1cGxvYWRNZXRob2QiLCJzZXJ2aWNlRm9ybWF0IiwiRm9ybURhdGEiLCJ1cGxvYWRCYXNlNjQiLCJjb3B5SW1hZ2VIZWFkIiwicG9wb3ZlckNsYXNzTmFtZSIsInNob3ciLCJoaWRlIiwiX2FwcGVuZEVkaXRvciIsInNob3dSb3RhdGVCdXR0b24iLCJyb3RhdGVCdXR0b24iLCJpbm5lciIsIl9zaG93RWRpdG9yIiwiX2hpZGVCdXR0b25zIiwiX2hpZGVTdGF0dXMiLCJfY2xlYXJTdGF0ZSIsIl9nZXRPdXRybyIsIl9oaWRlUmVzdWx0IiwiZGlkUmVtb3ZlIiwianBlZ0NvbXByZXNzaW9uIiwiZm9yY2VUeXBlIiwicmVwbGFjZUNoaWxkIiwic2V0U2l6ZSIsInNldFJvdGF0aW9uIiwic2V0Rm9yY2VTaXplIiwiaXNBdHRhY2hlZFRvIiwib3BlcmFtaW5pIiwiY3JlYXRlIiwiZ2V0T3B0aW9uc0Zyb21BdHRyaWJ1dGVzIiwiZmluZCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3NsaW0ua2lja3N0YXJ0Lm1pbi5qcz9jNTE3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBTbGltIHY0LjE5LjAgLSBJbWFnZSBDcm9wcGluZyBNYWRlIEVhc3lcbiAqIENvcHlyaWdodCAoYykgMjAxOCBSaWsgU2NoZW5uaW5rIC0gaHR0cDovL3NsaW1pbWFnZWNyb3BwZXIuY29tXG4gKi9cbiFmdW5jdGlvbiAodCwgZSkge1xuICAgIGZ1bmN0aW9uIGkoKSB7XG4gICAgICAgIHQuU2xpbS5wYXJzZShkb2N1bWVudClcbiAgICB9XG5cbiAgICBpZiAodCkgaWYgKHQuU2xpbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZnVuY3Rpb24gdCh0LCBlKSB7XG4gICAgICAgICAgICBpZiAoISh0IGluc3RhbmNlb2YgZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIilcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGkodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgaWYgKCEoZSA+PSAxKSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSB0LndpZHRoLCBhID0gdC5oZWlnaHQsIHIgPSBNYXRoLm1heChuLndpZHRoLCBNYXRoLm1pbihpLndpZHRoLCBNYXRoLnJvdW5kKHQud2lkdGggKiBlKSkpLCBzID0gTWF0aC5tYXgobi5oZWlnaHQsIE1hdGgubWluKGkuaGVpZ2h0LCBNYXRoLnJvdW5kKHQuaGVpZ2h0ICogZSkpKSwgaCA9IHN0KHQpLCB1ID0gdm9pZCAwLCBsID0gdm9pZCAwOyBvID4gciAmJiBhID4gczspIHUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLCBvID0gTWF0aC5yb3VuZCguNSAqIGgud2lkdGgpLCBhID0gTWF0aC5yb3VuZCguNSAqIGguaGVpZ2h0KSwgbyA8IHIgJiYgKG8gPSByKSwgYSA8IHMgJiYgKGEgPSBzKSwgdS53aWR0aCA9IG8sIHUuaGVpZ2h0ID0gYSwgbCA9IHUuZ2V0Q29udGV4dChcIjJkXCIpLCBsLmRyYXdJbWFnZShoLCAwLCAwLCBvLCBhKSwgaCA9IHN0KHUpO1xuICAgICAgICAgICAgICAgIHQud2lkdGggPSByLCB0LmhlaWdodCA9IHMsIGwgPSB0LmdldENvbnRleHQoXCIyZFwiKSwgbC5kcmF3SW1hZ2UoaCwgMCwgMCwgciwgcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICFmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiB0KHQsIGkpIHtcbiAgICAgICAgICAgICAgICBpID0gaSB8fCB7YnViYmxlczogITEsIGNhbmNlbGFibGU6ICExLCBkZXRhaWw6IGV9O1xuICAgICAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbi5pbml0Q3VzdG9tRXZlbnQodCwgaS5idWJibGVzLCBpLmNhbmNlbGFibGUsIGkuZGV0YWlsKSwgblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gXCJmdW5jdGlvblwiICE9IHR5cGVvZiB3aW5kb3cuQ3VzdG9tRXZlbnQgJiYgKHQucHJvdG90eXBlID0gd2luZG93LkV2ZW50LnByb3RvdHlwZSwgdm9pZCh3aW5kb3cuQ3VzdG9tRXZlbnQgPSB0KSlcbiAgICAgICAgfSgpO1xuICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG8sIGEsIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgICAgICAgICAgICAgIGlmIChyLm9uZXJyb3IgPSBlLCByLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgIWEgfHwgaSAmJiBpLm5vUmV2b2tlIHx8IG4ucmV2b2tlT2JqZWN0VVJMKGEpLCBlICYmIGUobi5zY2FsZShyLCBpKSlcbiAgICAgICAgICAgICAgICB9LCBuLmlzSW5zdGFuY2VPZihcIkJsb2JcIiwgdCkgfHwgbi5pc0luc3RhbmNlT2YoXCJGaWxlXCIsIHQpKSBvID0gYSA9IG4uY3JlYXRlT2JqZWN0VVJMKHQpLCByLl90eXBlID0gdC50eXBlOyBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFwic3RyaW5nXCIgIT0gdHlwZW9mIHQpIHJldHVybiAhMTtcbiAgICAgICAgICAgICAgICAgICAgbyA9IHQsIGkgJiYgaS5jcm9zc09yaWdpbiAmJiAoci5jcm9zc09yaWdpbiA9IGkuY3Jvc3NPcmlnaW4pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvID8gKHIuc3JjID0gbywgcikgOiBuLnJlYWRGaWxlKHQsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgIGkgJiYgaS5yZXN1bHQgPyByLnNyYyA9IGkucmVzdWx0IDogZSAmJiBlKHQpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvID0gd2luZG93LmNyZWF0ZU9iamVjdFVSTCAmJiB3aW5kb3cgfHwgd2luZG93LlVSTCAmJiBVUkwucmV2b2tlT2JqZWN0VVJMICYmIFVSTCB8fCB3aW5kb3cud2Via2l0VVJMICYmIHdlYmtpdFVSTDtcbiAgICAgICAgbi5pc0luc3RhbmNlT2YgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSA9PT0gXCJbb2JqZWN0IFwiICsgdCArIFwiXVwiXG4gICAgICAgIH0sIG4udHJhbnNmb3JtQ29vcmRpbmF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIH0sIG4uZ2V0VHJhbnNmb3JtZWRPcHRpb25zID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgIHZhciBpLCBuLCBvLCBhLCByID0gZS5hc3BlY3RSYXRpbztcbiAgICAgICAgICAgIGlmICghcikgcmV0dXJuIGU7XG4gICAgICAgICAgICBpID0ge307XG4gICAgICAgICAgICBmb3IgKG4gaW4gZSkgZS5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoaVtuXSA9IGVbbl0pO1xuICAgICAgICAgICAgcmV0dXJuIGkuY3JvcCA9ICEwLCBvID0gdC5uYXR1cmFsV2lkdGggfHwgdC53aWR0aCwgYSA9IHQubmF0dXJhbEhlaWdodCB8fCB0LmhlaWdodCwgbyAvIGEgPiByID8gKGkubWF4V2lkdGggPSBhICogciwgaS5tYXhIZWlnaHQgPSBhKSA6IChpLm1heFdpZHRoID0gbywgaS5tYXhIZWlnaHQgPSBvIC8gciksIGlcbiAgICAgICAgfSwgbi5yZW5kZXJJbWFnZVRvQ2FudmFzID0gZnVuY3Rpb24gKHQsIGUsIGksIG4sIG8sIGEsIHIsIHMsIGgsIHUpIHtcbiAgICAgICAgICAgIHJldHVybiB0LmdldENvbnRleHQoXCIyZFwiKS5kcmF3SW1hZ2UoZSwgaSwgbiwgbywgYSwgciwgcywgaCwgdSksIHRcbiAgICAgICAgfSwgbi5oYXNDYW52YXNPcHRpb24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgcmV0dXJuIHQuY2FudmFzIHx8IHQuY3JvcCB8fCAhIXQuYXNwZWN0UmF0aW9cbiAgICAgICAgfSwgbi5zY2FsZSA9IGZ1bmN0aW9uICh0LCBpKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBvKCkge1xuICAgICAgICAgICAgICAgIHZhciB0ID0gTWF0aC5tYXgoKGggfHwgYikgLyBiLCAodSB8fCBrKSAvIGspO1xuICAgICAgICAgICAgICAgIHQgPiAxICYmIChiICo9IHQsIGsgKj0gdClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IE1hdGgubWluKChyIHx8IGIpIC8gYiwgKHMgfHwgaykgLyBrKTtcbiAgICAgICAgICAgICAgICB0IDwgMSAmJiAoYiAqPSB0LCBrICo9IHQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkgPSBpIHx8IHt9O1xuICAgICAgICAgICAgdmFyIHIsIHMsIGgsIHUsIGwsIHAsIGMsIGQsIGYsIF8sIG0sIGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLFxuICAgICAgICAgICAgICAgIHYgPSB0LmdldENvbnRleHQgfHwgbi5oYXNDYW52YXNPcHRpb24oaSkgJiYgZy5nZXRDb250ZXh0LCB5ID0gdC5uYXR1cmFsV2lkdGggfHwgdC53aWR0aCxcbiAgICAgICAgICAgICAgICB3ID0gdC5uYXR1cmFsSGVpZ2h0IHx8IHQuaGVpZ2h0LCBiID0geSwgayA9IHc7XG4gICAgICAgICAgICBpZiAodiAmJiAoaSA9IG4uZ2V0VHJhbnNmb3JtZWRPcHRpb25zKHQsIGkpLCBjID0gaS5sZWZ0IHx8IDAsIGQgPSBpLnRvcCB8fCAwLCBpLnNvdXJjZVdpZHRoID8gKGwgPSBpLnNvdXJjZVdpZHRoLCBpLnJpZ2h0ICE9PSBlICYmIGkubGVmdCA9PT0gZSAmJiAoYyA9IHkgLSBsIC0gaS5yaWdodCkpIDogbCA9IHkgLSBjIC0gKGkucmlnaHQgfHwgMCksIGkuc291cmNlSGVpZ2h0ID8gKHAgPSBpLnNvdXJjZUhlaWdodCwgaS5ib3R0b20gIT09IGUgJiYgaS50b3AgPT09IGUgJiYgKGQgPSB3IC0gcCAtIGkuYm90dG9tKSkgOiBwID0gdyAtIGQgLSAoaS5ib3R0b20gfHwgMCksIGIgPSBsLCBrID0gcCksIHIgPSBpLm1heFdpZHRoLCBzID0gaS5tYXhIZWlnaHQsIGggPSBpLm1pbldpZHRoLCB1ID0gaS5taW5IZWlnaHQsIHYgJiYgciAmJiBzICYmIGkuY3JvcCA/IChiID0gciwgayA9IHMsIG0gPSBsIC8gcCAtIHIgLyBzLCBtIDwgMCA/IChwID0gcyAqIGwgLyByLCBpLnRvcCA9PT0gZSAmJiBpLmJvdHRvbSA9PT0gZSAmJiAoZCA9ICh3IC0gcCkgLyAyKSkgOiBtID4gMCAmJiAobCA9IHIgKiBwIC8gcywgaS5sZWZ0ID09PSBlICYmIGkucmlnaHQgPT09IGUgJiYgKGMgPSAoeSAtIGwpIC8gMikpKSA6ICgoaS5jb250YWluIHx8IGkuY292ZXIpICYmIChoID0gciA9IHIgfHwgaCwgdSA9IHMgPSBzIHx8IHUpLCBpLmNvdmVyID8gKGEoKSwgbygpKSA6IChvKCksIGEoKSkpLCB2KSB7XG4gICAgICAgICAgICAgICAgaWYgKGYgPSBpLnBpeGVsUmF0aW8sIGYgPiAxICYmIChnLnN0eWxlLndpZHRoID0gYiArIFwicHhcIiwgZy5zdHlsZS5oZWlnaHQgPSBrICsgXCJweFwiLCBiICo9IGYsIGsgKj0gZiwgZy5nZXRDb250ZXh0KFwiMmRcIikuc2NhbGUoZiwgZikpLCBfID0gaS5kb3duc2FtcGxpbmdSYXRpbywgXyA+IDAgJiYgXyA8IDEgJiYgYiA8IGwgJiYgayA8IHApIGZvciAoOyBsICogXyA+IGI7KSBnLndpZHRoID0gbCAqIF8sIGcuaGVpZ2h0ID0gcCAqIF8sIG4ucmVuZGVySW1hZ2VUb0NhbnZhcyhnLCB0LCBjLCBkLCBsLCBwLCAwLCAwLCBnLndpZHRoLCBnLmhlaWdodCksIGwgPSBnLndpZHRoLCBwID0gZy5oZWlnaHQsIHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLCB0LndpZHRoID0gbCwgdC5oZWlnaHQgPSBwLCBuLnJlbmRlckltYWdlVG9DYW52YXModCwgZywgMCwgMCwgbCwgcCwgMCwgMCwgbCwgcCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGcud2lkdGggPSBiLCBnLmhlaWdodCA9IGssIG4udHJhbnNmb3JtQ29vcmRpbmF0ZXMoZywgaSksIG4ucmVuZGVySW1hZ2VUb0NhbnZhcyhnLCB0LCBjLCBkLCBsLCBwLCAwLCAwLCBiLCBrKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHQud2lkdGggPSBiLCB0LmhlaWdodCA9IGssIHRcbiAgICAgICAgfSwgbi5jcmVhdGVPYmplY3RVUkwgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgcmV0dXJuICEhbyAmJiBvLmNyZWF0ZU9iamVjdFVSTCh0KVxuICAgICAgICB9LCBuLnJldm9rZU9iamVjdFVSTCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gISFvICYmIG8ucmV2b2tlT2JqZWN0VVJMKHQpXG4gICAgICAgIH0sIG4ucmVhZEZpbGUgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5GaWxlUmVhZGVyKSB7XG4gICAgICAgICAgICAgICAgdmFyIG4gPSBuZXcgRmlsZVJlYWRlcjtcbiAgICAgICAgICAgICAgICBpZiAobi5vbmxvYWQgPSBuLm9uZXJyb3IgPSBlLCBpID0gaSB8fCBcInJlYWRBc0RhdGFVUkxcIiwgbltpXSkgcmV0dXJuIG5baV0odCksIG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhMVxuICAgICAgICB9O1xuICAgICAgICB2YXIgYSA9IG4uaGFzQ2FudmFzT3B0aW9uLCByID0gbi50cmFuc2Zvcm1Db29yZGluYXRlcywgcyA9IG4uZ2V0VHJhbnNmb3JtZWRPcHRpb25zO1xuICAgICAgICBuLmhhc0NhbnZhc09wdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gISF0Lm9yaWVudGF0aW9uIHx8IGEuY2FsbChuLCB0KVxuICAgICAgICB9LCBuLnRyYW5zZm9ybUNvb3JkaW5hdGVzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgIHIuY2FsbChuLCB0LCBlKTtcbiAgICAgICAgICAgIHZhciBpID0gdC5nZXRDb250ZXh0KFwiMmRcIiksIG8gPSB0LndpZHRoLCBhID0gdC5oZWlnaHQsIHMgPSB0LnN0eWxlLndpZHRoLCBoID0gdC5zdHlsZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgdSA9IGUub3JpZW50YXRpb247XG4gICAgICAgICAgICBpZiAodSAmJiAhKHUgPiA4KSkgc3dpdGNoICh1ID4gNCAmJiAodC53aWR0aCA9IGEsIHQuaGVpZ2h0ID0gbywgdC5zdHlsZS53aWR0aCA9IGgsIHQuc3R5bGUuaGVpZ2h0ID0gcyksIHUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGkudHJhbnNsYXRlKG8sIDApLCBpLnNjYWxlKC0xLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBpLnRyYW5zbGF0ZShvLCBhKSwgaS5yb3RhdGUoTWF0aC5QSSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgaS50cmFuc2xhdGUoMCwgYSksIGkuc2NhbGUoMSwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGkucm90YXRlKC41ICogTWF0aC5QSSksIGkuc2NhbGUoMSwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgIGkucm90YXRlKC41ICogTWF0aC5QSSksIGkudHJhbnNsYXRlKDAsIC1hKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICBpLnJvdGF0ZSguNSAqIE1hdGguUEkpLCBpLnRyYW5zbGF0ZShvLCAtYSksIGkuc2NhbGUoLTEsIDEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIGkucm90YXRlKC0uNSAqIE1hdGguUEkpLCBpLnRyYW5zbGF0ZSgtbywgMClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbi5nZXRUcmFuc2Zvcm1lZE9wdGlvbnMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgdmFyIGksIG8sIGEgPSBzLmNhbGwobiwgdCwgZSksIHIgPSBhLm9yaWVudGF0aW9uO1xuICAgICAgICAgICAgaWYgKCFyIHx8IHIgPiA4IHx8IDEgPT09IHIpIHJldHVybiBhO1xuICAgICAgICAgICAgaSA9IHt9O1xuICAgICAgICAgICAgZm9yIChvIGluIGEpIGEuaGFzT3duUHJvcGVydHkobykgJiYgKGlbb10gPSBhW29dKTtcbiAgICAgICAgICAgIHN3aXRjaCAoYS5vcmllbnRhdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgaS5sZWZ0ID0gYS5yaWdodCwgaS5yaWdodCA9IGEubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBpLmxlZnQgPSBhLnJpZ2h0LCBpLnRvcCA9IGEuYm90dG9tLCBpLnJpZ2h0ID0gYS5sZWZ0LCBpLmJvdHRvbSA9IGEudG9wO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGkudG9wID0gYS5ib3R0b20sIGkuYm90dG9tID0gYS50b3A7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgaS5sZWZ0ID0gYS50b3AsIGkudG9wID0gYS5sZWZ0LCBpLnJpZ2h0ID0gYS5ib3R0b20sIGkuYm90dG9tID0gYS5yaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICBpLmxlZnQgPSBhLnRvcCwgaS50b3AgPSBhLnJpZ2h0LCBpLnJpZ2h0ID0gYS5ib3R0b20sIGkuYm90dG9tID0gYS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgIGkubGVmdCA9IGEuYm90dG9tLCBpLnRvcCA9IGEucmlnaHQsIGkucmlnaHQgPSBhLnRvcCwgaS5ib3R0b20gPSBhLmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgaS5sZWZ0ID0gYS5ib3R0b20sIGkudG9wID0gYS5sZWZ0LCBpLnJpZ2h0ID0gYS50b3AsIGkuYm90dG9tID0gYS5yaWdodFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGEub3JpZW50YXRpb24gPiA0ICYmIChpLm1heFdpZHRoID0gYS5tYXhIZWlnaHQsIGkubWF4SGVpZ2h0ID0gYS5tYXhXaWR0aCwgaS5taW5XaWR0aCA9IGEubWluSGVpZ2h0LCBpLm1pbkhlaWdodCA9IGEubWluV2lkdGgsIGkuc291cmNlV2lkdGggPSBhLnNvdXJjZUhlaWdodCwgaS5zb3VyY2VIZWlnaHQgPSBhLnNvdXJjZVdpZHRoKSwgaVxuICAgICAgICB9O1xuICAgICAgICB2YXIgaCA9IHdpbmRvdy5CbG9iICYmIChCbG9iLnByb3RvdHlwZS5zbGljZSB8fCBCbG9iLnByb3RvdHlwZS53ZWJraXRTbGljZSB8fCBCbG9iLnByb3RvdHlwZS5tb3pTbGljZSk7XG4gICAgICAgIG4uYmxvYlNsaWNlID0gaCAmJiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdCA9IHRoaXMuc2xpY2UgfHwgdGhpcy53ZWJraXRTbGljZSB8fCB0aGlzLm1velNsaWNlO1xuICAgICAgICAgICAgcmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICB9LCBuLm1ldGFEYXRhUGFyc2VycyA9IHtqcGVnOiB7NjU1MDU6IFtdfX0sIG4ucGFyc2VNZXRhRGF0YSA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICBpID0gaSB8fCB7fTtcbiAgICAgICAgICAgIHZhciBvID0gdGhpcywgYSA9IGkubWF4TWV0YURhdGFTaXplIHx8IDI2MjE0NCwgciA9IHt9LFxuICAgICAgICAgICAgICAgIHMgPSAhKHdpbmRvdy5EYXRhVmlldyAmJiB0ICYmIHQuc2l6ZSA+PSAxMiAmJiBcImltYWdlL2pwZWdcIiA9PT0gdC50eXBlICYmIG4uYmxvYlNsaWNlKTtcbiAgICAgICAgICAgICFzICYmIG4ucmVhZEZpbGUobi5ibG9iU2xpY2UuY2FsbCh0LCAwLCBhKSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAodC50YXJnZXQuZXJyb3IpIHJldHVybiB2b2lkIGUocik7XG4gICAgICAgICAgICAgICAgdmFyIGEsIHMsIGgsIHUsIGwgPSB0LnRhcmdldC5yZXN1bHQsIHAgPSBuZXcgRGF0YVZpZXcobCksIGMgPSAyLCBkID0gcC5ieXRlTGVuZ3RoIC0gNCwgZiA9IGM7XG4gICAgICAgICAgICAgICAgaWYgKDY1NDk2ID09PSBwLmdldFVpbnQxNigwKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYyA8IGQgJiYgKGEgPSBwLmdldFVpbnQxNihjKSwgYSA+PSA2NTUwNCAmJiBhIDw9IDY1NTE5IHx8IDY1NTM0ID09PSBhKSAmJiAocyA9IHAuZ2V0VWludDE2KGMgKyAyKSArIDIsICEoYyArIHMgPiBwLmJ5dGVMZW5ndGgpKTspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gbi5tZXRhRGF0YVBhcnNlcnMuanBlZ1thXSkgZm9yICh1ID0gMDsgdSA8IGgubGVuZ3RoOyB1ICs9IDEpIGhbdV0uY2FsbChvLCBwLCBjLCBzLCByLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gcywgZiA9IGNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAhaS5kaXNhYmxlSW1hZ2VIZWFkICYmIGYgPiA2ICYmIChsLnNsaWNlID8gci5pbWFnZUhlYWQgPSBsLnNsaWNlKDAsIGYpIDogci5pbWFnZUhlYWQgPSBuZXcgVWludDhBcnJheShsKS5zdWJhcnJheSgwLCBmKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZShyKVxuICAgICAgICAgICAgfSwgXCJyZWFkQXNBcnJheUJ1ZmZlclwiKSB8fCBlKHIpXG4gICAgICAgIH0sIG4uRXhpZk1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgIH0sIG4uRXhpZk1hcC5wcm90b3R5cGUubWFwID0ge09yaWVudGF0aW9uOiAyNzR9LCBuLkV4aWZNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpc1t0XSB8fCB0aGlzW3RoaXMubWFwW3RdXVxuICAgICAgICB9LCBuLmdldEV4aWZUaHVtYm5haWwgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgdmFyIG4sIG8sIGE7XG4gICAgICAgICAgICBpZiAoaSAmJiAhKGUgKyBpID4gdC5ieXRlTGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIGZvciAobiA9IFtdLCBvID0gMDsgbyA8IGk7IG8gKz0gMSkgYSA9IHQuZ2V0VWludDgoZSArIG8pLCBuLnB1c2goKGEgPCAxNiA/IFwiMFwiIDogXCJcIikgKyBhLnRvU3RyaW5nKDE2KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZGF0YTppbWFnZS9qcGVnLCVcIiArIG4uam9pbihcIiVcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbi5leGlmVGFnVHlwZXMgPSB7XG4gICAgICAgICAgICAxOiB7XG4gICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmdldFVpbnQ4KGUpXG4gICAgICAgICAgICAgICAgfSwgc2l6ZTogMVxuICAgICAgICAgICAgfSwgMjoge1xuICAgICAgICAgICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldFVpbnQ4KGUpKVxuICAgICAgICAgICAgICAgIH0sIHNpemU6IDEsIGFzY2lpOiAhMFxuICAgICAgICAgICAgfSwgMzoge1xuICAgICAgICAgICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRVaW50MTYoZSwgaSlcbiAgICAgICAgICAgICAgICB9LCBzaXplOiAyXG4gICAgICAgICAgICB9LCA0OiB7XG4gICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmdldFVpbnQzMihlLCBpKVxuICAgICAgICAgICAgICAgIH0sIHNpemU6IDRcbiAgICAgICAgICAgIH0sIDU6IHtcbiAgICAgICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZ2V0VWludDMyKGUsIGkpIC8gdC5nZXRVaW50MzIoZSArIDQsIGkpXG4gICAgICAgICAgICAgICAgfSwgc2l6ZTogOFxuICAgICAgICAgICAgfSwgOToge1xuICAgICAgICAgICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRJbnQzMihlLCBpKVxuICAgICAgICAgICAgICAgIH0sIHNpemU6IDRcbiAgICAgICAgICAgIH0sIDEwOiB7XG4gICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmdldEludDMyKGUsIGkpIC8gdC5nZXRJbnQzMihlICsgNCwgaSlcbiAgICAgICAgICAgICAgICB9LCBzaXplOiA4XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG4uZXhpZlRhZ1R5cGVzWzddID0gbi5leGlmVGFnVHlwZXNbMV0sIG4uZ2V0RXhpZlZhbHVlID0gZnVuY3Rpb24gKHQsIGUsIGksIG8sIGEsIHIpIHtcbiAgICAgICAgICAgIHZhciBzLCBoLCB1LCBsLCBwLCBjLCBkID0gbi5leGlmVGFnVHlwZXNbb107XG4gICAgICAgICAgICBpZiAoZCAmJiAocyA9IGQuc2l6ZSAqIGEsIGggPSBzID4gNCA/IGUgKyB0LmdldFVpbnQzMihpICsgOCwgcikgOiBpICsgOCwgIShoICsgcyA+IHQuYnl0ZUxlbmd0aCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKDEgPT09IGEpIHJldHVybiBkLmdldFZhbHVlKHQsIGgsIHIpO1xuICAgICAgICAgICAgICAgIGZvciAodSA9IFtdLCBsID0gMDsgbCA8IGE7IGwgKz0gMSkgdVtsXSA9IGQuZ2V0VmFsdWUodCwgaCArIGwgKiBkLnNpemUsIHIpO1xuICAgICAgICAgICAgICAgIGlmIChkLmFzY2lpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAocCA9IFwiXCIsIGwgPSAwOyBsIDwgdS5sZW5ndGggJiYgKGMgPSB1W2xdLCBcIlxcMFwiICE9PSBjKTsgbCArPSAxKSBwICs9IGM7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG4ucGFyc2VFeGlmVGFnID0gZnVuY3Rpb24gKHQsIGUsIGksIG8sIGEpIHtcbiAgICAgICAgICAgIHZhciByID0gdC5nZXRVaW50MTYoaSwgbyk7XG4gICAgICAgICAgICBhLmV4aWZbcl0gPSBuLmdldEV4aWZWYWx1ZSh0LCBlLCBpLCB0LmdldFVpbnQxNihpICsgMiwgbyksIHQuZ2V0VWludDMyKGkgKyA0LCBvKSwgbylcbiAgICAgICAgfSwgbi5wYXJzZUV4aWZUYWdzID0gZnVuY3Rpb24gKHQsIGUsIGksIG4sIG8pIHtcbiAgICAgICAgICAgIHZhciBhLCByLCBzO1xuICAgICAgICAgICAgaWYgKCEoaSArIDYgPiB0LmJ5dGVMZW5ndGggfHwgKGEgPSB0LmdldFVpbnQxNihpLCBuKSwgciA9IGkgKyAyICsgMTIgKiBhLCByICsgNCA+IHQuYnl0ZUxlbmd0aCkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChzID0gMDsgcyA8IGE7IHMgKz0gMSkgdGhpcy5wYXJzZUV4aWZUYWcodCwgZSwgaSArIDIgKyAxMiAqIHMsIG4sIG8pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0LmdldFVpbnQzMihyLCBuKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBuLnBhcnNlRXhpZkRhdGEgPSBmdW5jdGlvbiAodCwgZSwgaSwgbywgYSkge1xuICAgICAgICAgICAgaWYgKCFhLmRpc2FibGVFeGlmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHIsIHMsIGgsIHUgPSBlICsgMTA7XG4gICAgICAgICAgICAgICAgaWYgKDExNjU1MTkyMDYgPT09IHQuZ2V0VWludDMyKGUgKyA0KSAmJiAhKHUgKyA4ID4gdC5ieXRlTGVuZ3RoKSAmJiAwID09PSB0LmdldFVpbnQxNihlICsgOCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmdldFVpbnQxNih1KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxODc2MTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE5Nzg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgNDIgPT09IHQuZ2V0VWludDE2KHUgKyAyLCByKSAmJiAocyA9IHQuZ2V0VWludDMyKHUgKyA0LCByKSwgby5leGlmID0gbmV3IG4uRXhpZk1hcCwgcyA9IG4ucGFyc2VFeGlmVGFncyh0LCB1LCB1ICsgcywgciwgbyksIHMgJiYgIWEuZGlzYWJsZUV4aWZUaHVtYm5haWwgJiYgKGggPSB7ZXhpZjoge319LCBzID0gbi5wYXJzZUV4aWZUYWdzKHQsIHUsIHUgKyBzLCByLCBoKSwgaC5leGlmWzUxM10gJiYgKG8uZXhpZi5UaHVtYm5haWwgPSBuLmdldEV4aWZUaHVtYm5haWwodCwgdSArIGguZXhpZls1MTNdLCBoLmV4aWZbNTE0XSkpKSwgby5leGlmWzM0NjY1XSAmJiAhYS5kaXNhYmxlRXhpZlN1YiAmJiBuLnBhcnNlRXhpZlRhZ3ModCwgdSwgdSArIG8uZXhpZlszNDY2NV0sIHIsIG8pLCBvLmV4aWZbMzQ4NTNdICYmICFhLmRpc2FibGVFeGlmR3BzICYmIG4ucGFyc2VFeGlmVGFncyh0LCB1LCB1ICsgby5leGlmWzM0ODUzXSwgciwgbykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBuLm1ldGFEYXRhUGFyc2Vycy5qcGVnWzY1NTA1XS5wdXNoKG4ucGFyc2VFeGlmRGF0YSk7XG4gICAgICAgIHZhciB1ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHQgPSBbXSwgaSA9IFtdLCBuID0gW10sIG8gPSBcInRyYW5zZm9ybVwiLCBhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBcIlwiKSxcbiAgICAgICAgICAgICAgICByID0gKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpLmpvaW4oXCJcIikubWF0Y2goLy0obW96fHdlYmtpdHxtcyktLykgfHwgXCJcIiA9PT0gYS5PTGluayAmJiBbXCJcIiwgXCJvXCJdKVsxXTtcbiAgICAgICAgICAgIFwid2Via2l0XCIgPT09IHIgJiYgKG8gPSBcIndlYmtpdFRyYW5zZm9ybVwiKTtcbiAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24gKHQsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoby5sZW5ndGggIT09IGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5lcnM6IFtdLCB0aGVuOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbmFiYnQodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzbmFiYnQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5jaGFpbmVycy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYWluZXJzLmZvckVhY2goZnVuY3Rpb24gKGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuc25hYmJ0KGgodCwgbiwgZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2V0VmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYWluZXJzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0VmFsdWUodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmaW5pc2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5lcnMuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5maW5pc2goKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvbGxiYWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYWluZXJzLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucm9sbGJhY2soKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIgPSAwLCBzID0gby5sZW5ndGg7IHIgPCBzOyArK3IpIFwic3RyaW5nXCIgPT0gdHlwZW9mIGkgPyBhLmNoYWluZXJzLnB1c2godShvW3JdLCBpLCBoKG4sIHIsIHMpKSkgOiBhLmNoYWluZXJzLnB1c2godShvW3JdLCBoKGksIHIsIHMpLCBuKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiID09IHR5cGVvZiBpID8gdShvLCBpLCBoKG4sIDAsIDEpKSA6IHUobywgaChpLCAwLCAxKSwgbilcbiAgICAgICAgICAgICAgICB9LCBoID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAkKHQpO1xuICAgICAgICAgICAgICAgICAgICBKKHQuZGVsYXkpICYmIChuLmRlbGF5ID0gdC5kZWxheShlLCBpKSksIEoodC5jYWxsYmFjaykgJiYgKG4uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0LmNhbGxiYWNrLmNhbGwodGhpcywgZSwgaSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvID0gSih0LmFsbERvbmUpLCBhID0gSih0LmNvbXBsZXRlKTtcbiAgICAgICAgICAgICAgICAgICAgKGEgfHwgbykgJiYgKG4uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhICYmIHQuY29tcGxldGUuY2FsbCh0aGlzLCBlLCBpKSwgbyAmJiBlID09IGkgLSAxICYmIHQuYWxsRG9uZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLCBKKHQudmFsdWVGZWVkZXIpICYmIChuLnZhbHVlRmVlZGVyID0gZnVuY3Rpb24gKG4sIG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnZhbHVlRmVlZGVyKG4sIG8sIGUsIGkpXG4gICAgICAgICAgICAgICAgICAgIH0pLCBKKHQuZWFzaW5nKSAmJiAobi5lYXNpbmcgPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZWFzaW5nKG4sIGUsIGkpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IFtcInBvc2l0aW9uXCIsIFwicm90YXRpb25cIiwgXCJza2V3XCIsIFwicm90YXRpb25Qb3N0XCIsIFwic2NhbGVcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcIm9wYWNpdHlcIiwgXCJmcm9tUG9zaXRpb25cIiwgXCJmcm9tUm90YXRpb25cIiwgXCJmcm9tU2tld1wiLCBcImZyb21Sb3RhdGlvblBvc3RcIiwgXCJmcm9tU2NhbGVcIiwgXCJmcm9tV2lkdGhcIiwgXCJmcm9tSGVpZ2h0XCIsIFwiZnJvbU9wYWNpdHlcIiwgXCJ0cmFuc2Zvcm1PcmlnaW5cIiwgXCJkdXJhdGlvblwiLCBcImRlbGF5XCJdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBKKHRbb10pICYmIChuW29dID0gdFtvXShlLCBpKSlcbiAgICAgICAgICAgICAgICAgICAgfSksIG5cbiAgICAgICAgICAgICAgICB9LCB1ID0gZnVuY3Rpb24gKHQsIGUsIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZi50aWNrKGUpLCBmLnVwZGF0ZUVsZW1lbnQodCksICFmLmlzU3RvcHBlZCgpKSByZXR1cm4gZi5jb21wbGV0ZWQoKSA/IHZvaWQoYS5sb29wID4gMSAmJiAhZi5pc1N0b3BwZWQoKSA/IChhLmxvb3AgLT0gMSwgZi5yZXN0YXJ0KCksIGsobykpIDogKGEuY29tcGxldGUgJiYgYS5jb21wbGV0ZS5jYWxsKHQpLCBfLmxlbmd0aCAmJiAoYSA9IF8ucG9wKCksIHMgPSB5KGEsIHUsICEwKSwgdSA9IHkoYSwgJCh1KSksIGEgPSB3KHMsIHUsIGEpLCBmID0gUyhhKSwgaS5wdXNoKFt0LCBmXSksIGYudGljayhlKSwgayhvKSkpKSA6IGsobylcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcImF0dGVudGlvblwiID09PSBlKSByZXR1cm4gbCh0LCBuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFwic3RvcFwiID09PSBlKSByZXR1cm4gcCh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFwiZGV0YWNoXCIgPT09IGUpIHJldHVybiBkKHQpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGU7XG4gICAgICAgICAgICAgICAgICAgIG0oKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB2KHQpLCBzID0gcjtcbiAgICAgICAgICAgICAgICAgICAgcyA9IHkoYSwgcywgITApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdSA9ICQocik7XG4gICAgICAgICAgICAgICAgICAgIHUgPSB5KGEsIHUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHcocywgdSwgYSksIGYgPSBTKGMpO1xuICAgICAgICAgICAgICAgICAgICBpLnB1c2goW3QsIGZdKSwgZi51cGRhdGVFbGVtZW50KHQsICEwKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSBbXSwgZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNuYWJidDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXy51bnNoaWZ0KGgodCwgMCwgMSkpLCBnXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGVuOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNuYWJidCh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gayhvKSwgYS5tYW51YWwgPyBmIDogZ1xuICAgICAgICAgICAgICAgIH0sIGwgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEudGljayhpKSwgYS51cGRhdGVFbGVtZW50KHQpLCBhLmNvbXBsZXRlZCgpID8gKGUuY2FsbGJhY2sgJiYgZS5jYWxsYmFjayh0KSwgZS5sb29wICYmIGUubG9vcCA+IDEgJiYgKGUubG9vcC0tLCBhLnJlc3RhcnQoKSwgayhuKSkpIDogayhuKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB5KGUsIHEoe30pKTtcbiAgICAgICAgICAgICAgICAgICAgZS5tb3ZlbWVudCA9IG87XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gRShlKTtcbiAgICAgICAgICAgICAgICAgICAgaS5wdXNoKFt0LCBhXSksIGsobilcbiAgICAgICAgICAgICAgICB9LCBwID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIG4gPSBpLmxlbmd0aDsgZSA8IG47ICsrZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBpW2VdLCBhID0gb1swXSwgciA9IG9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBhID09PSB0ICYmIHIuc3RvcCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBjID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgaWYgKHRbaV1bMF0gPT09IGUpIHJldHVybiBpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICAgICAgICB9LCBkID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIG8sIGEgPSBbXSwgciA9IGkuY29uY2F0KG4pLCBzID0gci5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBzOyArK28pIGUgPSByW29dWzBdLCAodC5jb250YWlucyhlKSB8fCB0ID09PSBlKSAmJiBhLnB1c2goZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAocyA9IGEubGVuZ3RoLCBvID0gMDsgbyA8IHM7ICsrbykgZihhW29dKVxuICAgICAgICAgICAgICAgIH0sIGYgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICBwKHQpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGMoaSwgdCk7XG4gICAgICAgICAgICAgICAgICAgIGUgPj0gMCAmJiBpLnNwbGljZShlLCAxKSwgZSA9IGMobiwgdCksIGUgPj0gMCAmJiBuLnNwbGljZShlLCAxKVxuICAgICAgICAgICAgICAgIH0sIF8gPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRbaV0sIGEgPSBvWzBdLCByID0gb1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID09PSBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSByLmdldEN1cnJlbnRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnN0b3AoKSwgc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbiA9IG4uZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZyh0WzBdKS5ib2R5XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSwgZyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0OyBlLnBhcmVudE5vZGU7KSBlID0gZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICAgICAgICAgIH0sIHYgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IF8oaSwgdCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gZSA6IF8obiwgdClcbiAgICAgICAgICAgICAgICB9LCB5ID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgZSB8fCAoZSA9IHEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFswLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblBvc3Q6IFswLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMSwgMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBza2V3OiBbMCwgMF1cbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFwicG9zaXRpb25cIiwgbyA9IFwicm90YXRpb25cIiwgYSA9IFwic2tld1wiLCByID0gXCJyb3RhdGlvblBvc3RcIiwgcyA9IFwic2NhbGVcIiwgaCA9IFwic2NhbGVQb3N0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1ID0gXCJ3aWR0aFwiLCBsID0gXCJoZWlnaHRcIiwgcCA9IFwib3BhY2l0eVwiO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiAobiA9IFwiZnJvbVBvc2l0aW9uXCIsIG8gPSBcImZyb21Sb3RhdGlvblwiLCBhID0gXCJmcm9tU2tld1wiLCByID0gXCJmcm9tUm90YXRpb25Qb3N0XCIsIHMgPSBcImZyb21TY2FsZVwiLCBoID0gXCJmcm9tU2NhbGVQb3N0XCIsIHUgPSBcImZyb21XaWR0aFwiLCBsID0gXCJmcm9tSGVpZ2h0XCIsIHAgPSBcImZyb21PcGFjaXR5XCIpLCBlLnBvc2l0aW9uID0gRyh0W25dLCBlLnBvc2l0aW9uKSwgZS5yb3RhdGlvbiA9IEcodFtvXSwgZS5yb3RhdGlvbiksIGUucm90YXRpb25Qb3N0ID0gRyh0W3JdLCBlLnJvdGF0aW9uUG9zdCksIGUuc2tldyA9IEcodFthXSwgZS5za2V3KSwgZS5zY2FsZSA9IEcodFtzXSwgZS5zY2FsZSksIGUuc2NhbGVQb3N0ID0gRyh0W2hdLCBlLnNjYWxlUG9zdCksIGUub3BhY2l0eSA9IHRbcF0sIGUud2lkdGggPSB0W3VdLCBlLmhlaWdodCA9IHRbbF0sIGVcbiAgICAgICAgICAgICAgICB9LCB3ID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuc3RhcnRTdGF0ZSA9IHQsIGkuZW5kU3RhdGUgPSBlLCBpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHQsIDFlMyAvIDYwKVxuICAgICAgICAgICAgICAgIH0sIGsgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAwID09PSB0Lmxlbmd0aCAmJiBiKHgpLCB0LnB1c2goZSlcbiAgICAgICAgICAgICAgICB9LCB4ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IHQubGVuZ3RoLCBhID0gMDsgYSA8IG87ICsrYSkgdFthXShlKTtcbiAgICAgICAgICAgICAgICAgICAgdC5zcGxpY2UoMCwgbyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gaS5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0WzFdLmNvbXBsZXRlZCgpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBuID0gbi5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwLCBpID0gci5sZW5ndGg7IGUgPCBpOyArK2UpIGlmICh0WzBdID09PSByW2VdWzBdKSByZXR1cm4gITE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITBcbiAgICAgICAgICAgICAgICAgICAgfSksIG4gPSBuLmNvbmNhdChyKSwgaSA9IGkuZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRbMV0uY29tcGxldGVkKClcbiAgICAgICAgICAgICAgICAgICAgfSksIDAgIT09IHQubGVuZ3RoICYmIGIoeClcbiAgICAgICAgICAgICAgICB9LCBTID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnN0YXJ0U3RhdGUsIG4gPSB0LmVuZFN0YXRlLCBvID0gRyh0LmR1cmF0aW9uLCA1MDApLCBhID0gRyh0LmRlbGF5LCAwKSwgciA9IHQucGVyc3BlY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gTChHKHQuZWFzaW5nLCBcImxpbmVhclwiKSwgdCksIGggPSAwID09PSBvID8gbi5jbG9uZSgpIDogaS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB0LnRyYW5zZm9ybU9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgaC50cmFuc2Zvcm1PcmlnaW4gPSB0LnRyYW5zZm9ybU9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHUsIGwsIHAgPSAwLCBjID0gMCwgZCA9ICExLCBmID0gITEsIF8gPSB0Lm1hbnVhbCwgbSA9IDAsIGcgPSBhIC8gbztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwgPSB0LnZhbHVlRmVlZGVyID8gVih0LnZhbHVlRmVlZGVyLCBpLCBuLCBoKSA6IGooaSwgbiwgaCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gITBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlzU3RvcHBlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmaW5pc2g6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9ICExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbyAqIG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGMgLSBlLCB1ID0gdCwgcy5yZXNldEZyb20gPSBtXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByb2xsYmFjazogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gITEsIGwuc2V0UmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbyAqICgxIC0gbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGMgLSBlLCB1ID0gdCwgcy5yZXNldEZyb20gPSBtXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXN0YXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGUsIHMucmVzZXRGcm9tKDApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aWNrOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXykgcmV0dXJuIGMgPSB0LCB2b2lkIHRoaXMudXBkYXRlQ3VycmVudFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCB8fCAocCA9IHQpLCB0IC0gcCA+IGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhMCwgYyA9IHQgLSBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBjIC0gcCksIG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aWNrKGUgLyBvKSwgdGhpcy51cGRhdGVDdXJyZW50VHJhbnNmb3JtKCksIHRoaXMuY29tcGxldGVkKCkgJiYgdSAmJiB1KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldEN1cnJlbnRTdGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzZXRWYWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gITAsIG0gPSBNYXRoLm1pbihNYXRoLm1heCh0LCAxZS00KSwgMSArIGcpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB1cGRhdGVDdXJyZW50VHJhbnNmb3JtOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBNYXRoLm1heCgxZS01LCBtIC0gZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGljayhlKSwgdCA9IHMuZ2V0VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLnR3ZWVuKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFkIHx8IDAgIT09IHAgJiYgcy5jb21wbGV0ZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiB8fCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbC5hc01hdHJpeCgpLCBuID0gbC5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgodCwgaSwgciksIFkodCwgbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBFID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0Lm1vdmVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0LmluaXRpYWxWZWxvY2l0eSA9IC4xLCB0LmVxdWlsaWJyaXVtUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFQodCksIG8gPSAhMSwgYSA9IGkucG9zaXRpb24sIHIgPSBpLnJvdGF0aW9uLCBzID0gaS5yb3RhdGlvblBvc3QsIGggPSBpLnNjYWxlLCB1ID0gaS5za2V3LFxuICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhID8gWzAsIDAsIDBdIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogciA/IFswLCAwLCAwXSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25Qb3N0OiBzID8gWzAsIDAsIDBdIDogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogaCA/IFswLCAwXSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tldzogdSA/IFswLCAwXSA6IGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXNTdG9wcGVkOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aWNrOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gfHwgbi5lcXVpbGlicml1bSB8fCAobi50aWNrKCksIHRoaXMudXBkYXRlTW92ZW1lbnQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVwZGF0ZU1vdmVtZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiAobC5wb3NpdGlvblswXSA9IGkucG9zaXRpb25bMF0gKiB0LCBsLnBvc2l0aW9uWzFdID0gaS5wb3NpdGlvblsxXSAqIHQsIGwucG9zaXRpb25bMl0gPSBpLnBvc2l0aW9uWzJdICogdCksIHIgJiYgKGwucm90YXRpb25bMF0gPSBpLnJvdGF0aW9uWzBdICogdCwgbC5yb3RhdGlvblsxXSA9IGkucm90YXRpb25bMV0gKiB0LCBsLnJvdGF0aW9uWzJdID0gaS5yb3RhdGlvblsyXSAqIHQpLCBzICYmIChsLnJvdGF0aW9uUG9zdFswXSA9IGkucm90YXRpb25Qb3N0WzBdICogdCwgbC5yb3RhdGlvblBvc3RbMV0gPSBpLnJvdGF0aW9uUG9zdFsxXSAqIHQsIGwucm90YXRpb25Qb3N0WzJdID0gaS5yb3RhdGlvblBvc3RbMl0gKiB0KSwgaCAmJiAobC5zY2FsZVswXSA9IDEgKyBpLnNjYWxlWzBdICogdCwgbC5zY2FsZVsxXSA9IDEgKyBpLnNjYWxlWzFdICogdCksIHUgJiYgKGwuc2tld1swXSA9IGkuc2tld1swXSAqIHQsIGwuc2tld1sxXSA9IGkuc2tld1sxXSAqIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB1cGRhdGVFbGVtZW50OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgodCwgbC5hc01hdHJpeCgpKSwgWSh0LCBsLmdldFByb3BlcnRpZXMoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldEN1cnJlbnRTdGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5lcXVpbGlicml1bSB8fCBvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXN0YXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFQodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIEMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFxuICAgICAgICAgICAgICAgIH0sIFAgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE1hdGguY29zKHQgKiBNYXRoLlBJICsgTWF0aC5QSSkgKyAxKSAvIDJcbiAgICAgICAgICAgICAgICB9LCBNID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKiB0XG4gICAgICAgICAgICAgICAgfSwgUiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtTWF0aC5wb3codCAtIDEsIDIpICsgMVxuICAgICAgICAgICAgICAgIH0sIFQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IEcodC5zdGFydFBvc2l0aW9uLCAwKSwgaSA9IEcodC5lcXVpbGlicml1bVBvc2l0aW9uLCAxKSwgbiA9IEcodC5pbml0aWFsVmVsb2NpdHksIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbyA9IEcodC5zcHJpbmdDb25zdGFudCwgLjgpLCBhID0gRyh0LnNwcmluZ0RlY2VsZXJhdGlvbiwgLjkpLCByID0gRyh0LnNwcmluZ01hc3MsIDEwKSwgcyA9ICExO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGljazogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gdCAmJiAhcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IC0oZSAtIGkpICogbywgdSA9IGggLyByO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICs9IHUsIGUgKz0gbiwgbiAqPSBhLCBNYXRoLmFicyhlIC0gaSkgPCAuMDAxICYmIE1hdGguYWJzKG4pIDwgLjAwMSAmJiAocyA9ICEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlc2V0RnJvbTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdCwgbiA9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldFZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPyBpIDogZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29tcGxldGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIEkgPSB7bGluZWFyOiBDLCBlYXNlOiBQLCBlYXNlSW46IE0sIGVhc2VPdXQ6IFJ9LCBMID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFwic3ByaW5nXCIgPT0gdCkgcmV0dXJuIFQoZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gdDtcbiAgICAgICAgICAgICAgICAgICAgSih0KSB8fCAoaSA9IElbdF0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiwgbyA9IGksIGEgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGljazogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyh0KSwgbiA9IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlc2V0RnJvbTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29tcGxldGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPj0gMSAmJiBuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBPID0gZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgdFswXSA9IDEsIHRbMV0gPSAwLCB0WzJdID0gMCwgdFszXSA9IDAsIHRbNF0gPSAwLCB0WzVdID0gMSwgdFs2XSA9IDAsIHRbN10gPSAwLCB0WzhdID0gMCwgdFs5XSA9IDAsIHRbMTBdID0gMSwgdFsxMV0gPSAwLCB0WzEyXSA9IGUsIHRbMTNdID0gaSwgdFsxNF0gPSBuLCB0WzE1XSA9IDFcbiAgICAgICAgICAgICAgICB9LCB6ID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdFswXSA9IDEsIHRbMV0gPSAwLCB0WzJdID0gMCwgdFszXSA9IDAsIHRbNF0gPSAwLCB0WzVdID0gTWF0aC5jb3MoZSksIHRbNl0gPSAtTWF0aC5zaW4oZSksIHRbN10gPSAwLCB0WzhdID0gMCwgdFs5XSA9IE1hdGguc2luKGUpLCB0WzEwXSA9IE1hdGguY29zKGUpLCB0WzExXSA9IDAsIHRbMTJdID0gMCwgdFsxM10gPSAwLCB0WzE0XSA9IDAsIHRbMTVdID0gMVxuICAgICAgICAgICAgICAgIH0sIEQgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICB0WzBdID0gTWF0aC5jb3MoZSksIHRbMV0gPSAwLCB0WzJdID0gTWF0aC5zaW4oZSksIHRbM10gPSAwLCB0WzRdID0gMCwgdFs1XSA9IDEsIHRbNl0gPSAwLCB0WzddID0gMCwgdFs4XSA9IC1NYXRoLnNpbihlKSwgdFs5XSA9IDAsIHRbMTBdID0gTWF0aC5jb3MoZSksIHRbMTFdID0gMCwgdFsxMl0gPSAwLCB0WzEzXSA9IDAsIHRbMTRdID0gMCwgdFsxNV0gPSAxXG4gICAgICAgICAgICAgICAgfSwgQSA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRbMF0gPSBNYXRoLmNvcyhlKSwgdFsxXSA9IC1NYXRoLnNpbihlKSwgdFsyXSA9IDAsIHRbM10gPSAwLCB0WzRdID0gTWF0aC5zaW4oZSksIHRbNV0gPSBNYXRoLmNvcyhlKSwgdFs2XSA9IDAsIHRbN10gPSAwLCB0WzhdID0gMCwgdFs5XSA9IDAsIHRbMTBdID0gMSwgdFsxMV0gPSAwLCB0WzEyXSA9IDAsIHRbMTNdID0gMCwgdFsxNF0gPSAwLCB0WzE1XSA9IDFcbiAgICAgICAgICAgICAgICB9LCBVID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdFswXSA9IDEsIHRbMV0gPSBNYXRoLnRhbihlKSwgdFsyXSA9IDAsIHRbM10gPSAwLCB0WzRdID0gTWF0aC50YW4oaSksIHRbNV0gPSAxLCB0WzZdID0gMCwgdFs3XSA9IDAsIHRbOF0gPSAwLCB0WzldID0gMCwgdFsxMF0gPSAxLCB0WzExXSA9IDAsIHRbMTJdID0gMCwgdFsxM10gPSAwLCB0WzE0XSA9IDAsIHRbMTVdID0gMVxuICAgICAgICAgICAgICAgIH0sIEggPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICB0WzBdID0gZSwgdFsxXSA9IDAsIHRbMl0gPSAwLCB0WzNdID0gMCwgdFs0XSA9IDAsIHRbNV0gPSBpLCB0WzZdID0gMCwgdFs3XSA9IDAsIHRbOF0gPSAwLCB0WzldID0gMCwgdFsxMF0gPSAxLCB0WzExXSA9IDAsIHRbMTJdID0gMCwgdFsxM10gPSAwLCB0WzE0XSA9IDAsIHRbMTVdID0gMVxuICAgICAgICAgICAgICAgIH0sIE4gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB0WzBdID0gMSwgdFsxXSA9IDAsIHRbMl0gPSAwLCB0WzNdID0gMCwgdFs0XSA9IDAsIHRbNV0gPSAxLCB0WzZdID0gMCwgdFs3XSA9IDAsIHRbOF0gPSAwLCB0WzldID0gMCwgdFsxMF0gPSAxLCB0WzExXSA9IDAsIHRbMTJdID0gMCwgdFsxM10gPSAwLCB0WzE0XSA9IDAsIHRbMTVdID0gMVxuICAgICAgICAgICAgICAgIH0sIEIgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBlWzBdID0gdFswXSwgZVsxXSA9IHRbMV0sIGVbMl0gPSB0WzJdLCBlWzNdID0gdFszXSwgZVs0XSA9IHRbNF0sIGVbNV0gPSB0WzVdLCBlWzZdID0gdFs2XSwgZVs3XSA9IHRbN10sIGVbOF0gPSB0WzhdLCBlWzldID0gdFs5XSwgZVsxMF0gPSB0WzEwXSwgZVsxMV0gPSB0WzExXSwgZVsxMl0gPSB0WzEyXSwgZVsxM10gPSB0WzEzXSwgZVsxNF0gPSB0WzE0XSwgZVsxNV0gPSB0WzE1XVxuICAgICAgICAgICAgICAgIH0sIEYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IEZsb2F0MzJBcnJheSgxNiksIGUgPSBuZXcgRmxvYXQzMkFycmF5KDE2KSwgaSA9IG5ldyBGbG9hdDMyQXJyYXkoMTYpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTih0KSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdCwgYXNDU1M6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gXCJtYXRyaXgzZChcIiwgaSA9IDA7IGkgPCAxNTsgKytpKSBlICs9IE1hdGguYWJzKHRbaV0pIDwgMWUtNCA/IFwiMCxcIiA6IHRbaV0udG9GaXhlZCgxMCkgKyBcIixcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArPSBNYXRoLmFicyh0WzE1XSkgPCAxZS00ID8gXCIwKVwiIDogdFsxNV0udG9GaXhlZCgxMCkgKyBcIilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2xlYXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0cmFuc2xhdGU6IGZ1bmN0aW9uIChuLCBvLCBhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIodCwgZSksIE8oaSwgbiwgbywgYSksIFcoZSwgaSwgdCksIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvdGF0ZVg6IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIodCwgZSksIHooaSwgbiksIFcoZSwgaSwgdCksIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvdGF0ZVk6IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIodCwgZSksIEQoaSwgbiksIFcoZSwgaSwgdCksIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvdGF0ZVo6IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIodCwgZSksIEEoaSwgbiksIFcoZSwgaSwgdCksIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNjYWxlOiBmdW5jdGlvbiAobiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCKHQsIGUpLCBIKGksIG4sIG8pLCBXKGUsIGksIHQpLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBza2V3OiBmdW5jdGlvbiAobiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCKHQsIGUpLCBVKGksIG4sIG8pLCBXKGUsIGksIHQpLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBXID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbMF0gPSB0WzBdICogZVswXSArIHRbMV0gKiBlWzRdICsgdFsyXSAqIGVbOF0gKyB0WzNdICogZVsxMl0sIGlbMV0gPSB0WzBdICogZVsxXSArIHRbMV0gKiBlWzVdICsgdFsyXSAqIGVbOV0gKyB0WzNdICogZVsxM10sIGlbMl0gPSB0WzBdICogZVsyXSArIHRbMV0gKiBlWzZdICsgdFsyXSAqIGVbMTBdICsgdFszXSAqIGVbMTRdLCBpWzNdID0gdFswXSAqIGVbM10gKyB0WzFdICogZVs3XSArIHRbMl0gKiBlWzExXSArIHRbM10gKiBlWzE1XSwgaVs0XSA9IHRbNF0gKiBlWzBdICsgdFs1XSAqIGVbNF0gKyB0WzZdICogZVs4XSArIHRbN10gKiBlWzEyXSwgaVs1XSA9IHRbNF0gKiBlWzFdICsgdFs1XSAqIGVbNV0gKyB0WzZdICogZVs5XSArIHRbN10gKiBlWzEzXSwgaVs2XSA9IHRbNF0gKiBlWzJdICsgdFs1XSAqIGVbNl0gKyB0WzZdICogZVsxMF0gKyB0WzddICogZVsxNF0sIGlbN10gPSB0WzRdICogZVszXSArIHRbNV0gKiBlWzddICsgdFs2XSAqIGVbMTFdICsgdFs3XSAqIGVbMTVdLCBpWzhdID0gdFs4XSAqIGVbMF0gKyB0WzldICogZVs0XSArIHRbMTBdICogZVs4XSArIHRbMTFdICogZVsxMl0sIGlbOV0gPSB0WzhdICogZVsxXSArIHRbOV0gKiBlWzVdICsgdFsxMF0gKiBlWzldICsgdFsxMV0gKiBlWzEzXSwgaVsxMF0gPSB0WzhdICogZVsyXSArIHRbOV0gKiBlWzZdICsgdFsxMF0gKiBlWzEwXSArIHRbMTFdICogZVsxNF0sIGlbMTFdID0gdFs4XSAqIGVbM10gKyB0WzldICogZVs3XSArIHRbMTBdICogZVsxMV0gKyB0WzExXSAqIGVbMTVdLCBpWzEyXSA9IHRbMTJdICogZVswXSArIHRbMTNdICogZVs0XSArIHRbMTRdICogZVs4XSArIHRbMTVdICogZVsxMl0sIGlbMTNdID0gdFsxMl0gKiBlWzFdICsgdFsxM10gKiBlWzVdICsgdFsxNF0gKiBlWzldICsgdFsxNV0gKiBlWzEzXSwgaVsxNF0gPSB0WzEyXSAqIGVbMl0gKyB0WzEzXSAqIGVbNl0gKyB0WzE0XSAqIGVbMTBdICsgdFsxNV0gKiBlWzE0XSwgaVsxNV0gPSB0WzEyXSAqIGVbM10gKyB0WzEzXSAqIGVbN10gKyB0WzE0XSAqIGVbMTFdICsgdFsxNV0gKiBlWzE1XSwgaVxuICAgICAgICAgICAgICAgIH0sIHEgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEYoKSwgbiA9IHtvcGFjaXR5OiBlLCB3aWR0aDogZSwgaGVpZ2h0OiBlfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB0LnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IHQucm90YXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvblBvc3Q6IHQucm90YXRpb25Qb3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2tldzogdC5za2V3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHQuc2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVBvc3Q6IHQuc2NhbGVQb3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogdC5vcGFjaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uID8gdGhpcy5wb3NpdGlvbi5zbGljZSgwKSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uID8gdGhpcy5yb3RhdGlvbi5zbGljZSgwKSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uUG9zdDogdGhpcy5yb3RhdGlvblBvc3QgPyB0aGlzLnJvdGF0aW9uUG9zdC5zbGljZSgwKSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXc6IHRoaXMuc2tldyA/IHRoaXMuc2tldy5zbGljZSgwKSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiB0aGlzLnNjYWxlID8gdGhpcy5zY2FsZS5zbGljZSgwKSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlUG9zdDogdGhpcy5zY2FsZVBvc3QgPyB0aGlzLnNjYWxlUG9zdC5zbGljZSgwKSA6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiB0aGlzLm9wYWNpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzTWF0cml4OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNsZWFyKCksIHRoaXMudHJhbnNmb3JtT3JpZ2luICYmIHQudHJhbnNsYXRlKC10aGlzLnRyYW5zZm9ybU9yaWdpblswXSwgLXRoaXMudHJhbnNmb3JtT3JpZ2luWzFdLCAtdGhpcy50cmFuc2Zvcm1PcmlnaW5bMl0pLCB0aGlzLnNjYWxlICYmIHQuc2NhbGUodGhpcy5zY2FsZVswXSwgdGhpcy5zY2FsZVsxXSksIHRoaXMuc2tldyAmJiB0LnNrZXcodGhpcy5za2V3WzBdLCB0aGlzLnNrZXdbMV0pLCB0aGlzLnJvdGF0aW9uICYmICh0LnJvdGF0ZVgodGhpcy5yb3RhdGlvblswXSksIHQucm90YXRlWSh0aGlzLnJvdGF0aW9uWzFdKSwgdC5yb3RhdGVaKHRoaXMucm90YXRpb25bMl0pKSwgdGhpcy5wb3NpdGlvbiAmJiB0LnRyYW5zbGF0ZSh0aGlzLnBvc2l0aW9uWzBdLCB0aGlzLnBvc2l0aW9uWzFdLCB0aGlzLnBvc2l0aW9uWzJdKSwgdGhpcy5yb3RhdGlvblBvc3QgJiYgKHQucm90YXRlWCh0aGlzLnJvdGF0aW9uUG9zdFswXSksIHQucm90YXRlWSh0aGlzLnJvdGF0aW9uUG9zdFsxXSksIHQucm90YXRlWih0aGlzLnJvdGF0aW9uUG9zdFsyXSkpLCB0aGlzLnNjYWxlUG9zdCAmJiB0LnNjYWxlKHRoaXMuc2NhbGVQb3N0WzBdLCB0aGlzLnNjYWxlUG9zdFsxXSksIHRoaXMudHJhbnNmb3JtT3JpZ2luICYmIHQudHJhbnNsYXRlKHRoaXMudHJhbnNmb3JtT3JpZ2luWzBdLCB0aGlzLnRyYW5zZm9ybU9yaWdpblsxXSwgdGhpcy50cmFuc2Zvcm1PcmlnaW5bMl0pLCB0XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJvcGVydGllczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLm9wYWNpdHkgPSB0aGlzLm9wYWNpdHksIG4ud2lkdGggPSB0aGlzLndpZHRoICsgXCJweFwiLCBuLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgXCJweFwiLCBuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBqID0gZnVuY3Rpb24gKHQsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0LCBhID0gaSwgciA9IG4sIHMgPSBhLnBvc2l0aW9uICE9PSBlLCBoID0gYS5yb3RhdGlvbiAhPT0gZSwgdSA9IGEucm90YXRpb25Qb3N0ICE9PSBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGEuc2NhbGUgIT09IGUsIHAgPSBhLnNrZXcgIT09IGUsIGMgPSBhLndpZHRoICE9PSBlLCBkID0gYS5oZWlnaHQgIT09IGUsIGYgPSBhLm9wYWNpdHkgIT09IGU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0d2VlbjogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGEucG9zaXRpb25bMF0gLSBvLnBvc2l0aW9uWzBdLCBpID0gYS5wb3NpdGlvblsxXSAtIG8ucG9zaXRpb25bMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gYS5wb3NpdGlvblsyXSAtIG8ucG9zaXRpb25bMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucG9zaXRpb25bMF0gPSBvLnBvc2l0aW9uWzBdICsgdCAqIGUsIHIucG9zaXRpb25bMV0gPSBvLnBvc2l0aW9uWzFdICsgdCAqIGksIHIucG9zaXRpb25bMl0gPSBvLnBvc2l0aW9uWzJdICsgdCAqIG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSBhLnJvdGF0aW9uWzBdIC0gby5yb3RhdGlvblswXSwgbSA9IGEucm90YXRpb25bMV0gLSBvLnJvdGF0aW9uWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGEucm90YXRpb25bMl0gLSBvLnJvdGF0aW9uWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnJvdGF0aW9uWzBdID0gby5yb3RhdGlvblswXSArIHQgKiBfLCByLnJvdGF0aW9uWzFdID0gby5yb3RhdGlvblsxXSArIHQgKiBtLCByLnJvdGF0aW9uWzJdID0gby5yb3RhdGlvblsyXSArIHQgKiBnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gYS5yb3RhdGlvblBvc3RbMF0gLSBvLnJvdGF0aW9uUG9zdFswXSwgeSA9IGEucm90YXRpb25Qb3N0WzFdIC0gby5yb3RhdGlvblBvc3RbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gYS5yb3RhdGlvblBvc3RbMl0gLSBvLnJvdGF0aW9uUG9zdFsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yb3RhdGlvblBvc3RbMF0gPSBvLnJvdGF0aW9uUG9zdFswXSArIHQgKiB2LCByLnJvdGF0aW9uUG9zdFsxXSA9IG8ucm90YXRpb25Qb3N0WzFdICsgdCAqIHksIHIucm90YXRpb25Qb3N0WzJdID0gby5yb3RhdGlvblBvc3RbMl0gKyB0ICogd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEuc2NhbGVbMF0gLSBvLnNjYWxlWzBdLCBrID0gYS5zY2FsZVsxXSAtIG8uc2NhbGVbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuc2NhbGVbMF0gPSBvLnNjYWxlWzBdICsgdCAqIGIsIHIuc2NhbGVbMV0gPSBvLnNjYWxlWzFdICsgdCAqIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBhLnNrZXdbMF0gLSBvLnNrZXdbMF0sIFMgPSBhLnNrZXdbMV0gLSBvLnNrZXdbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuc2tld1swXSA9IG8uc2tld1swXSArIHQgKiB4LCByLnNrZXdbMV0gPSBvLnNrZXdbMV0gKyB0ICogU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRSA9IGEud2lkdGggLSBvLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLndpZHRoID0gby53aWR0aCArIHQgKiBFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBDID0gYS5oZWlnaHQgLSBvLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5oZWlnaHQgPSBvLmhlaWdodCArIHQgKiBDXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBQID0gYS5vcGFjaXR5IC0gby5vcGFjaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLm9wYWNpdHkgPSBvLm9wYWNpdHkgKyB0ICogUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFzTWF0cml4OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuYXNNYXRyaXgoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZ2V0UHJvcGVydGllczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmdldFByb3BlcnRpZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2V0UmV2ZXJzZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYSwgYSA9IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIFYgPSBmdW5jdGlvbiAodCwgaSwgbiwgbykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQoMCwgRigpKSwgciA9IGksIHMgPSBuLCBoID0gbywgdSA9ICExO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHdlZW46IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdSAmJiAoaSA9IDEgLSBpKSwgYS5jbGVhcigpLCBhID0gdChpLCBhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHMud2lkdGggLSByLndpZHRoLCBvID0gcy5oZWlnaHQgLSByLmhlaWdodCwgbCA9IHMub3BhY2l0eSAtIHIub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLndpZHRoICE9PSBlICYmIChoLndpZHRoID0gci53aWR0aCArIGkgKiBuKSwgcy5oZWlnaHQgIT09IGUgJiYgKGguaGVpZ2h0ID0gci5oZWlnaHQgKyBpICogbyksIHMub3BhY2l0eSAhPT0gZSAmJiAoaC5vcGFjaXR5ID0gci5vcGFjaXR5ICsgaSAqIGwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBhc01hdHJpeDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBnZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGguZ2V0UHJvcGVydGllcygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzZXRSZXZlcnNlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICEwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBHID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQgPyBlIDogdFxuICAgICAgICAgICAgICAgIH0sIFggPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGkgJiYgKG4gPSBcInBlcnNwZWN0aXZlKFwiICsgaSArIFwicHgpIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlLmFzQ1NTKCk7XG4gICAgICAgICAgICAgICAgICAgIHQuc3R5bGVbb10gPSBuICsgYVxuICAgICAgICAgICAgICAgIH0sIFkgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpIHQuc3R5bGVbaV0gPSBlW2ldXG4gICAgICAgICAgICAgICAgfSwgSiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHRcbiAgICAgICAgICAgICAgICB9LCAkID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0KSBlW2ldID0gdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHMuY3JlYXRlTWF0cml4ID0gRiwgcy5zZXRFbGVtZW50VHJhbnNmb3JtID0gWCwgc1xuICAgICAgICB9KCksIGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiB0KHQsIGUsIGksIG4sIG8pIHtcbiAgICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCkgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOyBlbHNlIGlmICghdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFyIGEsIHIgPSB0LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuZ2V0SW1hZ2VEYXRhKGUsIGksIG4sIG8pXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVuYWJsZSB0byBhY2Nlc3MgbG9jYWwgaW1hZ2UgZGF0YTogXCIgKyBzKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gYWNjZXNzIGltYWdlIGRhdGE6IFwiICsgcylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gZShlLCBuLCBvLCBhLCByLCBzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoaXNOYU4ocykgfHwgcyA8IDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHMgfD0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0KGUsIG4sIG8sIGEsIHIpO1xuICAgICAgICAgICAgICAgICAgICBoID0gaShoLCBuLCBvLCBhLCByLCBzKSwgZS5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGgsIG4sIG8pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBpKHQsIGUsIGksIHIsIHMsIGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdSwgbCwgcCwgYywgZCwgZiwgXywgbSwgZywgdiwgeSwgdywgYiwgaywgeCwgUywgRSwgQywgUCwgTSwgUiwgVCwgSSwgTCwgTyA9IHQuZGF0YSwgeiA9IGggKyBoICsgMSxcbiAgICAgICAgICAgICAgICAgICAgRCA9IHIgLSAxLCBBID0gcyAtIDEsIFUgPSBoICsgMSwgSCA9IFUgKiAoVSArIDEpIC8gMiwgTiA9IG5ldyBuLCBCID0gTjtcbiAgICAgICAgICAgICAgICBmb3IgKHAgPSAxOyBwIDwgejsgcCsrKSBpZiAoQiA9IEIubmV4dCA9IG5ldyBuLCBwID09IFUpIHZhciBGID0gQjtcbiAgICAgICAgICAgICAgICBCLm5leHQgPSBOO1xuICAgICAgICAgICAgICAgIHZhciBXID0gbnVsbCwgcSA9IG51bGw7XG4gICAgICAgICAgICAgICAgXyA9IGYgPSAwO1xuICAgICAgICAgICAgICAgIHZhciBqID0gb1toXSwgViA9IGFbaF07XG4gICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IHM7IGwrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKFMgPSBFID0gQyA9IFAgPSBtID0gZyA9IHYgPSB5ID0gMCwgdyA9IFUgKiAoTSA9IE9bZl0pLCBiID0gVSAqIChSID0gT1tmICsgMV0pLCBrID0gVSAqIChUID0gT1tmICsgMl0pLCB4ID0gVSAqIChJID0gT1tmICsgM10pLCBtICs9IEggKiBNLCBnICs9IEggKiBSLCB2ICs9IEggKiBULCB5ICs9IEggKiBJLCBCID0gTiwgcCA9IDA7IHAgPCBVOyBwKyspIEIuciA9IE0sIEIuZyA9IFIsIEIuYiA9IFQsIEIuYSA9IEksIEIgPSBCLm5leHQ7XG4gICAgICAgICAgICAgICAgICAgIGZvciAocCA9IDE7IHAgPCBVOyBwKyspIGMgPSBmICsgKChEIDwgcCA/IEQgOiBwKSA8PCAyKSwgbSArPSAoQi5yID0gTSA9IE9bY10pICogKEwgPSBVIC0gcCksIGcgKz0gKEIuZyA9IFIgPSBPW2MgKyAxXSkgKiBMLCB2ICs9IChCLmIgPSBUID0gT1tjICsgMl0pICogTCwgeSArPSAoQi5hID0gSSA9IE9bYyArIDNdKSAqIEwsIFMgKz0gTSwgRSArPSBSLCBDICs9IFQsIFAgKz0gSSwgQiA9IEIubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChXID0gTiwgcSA9IEYsIHUgPSAwOyB1IDwgcjsgdSsrKSBPW2YgKyAzXSA9IEkgPSB5ICogaiA+PiBWLCAwICE9IEkgPyAoSSA9IDI1NSAvIEksIE9bZl0gPSAobSAqIGogPj4gVikgKiBJLCBPW2YgKyAxXSA9IChnICogaiA+PiBWKSAqIEksIE9bZiArIDJdID0gKHYgKiBqID4+IFYpICogSSkgOiBPW2ZdID0gT1tmICsgMV0gPSBPW2YgKyAyXSA9IDAsIG0gLT0gdywgZyAtPSBiLCB2IC09IGssIHkgLT0geCwgdyAtPSBXLnIsIGIgLT0gVy5nLCBrIC09IFcuYiwgeCAtPSBXLmEsIGMgPSBfICsgKChjID0gdSArIGggKyAxKSA8IEQgPyBjIDogRCkgPDwgMiwgUyArPSBXLnIgPSBPW2NdLCBFICs9IFcuZyA9IE9bYyArIDFdLCBDICs9IFcuYiA9IE9bYyArIDJdLCBQICs9IFcuYSA9IE9bYyArIDNdLCBtICs9IFMsIGcgKz0gRSwgdiArPSBDLCB5ICs9IFAsIFcgPSBXLm5leHQsIHcgKz0gTSA9IHEuciwgYiArPSBSID0gcS5nLCBrICs9IFQgPSBxLmIsIHggKz0gSSA9IHEuYSwgUyAtPSBNLCBFIC09IFIsIEMgLT0gVCwgUCAtPSBJLCBxID0gcS5uZXh0LCBmICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgIF8gKz0gclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHUgPSAwOyB1IDwgcjsgdSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoRSA9IEMgPSBQID0gUyA9IGcgPSB2ID0geSA9IG0gPSAwLCBmID0gdSA8PCAyLCB3ID0gVSAqIChNID0gT1tmXSksIGIgPSBVICogKFIgPSBPW2YgKyAxXSksIGsgPSBVICogKFQgPSBPW2YgKyAyXSksIHggPSBVICogKEkgPSBPW2YgKyAzXSksIG0gKz0gSCAqIE0sIGcgKz0gSCAqIFIsIHYgKz0gSCAqIFQsIHkgKz0gSCAqIEksIEIgPSBOLCBwID0gMDsgcCA8IFU7IHArKykgQi5yID0gTSwgQi5nID0gUiwgQi5iID0gVCwgQi5hID0gSSwgQiA9IEIubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChkID0gciwgcCA9IDE7IHAgPD0gaDsgcCsrKSBmID0gZCArIHUgPDwgMiwgbSArPSAoQi5yID0gTSA9IE9bZl0pICogKEwgPSBVIC0gcCksIGcgKz0gKEIuZyA9IFIgPSBPW2YgKyAxXSkgKiBMLCB2ICs9IChCLmIgPSBUID0gT1tmICsgMl0pICogTCwgeSArPSAoQi5hID0gSSA9IE9bZiArIDNdKSAqIEwsIFMgKz0gTSwgRSArPSBSLCBDICs9IFQsIFAgKz0gSSwgQiA9IEIubmV4dCwgcCA8IEEgJiYgKGQgKz0gcik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoZiA9IHUsIFcgPSBOLCBxID0gRiwgbCA9IDA7IGwgPCBzOyBsKyspIGMgPSBmIDw8IDIsIE9bYyArIDNdID0gSSA9IHkgKiBqID4+IFYsIEkgPiAwID8gKEkgPSAyNTUgLyBJLCBPW2NdID0gKG0gKiBqID4+IFYpICogSSwgT1tjICsgMV0gPSAoZyAqIGogPj4gVikgKiBJLCBPW2MgKyAyXSA9ICh2ICogaiA+PiBWKSAqIEkpIDogT1tjXSA9IE9bYyArIDFdID0gT1tjICsgMl0gPSAwLCBtIC09IHcsIGcgLT0gYiwgdiAtPSBrLCB5IC09IHgsIHcgLT0gVy5yLCBiIC09IFcuZywgayAtPSBXLmIsIHggLT0gVy5hLCBjID0gdSArICgoYyA9IGwgKyBVKSA8IEEgPyBjIDogQSkgKiByIDw8IDIsIG0gKz0gUyArPSBXLnIgPSBPW2NdLCBnICs9IEUgKz0gVy5nID0gT1tjICsgMV0sIHYgKz0gQyArPSBXLmIgPSBPW2MgKyAyXSwgeSArPSBQICs9IFcuYSA9IE9bYyArIDNdLCBXID0gVy5uZXh0LCB3ICs9IE0gPSBxLnIsIGIgKz0gUiA9IHEuZywgayArPSBUID0gcS5iLCB4ICs9IEkgPSBxLmEsIFMgLT0gTSwgRSAtPSBSLCBDIC09IFQsIFAgLT0gSSwgcSA9IHEubmV4dCwgZiArPSByXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yID0gMCwgdGhpcy5nID0gMCwgdGhpcy5iID0gMCwgdGhpcy5hID0gMCwgdGhpcy5uZXh0ID0gbnVsbFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgbyA9IFs1MTIsIDUxMiwgNDU2LCA1MTIsIDMyOCwgNDU2LCAzMzUsIDUxMiwgNDA1LCAzMjgsIDI3MSwgNDU2LCAzODgsIDMzNSwgMjkyLCA1MTIsIDQ1NCwgNDA1LCAzNjQsIDMyOCwgMjk4LCAyNzEsIDQ5NiwgNDU2LCA0MjAsIDM4OCwgMzYwLCAzMzUsIDMxMiwgMjkyLCAyNzMsIDUxMiwgNDgyLCA0NTQsIDQyOCwgNDA1LCAzODMsIDM2NCwgMzQ1LCAzMjgsIDMxMiwgMjk4LCAyODQsIDI3MSwgMjU5LCA0OTYsIDQ3NSwgNDU2LCA0MzcsIDQyMCwgNDA0LCAzODgsIDM3NCwgMzYwLCAzNDcsIDMzNSwgMzIzLCAzMTIsIDMwMiwgMjkyLCAyODIsIDI3MywgMjY1LCA1MTIsIDQ5NywgNDgyLCA0NjgsIDQ1NCwgNDQxLCA0MjgsIDQxNywgNDA1LCAzOTQsIDM4MywgMzczLCAzNjQsIDM1NCwgMzQ1LCAzMzcsIDMyOCwgMzIwLCAzMTIsIDMwNSwgMjk4LCAyOTEsIDI4NCwgMjc4LCAyNzEsIDI2NSwgMjU5LCA1MDcsIDQ5NiwgNDg1LCA0NzUsIDQ2NSwgNDU2LCA0NDYsIDQzNywgNDI4LCA0MjAsIDQxMiwgNDA0LCAzOTYsIDM4OCwgMzgxLCAzNzQsIDM2NywgMzYwLCAzNTQsIDM0NywgMzQxLCAzMzUsIDMyOSwgMzIzLCAzMTgsIDMxMiwgMzA3LCAzMDIsIDI5NywgMjkyLCAyODcsIDI4MiwgMjc4LCAyNzMsIDI2OSwgMjY1LCAyNjEsIDUxMiwgNTA1LCA0OTcsIDQ4OSwgNDgyLCA0NzUsIDQ2OCwgNDYxLCA0NTQsIDQ0NywgNDQxLCA0MzUsIDQyOCwgNDIyLCA0MTcsIDQxMSwgNDA1LCAzOTksIDM5NCwgMzg5LCAzODMsIDM3OCwgMzczLCAzNjgsIDM2NCwgMzU5LCAzNTQsIDM1MCwgMzQ1LCAzNDEsIDMzNywgMzMyLCAzMjgsIDMyNCwgMzIwLCAzMTYsIDMxMiwgMzA5LCAzMDUsIDMwMSwgMjk4LCAyOTQsIDI5MSwgMjg3LCAyODQsIDI4MSwgMjc4LCAyNzQsIDI3MSwgMjY4LCAyNjUsIDI2MiwgMjU5LCAyNTcsIDUwNywgNTAxLCA0OTYsIDQ5MSwgNDg1LCA0ODAsIDQ3NSwgNDcwLCA0NjUsIDQ2MCwgNDU2LCA0NTEsIDQ0NiwgNDQyLCA0MzcsIDQzMywgNDI4LCA0MjQsIDQyMCwgNDE2LCA0MTIsIDQwOCwgNDA0LCA0MDAsIDM5NiwgMzkyLCAzODgsIDM4NSwgMzgxLCAzNzcsIDM3NCwgMzcwLCAzNjcsIDM2MywgMzYwLCAzNTcsIDM1NCwgMzUwLCAzNDcsIDM0NCwgMzQxLCAzMzgsIDMzNSwgMzMyLCAzMjksIDMyNiwgMzIzLCAzMjAsIDMxOCwgMzE1LCAzMTIsIDMxMCwgMzA3LCAzMDQsIDMwMiwgMjk5LCAyOTcsIDI5NCwgMjkyLCAyODksIDI4NywgMjg1LCAyODIsIDI4MCwgMjc4LCAyNzUsIDI3MywgMjcxLCAyNjksIDI2NywgMjY1LCAyNjMsIDI2MSwgMjU5XSxcbiAgICAgICAgICAgICAgICBhID0gWzksIDExLCAxMiwgMTMsIDEzLCAxNCwgMTQsIDE1LCAxNSwgMTUsIDE1LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNF07XG4gICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICB9KCk7XG4gICAgICAgIEhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS50b0Jsb2IgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZSwgXCJ0b0Jsb2JcIiwge1xuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IGF0b2IodGhpcy50b0RhdGFVUkwoZSwgaSkuc3BsaXQoXCIsXCIpWzFdKSwgbyA9IG4ubGVuZ3RoLCBhID0gbmV3IFVpbnQ4QXJyYXkobyksIHIgPSAwOyByIDwgbzsgcisrKSBhW3JdID0gbi5jaGFyQ29kZUF0KHIpO1xuICAgICAgICAgICAgICAgIHQobmV3IEJsb2IoW2FdLCB7dHlwZTogZSB8fCBcImltYWdlL3BuZ1wifSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGVbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEsIG4uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBuICYmIChuLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgbi5rZXksIG4pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgdChlLnByb3RvdHlwZSwgaSksIG4gJiYgdChlLCBuKSwgZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0oKSwgYyA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0XG4gICAgICAgICAgICB9IDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiB0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgdCAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgdFxuICAgICAgICAgICAgfSwgZCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgaWYgKFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQuZGF0YXNldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSwgbiA9IHt9LCBvID0gdC5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGUgaW4gbykgby5oYXNPd25Qcm9wZXJ0eShlKSAmJiBvW2VdLm5hbWUgJiYgL15kYXRhLVthLXpfXFwtXFxkXSokL2kudGVzdChvW2VdLm5hbWUpICYmIChpID0gZihvW2VdLm5hbWUuc3Vic3RyKDUpKSwgbltpXSA9IG9bZV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdC5kYXRhc2V0XG4gICAgICAgICAgICB9LCBmID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5yZXBsYWNlKC9cXC0uL2csIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sIF8gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbXSwgaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuYXR0cmlidXRlcyksIG4gPSBpLmxlbmd0aCwgbyA9IDA7IG8gPCBuOyBvKyspIGUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGlbb10ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlbb10udmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICAgICAgfSwgbSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdC5vZmZzZXRYID8gdC5sYXllclggOiB0Lm9mZnNldFgsXG4gICAgICAgICAgICAgICAgICAgIHk6IFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQub2Zmc2V0WSA/IHQubGF5ZXJZIDogdC5vZmZzZXRZXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGksIG4gPSB7fSwgbyA9IGUgfHwge307XG4gICAgICAgICAgICAgICAgZm9yIChpIGluIHQpIHQuaGFzT3duUHJvcGVydHkoaSkgJiYgKG5baV0gPSBcInVuZGVmaW5lZFwiID09IHR5cGVvZiBvW2ldID8gdFtpXSA6IG9baV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBuXG4gICAgICAgICAgICB9LCB2ID0ge0VTQzogMjcsIFJFVFVSTjogMTN9LCB5ID0ge1xuICAgICAgICAgICAgICAgIERPV046IFtcInRvdWNoc3RhcnRcIiwgXCJwb2ludGVyZG93blwiLCBcIm1vdXNlZG93blwiXSxcbiAgICAgICAgICAgICAgICBNT1ZFOiBbXCJ0b3VjaG1vdmVcIiwgXCJwb2ludGVybW92ZVwiLCBcIm1vdXNlbW92ZVwiXSxcbiAgICAgICAgICAgICAgICBVUDogW1widG91Y2hlbmRcIiwgXCJ0b3VjaGNhbmNlbFwiLCBcInBvaW50ZXJ1cFwiLCBcIm1vdXNldXBcIl1cbiAgICAgICAgICAgIH0sIHcgPSB7XG4gICAgICAgICAgICAgICAganBlZzogXCJpbWFnZS9qcGVnXCIsXG4gICAgICAgICAgICAgICAganBnOiBcImltYWdlL2pwZWdcIixcbiAgICAgICAgICAgICAgICBqcGU6IFwiaW1hZ2UvanBlZ1wiLFxuICAgICAgICAgICAgICAgIHBuZzogXCJpbWFnZS9wbmdcIixcbiAgICAgICAgICAgICAgICBnaWY6IFwiaW1hZ2UvZ2lmXCIsXG4gICAgICAgICAgICAgICAgYm1wOiBcImltYWdlL2JtcFwiXG4gICAgICAgICAgICB9LCBiID0gLyhcXC5wbmd8XFwuYm1wfFxcLmdpZnxcXC5qcGd8XFwuanBlfFxcLmpwZ3xcXC5qcGVnKSQvLCBrID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgKGkuY2xhc3NOYW1lID0gZSksIGlcbiAgICAgICAgICAgIH0sIHggPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIGUuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoZSwgaSwgITEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sIFMgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIGUuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgaSwgITEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sIEUgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gdC5jaGFuZ2VkVG91Y2hlcyA/IHQuY2hhbmdlZFRvdWNoZXNbMF0gOiB0O1xuICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4ge3g6IGUucGFnZVgsIHk6IGUucGFnZVl9XG4gICAgICAgICAgICB9LCBDID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IC41LCBuID0gLjUsIG8gPSBNYXRoLlBJIC8gMTgwICogZSwgYSA9IE1hdGguY29zKG8pLCByID0gTWF0aC5zaW4obyksIHMgPSB0LngsIGggPSB0LnksXG4gICAgICAgICAgICAgICAgICAgIHUgPSB0LnggKyB0LndpZHRoLCBsID0gdC55ICsgdC5oZWlnaHQsIHAgPSBhICogKHMgLSBpKSArIHIgKiAoaCAtIG4pICsgaSxcbiAgICAgICAgICAgICAgICAgICAgYyA9IGEgKiAoaCAtIG4pIC0gciAqIChzIC0gaSkgKyBuLCBkID0gYSAqICh1IC0gaSkgKyByICogKGwgLSBuKSArIGksIGYgPSBhICogKGwgLSBuKSAtIHIgKiAodSAtIGkpICsgbjtcbiAgICAgICAgICAgICAgICBwIDw9IGQgPyAodC54ID0gcCwgdC53aWR0aCA9IGQgLSBwKSA6ICh0LnggPSBkLCB0LndpZHRoID0gcCAtIGQpLCBjIDw9IGYgPyAodC55ID0gYywgdC5oZWlnaHQgPSBmIC0gYykgOiAodC55ID0gZiwgdC5oZWlnaHQgPSBjIC0gZilcbiAgICAgICAgICAgIH0sIFAgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gRSh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS54IC09IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwgZS55IC09IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLCBlXG4gICAgICAgICAgICB9LCBNID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHQuc2xpY2UoMSlcbiAgICAgICAgICAgIH0sIFIgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdC5zbGljZSgxKVxuICAgICAgICAgICAgfSwgVCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRbdC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgfSwgSSA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KGUsIE1hdGgubWluKGksIHQpKVxuICAgICAgICAgICAgfSwgTCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gITE7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSBpZiAoZVtpXSA9PT0gdCkgcmV0dXJuICEwO1xuICAgICAgICAgICAgICAgIHJldHVybiAhMVxuICAgICAgICAgICAgfSwgTyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IGUgPyBhcmd1bWVudHNbMV0gOiBcIlBPU1RcIiwgbiA9IGFyZ3VtZW50c1syXSxcbiAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50c1szXSwgYSA9IGFyZ3VtZW50c1s0XSwgciA9IGFyZ3VtZW50c1s1XSwgcyA9IGFyZ3VtZW50c1s2XSwgaCA9IG5ldyBYTUxIdHRwUmVxdWVzdDtcbiAgICAgICAgICAgICAgICBhICYmIGgudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoXCJwcm9ncmVzc1wiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICBhKHQubG9hZGVkLCB0LnRvdGFsKVxuICAgICAgICAgICAgICAgIH0pLCBoLm9wZW4oaSwgdCwgITApLCBvICYmIG8oaCwgbiksIGgub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoNCA9PT0gaC5yZWFkeVN0YXRlICYmIGguc3RhdHVzID49IDIwMCAmJiBoLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBoLnJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdC5sZW5ndGgpIHJldHVybiB2b2lkIHIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmluZGV4T2YoXCJDb250ZW50LUxlbmd0aFwiKSAhPT0gLTEpIHJldHVybiB2b2lkIHMoXCJmaWxlLXRvby1iaWdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IEpTT04ucGFyc2UoaC5yZXNwb25zZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gKFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIGUgPyBcInVuZGVmaW5lZFwiIDogYyhlKSkgJiYgXCJmYWlsdXJlXCIgPT09IGUuc3RhdHVzKSByZXR1cm4gdm9pZCBzKGUubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByKGUgfHwgdClcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICg0ID09PSBoLnJlYWR5U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gSlNPTi5wYXJzZShoLnJlc3BvbnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcIm9iamVjdFwiID09PSAoXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgbiA/IFwidW5kZWZpbmVkXCIgOiBjKG4pKSAmJiBcImZhaWx1cmVcIiA9PT0gbi5zdGF0dXMpIHJldHVybiB2b2lkIHMobi5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMoXCJmYWlsXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBoLnNlbmQobilcbiAgICAgICAgICAgIH0sIHogPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHQgJiYgKHQuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gXCJcIiwgdC5zdHlsZS50cmFuc2Zvcm0gPSBcIlwiKVxuICAgICAgICAgICAgfSwgRCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQgLyAxZTZcbiAgICAgICAgICAgIH0sIEEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSBbXSwgZSA9IHZvaWQgMCwgaSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICBmb3IgKGUgaW4gdykgdy5oYXNPd25Qcm9wZXJ0eShlKSAmJiAoaSA9IHdbZV0sIHQuaW5kZXhPZihpKSA9PSAtMSAmJiB0LnB1c2goaSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0XG4gICAgICAgICAgICB9LCBVID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbWFnZS9qcGVnXCIgPT09IHRcbiAgICAgICAgICAgIH0sIEggPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIGZvciAoZSBpbiB3KSBpZiAody5oYXNPd25Qcm9wZXJ0eShlKSAmJiB3W2VdID09PSB0KSByZXR1cm4gZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdFxuICAgICAgICAgICAgfSwgTiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgZm9yIChlIGluIHcpIGlmICh3Lmhhc093blByb3BlcnR5KGUpICYmIHQuaW5kZXhPZih3W2VdKSAhPT0gLTEpIHJldHVybiB3W2VdO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9LCBCID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpdChcIi9cIikucG9wKCkuc3BsaXQoXCI/XCIpLnNoaWZ0KClcbiAgICAgICAgICAgIH0sIEYgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSBlID8gYXJndW1lbnRzWzFdIDogXCJcIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGkgKyB0KS5zbGljZSgtaS5sZW5ndGgpXG4gICAgICAgICAgICB9LCBXID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5nZXRGdWxsWWVhcigpICsgXCItXCIgKyBGKHQuZ2V0TW9udGgoKSArIDEsIFwiMDBcIikgKyBcIi1cIiArIEYodC5nZXREYXRlKCksIFwiMDBcIikgKyBcIl9cIiArIEYodC5nZXRIb3VycygpLCBcIjAwXCIpICsgXCItXCIgKyBGKHQuZ2V0TWludXRlcygpLCBcIjAwXCIpICsgXCItXCIgKyBGKHQuZ2V0U2Vjb25kcygpLCBcIjAwXCIpXG4gICAgICAgICAgICB9LCBxID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdC5uYW1lID8gVyhuZXcgRGF0ZSkgKyBcIi5cIiArIEgoaih0KSkgOiB0Lm5hbWVcbiAgICAgICAgICAgIH0sIGogPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0LnR5cGUgfHwgXCJpbWFnZS9qcGVnXCJcbiAgICAgICAgICAgIH0sIFYgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGlmIChcInN0cmluZ1wiICE9IHR5cGVvZiB0KSByZXR1cm4gVyhuZXcgRGF0ZSk7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBCKHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlLnNwbGl0KFwiLlwiKS5zaGlmdCgpXG4gICAgICAgICAgICB9LCBHID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoW3RdLCBlLCB7dHlwZTogdC50eXBlLCBsYXN0TW9kaWZpZWQ6IERhdGUubm93KCl9KVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubGFzdE1vZGlmaWVkID0gbmV3IERhdGUsIHQubmFtZSA9IGUsIHRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBYID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gL15kYXRhOmltYWdlLy50ZXN0KHQpXG4gICAgICAgICAgICB9LCBZID0gZnVuY3Rpb24gKHQsIGUsIGksIG4sIG8sIGEpIHtcbiAgICAgICAgICAgICAgICB0ID0gXCJcIiArIHQgKyAodC5pbmRleE9mKFwiP1wiKSAhPT0gLTEgPyBcIiZcIiA6IFwiP1wiKSArIFwidXJsPVwiICsgbjtcbiAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBYTUxIdHRwUmVxdWVzdDtcbiAgICAgICAgICAgICAgICByLm9wZW4oXCJHRVRcIiwgdCwgITApLCBlKHIpLCByLnJlc3BvbnNlVHlwZSA9IFwianNvblwiLCByLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZmFpbHVyZVwiID09PSB0aGlzLnJlc3BvbnNlLnN0YXR1cyA/IHZvaWQgbyh0aGlzLnJlc3BvbnNlLm1lc3NhZ2UpIDogdm9pZCBKKHRoaXMucmVzcG9uc2UuYm9keSwgaSwgYSlcbiAgICAgICAgICAgICAgICB9LCByLnNlbmQoKVxuICAgICAgICAgICAgfSwgSiA9IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgdmFyIG8gPSBuZXcgWE1MSHR0cFJlcXVlc3Q7XG4gICAgICAgICAgICAgICAgby5vcGVuKFwiR0VUXCIsIHQsICEwKSwgZShvKSwgby5yZXNwb25zZVR5cGUgPSBcImJsb2JcIiwgby5vbmxvYWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoby5zdGF0dXMgPj0gMjAwICYmIG8uc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IEIodCksIHIgPSBOKHRoaXMucmVzcG9uc2UudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBiLnRlc3QoYSkgfHwgKGEgKz0gXCIuXCIgKyBIKHIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gRyh0aGlzLnJlc3BvbnNlLCBhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkoZ3QocywgcikpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuKG8uc3RhdHVzICsgXCI6IFwiICsgby5zdGF0dXNUZXh0KVxuICAgICAgICAgICAgICAgIH0sIG8ub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbigpXG4gICAgICAgICAgICAgICAgfSwgby5zZW5kKClcbiAgICAgICAgICAgIH0sICQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gdC5zcGxpdChcIixcIilbMV0sIGkgPSBlLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXRvYihpKVxuICAgICAgICAgICAgfSwgWiA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9ICQodCksIG4gPSBuZXcgQXJyYXlCdWZmZXIoaS5sZW5ndGgpLCBvID0gbmV3IFVpbnQ4QXJyYXkobiksIGEgPSAwOyBhIDwgaS5sZW5ndGg7IGErKykgb1thXSA9IGkuY2hhckNvZGVBdChhKTtcbiAgICAgICAgICAgICAgICB2YXIgciA9IHd0KHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiID09IHR5cGVvZiBlICYmIChlID0gVyhuZXcgRGF0ZSkgKyBcIi5cIiArIEgocikpLCBHKEsobiwgciksIGUpXG4gICAgICAgICAgICB9LCBLID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IHdpbmRvdy5CbG9iQnVpbGRlciA9IHdpbmRvdy5CbG9iQnVpbGRlciB8fCB3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXIgfHwgd2luZG93Lk1vekJsb2JCdWlsZGVyIHx8IHdpbmRvdy5NU0Jsb2JCdWlsZGVyO1xuICAgICAgICAgICAgICAgIGlmIChpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IGk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFwcGVuZCh0KSwgbi5nZXRCbG9iKGUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQmxvYihbdF0sIHt0eXBlOiBlfSlcbiAgICAgICAgICAgIH0sIFEgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIHZhciBvID0gXCJzdHJpbmdcIiAhPSB0eXBlb2YgdCB8fCAwICE9PSB0LmluZGV4T2YoXCJkYXRhOmltYWdlXCIpO1xuICAgICAgICAgICAgICAgIG4ucGFyc2VNZXRhRGF0YSh0LCBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHtjYW52YXM6ICEwLCBjcm9zc09yaWdpbjogb307XG4gICAgICAgICAgICAgICAgICAgIGUgJiYgKHIubWF4V2lkdGggPSBlLndpZHRoLCByLm1heEhlaWdodCA9IGUuaGVpZ2h0KSwgYS5leGlmICYmIChyLm9yaWVudGF0aW9uID0gYS5leGlmLmdldChcIk9yaWVudGF0aW9uXCIpKSwgbih0LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZXJyb3JcIiA9PT0gdC50eXBlID8gdm9pZCBpKCkgOiB2b2lkIGkodCwgYSlcbiAgICAgICAgICAgICAgICAgICAgfSwgcilcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgdHQgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIHZhciBuLCBvLCBhLCByLCBzID0gZSAvIHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMgPCBpID8gKHIgPSBlLCBhID0gciAvIGksIG4gPSAuNSAqICh0IC0gYSksIG8gPSAwKSA6IChhID0gdCwgciA9IGEgKiBpLCBuID0gMCwgbyA9IC41ICogKGUgLSByKSksIHtcbiAgICAgICAgICAgICAgICAgICAgeDogbiwgeTogbywgaGVpZ2h0OiByLCB3aWR0aDogYVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGV0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IHt9LCBvID0gYXJndW1lbnRzWzJdLCBhID0gayhcImNhbnZhc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgciA9IG4ucm90YXRpb24sIHMgPSBuLmNyb3AsIGggPSBuLnNpemUsIHUgPSBuLmZpbHRlcnMsIGwgPSBuLm1pblNpemU7XG4gICAgICAgICAgICAgICAgaWYgKHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByICUgMTgwICE9PSAwLCBjID0ge3dpZHRoOiBwID8gdC5oZWlnaHQgOiB0LndpZHRoLCBoZWlnaHQ6IHAgPyB0LndpZHRoIDogdC5oZWlnaHR9O1xuICAgICAgICAgICAgICAgICAgICBzLnggPCAwICYmIChzLnggPSAwKSwgcy55IDwgMCAmJiAocy55ID0gMCksIHMud2lkdGggPiBjLndpZHRoICYmIChzLndpZHRoID0gYy53aWR0aCksIHMuaGVpZ2h0ID4gYy5oZWlnaHQgJiYgKHMuaGVpZ2h0ID0gYy5oZWlnaHQpLCBzLnkgKyBzLmhlaWdodCA+IGMuaGVpZ2h0ICYmIChzLnkgPSBNYXRoLm1heCgwLCBjLmhlaWdodCAtIHMuaGVpZ2h0KSksIHMueCArIHMud2lkdGggPiBjLndpZHRoICYmIChzLnggPSBNYXRoLm1heCgwLCBjLndpZHRoIC0gcy53aWR0aCkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHMueCAvIGMud2lkdGgsIGYgPSBzLnkgLyBjLmhlaWdodCwgXyA9IHMud2lkdGggLyBjLndpZHRoLCBtID0gcy5oZWlnaHQgLyBjLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYS53aWR0aCA9IHMud2lkdGgsIGEuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBnID0gYS5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgICAgIDkwID09PSByID8gKGcudHJhbnNsYXRlKC41ICogYS53aWR0aCwgLjUgKiBhLmhlaWdodCksIGcucm90YXRlKC05MCAqIE1hdGguUEkgLyAxODApLCBnLmRyYXdJbWFnZSh0LCAoMSAtIGYpICogdC53aWR0aCAtIHQud2lkdGggKiBtLCBzLngsIHMuaGVpZ2h0LCBzLndpZHRoLCAuNSAqIC1hLmhlaWdodCwgLjUgKiAtYS53aWR0aCwgYS5oZWlnaHQsIGEud2lkdGgpKSA6IDE4MCA9PT0gciA/IChnLnRyYW5zbGF0ZSguNSAqIGEud2lkdGgsIC41ICogYS5oZWlnaHQpLCBnLnJvdGF0ZSgtMTgwICogTWF0aC5QSSAvIDE4MCksIGcuZHJhd0ltYWdlKHQsICgxIC0gKGQgKyBfKSkgKiBjLndpZHRoLCAoMSAtIChmICsgbSkpICogYy5oZWlnaHQsIF8gKiBjLndpZHRoLCBtICogYy5oZWlnaHQsIC41ICogLWEud2lkdGgsIC41ICogLWEuaGVpZ2h0LCBhLndpZHRoLCBhLmhlaWdodCkpIDogMjcwID09PSByID8gKGcudHJhbnNsYXRlKC41ICogYS53aWR0aCwgLjUgKiBhLmhlaWdodCksIGcucm90YXRlKC0yNzAgKiBNYXRoLlBJIC8gMTgwKSwgZy5kcmF3SW1hZ2UodCwgcy55LCAoMSAtIGQpICogdC5oZWlnaHQgLSB0LmhlaWdodCAqIF8sIHMuaGVpZ2h0LCBzLndpZHRoLCAuNSAqIC1hLmhlaWdodCwgLjUgKiAtYS53aWR0aCwgYS5oZWlnaHQsIGEud2lkdGgpKSA6IGcuZHJhd0ltYWdlKHQsIHMueCwgcy55LCBzLndpZHRoLCBzLmhlaWdodCwgMCwgMCwgYS53aWR0aCwgYS5oZWlnaHQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2ID0gaC53aWR0aCAvIGEud2lkdGgsIHkgPSBoLmhlaWdodCAvIGEuaGVpZ2h0LCB3ID0gTWF0aC5taW4odiwgeSk7XG4gICAgICAgICAgICAgICAgICAgIGkoYSwgdywgaCwgbCksIHUuc2hhcnBlbiA+IDAgJiYgbnQoYSwgYXQodS5zaGFycGVuKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbyhhKVxuICAgICAgICAgICAgfSwgaXQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gdC5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0SW1hZ2VEYXRhKDAsIDAsIHQud2lkdGgsIHQuaGVpZ2h0KVxuICAgICAgICAgICAgfSwgbnQgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gdC5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgaS5wdXRJbWFnZURhdGEoZShpdCh0KSwgdC53aWR0aCwgdC5oZWlnaHQpLCAwLCAwKVxuICAgICAgICAgICAgfSwgb3QgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgICAgICAgICBuLndpZHRoID0gdCwgbi5oZWlnaHQgPSBlO1xuICAgICAgICAgICAgICAgIHZhciBvID0gbi5nZXRDb250ZXh0KFwiMmRcIiksIGEgPSBvLmNyZWF0ZUltYWdlRGF0YShuLndpZHRoLCBuLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgYS5zZXQoaS5kYXRhKSwgYVxuICAgICAgICAgICAgfSwgYXQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gWzAsIC0xLCAwLCAtMSwgNSwgLTEsIDAsIC0xLCAwXSwgYSA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KG8ubGVuZ3RoKSksIHIgPSAuNSAqIGEgfCAwLCBzID0gb3QoaSwgbiksIGggPSBzLmRhdGEsIHUgPSBlLmRhdGEsIGwgPSBuLCBwID0gdm9pZCAwOyBsLS07KSBmb3IgKHAgPSBpOyBwLS07KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gbCwgZCA9IHAsIGYgPSA0ICogKGwgKiBpICsgcCksIF8gPSAwLCBtID0gMCwgZyA9IDAsIHYgPSAwLCB5ID0gMDsgeSA8IGE7IHkrKykgZm9yICh2YXIgdyA9IDA7IHcgPCBhOyB3KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGMgKyB5IC0gciwgayA9IGQgKyB3IC0gcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA+PSAwICYmIGIgPCBuICYmIGsgPj0gMCAmJiBrIDwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IDQgKiAoYiAqIGkgKyBrKSwgUyA9IG9beSAqIGEgKyB3XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyArPSB1W3hdICogUywgbSArPSB1W3ggKyAxXSAqIFMsIGcgKz0gdVt4ICsgMl0gKiBTLCB2ICs9IHVbeCArIDNdICogU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhbZl0gPSBfICogdCArIHVbZl0gKiAoMSAtIHQpLCBoW2YgKyAxXSA9IG0gKiB0ICsgdVtmICsgMV0gKiAoMSAtIHQpLCBoW2YgKyAyXSA9IGcgKiB0ICsgdVtmICsgMl0gKiAoMSAtIHQpLCBoW2YgKyAzXSA9IHVbZiArIDNdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBydCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBNYXRoLmFicyh0LndpZHRoIC0gZS53aWR0aCksIG4gPSBNYXRoLmFicyh0LmhlaWdodCAtIGUuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoaSwgbilcbiAgICAgICAgICAgIH0sIHN0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHQodCwgMSlcbiAgICAgICAgICAgIH0sIGh0ID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSwgbyA9IG4uZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuLndpZHRoID0gdC53aWR0aCwgbi5oZWlnaHQgPSB0LmhlaWdodCwgby5kcmF3SW1hZ2UodCwgMCwgMCksIGUgPiAwICYmIDEgIT09IGUgJiYgaShuLCBlLCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHQud2lkdGggKiBlKSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHQuaGVpZ2h0ICogZSlcbiAgICAgICAgICAgICAgICB9LCB7d2lkdGg6IDAsIGhlaWdodDogMH0pLCBuXG4gICAgICAgICAgICB9LCB1dCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQud2lkdGggJiYgdC5oZWlnaHRcbiAgICAgICAgICAgIH0sIGx0ID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGUuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgICAgICAgIHV0KGUpID8gaS5kcmF3SW1hZ2UodCwgMCwgMCwgZS53aWR0aCwgZS5oZWlnaHQpIDogKGUud2lkdGggPSB0LndpZHRoLCBlLmhlaWdodCA9IHQuaGVpZ2h0LCBpLmRyYXdJbWFnZSh0LCAwLCAwKSlcbiAgICAgICAgICAgIH0sIHB0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBsKHQsIDAsIDAsIHQud2lkdGgsIHQuaGVpZ2h0LCAzKVxuICAgICAgICAgICAgfSwgY3QgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh0LndpZHRoLCAxMCkgPj0gZS53aWR0aCAmJiBwYXJzZUludCh0LmhlaWdodCwgMTApID49IGUuaGVpZ2h0XG4gICAgICAgICAgICB9LCBkdCA9IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt4OiB0LnggKiBlLCB5OiB0LnkgKiBpLCB3aWR0aDogdC53aWR0aCAqIGUsIGhlaWdodDogdC5oZWlnaHQgKiBpfVxuICAgICAgICAgICAgfSwgZnQgPSBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7eDogdC54IC8gZSwgeTogdC55IC8gaSwgd2lkdGg6IHQud2lkdGggLyBlLCBoZWlnaHQ6IHQuaGVpZ2h0IC8gaX1cbiAgICAgICAgICAgIH0sIF90ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAodCAmJiBcIlwiICE9PSB0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gXCJcIlxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZvcm1cIiksIG4gPSB0LnBhcmVudE5vZGUsIG8gPSB0Lm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgaS5hcHBlbmRDaGlsZCh0KSwgaS5yZXNldCgpLCBvID8gbi5pbnNlcnRCZWZvcmUodCwgbykgOiBuLmFwcGVuZENoaWxkKHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBtdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwib2JqZWN0XCIgPT09IChcInVuZGVmaW5lZFwiID09IHR5cGVvZiB2YWx1ZSA/IFwidW5kZWZpbmVkXCIgOiBjKHZhbHVlKSkgJiYgbnVsbCAhPT0gdmFsdWUgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKSA6IHRcbiAgICAgICAgICAgIH0sIGd0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuc2xpY2UoMCwgdC5zaXplLCBpIHx8IHQudHlwZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG4ubmFtZSA9IHQubmFtZSwgbi5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZSh0Lmxhc3RNb2RpZmllZCksIG5cbiAgICAgICAgICAgIH0sIHZ0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IG10KHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmlucHV0LmZpbGUgPSBndCh0LmlucHV0LmZpbGUpLCBlLm91dHB1dC5pbWFnZSA9IHN0KHQub3V0cHV0LmltYWdlKSwgZVxuICAgICAgICAgICAgfSwgeXQgPSBmdW5jdGlvbiAodCwgaSwgbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIGkgPyB0LnRvRGF0YVVSTChpLCBVKGkpICYmIFwibnVtYmVyXCIgPT0gdHlwZW9mIG4gPyBuIC8gMTAwIDogZSkgOiBudWxsXG4gICAgICAgICAgICB9LCB3dCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuc3Vic3RyKDAsIDE2KS5tYXRjaCgvXi4rOy8pO1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmxlbmd0aCA/IGVbMF0uc3Vic3RyaW5nKDUsIGVbMF0ubGVuZ3RoIC0gMSkgOiBudWxsXG4gICAgICAgICAgICB9LCBidCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IGUgPyBhcmd1bWVudHNbMV0gOiBbXSwgbiA9IGFyZ3VtZW50c1syXSwgbyA9IGFyZ3VtZW50c1szXSxcbiAgICAgICAgICAgICAgICAgICAgYSA9IGFyZ3VtZW50c1s0XSwgciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcjogbXQodC5zZXJ2ZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YTogbXQodC5tZXRhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdC5pbnB1dC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHQuaW5wdXQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB0LmlucHV0LnNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQuaW5wdXQud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LmlucHV0LmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogdC5pbnB1dC5maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBMKFwiaW5wdXRcIiwgaSkgJiYgIWEgJiYgKHIuaW5wdXQuaW1hZ2UgPSB5dCh0LmlucHV0LmltYWdlLCB0LmlucHV0LnR5cGUpKSwgTChcIm91dHB1dFwiLCBpKSAmJiAoci5vdXRwdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG8gPyBWKHQuaW5wdXQubmFtZSkgKyBcIi5cIiArIG8gOiB0LmlucHV0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHdbb10gfHwgdC5pbnB1dC50eXBlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdC5vdXRwdXQud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdC5vdXRwdXQuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSwgci5vdXRwdXQuaW1hZ2UgPSB5dCh0Lm91dHB1dC5pbWFnZSwgci5vdXRwdXQudHlwZSwgbiksIHIub3V0cHV0LnR5cGUgPSB3dChyLm91dHB1dC5pbWFnZSksIFwiaW1hZ2UvcG5nXCIgPT09IHIub3V0cHV0LnR5cGUgJiYgKHIub3V0cHV0Lm5hbWUgPSBWKHIuaW5wdXQubmFtZSkgKyBcIi5wbmdcIikpLCBMKFwiYWN0aW9uc1wiLCBpKSAmJiAoci5hY3Rpb25zID0gbXQodC5hY3Rpb25zKSksIHJcbiAgICAgICAgICAgIH0sIGt0ID0gZnVuY3Rpb24gKHQsIGksIG4pIHtcbiAgICAgICAgICAgICAgICB2YXIgbyA9IHQub3V0cHV0LmltYWdlLCBhID0gbiA/IFYodC5pbnB1dC5uYW1lKSArIFwiLlwiICsgbiA6IHQuaW5wdXQubmFtZSwgciA9IHdbbl0gfHwgdC5pbnB1dC50eXBlO1xuICAgICAgICAgICAgICAgIFwiaW1hZ2UvcG5nXCIgPT09IHIgJiYgKGEgPSBWKHQuaW5wdXQubmFtZSkgKyBcIi5wbmdcIiksIG8udG9CbG9iKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcIm1zU2F2ZUJsb2JcIiBpbiB3aW5kb3cubmF2aWdhdG9yKSByZXR1cm4gdm9pZCB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IodCwgYSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlID0gKHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTCkuY3JlYXRlT2JqZWN0VVJMKHQpLCBpID0gayhcImFcIik7XG4gICAgICAgICAgICAgICAgICAgIGkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiLCBpLmRvd25sb2FkID0gYSwgaS5ocmVmID0gZSwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKSwgaS5jbGljaygpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaSksICh3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkwpLnJldm9rZU9iamVjdFVSTChlKVxuICAgICAgICAgICAgICAgICAgICB9LCAwKVxuICAgICAgICAgICAgICAgIH0sIHIsIFwibnVtYmVyXCIgPT0gdHlwZW9mIGkgPyBpIC8gMTAwIDogZSlcbiAgICAgICAgICAgIH0sIHh0ID0gZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbiA9IGkucXVlcnlTZWxlY3Rvcih0KTtcbiAgICAgICAgICAgICAgICBuICYmIChuLnN0eWxlLmRpc3BsYXkgPSBlID8gXCJcIiA6IFwibm9uZVwiKVxuICAgICAgICAgICAgfSwgU3QgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KVxuICAgICAgICAgICAgfSwgRXQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KVxuICAgICAgICAgICAgfSwgQ3QgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gayhcImRpdlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdC5wYXJlbnROb2RlICYmICh0Lm5leHRTaWJsaW5nID8gdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0Lm5leHRTaWJsaW5nKSA6IHQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlKSksIGUuYXBwZW5kQ2hpbGQodCksIGVcbiAgICAgICAgICAgIH0sIFB0ID0gZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICB2YXIgbyA9IChuIC0gOTApICogTWF0aC5QSSAvIDE4MDtcbiAgICAgICAgICAgICAgICByZXR1cm4ge3g6IHQgKyBpICogTWF0aC5jb3MobyksIHk6IGUgKyBpICogTWF0aC5zaW4obyl9XG4gICAgICAgICAgICB9LCBNdCA9IGZ1bmN0aW9uICh0LCBlLCBpLCBuLCBvKSB7XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBQdCh0LCBlLCBpLCBvKSwgciA9IFB0KHQsIGUsIGksIG4pLCBzID0gbyAtIG4gPD0gMTgwID8gXCIwXCIgOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgaCA9IFtcIk1cIiwgYS54LCBhLnksIFwiQVwiLCBpLCBpLCAwLCBzLCAwLCByLngsIHIueV0uam9pbihcIiBcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhcbiAgICAgICAgICAgIH0sIFJ0ID0gZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTXQodCwgZSwgaSwgMCwgMzYwICogbilcbiAgICAgICAgICAgIH0sIFR0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBpID0ge1xuICAgICAgICAgICAgICAgICAgICBuOiBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHIsIHMsIGgsIHUsIGwsIHA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA9IHQueSArIHQuaGVpZ2h0LCBvID0gSShlLnksIDAsIHIpLCByIC0gbyA8IGkubWluLmhlaWdodCAmJiAobyA9IHIgLSBpLm1pbi5oZWlnaHQpLCBoID0gbiA/IChyIC0gbykgLyBuIDogdC53aWR0aCwgaCA8IGkubWluLndpZHRoICYmIChoID0gaS5taW4ud2lkdGgsIG8gPSByIC0gaCAqIG4pLCBsID0gLjUgKiAoaCAtIHQud2lkdGgpLCBzID0gdC54IC0gbCwgYSA9IHQueCArIHQud2lkdGggKyBsLCAocyA8IDAgfHwgTWF0aC5yb3VuZChhKSA+IE1hdGgucm91bmQoaS53aWR0aCkpICYmIChwID0gTWF0aC5taW4odC54LCBpLndpZHRoIC0gKHQueCArIHQud2lkdGgpKSwgcyA9IHQueCAtIHAsIGEgPSB0LnggKyB0LndpZHRoICsgcCwgaCA9IGEgLSBzLCB1ID0gaCAqIG4sIG8gPSByIC0gdSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEgLSBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciAtIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgczogZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCByLCBzLCBoLCB1LCBsLCBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPSB0LnksIHIgPSBJKGUueSwgbywgaS5oZWlnaHQpLCByIC0gbyA8IGkubWluLmhlaWdodCAmJiAociA9IG8gKyBpLm1pbi5oZWlnaHQpLCBoID0gbiA/IChyIC0gbykgLyBuIDogdC53aWR0aCwgaCA8IGkubWluLndpZHRoICYmIChoID0gaS5taW4ud2lkdGgsIHIgPSBvICsgaCAqIG4pLCBsID0gLjUgKiAoaCAtIHQud2lkdGgpLCBzID0gdC54IC0gbCwgYSA9IHQueCArIHQud2lkdGggKyBsLCAocyA8IDAgfHwgTWF0aC5yb3VuZChhKSA+IE1hdGgucm91bmQoaS53aWR0aCkpICYmIChwID0gTWF0aC5taW4odC54LCBpLndpZHRoIC0gKHQueCArIHQud2lkdGgpKSwgcyA9IHQueCAtIHAsIGEgPSB0LnggKyB0LndpZHRoICsgcCwgaCA9IGEgLSBzLCB1ID0gaCAqIG4sIHIgPSBvICsgdSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEgLSBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciAtIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgZTogZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCByLCBzLCBoLCB1LCBsLCBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB0LngsIGEgPSBJKGUueCwgcywgaS53aWR0aCksIGEgLSBzIDwgaS5taW4ud2lkdGggJiYgKGEgPSBzICsgaS5taW4ud2lkdGgpLCB1ID0gbiA/IChhIC0gcykgKiBuIDogdC5oZWlnaHQsIHUgPCBpLm1pbi5oZWlnaHQgJiYgKHUgPSBpLm1pbi5oZWlnaHQsIGEgPSBzICsgdSAvIG4pLCBsID0gLjUgKiAodSAtIHQuaGVpZ2h0KSwgbyA9IHQueSAtIGwsIHIgPSB0LnkgKyB0LmhlaWdodCArIGwsIChvIDwgMCB8fCBNYXRoLnJvdW5kKHIpID4gTWF0aC5yb3VuZChpLmhlaWdodCkpICYmIChwID0gTWF0aC5taW4odC55LCBpLmhlaWdodCAtICh0LnkgKyB0LmhlaWdodCkpLCBvID0gdC55IC0gcCwgciA9IHQueSArIHQuaGVpZ2h0ICsgcCwgdSA9IHIgLSBvLCBoID0gdSAvIG4sIGEgPSBzICsgaCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEgLSBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciAtIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdzogZnVuY3Rpb24gbih0LCBlLCBpLCBvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgciwgcywgaCwgbiwgdSwgbCwgcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gdC54ICsgdC53aWR0aCwgaCA9IEkoZS54LCAwLCByKSwgciAtIGggPCBpLm1pbi53aWR0aCAmJiAoaCA9IHIgLSBpLm1pbi53aWR0aCksIHUgPSBvID8gKHIgLSBoKSAqIG8gOiB0LmhlaWdodCwgdSA8IGkubWluLmhlaWdodCAmJiAodSA9IGkubWluLmhlaWdodCwgaCA9IHIgLSB1IC8gbyksIGwgPSAuNSAqICh1IC0gdC5oZWlnaHQpLCBhID0gdC55IC0gbCwgcyA9IHQueSArIHQuaGVpZ2h0ICsgbCwgKGEgPCAwIHx8IE1hdGgucm91bmQocykgPiBNYXRoLnJvdW5kKGkuaGVpZ2h0KSkgJiYgKHAgPSBNYXRoLm1pbih0LnksIGkuaGVpZ2h0IC0gKHQueSArIHQuaGVpZ2h0KSksIGEgPSB0LnkgLSBwLCBzID0gdC55ICsgdC5oZWlnaHQgKyBwLCB1ID0gcyAtIGEsIG4gPSB1IC8gbywgaCA9IHIgLSBuKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogciAtIGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzIC0gYVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBuZTogZnVuY3Rpb24gKHQsIGUsIGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCByLCBzLCBoLCB1LCBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB0LngsIHIgPSB0LnkgKyB0LmhlaWdodCwgYSA9IEkoZS54LCBzLCBpLndpZHRoKSwgYSAtIHMgPCBpLm1pbi53aWR0aCAmJiAoYSA9IHMgKyBpLm1pbi53aWR0aCksIHUgPSBuID8gKGEgLSBzKSAqIG4gOiBJKHIgLSBlLnksIGkubWluLmhlaWdodCwgciksIHUgPCBpLm1pbi5oZWlnaHQgJiYgKHUgPSBpLm1pbi5oZWlnaHQsIGEgPSBzICsgdSAvIG4pLCBvID0gdC55IC0gKHUgLSB0LmhlaWdodCksIChvIDwgMCB8fCBNYXRoLnJvdW5kKHIpID4gTWF0aC5yb3VuZChpLmhlaWdodCkpICYmIChsID0gTWF0aC5taW4odC55LCBpLmhlaWdodCAtICh0LnkgKyB0LmhlaWdodCkpLCBvID0gdC55IC0gbCwgdSA9IHIgLSBvLCBoID0gdSAvIG4sIGEgPSBzICsgaCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEgLSBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciAtIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgc2U6IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbywgYSwgciwgcywgaCwgdSwgbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzID0gdC54LCBvID0gdC55LCBhID0gSShlLngsIHMsIGkud2lkdGgpLCBhIC0gcyA8IGkubWluLndpZHRoICYmIChhID0gcyArIGkubWluLndpZHRoKSwgdSA9IG4gPyAoYSAtIHMpICogbiA6IEkoZS55IC0gdC55LCBpLm1pbi5oZWlnaHQsIGkuaGVpZ2h0IC0gbyksIHUgPCBpLm1pbi5oZWlnaHQgJiYgKHUgPSBpLm1pbi5oZWlnaHQsIGEgPSBzICsgdSAvIG4pLCByID0gdC55ICsgdC5oZWlnaHQgKyAodSAtIHQuaGVpZ2h0KSwgKG8gPCAwIHx8IE1hdGgucm91bmQocikgPiBNYXRoLnJvdW5kKGkuaGVpZ2h0KSkgJiYgKGwgPSBNYXRoLm1pbih0LnksIGkuaGVpZ2h0IC0gKHQueSArIHQuaGVpZ2h0KSksIHIgPSB0LnkgKyB0LmhlaWdodCArIGwsIHUgPSByIC0gbywgaCA9IHUgLyBuLCBhID0gcyArIGgpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhIC0gcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHIgLSBvXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHN3OiBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHIsIHMsIGgsIHUsIGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IHQueCArIHQud2lkdGgsIG8gPSB0LnksIHMgPSBJKGUueCwgMCwgYSksIGEgLSBzIDwgaS5taW4ud2lkdGggJiYgKHMgPSBhIC0gaS5taW4ud2lkdGgpLCB1ID0gbiA/IChhIC0gcykgKiBuIDogSShlLnkgLSB0LnksIGkubWluLmhlaWdodCwgaS5oZWlnaHQgLSBvKSwgdSA8IGkubWluLmhlaWdodCAmJiAodSA9IGkubWluLmhlaWdodCwgcyA9IGEgLSB1IC8gbiksIHIgPSB0LnkgKyB0LmhlaWdodCArICh1IC0gdC5oZWlnaHQpLCAobyA8IDAgfHwgTWF0aC5yb3VuZChyKSA+IE1hdGgucm91bmQoaS5oZWlnaHQpKSAmJiAobCA9IE1hdGgubWluKHQueSwgaS5oZWlnaHQgLSAodC55ICsgdC5oZWlnaHQpKSwgciA9IHQueSArIHQuaGVpZ2h0ICsgbCwgdSA9IHIgLSBvLCBoID0gdSAvIG4sIHMgPSBhIC0gaCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEgLSBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciAtIG9cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgbnc6IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbywgYSwgciwgcywgaCwgdSwgbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gdC54ICsgdC53aWR0aCwgciA9IHQueSArIHQuaGVpZ2h0LCBzID0gSShlLngsIDAsIGEpLCBhIC0gcyA8IGkubWluLndpZHRoICYmIChzID0gYSAtIGkubWluLndpZHRoKSwgdSA9IG4gPyAoYSAtIHMpICogbiA6IEkociAtIGUueSwgaS5taW4uaGVpZ2h0LCByKSwgdSA8IGkubWluLmhlaWdodCAmJiAodSA9IGkubWluLmhlaWdodCwgcyA9IGEgLSB1IC8gbiksIG8gPSB0LnkgLSAodSAtIHQuaGVpZ2h0KSwgKG8gPCAwIHx8IE1hdGgucm91bmQocikgPiBNYXRoLnJvdW5kKGkuaGVpZ2h0KSkgJiYgKGwgPSBNYXRoLm1pbih0LnksIGkuaGVpZ2h0IC0gKHQueSArIHQuaGVpZ2h0KSksIG8gPSB0LnkgLSBsLCB1ID0gciAtIG8sIGggPSB1IC8gbiwgcyA9IGEgLSBoKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSAtIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByIC0gb1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IGUgPyBhcmd1bWVudHNbMF0gOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdCh0aGlzLCBuKSwgdGhpcy5fZWxlbWVudCA9IGksIHRoaXMuX2ludGVyYWN0aW9uID0gbnVsbCwgdGhpcy5fbWluV2lkdGggPSAxLCB0aGlzLl9taW5IZWlnaHQgPSAxLCB0aGlzLl9yYXRpbyA9IG51bGwsIHRoaXMuX3JlY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fc3BhY2UgPSB7d2lkdGg6IDAsIGhlaWdodDogMH0sIHRoaXMuX3JlY3RDaGFuZ2VkID0gITEsIHRoaXMuX2luaXQoKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAobiwgW3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfaW5pdFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gXCJzbGltLWNyb3AtYXJlYVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gayhcImRpdlwiLCBcImdyaWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGkpIGlmIChpLmhhc093blByb3BlcnR5KGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gayhcImJ1dHRvblwiLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGsoXCJidXR0b25cIiwgXCJjXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobyksIHgoZG9jdW1lbnQsIHkuRE9XTiwgdGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInJlc2V0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJhY3Rpb24gPSBudWxsLCB0aGlzLl9yZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fcmVjdENoYW5nZWQgPSAhMCwgdGhpcy5fcmVkcmF3KCksIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjaGFuZ2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJyZXNjYWxlXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgIT09IHQgJiYgKHRoaXMuX2ludGVyYWN0aW9uID0gbnVsbCwgdGhpcy5fcmVjdENoYW5nZWQgPSAhMCwgdGhpcy5fcmVjdC54ICo9IHQsIHRoaXMuX3JlY3QueSAqPSB0LCB0aGlzLl9yZWN0LndpZHRoICo9IHQsIHRoaXMuX3JlY3QuaGVpZ2h0ICo9IHQsIHRoaXMuX3JlZHJhdygpLCB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2hhbmdlXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImxpbWl0XCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NwYWNlLndpZHRoID0gdCwgdGhpcy5fc3BhY2UuaGVpZ2h0ID0gZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwib2Zmc2V0XCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NwYWNlLnggPSB0LCB0aGlzLl9zcGFjZS55ID0gZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwicmVzaXplXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSwgaSwgbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyYWN0aW9uID0gbnVsbCwgdGhpcy5fcmVjdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogSSh0LCAwLCB0aGlzLl9zcGFjZS53aWR0aCAtIHRoaXMuX21pbldpZHRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogSShlLCAwLCB0aGlzLl9zcGFjZS5oZWlnaHQgLSB0aGlzLl9taW5IZWlnaHQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogSShpLCB0aGlzLl9taW5XaWR0aCwgdGhpcy5fc3BhY2Uud2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IEkobiwgdGhpcy5fbWluSGVpZ2h0LCB0aGlzLl9zcGFjZS5oZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fcmVjdENoYW5nZWQgPSAhMCwgdGhpcy5fcmVkcmF3KCksIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjaGFuZ2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJoYW5kbGVFdmVudFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJ0b3VjaHN0YXJ0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInBvaW50ZXJkb3duXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcIm1vdXNlZG93blwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25TdGFydERyYWcodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwidG91Y2htb3ZlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInBvaW50ZXJtb3ZlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcIm1vdXNlbW92ZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25EcmFnKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInRvdWNoZW5kXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInRvdWNoY2FuY2VsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInBvaW50ZXJ1cFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJtb3VzZXVwXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vblN0b3BEcmFnKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uU3RhcnREcmFnXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY29udGFpbnModC50YXJnZXQpICYmICh0LnByZXZlbnREZWZhdWx0KCksIHgoZG9jdW1lbnQsIHkuTU9WRSwgdGhpcyksIHgoZG9jdW1lbnQsIHkuVVAsIHRoaXMpLCB0aGlzLl9pbnRlcmFjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdC50YXJnZXQuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IFAodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9pbnRlcmFjdGlvbi5vZmZzZXQueCAtPSB0aGlzLl9yZWN0LngsIHRoaXMuX2ludGVyYWN0aW9uLm9mZnNldC55IC09IHRoaXMuX3JlY3QueSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWRyYWdnaW5nXCIsIFwidHJ1ZVwiKSwgdGhpcy5fcmVkcmF3KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25EcmFnXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFAodCksIG4gPSB0aGlzLl9pbnRlcmFjdGlvbi50eXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY1wiID09PSBuID8gKHRoaXMuX3JlY3QueCA9IEkoZS54IC0gdGhpcy5faW50ZXJhY3Rpb24ub2Zmc2V0LngsIDAsIHRoaXMuX3NwYWNlLndpZHRoIC0gdGhpcy5fcmVjdC53aWR0aCksIHRoaXMuX3JlY3QueSA9IEkoZS55IC0gdGhpcy5faW50ZXJhY3Rpb24ub2Zmc2V0LnksIDAsIHRoaXMuX3NwYWNlLmhlaWdodCAtIHRoaXMuX3JlY3QuaGVpZ2h0KSkgOiBpW25dICYmICh0aGlzLl9yZWN0ID0gaVtuXSh0aGlzLl9yZWN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUueCAtIHRoaXMuX3NwYWNlLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUueSAtIHRoaXMuX3NwYWNlLnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9zcGFjZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLl9zcGFjZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjoge3dpZHRoOiB0aGlzLl9taW5XaWR0aCwgaGVpZ2h0OiB0aGlzLl9taW5IZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fcmF0aW8pKSwgdGhpcy5fcmVjdENoYW5nZWQgPSAhMCwgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImlucHV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uU3RvcERyYWdcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpLCBTKGRvY3VtZW50LCB5Lk1PVkUsIHRoaXMpLCBTKGRvY3VtZW50LCB5LlVQLCB0aGlzKSwgdGhpcy5faW50ZXJhY3Rpb24gPSBudWxsLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtZHJhZ2dpbmdcIiwgXCJmYWxzZVwiKSwgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9yZWRyYXdcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3JlY3RDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLl9yZWN0LnggKyBcInB4LFwiICsgdGhpcy5fcmVjdC55ICsgXCJweCk7XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiXFxuXFx0XFx0XFx0XFx0XFx0LXdlYmtpdC10cmFuc2Zvcm06IFwiICsgZSArIFwiO1xcblxcdFxcdFxcdFxcdFxcdHRyYW5zZm9ybTogXCIgKyBlICsgXCI7XFxuXFx0XFx0XFx0XFx0XFx0d2lkdGg6XCIgKyB0aGlzLl9yZWN0LndpZHRoICsgXCJweDtcXG5cXHRcXHRcXHRcXHRcXHRoZWlnaHQ6XCIgKyB0aGlzLl9yZWN0LmhlaWdodCArIFwicHg7XFxuXFx0XFx0XFx0XFx0XCIsIHRoaXMuX3JlY3RDaGFuZ2VkID0gITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJhY3Rpb24gJiYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuX3JlZHJhdygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImRlc3Ryb3lcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcmFjdGlvbiA9ICExLCB0aGlzLl9yZWN0Q2hhbmdlZCA9ICExLCBTKGRvY3VtZW50LCB5LkRPV04sIHRoaXMpLCBTKGRvY3VtZW50LCB5Lk1PVkUsIHRoaXMpLCBTKGRvY3VtZW50LCB5LlVQLCB0aGlzKSwgRXQodGhpcy5fZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImVsZW1lbnRcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInNwYWNlXCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiYXJlYVwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3JlY3QueCAvIHRoaXMuX3NwYWNlLndpZHRoLCBlID0gdGhpcy5fcmVjdC55IC8gdGhpcy5fc3BhY2UuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5fcmVjdC53aWR0aCAvIHRoaXMuX3NwYWNlLndpZHRoLCBuID0gdGhpcy5fcmVjdC5oZWlnaHQgLyB0aGlzLl9zcGFjZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt4OiB0LCB5OiBlLCB3aWR0aDogaSwgaGVpZ2h0OiBufVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZGlydHlcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgIT09IHRoaXMuX3JlY3QueCB8fCAwICE9PSB0aGlzLl9yZWN0LnkgfHwgMCAhPT0gdGhpcy5fcmVjdC53aWR0aCB8fCAwICE9PSB0aGlzLl9yZWN0LmhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwibWluV2lkdGhcIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbldpZHRoID0gTWF0aC5tYXgodCwgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm1pbkhlaWdodFwiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluSGVpZ2h0ID0gTWF0aC5tYXgodCwgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInJhdGlvXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yYXRpbyA9IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfV0pLCBuXG4gICAgICAgICAgICAgICAgfSgpXG4gICAgICAgICAgICB9KCksIEl0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gW1wiaW5wdXRcIiwgXCJjaGFuZ2VcIl0sIG4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdCh0aGlzLCBuKSwgdGhpcy5fZWxlbWVudCA9IGksIHRoaXMuX29wdGlvbnMgPSBnKG4ub3B0aW9ucygpLCBvKSwgdGhpcy5fcmF0aW8gPSBudWxsLCB0aGlzLl9vdXRwdXQgPSBudWxsLCB0aGlzLl9yb3RhdGluZyA9ICExLCB0aGlzLl9pbnB1dCA9IG51bGwsIHRoaXMuX3ByZXZpZXcgPSBudWxsLCB0aGlzLl9wcmV2aWV3Qmx1cnJlZCA9IG51bGwsIHRoaXMuX2JsdXJyZWRQcmV2aWV3ID0gITEsIHRoaXMuX2Nyb3BwZXIgPSBudWxsLCB0aGlzLl9zdHJhaWdodENyb3AgPSBudWxsLCB0aGlzLl9wcmV2aWV3V3JhcHBlciA9IG51bGwsIHRoaXMuX2N1cnJlbnRXaW5kb3dTaXplID0ge30sIHRoaXMuX2J0bkdyb3VwID0gbnVsbCwgdGhpcy5fbWFza0ZyYW1lID0gbnVsbCwgdGhpcy5fZGlydHkgPSAhMSwgdGhpcy5fd3JhcHBlclJvdGF0aW9uID0gMCwgdGhpcy5fd3JhcHBlclNjYWxlID0gMSwgdGhpcy5faW5pdCgpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcChuLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9pbml0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gXCJzbGltLWltYWdlLWVkaXRvclwiLCB0aGlzLl9jb250YWluZXIgPSBrKFwiZGl2XCIsIFwic2xpbS1jb250YWluZXJcIiksIHRoaXMuX3dyYXBwZXIgPSBrKFwiZGl2XCIsIFwic2xpbS13cmFwcGVyXCIpLCB0aGlzLl9zdGFnZSA9IGsoXCJkaXZcIiwgXCJzbGltLXN0YWdlXCIpLCB0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fc3RhZ2UpLCB0aGlzLl9jcm9wcGVyID0gbmV3IFR0LCBpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fY3JvcHBlci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fc3RhZ2UuYXBwZW5kQ2hpbGQodGhpcy5fY3JvcHBlci5lbGVtZW50KSwgdGhpcy5fcHJldmlld1dyYXBwZXIgPSBrKFwiZGl2XCIsIFwic2xpbS1pbWFnZS1lZGl0b3ItcHJldmlldyBzbGltLWNyb3AtcHJldmlld1wiKSwgdGhpcy5fcHJldmlld0JsdXJyZWQgPSBrKFwiY2FudmFzXCIsIFwic2xpbS1jcm9wLWJsdXJcIiksIHRoaXMuX3ByZXZpZXdXcmFwcGVyLmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXdCbHVycmVkKSwgdGhpcy5fd3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLl9wcmV2aWV3V3JhcHBlciksIHRoaXMuX3ByZXZpZXdNYXNrID0gayhcImRpdlwiLCBcInNsaW0tY3JvcC1tYXNrXCIpLCB0aGlzLl9wcmV2aWV3ID0gayhcImltZ1wiKSwgdGhpcy5fcHJldmlld01hc2suYXBwZW5kQ2hpbGQodGhpcy5fcHJldmlldyksIHRoaXMuX2Nyb3BwZXIuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wcmV2aWV3TWFzayksIHRoaXMuX2J0bkdyb3VwID0gayhcImRpdlwiLCBcInNsaW0tZWRpdG9yLWJ0bi1ncm91cFwiKSwgbi5CdXR0b25zLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBSKGUpLCBuID0gdC5fb3B0aW9uc1tcImJ1dHRvblwiICsgaSArIFwiTGFiZWxcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5fb3B0aW9uc1tcImJ1dHRvblwiICsgaSArIFwiVGl0bGVcIl0sIGEgPSB0Ll9vcHRpb25zW1wiYnV0dG9uXCIgKyBpICsgXCJDbGFzc05hbWVcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gayhcImJ1dHRvblwiLCBcInNsaW0tZWRpdG9yLWJ0biBzbGltLWJ0bi1cIiArIGUgKyAoYSA/IFwiIFwiICsgYSA6IFwiXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5pbm5lckhUTUwgPSBuLCByLnRpdGxlID0gbyB8fCBuLCByLnR5cGUgPSBcImJ1dHRvblwiLCByLnNldEF0dHJpYnV0ZShcImRhdGEtYWN0aW9uXCIsIGUpLCByLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0KSwgdC5fYnRuR3JvdXAuYXBwZW5kQ2hpbGQocilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fdXRpbHNHcm91cCA9IGsoXCJkaXZcIiwgXCJzbGltLWVkaXRvci11dGlscy1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGsoXCJidXR0b25cIiwgXCJzbGltLWVkaXRvci11dGlscy1idG4gc2xpbS1idG4tcm90YXRlXCIgKyAodGhpcy5fb3B0aW9ucy5idXR0b25Sb3RhdGVDbGFzc05hbWUgPyBcIiBcIiArIHRoaXMuX29wdGlvbnMuYnV0dG9uUm90YXRlQ2xhc3NOYW1lIDogXCJcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKFwiZGF0YS1hY3Rpb25cIiwgXCJyb3RhdGVcIiksIGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMpLCBlLnRpdGxlID0gdGhpcy5fb3B0aW9ucy5idXR0b25Sb3RhdGVUaXRsZSwgdGhpcy5fdXRpbHNHcm91cC5hcHBlbmRDaGlsZChlKSwgdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3dyYXBwZXIpLCB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdXRpbHNHcm91cCksIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYnRuR3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJkaXJ0eVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gITBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImhhbmRsZUV2ZW50XCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImNsaWNrXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkNsaWNrKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImNoYW5nZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25HcmlkQ2hhbmdlKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImlucHV0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkdyaWRJbnB1dCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJrZXlkb3duXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbktleURvd24odCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwicmVzaXplXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vblJlc2l6ZSh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbktleURvd25cIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmtleUNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB2LlJFVFVSTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHYuRVNDOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FuY2VsKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25DbGlja1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJzbGltLWJ0bi1jYW5jZWxcIikgJiYgdGhpcy5fY2FuY2VsKCksIHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcInNsaW0tYnRuLWNvbmZpcm1cIikgJiYgdGhpcy5fY29uZmlybSgpLCB0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJzbGltLWJ0bi1yb3RhdGVcIikgJiYgdGhpcy5fcm90YXRlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vblJlc2l6ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRXaW5kb3dTaXplID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogd2luZG93LmlubmVySGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fcmVkcmF3KCksIHRoaXMuX3JlZHJhd0Nyb3BwZXIodGhpcy5fY3JvcHBlci5hcmVhKSwgdGhpcy5fdXBkYXRlV3JhcHBlclNjYWxlKCksIHRoaXMuX3JlZHJhd1dyYXBwZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3JlZHJhd1dyYXBwZXJcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuY3JlYXRlTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zY2FsZSh0aGlzLl93cmFwcGVyU2NhbGUsIHRoaXMuX3dyYXBwZXJTY2FsZSksIHQucm90YXRlWih0aGlzLl93cmFwcGVyUm90YXRpb24gKiAoTWF0aC5QSSAvIDE4MCkpLCB1LnNldEVsZW1lbnRUcmFuc2Zvcm0odGhpcy5fcHJldmlld1dyYXBwZXIsIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25HcmlkSW5wdXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWRyYXdDcm9wTWFzaygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25HcmlkQ2hhbmdlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVkcmF3Q3JvcE1hc2soKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3VwZGF0ZVdyYXBwZXJSb3RhdGlvblwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMubWluU2l6ZS53aWR0aCA+IHRoaXMuX2lucHV0LmhlaWdodCB8fCB0aGlzLl9vcHRpb25zLm1pblNpemUuaGVpZ2h0ID4gdGhpcy5faW5wdXQud2lkdGggPyB0aGlzLl93cmFwcGVyUm90YXRpb24gKz0gMTgwIDogdGhpcy5fd3JhcHBlclJvdGF0aW9uICs9IDkwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfdXBkYXRlV3JhcHBlclNjYWxlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl93cmFwcGVyUm90YXRpb24gJSAxODAgIT09IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9jb250YWluZXIub2Zmc2V0V2lkdGgsIGkgPSB0aGlzLl9jb250YWluZXIub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuX3dyYXBwZXIub2Zmc2V0SGVpZ2h0LCBvID0gdGhpcy5fd3JhcHBlci5vZmZzZXRXaWR0aCwgYSA9IGUgLyBuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICogbyA+IGkgJiYgKGEgPSBpIC8gbyksIHRoaXMuX3dyYXBwZXJTY2FsZSA9IGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5fd3JhcHBlclNjYWxlID0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2NhbmNlbFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdGF0aW5nIHx8IHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjYW5jZWxcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfY29uZmlybVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcm90YXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl93cmFwcGVyUm90YXRpb24gJSAxODAgIT09IDAsIGUgPSB0aGlzLl9jcm9wcGVyLmFyZWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZHQoZSwgdCA/IHRoaXMuX2lucHV0LmhlaWdodCA6IHRoaXMuX2lucHV0LndpZHRoLCB0ID8gdGhpcy5faW5wdXQud2lkdGggOiB0aGlzLl9pbnB1dC5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY29uZmlybVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogdGhpcy5fd3JhcHBlclJvdGF0aW9uICUgMzYwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3A6IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3JvdGF0ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3JvdGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdGF0aW5nID0gITAsIHRoaXMuX3VwZGF0ZVdyYXBwZXJSb3RhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEgPT09IHRoaXMucmF0aW8gfHwgbnVsbCA9PT0gdGhpcy5fcmF0aW8gPyB0aGlzLl9jcm9wcGVyLmFyZWEgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmIEMoZSwgOTApLCB0aGlzLl91cGRhdGVXcmFwcGVyU2NhbGUoKSwgdGhpcy5faGlkZUNyb3BwZXIoKSwgdSh0aGlzLl9wcmV2aWV3V3JhcHBlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IFswLCAwLCB0aGlzLl93cmFwcGVyUm90YXRpb24gKiAoTWF0aC5QSSAvIDE4MCldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFt0aGlzLl93cmFwcGVyU2NhbGUsIHRoaXMuX3dyYXBwZXJTY2FsZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwic3ByaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdDb25zdGFudDogLjgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdEZWNlbGVyYXRpb246IC42NSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fcmVkcmF3Q3JvcHBlcihlKSwgdC5fc2hvd0Nyb3BwZXIoKSwgdC5fcm90YXRpbmcgPSAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zaG93Q3JvcHBlclwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUodGhpcy5fc3RhZ2UsIHtlYXNpbmc6IFwiZWFzZVwiLCBkdXJhdGlvbjogMjUwLCBmcm9tT3BhY2l0eTogMCwgb3BhY2l0eTogMX0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfaGlkZUNyb3BwZXJcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHRoaXMuX3N0YWdlLCB7ZHVyYXRpb246IDAsIGZyb21PcGFjaXR5OiAwLCBvcGFjaXR5OiAwfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9yZWRyYXdDcm9wTWFza1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywgZSA9IHRoaXMuX3dyYXBwZXJSb3RhdGlvbiAlIDM2MCwgaSA9IHRoaXMuX3dyYXBwZXJTY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHt3aWR0aDogdGhpcy5fd3JhcHBlci5vZmZzZXRXaWR0aCwgaGVpZ2h0OiB0aGlzLl93cmFwcGVyLm9mZnNldEhlaWdodH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9jcm9wcGVyLmFyZWEsIGEgPSB7eDogMCwgeTogMH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gZSA/IChhLnggPSAtby54LCBhLnkgPSAtby55KSA6IDkwID09PSBlID8gKGEueCA9IC0oMSAtIG8ueSksIGEueSA9IC1vLngpIDogMTgwID09PSBlID8gKGEueCA9IC0oMSAtIG8ueCksIGEueSA9IC0oMSAtIG8ueSkpIDogMjcwID09PSBlICYmIChhLnggPSAtby55LCBhLnkgPSAtKDEgLSBvLngpKSwgYS54ICo9IG4ud2lkdGgsIGEueSAqPSBuLmhlaWdodCwgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fbWFza0ZyYW1lKSwgdGhpcy5fbWFza0ZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBcInNjYWxlKFwiICsgaSArIFwiKSByb3RhdGUoXCIgKyAtZSArIFwiZGVnKSB0cmFuc2xhdGUoXCIgKyBhLnggKyBcInB4LCBcIiArIGEueSArIFwicHgpO1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9wcmV2aWV3LnN0eWxlLmNzc1RleHQgPSBcIlxcblxcdFxcdFxcdFxcdFxcdHdpZHRoOiBcIiArIHQuX3ByZXZpZXdTaXplLndpZHRoICsgXCJweDtcXG5cXHRcXHRcXHRcXHRcXHRoZWlnaHQ6IFwiICsgdC5fcHJldmlld1NpemUuaGVpZ2h0ICsgXCJweDtcXG5cXHRcXHRcXHRcXHRcXHQtd2Via2l0LXRyYW5zZm9ybTogXCIgKyBuICsgXCI7XFxuXFx0XFx0XFx0XFx0XFx0dHJhbnNmb3JtOiBcIiArIG4gKyBcIjtcXG5cXHRcXHRcXHRcXHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJvcGVuXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSwgaSwgbiwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5wdXQgJiYgIXRoaXMuX2RpcnR5ICYmIHRoaXMuX3JhdGlvID09PSBlKSByZXR1cm4gdm9pZCBvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFdpbmRvd1NpemUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9kaXJ0eSA9ICExLCB0aGlzLl93cmFwcGVyUm90YXRpb24gPSBuIHx8IDAsIHRoaXMuX2JsdXJyZWRQcmV2aWV3ID0gITEsIHRoaXMuX3JhdGlvID0gZSwgdGhpcy5fcHJldmlld1NpemUgPSBudWxsLCB0aGlzLl9lbGVtZW50LnN0eWxlLm9wYWNpdHkgPSBcIjBcIiwgdGhpcy5faW5wdXQgPSB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbiAlIDE4MCAhPT0gMCwgcyA9IGZ0KGksIHIgPyB0LmhlaWdodCA6IHQud2lkdGgsIHIgPyB0LndpZHRoIDogdC5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXcub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl9wcmV2aWV3Lm9ubG9hZCA9IG51bGwsIGEuX2Nyb3BwZXIucmF0aW8gPSBhLnJhdGlvLCBhLl9yZWRyYXcoKSwgYS5fcmVkcmF3Q3JvcHBlcihzKSwgbygpLCBhLl9lbGVtZW50LnN0eWxlLm9wYWNpdHkgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fcHJldmlldy5zcmMgPSBcIlwiLCB0aGlzLl9wcmV2aWV3LnNyYyA9IGh0KHRoaXMuX2lucHV0LCBNYXRoLm1pbih0aGlzLl9jb250YWluZXIub2Zmc2V0V2lkdGggLyB0aGlzLl9pbnB1dC53aWR0aCwgdGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodCAvIHRoaXMuX2lucHV0LmhlaWdodCkgKiB0aGlzLl9vcHRpb25zLmRldmljZVBpeGVsUmF0aW8pLnRvRGF0YVVSTCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfcmVkcmF3Q3JvcHBlclwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3dyYXBwZXJSb3RhdGlvbiAlIDE4MCAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUgPyB0aGlzLl9pbnB1dC5oZWlnaHQgLyB0aGlzLl9pbnB1dC53aWR0aCA6IHRoaXMuX2lucHV0LndpZHRoIC8gdGhpcy5faW5wdXQuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fd3JhcHBlci5vZmZzZXRXaWR0aCwgbyA9IHRoaXMuX3dyYXBwZXIub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRoLCByID0gdGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVXcmFwcGVyU2NhbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuX3dyYXBwZXJTY2FsZSAqIChlID8gbyA6IG4pLCBoID0gdGhpcy5fd3JhcHBlclNjYWxlICogKGUgPyBuIDogbyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlID8gLjUgKiAoYSAtIHMpIDogdGhpcy5fd3JhcHBlci5vZmZzZXRMZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZSA/IC41ICogKHIgLSBoKSA6IHRoaXMuX3dyYXBwZXIub2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YWdlLnN0eWxlLmNzc1RleHQgPSBcIlxcblxcdFxcdFxcdFxcdGxlZnQ6XCIgKyB1ICsgXCJweDtcXG5cXHRcXHRcXHRcXHR0b3A6XCIgKyBsICsgXCJweDtcXG5cXHRcXHRcXHRcXHR3aWR0aDpcIiArIHMgKyBcInB4O1xcblxcdFxcdFxcdFxcdGhlaWdodDpcIiArIGggKyBcInB4O1xcblxcdFxcdFxcdFwiLCB0aGlzLl9jcm9wcGVyLmxpbWl0KHMsIHMgLyBpKSwgdGhpcy5fY3JvcHBlci5vZmZzZXQodSArIHRoaXMuX2VsZW1lbnQub2Zmc2V0TGVmdCwgbCArIHRoaXMuX2VsZW1lbnQub2Zmc2V0VG9wKSwgdGhpcy5fY3JvcHBlci5taW5XaWR0aCA9IHRoaXMuX3dyYXBwZXJTY2FsZSAqIHRoaXMuX29wdGlvbnMubWluU2l6ZS53aWR0aCAqIHRoaXMuc2NhbGFyLCB0aGlzLl9jcm9wcGVyLm1pbkhlaWdodCA9IHRoaXMuX3dyYXBwZXJTY2FsZSAqIHRoaXMuX29wdGlvbnMubWluU2l6ZS5oZWlnaHQgKiB0aGlzLnNjYWxhcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQueCAqIHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQueSAqIGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0LndpZHRoICogcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LmhlaWdodCAqIGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogdHQocywgaCwgdGhpcy5fcmF0aW8gfHwgaCAvIHMpLCB0aGlzLl9jcm9wcGVyLnJlc2l6ZShwLngsIHAueSwgcC53aWR0aCwgcC5oZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfcmVkcmF3XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9pbnB1dC5oZWlnaHQgLyB0aGlzLl9pbnB1dC53aWR0aCwgZSA9IHRoaXMuX2NvbnRhaW5lci5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX2NvbnRhaW5lci5jbGllbnRIZWlnaHQsIG4gPSBlLCBvID0gbiAqIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA+IGkgJiYgKG8gPSBpLCBuID0gbyAvIHQpLCBuID0gTWF0aC5yb3VuZChuKSwgbyA9IE1hdGgucm91bmQobyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAoZSAtIG4pIC8gMiwgciA9IChpIC0gbykgLyAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3dyYXBwZXIuc3R5bGUuY3NzVGV4dCA9IFwiXFxuXFx0XFx0XFx0XFx0bGVmdDpcIiArIGEgKyBcInB4O1xcblxcdFxcdFxcdFxcdHRvcDpcIiArIHIgKyBcInB4O1xcblxcdFxcdFxcdFxcdHdpZHRoOlwiICsgbiArIFwicHg7XFxuXFx0XFx0XFx0XFx0aGVpZ2h0OlwiICsgbyArIFwicHg7XFxuXFx0XFx0XFx0XCIsIHRoaXMuX3ByZXZpZXdCbHVycmVkLnN0eWxlLmNzc1RleHQgPSBcIlxcblxcdFxcdFxcdFxcdHdpZHRoOlwiICsgbiArIFwicHg7XFxuXFx0XFx0XFx0XFx0aGVpZ2h0OlwiICsgbyArIFwicHg7XFxuXFx0XFx0XFx0XCIsIHRoaXMuX3ByZXZpZXcuc3R5bGUuY3NzVGV4dCA9IFwiXFxuXFx0XFx0XFx0XFx0d2lkdGg6XCIgKyBuICsgXCJweDtcXG5cXHRcXHRcXHRcXHRoZWlnaHQ6XCIgKyBvICsgXCJweDtcXG5cXHRcXHRcXHRcIiwgdGhpcy5fcHJldmlld1NpemUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9ibHVycmVkUHJldmlldyB8fCAodGhpcy5fcHJldmlld0JsdXJyZWQud2lkdGggPSAzMDAsIHRoaXMuX3ByZXZpZXdCbHVycmVkLmhlaWdodCA9IHRoaXMuX3ByZXZpZXdCbHVycmVkLndpZHRoICogdCwgbHQodGhpcy5faW5wdXQsIHRoaXMuX3ByZXZpZXdCbHVycmVkKSwgcHQodGhpcy5fcHJldmlld0JsdXJyZWQsIDMpLCB0aGlzLl9ibHVycmVkUHJldmlldyA9ICEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2hvd1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFdpbmRvd1NpemUud2lkdGggPT09IHdpbmRvdy5pbm5lcldpZHRoICYmIHRoaXMuX2N1cnJlbnRXaW5kb3dTaXplLmhlaWdodCA9PT0gd2luZG93LmlubmVySGVpZ2h0IHx8ICh0aGlzLl9yZWRyYXcoKSwgdGhpcy5fcmVkcmF3Q3JvcHBlcih0aGlzLl9jcm9wcGVyLmFyZWEpKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcyksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fd3JhcHBlclJvdGF0aW9uICogKE1hdGguUEkgLyAxODApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUodGhpcy5fcHJldmlld1dyYXBwZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVJvdGF0aW9uOiBbMCwgMCwgaV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBbMCwgMCwgaV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbdGhpcy5fd3JhcHBlclNjYWxlIC0gLjAyLCB0aGlzLl93cmFwcGVyU2NhbGUgLSAuMDJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogW3RoaXMuX3dyYXBwZXJTY2FsZSwgdGhpcy5fd3JhcHBlclNjYWxlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBcInNwcmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdDb25zdGFudDogLjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0RlY2VsZXJhdGlvbjogLjg1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogNDUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2Nyb3BwZXIuZGlydHkgPyB1KHRoaXMuX3N0YWdlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDg1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoodGhpcyksIHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiB1KHRoaXMuX3N0YWdlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDFlMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1KHRoaXMuX2J0bkdyb3VwLmNoaWxkTm9kZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbLjksIC45XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDFlMyArIDEwMCAqIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBcInNwcmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdDb25zdGFudDogLjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0RlY2VsZXJhdGlvbjogLjg1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeih0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHUodGhpcy5fdXRpbHNHcm91cC5jaGlsZE5vZGVzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21TY2FsZTogWy45LCAuOV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMSwgMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwic3ByaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0NvbnN0YW50OiAuMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nRGVjZWxlcmF0aW9uOiAuODUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAxMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeih0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImhpZGVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMpLCB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzKSwgdSh0aGlzLl91dGlsc0dyb3VwLmNoaWxkTm9kZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyNTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdSh0aGlzLl9idG5Hcm91cC5jaGlsZE5vZGVzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogMjAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzUwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHUoW3RoaXMuX3N0YWdlLCB0aGlzLl9wcmV2aWV3V3JhcHBlcl0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBbMCwgLTI1MCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwic3ByaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0NvbnN0YW50OiAuMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nRGVjZWxlcmF0aW9uOiAuNzUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAyNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbERvbmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImRlc3Ryb3lcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3QodGhpcy5fYnRuR3JvdXAuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2Nyb3BwZXIuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGUsIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2Nyb3BwZXIuZGVzdHJveSgpLCB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgJiYgRXQodGhpcy5fZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInNob3dSb3RhdGVCdXR0b25cIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPyB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJzbGltLXJvdGF0aW9uLWRpc2FibGVkXCIpIDogdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwic2xpbS1yb3RhdGlvbi1kaXNhYmxlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZWxlbWVudFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwicmF0aW9cIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiaW5wdXRcIiA9PT0gdGhpcy5fcmF0aW8gPyB0aGlzLl9pbnB1dC5oZWlnaHQgLyB0aGlzLl9pbnB1dC53aWR0aCA6IHRoaXMuX3JhdGlvXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJvZmZzZXRcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm9yaWdpbmFsXCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2NhbGFyXCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcmV2aWV3U2l6ZS53aWR0aCAvIHRoaXMuX2lucHV0LndpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1dLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIm9wdGlvbnNcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25DYW5jZWxDbGFzc05hbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNvbmZpcm1DbGFzc05hbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNhbmNlbExhYmVsOiBcIkNhbmNlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Db25maXJtTGFiZWw6IFwiQ29uZmlybVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25DYW5jZWxUaXRsZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ29uZmlybVRpdGxlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Sb3RhdGVUaXRsZTogXCJSb3RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUm90YXRlQ2xhc3NOYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VQaXhlbFJhdGlvOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5TaXplOiB7d2lkdGg6IDAsIGhlaWdodDogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1dKSwgblxuICAgICAgICAgICAgICAgIH0oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbi5CdXR0b25zID0gW1wiY2FuY2VsXCIsIFwiY29uZmlybVwiXSwgblxuICAgICAgICAgICAgfShUdCksIEx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gW1wiZHJhZ2VudGVyXCIsIFwiZHJhZ292ZXJcIiwgXCJkcmFnbGVhdmVcIiwgXCJkcm9wXCJdO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0KHRoaXMsIG4pLCB0aGlzLl9lbGVtZW50ID0gaSwgdGhpcy5fYWNjZXB0ID0gW10sIHRoaXMuX2FsbG93VVJMcyA9ICExLCB0aGlzLl9kcmFnUGF0aCA9IG51bGwsIHRoaXMuX2luaXQoKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAobiwgW3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpc1ZhbGlkRGF0YVRyYW5zZmVyXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZpbGVzICYmIHQuZmlsZXMubGVuZ3RoID8gdGhpcy5hcmVWYWxpZERhdGFUcmFuc2ZlckZpbGVzKHQuZmlsZXMpIDogdC5pdGVtcyAmJiB0Lml0ZW1zLmxlbmd0aCA/IHRoaXMuYXJlVmFsaWREYXRhVHJhbnNmZXJJdGVtcyh0Lml0ZW1zKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImFyZVZhbGlkRGF0YVRyYW5zZmVyRmlsZXNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9hY2NlcHQubGVuZ3RoIHx8ICF0IHx8IHRoaXMuX2FjY2VwdC5pbmRleE9mKHRbMF0udHlwZSkgIT09IC0xXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJhcmVWYWxpZERhdGFUcmFuc2Zlckl0ZW1zXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5fYWNjZXB0Lmxlbmd0aCB8fCAhdCB8fCAodGhpcy5fYWxsb3dVUkxzICYmIFwic3RyaW5nXCIgPT09IHRbMF0ua2luZCA/IG51bGwgOiB0WzBdLnR5cGUgJiYgMCA9PT0gdFswXS50eXBlLmluZGV4T2YoXCJhcHBsaWNhdGlvblwiKSA/IG51bGwgOiB0aGlzLl9hY2NlcHQuaW5kZXhPZih0WzBdLnR5cGUpICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcInJlc2V0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5maWxlcyA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9pbml0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gXCJzbGltLWZpbGUtaG9wcGVyXCIsIGkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSwgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaGFuZGxlRXZlbnRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZHJhZ2VudGVyXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImRyYWdvdmVyXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkRyYWdPdmVyKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImRyYWdsZWF2ZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25EcmFnTGVhdmUodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZHJvcFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25Ecm9wKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uRHJvcFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hbGxvd1VSTHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB2b2lkIDAsIG4gPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcInVybFwiKSwgbiA9IHQuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJ0ZXh0L2h0bWxcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYmIG4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubWF0Y2goL3NyY1xccyo9XFxzKlwiKC4rPylcIi8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiAoZSA9IG9bMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpICYmIGkubGVuZ3RoICYmIChlID0gaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHRoaXMuX2VsZW1lbnQuZmlsZXMgPSBbe3JlbW90ZTogZX1dOyBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmlzVmFsaWREYXRhVHJhbnNmZXIodC5kYXRhVHJhbnNmZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHJldHVybiB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiZmlsZS1pbnZhbGlkLWRyb3BcIikpLCB2b2lkKHRoaXMuX2RyYWdQYXRoID0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuZmlsZXMgPSB0LmRhdGFUcmFuc2Zlci5maWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiZmlsZS1kcm9wXCIsIHtkZXRhaWw6IG0odCl9KSksIHRoaXMuX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjaGFuZ2VcIikpLCB0aGlzLl9kcmFnUGF0aCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkRyYWdPdmVyXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgdC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IFwiY29weVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5pc1ZhbGlkRGF0YVRyYW5zZmVyKHQuZGF0YVRyYW5zZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gZSB8fCBlID8gKHRoaXMuX2RyYWdQYXRoIHx8ICh0aGlzLl9kcmFnUGF0aCA9IFtdKSwgdGhpcy5fZHJhZ1BhdGgucHVzaChtKHQpKSwgdm9pZCB0aGlzLl9lbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiZmlsZS1vdmVyXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBUKHRoaXMuX2RyYWdQYXRoKS54LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogVCh0aGlzLl9kcmFnUGF0aCkueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSA6ICh0LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gXCJub25lXCIsIHZvaWQgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImZpbGUtaW52YWxpZFwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25EcmFnTGVhdmVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImZpbGUtb3V0XCIsIHtkZXRhaWw6IG0odCl9KSksIHRoaXMuX2RyYWdQYXRoID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZGVzdHJveVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGUsIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIEV0KHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9lbGVtZW50ID0gbnVsbCwgdGhpcy5fZHJhZ1BhdGggPSBudWxsLCB0aGlzLl9hY2NlcHQgPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJlbGVtZW50XCIsIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJkcmFnUGF0aFwiLCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZHJhZ1BhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImVuYWJsZWRcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIgPT09IHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHQgPyBcIlwiIDogXCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcImFsbG93VVJMc1wiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dVUkxzID0gdFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiYWNjZXB0XCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY2NlcHQgPSB0XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWNjZXB0XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1dKSwgblxuICAgICAgICAgICAgICAgIH0oKVxuICAgICAgICAgICAgfSgpLCBPdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdCh0aGlzLCBpKSwgdGhpcy5fZWxlbWVudCA9IG51bGwsIHRoaXMuX2lubmVyID0gbnVsbCwgdGhpcy5faW5pdCgpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcChpLCBbe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9pbml0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGsoXCJkaXZcIiwgXCJzbGltLXBvcG92ZXJcIiksIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1zdGF0ZVwiLCBcIm9mZlwiKSwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50KSwgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2hvd1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1zdGF0ZVwiLCBcIm9uXCIpLCB1KHRoaXMuX2VsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHQuX2VsZW1lbnQpLCBpKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJoaWRlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLCBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSBlID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdSh0aGlzLl9lbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLCBvcGFjaXR5OiAwLCBkdXJhdGlvbjogNTAwLCBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeih0Ll9lbGVtZW50KSwgdC5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0YXRlXCIsIFwib2ZmXCIpLCBpKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJkZXN0cm95XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICYmICh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudCksIHRoaXMuX2VsZW1lbnQgPSBudWxsLCB0aGlzLl9pbm5lciA9IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpbm5lclwiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5uZXIgPSB0LCB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQgJiYgdGhpcy5fZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpLCB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lubmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiY2xhc3NOYW1lXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFwic2xpbS1wb3BvdmVyXCIgKyAobnVsbCA9PT0gdCA/IFwiXCIgOiBcIiBcIiArIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1dKSwgaVxuICAgICAgICAgICAgICAgIH0oKVxuICAgICAgICAgICAgfSgpLCB6dCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQuc3BsaXQoZSkubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh0LCAxMClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgRHQgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIkRJVlwiID09PSB0Lm5vZGVOYW1lIHx8IFwiU1BBTlwiID09PSB0Lm5vZGVOYW1lXG4gICAgICAgICAgICB9LCBBdCA9IHtBVVRPOiBcImF1dG9cIiwgSU5JVElBTDogXCJpbml0aWFsXCIsIE1BTlVBTDogXCJtYW51YWxcIn0sIFV0ID0gW1wieFwiLCBcInlcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiXSxcbiAgICAgICAgICAgIEh0ID0gW1wiZmlsZS1pbnZhbGlkLWRyb3BcIiwgXCJmaWxlLWludmFsaWRcIiwgXCJmaWxlLWRyb3BcIiwgXCJmaWxlLW92ZXJcIiwgXCJmaWxlLW91dFwiLCBcImNsaWNrXCJdLFxuICAgICAgICAgICAgTnQgPSBbXCJjYW5jZWxcIiwgXCJjb25maXJtXCJdLCBCdCA9IFtcInJlbW92ZVwiLCBcImVkaXRcIiwgXCJkb3dubG9hZFwiLCBcInVwbG9hZFwiXSwgRnQgPSBudWxsLCBXdCA9IDAsXG4gICAgICAgICAgICBxdCA9ICdcXG48ZGl2IGNsYXNzPVwic2xpbS1sb2FkZXJcIj5cXG5cXHQ8c3ZnPlxcblxcdFxcdDxwYXRoIGNsYXNzPVwic2xpbS1sb2FkZXItYmFja2dyb3VuZFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiM1wiIC8+XFxuXFx0XFx0PHBhdGggY2xhc3M9XCJzbGltLWxvYWRlci1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIzXCIgLz5cXG5cXHQ8L3N2Zz5cXG48L2Rpdj5cXG4nLFxuICAgICAgICAgICAganQgPSAnXFxuPGRpdiBjbGFzcz1cInNsaW0tdXBsb2FkLXN0YXR1c1wiPjwvZGl2PlxcbicsIFZ0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7d2lkdGg6IHBhcnNlSW50KGVbMF0sIDEwKSwgaGVpZ2h0OiBwYXJzZUludChlWzFdLCAxMCl9XG4gICAgICAgICAgICB9LCBHdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IGUgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgdCh0aGlzLCBpKSwgRnQgfHwgKEZ0ID0gbmV3IE90KSwgdGhpcy5fdWlkID0gV3QrKywgdGhpcy5fb3B0aW9ucyA9IGcoaS5vcHRpb25zKCksIG8pLCB0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZSAmJiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgdGhpcy5fb3B0aW9ucy5mb3JjZVNpemUgJiYgKHRoaXMuX29wdGlvbnMuZm9yY2VTaXplID0gVnQodGhpcy5fb3B0aW9ucy5mb3JjZVNpemUpKSwgdGhpcy5fb3B0aW9ucy5yYXRpbyA9IHRoaXMuX29wdGlvbnMuZm9yY2VTaXplLndpZHRoICsgXCI6XCIgKyB0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZS5oZWlnaHQsIHRoaXMuX29wdGlvbnMuc2l6ZSA9IG10KHRoaXMuX29wdGlvbnMuZm9yY2VTaXplKSksIFwic3RyaW5nXCIgPT0gdHlwZW9mIHRoaXMuX29wdGlvbnMuc2l6ZSAmJiAodGhpcy5fb3B0aW9ucy5zaXplID0gVnQodGhpcy5fb3B0aW9ucy5zaXplKSksIFwic3RyaW5nXCIgPT0gdHlwZW9mIHRoaXMuX29wdGlvbnMubWluU2l6ZSAmJiAodGhpcy5fb3B0aW9ucy5taW5TaXplID0gVnQodGhpcy5fb3B0aW9ucy5taW5TaXplKSksIFwic3RyaW5nXCIgPT0gdHlwZW9mIHRoaXMuX29wdGlvbnMucG9zdCAmJiAodGhpcy5fb3B0aW9ucy5wb3N0ID0gdGhpcy5fb3B0aW9ucy5wb3N0LnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuX29yaWdpbmFsRWxlbWVudCA9IG4sIHRoaXMuX29yaWdpbmFsRWxlbWVudElubmVyID0gbi5pbm5lckhUTUwsIHRoaXMuX29yaWdpbmFsRWxlbWVudEF0dHJpYnV0ZXMgPSBfKG4pLCBEdChuKSA/IHRoaXMuX2VsZW1lbnQgPSBuIDogKHRoaXMuX2VsZW1lbnQgPSBDdChuKSwgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBuLmNsYXNzTmFtZSwgbi5jbGFzc05hbWUgPSBcIlwiLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtcmF0aW9cIiwgdGhpcy5fb3B0aW9ucy5yYXRpbykpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJzbGltXCIpLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtc3RhdGVcIiwgXCJpbml0XCIpLCB0aGlzLl9zdGF0ZSA9IFtdLCB0aGlzLl90aW1lcnMgPSBbXSwgdGhpcy5faW5wdXQgPSBudWxsLCB0aGlzLl9pbnB1dFJlZmVyZW5jZSA9IG51bGwsIHRoaXMuX291dHB1dCA9IG51bGwsIHRoaXMuX3JhdGlvID0gbnVsbCwgdGhpcy5faXNSZXF1aXJlZCA9ICExLCB0aGlzLl9pbWFnZUhvcHBlciA9IG51bGwsIHRoaXMuX2ltYWdlRWRpdG9yID0gbnVsbCwgdGhpcy5fcHJvZ3Jlc3NFbmFibGVkID0gITAsIHRoaXMuX2RhdGEgPSB7fSwgdGhpcy5fcmVzZXREYXRhKCksIHRoaXMuX2RyaXAgPSBudWxsLCB0aGlzLl9oYXNJbml0aWFsSW1hZ2UgPSAhMSwgdGhpcy5faW5pdGlhbENyb3AgPSB0aGlzLl9vcHRpb25zLmNyb3AsIHRoaXMuX2luaXRpYWxSb3RhdGlvbiA9IHRoaXMuX29wdGlvbnMucm90YXRpb24gJiYgdGhpcy5fb3B0aW9ucy5yb3RhdGlvbiAlIDkwID09PSAwID8gdGhpcy5fb3B0aW9ucy5yb3RhdGlvbiA6IG51bGwsIHRoaXMuX2lzQmVpbmdEZXN0cm95ZWQgPSAhMSwgaS5zdXBwb3J0ZWQgPyB0aGlzLl9pbml0KCkgOiB0aGlzLl9mYWxsYmFjaygpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHAoaSwgW3tcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInNldFJvdGF0aW9uXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFwibnVtYmVyXCIgPT0gdHlwZW9mIHQgfHwgdCAlIDkwID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uID0gdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2RhdGEuYWN0aW9ucy5yb3RhdGlvbiAlIDE4MCAhPT0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5pbnB1dC5pbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkgPyB0aGlzLl9kYXRhLmlucHV0LmltYWdlLmhlaWdodCA6IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2Uud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaSA/IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2Uud2lkdGggOiB0aGlzLl9kYXRhLmlucHV0LmltYWdlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AgPSB0dChuLCBvLCB0aGlzLl9yYXRpbyksIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPSBBdC5BVVRPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UgJiYgZSAmJiB0aGlzLl9tYW51YWxUcmFuc2Zvcm0oZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInNldFNpemVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmICh0ID0gVnQodCkpLCB0ICYmIHQud2lkdGggJiYgdC5oZWlnaHQgJiYgKHRoaXMuX29wdGlvbnMuc2l6ZSA9IG10KHQpLCB0aGlzLl9kYXRhLmFjdGlvbnMuc2l6ZSA9IG10KHQpLCB0aGlzLl9kYXRhLmlucHV0LmltYWdlICYmIGUgJiYgdGhpcy5fbWFudWFsVHJhbnNmb3JtKGUpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2V0Rm9yY2VTaXplXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCAmJiAodCA9IFZ0KHQpKSwgdCAmJiB0LndpZHRoICYmIHQuaGVpZ2h0ICYmICh0aGlzLl9vcHRpb25zLnNpemUgPSBtdCh0KSwgdGhpcy5fb3B0aW9ucy5mb3JjZVNpemUgPSBtdCh0KSwgdGhpcy5fZGF0YS5hY3Rpb25zLnNpemUgPSBtdCh0KSwgdGhpcy5zZXRSYXRpbyh0aGlzLl9vcHRpb25zLmZvcmNlU2l6ZS53aWR0aCArIFwiOlwiICsgdGhpcy5fb3B0aW9ucy5mb3JjZVNpemUuaGVpZ2h0LCBlKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInNldFJhdGlvXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCAmJiAodGhpcy5fb3B0aW9ucy5yYXRpbyA9IHQsIHRoaXMuX2lzRml4ZWRSYXRpbygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0genQodGhpcy5fb3B0aW9ucy5yYXRpbywgXCI6XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhdGlvID0gblsxXSAvIG5bMF0sIHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UgJiYgZSA/IHRoaXMuX2Nyb3BBdXRvKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX3NjYWxlRHJvcEFyZWEoaS5fcmF0aW8pLCBlICYmIGUodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICh0aGlzLl9kYXRhLmlucHV0LmltYWdlICYmICh0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcCA9IHR0KHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2Uud2lkdGgsIHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UuaGVpZ2h0LCB0aGlzLl9yYXRpbyksIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPSBBdC5BVVRPKSwgdGhpcy5fc2NhbGVEcm9wQXJlYSh0aGlzLl9yYXRpbyksIGUgJiYgZShudWxsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImlzQXR0YWNoZWRUb1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50ID09PSB0IHx8IHRoaXMuX29yaWdpbmFsRWxlbWVudCA9PT0gdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImlzRGV0YWNoZWRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImxvYWRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gZSA/IGFyZ3VtZW50c1sxXSA6IHt9LCBuID0gYXJndW1lbnRzWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09IHR5cGVvZiBpID8gbiA9IGkgOiAodGhpcy5fb3B0aW9ucy5jcm9wID0gaS5jcm9wLCB0aGlzLl9vcHRpb25zLnJvdGF0aW9uID0gaS5yb3RhdGlvbiwgdGhpcy5faW5pdGlhbFJvdGF0aW9uID0gaS5yb3RhdGlvbiAmJiBpLnJvdGF0aW9uICUgOTAgPT09IDAgPyBpLnJvdGF0aW9uIDogbnVsbCwgdGhpcy5faW5pdGlhbENyb3AgPSB0aGlzLl9vcHRpb25zLmNyb3ApLCB0aGlzLl9sb2FkKHQsIG4sIHtibG9ja1B1c2g6IGkuYmxvY2tQdXNofSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInVwbG9hZFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvVXBsb2FkKHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJkb3dubG9hZFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9Eb3dubG9hZCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJyZW1vdmVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kb1JlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJkZXN0cm95XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb0Rlc3Ryb3koKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZWRpdFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9FZGl0KClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImNyb3BcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcm9wKHQueCwgdC55LCB0LndpZHRoLCB0LmhlaWdodCwgZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImNvbnRhaW5zSW1hZ2VcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSB0aGlzLl9kYXRhLmlucHV0Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9jYW5JbnN0YW50RWRpdFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuaW5zdGFudEVkaXQgJiYgIXRoaXMuX2lzSW5pdGlhbGlzaW5nXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZ2V0RmlsZUlucHV0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbdHlwZT1maWxlXVwiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2dldEluaXRpYWxJbWFnZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcImltZ1wiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2dldElucHV0RWxlbWVudFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEZpbGVJbnB1dCgpIHx8IHRoaXMuX2dldEluaXRpYWxJbWFnZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZ2V0UmF0aW9TcGFjZXJFbGVtZW50XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jaGlsZHJlblswXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2lzSW1hZ2VPbmx5XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJJTlBVVFwiICE9PSB0aGlzLl9pbnB1dC5ub2RlTmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2lzRml4ZWRSYXRpb1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMucmF0aW8uaW5kZXhPZihcIjpcIikgIT09IC0xXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaXNBdXRvQ3JvcFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPT09IEF0LkFVVE9cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl90b2dnbGVCdXR0b25cIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4dCgnLnNsaW0tYnRuW2RhdGEtYWN0aW9uPVwiJyArIHQgKyAnXCJdJywgZSwgdGhpcy5fZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9jbGVhclN0YXRlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IFtdLCB0aGlzLl91cGRhdGVTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfcmVtb3ZlU3RhdGVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuX3N0YXRlLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICE9PSB0XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fdXBkYXRlU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2FkZFN0YXRlXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgTCh0LCB0aGlzLl9zdGF0ZSkgfHwgKHRoaXMuX3N0YXRlLnB1c2godCksIHRoaXMuX3VwZGF0ZVN0YXRlKCkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfdXBkYXRlU3RhdGVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQgJiYgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0YXRlXCIsIHRoaXMuX3N0YXRlLmpvaW4oXCIsXCIpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3Jlc2V0RGF0YVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YTogbXQodGhpcy5fb3B0aW9ucy5tZXRhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDoge2ZpZWxkOiB0aGlzLl9pbnB1dFJlZmVyZW5jZSwgbmFtZTogbnVsbCwgdHlwZTogbnVsbCwgd2lkdGg6IDAsIGhlaWdodDogMCwgZmlsZTogbnVsbH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0OiB7aW1hZ2U6IG51bGwsIHdpZHRoOiAwLCBoZWlnaHQ6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IHtyb3RhdGlvbjogbnVsbCwgY3JvcDogbnVsbCwgc2l6ZTogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX291dHB1dCAmJiAodGhpcy5fb3V0cHV0LnZhbHVlID0gXCJcIiksIF90KHRoaXMuX2dldEZpbGVJbnB1dCgpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2luaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pc0luaXRpYWxpc2luZyA9ICEwLCB0aGlzLl9hZGRTdGF0ZShcImVtcHR5XCIpLCBMKFwiaW5wdXRcIiwgdGhpcy5fb3B0aW9ucy5wb3N0KSAmJiAodGhpcy5faW5wdXRSZWZlcmVuY2UgPSBcInNsaW1faW5wdXRfXCIgKyB0aGlzLl91aWQpLCB0aGlzLl9pbnB1dCA9IHRoaXMuX2dldElucHV0RWxlbWVudCgpLCB0aGlzLl9pbnB1dCB8fCAodGhpcy5faW5wdXQgPSBrKFwiaW5wdXRcIiksIHRoaXMuX2lucHV0LnR5cGUgPSBcImZpbGVcIiwgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dCkpLCB0aGlzLl9pc1JlcXVpcmVkID0gdGhpcy5faW5wdXQucmVxdWlyZWQgPT09ICEwLCB0aGlzLl9vdXRwdXQgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFt0eXBlPWhpZGRlbl1cIiksIHRoaXMuX291dHB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gSlNPTi5wYXJzZSh0aGlzLl9vdXRwdXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG5ldyBJbWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zcmMgPSBlLm91dHB1dC5pbWFnZSwgbi5zZXRBdHRyaWJ1dGUoXCJkYXRhLWZpbGVuYW1lXCIsIGUub3V0cHV0Lm5hbWUpLCB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZShuLCB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuX291dHB1dCA9IGsoXCJpbnB1dFwiKSwgdGhpcy5fb3V0cHV0LnR5cGUgPSBcImhpZGRlblwiLCB0aGlzLl9vdXRwdXQubmFtZSA9IHRoaXMuX2lucHV0Lm5hbWUgfHwgdGhpcy5fb3B0aW9ucy5kZWZhdWx0SW5wdXROYW1lLCB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX291dHB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dC5yZW1vdmVBdHRyaWJ1dGUoXCJuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBrKFwiZGl2XCIsIFwic2xpbS1hcmVhXCIpLCBhID0gdGhpcy5fZ2V0SW5pdGlhbEltYWdlKCksIHIgPSAoYSB8fCB7fSkuc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhID8gYS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWZpbGVuYW1lXCIpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPyB0aGlzLl9oYXNJbml0aWFsSW1hZ2UgPSAhMCA6ICh0aGlzLl9pbml0aWFsQ3JvcCA9IG51bGwsIHRoaXMuX2luaXRpYWxSb3RhdGlvbiA9IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSAnXFxuXFx0XFx0PGRpdiBjbGFzcz1cInNsaW0tcmVzdWx0XCI+XFxuXFx0XFx0XFx0PGltZyBjbGFzcz1cImluXCIgc3R5bGU9XCJvcGFjaXR5OjBcIiAnICsgKHIgPyAnc3JjPVwiJyArIHIgKyAnXCInIDogXCJcIikgKyAnPjxpbWc+PGltZyBzdHlsZT1cIm9wYWNpdHk6MFwiPlxcblxcdFxcdDwvZGl2Pic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNJbWFnZU9ubHkoKSkgby5pbm5lckhUTUwgPSBcIlxcblxcdFxcdFxcdFxcdFwiICsgcXQgKyBcIlxcblxcdFxcdFxcdFxcdFwiICsganQgKyBcIlxcblxcdFxcdFxcdFxcdFwiICsgaCArICdcXG5cXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVwic2xpbS1zdGF0dXNcIj48ZGl2IGNsYXNzPVwic2xpbS1sYWJlbC1sb2FkaW5nXCI+JyArICh0aGlzLl9vcHRpb25zLmxhYmVsTG9hZGluZyB8fCBcIlwiKSArIFwiPC9kaXY+PC9kaXY+XFxuXFx0XFx0XFx0XCI7IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwoXCJpbnB1dFwiLCB0aGlzLl9vcHRpb25zLnBvc3QpICYmICh0aGlzLl9kYXRhLmlucHV0LmZpZWxkID0gdGhpcy5faW5wdXRSZWZlcmVuY2UsIHRoaXMuX29wdGlvbnMuc2VydmljZSB8fCAodGhpcy5faW5wdXQubmFtZSA9IHRoaXMuX2lucHV0UmVmZXJlbmNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKFwiYWNjZXB0XCIpICYmIFwiaW1hZ2UvKlwiICE9PSB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoXCJhY2NlcHRcIikgPyB1ID0gdGhpcy5faW5wdXQuYWNjZXB0LnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICh1ID0gQSgpLCB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoXCJhY2NlcHRcIiwgdS5qb2luKFwiLFwiKSkpLCB0aGlzLl9pbWFnZUhvcHBlciA9IG5ldyBMdCwgdGhpcy5faW1hZ2VIb3BwZXIuYWNjZXB0ID0gdSwgdGhpcy5faW1hZ2VIb3BwZXIuYWxsb3dVUkxzID0gXCJzdHJpbmdcIiA9PSB0eXBlb2YgdGhpcy5fb3B0aW9ucy5mZXRjaGVyLCB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ltYWdlSG9wcGVyLmVsZW1lbnQpLCBIdC5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2ltYWdlSG9wcGVyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLCB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvLmlubmVySFRNTCA9IFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBxdCArIFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBqdCArICdcXG5cXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVwic2xpbS1kcmlwXCI+PHNwYW4+PHNwYW4+PC9zcGFuPjwvc3Bhbj48L2Rpdj5cXG5cXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVwic2xpbS1zdGF0dXNcIj48ZGl2IGNsYXNzPVwic2xpbS1sYWJlbFwiPicgKyAodGhpcy5fb3B0aW9ucy5sYWJlbCB8fCBcIlwiKSArICc8L2Rpdj48ZGl2IGNsYXNzPVwic2xpbS1sYWJlbC1sb2FkaW5nXCI+JyArICh0aGlzLl9vcHRpb25zLmxhYmVsTG9hZGluZyB8fCBcIlwiKSArIFwiPC9kaXY+PC9kaXY+XFxuXFx0XFx0XFx0XFx0XCIgKyBoICsgXCJcXG5cXHRcXHRcXHRcIiwgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobyksIHRoaXMuX2J0bkdyb3VwID0gayhcImRpdlwiLCBcInNsaW0tYnRuLWdyb3VwXCIpLCB0aGlzLl9idG5Hcm91cC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCIsIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYnRuR3JvdXApLCBCdC5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5faXNCdXR0b25BbGxvd2VkKGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBSKGUpLCBuID0gdC5fb3B0aW9uc1tcImJ1dHRvblwiICsgaSArIFwiTGFiZWxcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Ll9vcHRpb25zW1wiYnV0dG9uXCIgKyBpICsgXCJUaXRsZVwiXSB8fCBuLCBhID0gdC5fb3B0aW9uc1tcImJ1dHRvblwiICsgaSArIFwiQ2xhc3NOYW1lXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gayhcImJ1dHRvblwiLCBcInNsaW0tYnRuIHNsaW0tYnRuLVwiICsgZSArIChhID8gXCIgXCIgKyBhIDogXCJcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuaW5uZXJIVE1MID0gbiwgci50aXRsZSA9IG8sIHIudHlwZSA9IFwiYnV0dG9uXCIsIHIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHQpLCByLnNldEF0dHJpYnV0ZShcImRhdGEtYWN0aW9uXCIsIGUpLCB0Ll9idG5Hcm91cC5hcHBlbmRDaGlsZChyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2lzRml4ZWRSYXRpbygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB6dCh0aGlzLl9vcHRpb25zLnJhdGlvLCBcIjpcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmF0aW8gPSBsWzFdIC8gbFswXSwgdGhpcy5fc2NhbGVEcm9wQXJlYSh0aGlzLl9yYXRpbylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVByb2dyZXNzKC41KSwgciA/IHRoaXMuX2xvYWQociwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX29uSW5pdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7bmFtZTogc30pIDogdGhpcy5fb25Jbml0KClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkluaXRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzSW5pdGlhbGlzaW5nID0gITE7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9vcHRpb25zLmRpZEluaXQuYXBwbHkodCwgW3QuZGF0YSwgdF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fdGltZXJzLnB1c2goZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLnNhdmVJbml0aWFsSW1hZ2UgJiYgdGhpcy5jb250YWluc0ltYWdlKCkgPyB0aGlzLl9vcHRpb25zLnNlcnZpY2UgfHwgdGhpcy5fc2F2ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAhMSkgOiAodGhpcy5fb3B0aW9ucy5zZXJ2aWNlICYmIHRoaXMuY29udGFpbnNJbWFnZSgpICYmIHRoaXMuX3RvZ2dsZUJ1dHRvbihcInVwbG9hZFwiLCAhMSksIGUoKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl91cGRhdGVQcm9ncmVzc1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gTWF0aC5taW4oLjk5OTk5LCB0KSwgdGhpcy5fZWxlbWVudCAmJiB0aGlzLl9wcm9ncmVzc0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxvYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUub2Zmc2V0V2lkdGgsIG4gPSBlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJwYXRoXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHBhcnNlSW50KG5bMF0uZ2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIpLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bMF0uc2V0QXR0cmlidXRlKFwiZFwiLCBSdCguNSAqIGksIC41ICogaSwgLjUgKiBpIC0gbywgLjk5OTkpKSwgblsxXS5zZXRBdHRyaWJ1dGUoXCJkXCIsIFJ0KC41ICogaSwgLjUgKiBpLCAuNSAqIGkgLSBvLCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfc3RhcnRQcm9ncmVzc1wiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NFbmFibGVkID0gITE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1sb2FkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdG9wUHJvZ3Jlc3NMb29wKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIiksIG4ucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIiksIGUuX3Byb2dyZXNzRW5hYmxlZCA9ICEwLCBlLl91cGRhdGVQcm9ncmVzcygwKSwgZS5fcHJvZ3Jlc3NFbmFibGVkID0gITEsIHUobiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9wcm9ncmVzc0VuYWJsZWQgPSAhMCwgdCAmJiB0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zdG9wUHJvZ3Jlc3NcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1sb2FkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVQcm9ncmVzcygxKSwgdShpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpLCBpLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpLCB0Ll91cGRhdGVQcm9ncmVzcyguNSksIHQuX3Byb2dyZXNzRW5hYmxlZCA9ICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3N0YXJ0UHJvZ3Jlc3NMb29wXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tbG9hZGVyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5jaGlsZHJlblswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSwgZS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSwgdGhpcy5fdXBkYXRlUHJvZ3Jlc3MoLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IDFlMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSh0LCBcInN0b3BcIiksIHUodCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IFswLCAwLCAtKDIgKiBNYXRoLlBJKSAqIGldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBcImxpbmVhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDFlMyAqIGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHUoZSwge2Zyb21PcGFjaXR5OiAwLCBvcGFjaXR5OiAxLCBkdXJhdGlvbjogMjUwfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfc3RvcFByb2dyZXNzTG9vcFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1sb2FkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KGksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiBwYXJzZUZsb2F0KGkuc3R5bGUub3BhY2l0eSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdShlLCBcInN0b3BcIiksIGUucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIiksIGkucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIiksIHQgJiYgdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2lzQnV0dG9uQWxsb3dlZFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImVkaXRcIiA9PT0gdCA/IHRoaXMuX29wdGlvbnMuZWRpdCA6IFwiZG93bmxvYWRcIiA9PT0gdCA/IHRoaXMuX29wdGlvbnMuZG93bmxvYWQgOiBcInVwbG9hZFwiID09PSB0ID8gISF0aGlzLl9vcHRpb25zLnNlcnZpY2UgJiYgIXRoaXMuX29wdGlvbnMucHVzaCA6IFwicmVtb3ZlXCIgIT09IHQgfHwgIXRoaXMuX2lzSW1hZ2VPbmx5KClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9mYWxsYmFja1wiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBrKFwiZGl2XCIsIFwic2xpbS1hcmVhXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdC5pbm5lckhUTUwgPSAnXFxuXFx0XFx0XFx0PGRpdiBjbGFzcz1cInNsaW0tc3RhdHVzXCI+PGRpdiBjbGFzcz1cInNsaW0tbGFiZWxcIj4nICsgKHRoaXMuX29wdGlvbnMubGFiZWwgfHwgXCJcIikgKyBcIjwvZGl2PjwvZGl2PlxcblxcdFxcdFwiLCB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHQpLCB0aGlzLl90aHJvd0Vycm9yKHRoaXMuX29wdGlvbnMuc3RhdHVzTm9TdXBwb3J0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaGFuZGxlRXZlbnRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImNsaWNrXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2xpY2sodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImNoYW5nZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiY2FuY2VsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2FuY2VsKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJjb25maXJtXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ29uZmlybSh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZmlsZS1vdmVyXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRmlsZU92ZXIodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImZpbGUtb3V0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRmlsZU91dCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwiZmlsZS1kcm9wXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRHJvcEZpbGUodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImZpbGUtaW52YWxpZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkludmFsaWRGaWxlKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlXCJmaWxlLWludmFsaWQtZHJvcFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkludmFsaWRGaWxlRHJvcCh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2dldEludHJvXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tcmVzdWx0IC5pblwiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2dldE91dHJvXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnNsaW0tcmVzdWx0IC5vdXRcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9nZXRJbk91dFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5zbGltLXJlc3VsdCBpbWdcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9nZXREcmlwXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZHJpcCB8fCAodGhpcy5fZHJpcCA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWRyaXAgPiBzcGFuXCIpKSwgdGhpcy5fZHJpcFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3Rocm93RXJyb3JcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRTdGF0ZShcImVycm9yXCIpLCB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1sYWJlbFwiKS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZSB8fCAoZSA9IGsoXCJkaXZcIiwgXCJzbGltLWVycm9yXCIpLCB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1zdGF0dXNcIikuYXBwZW5kQ2hpbGQoZSkpLCBlLmlubmVySFRNTCA9IHQsIHRoaXMuX29wdGlvbnMuZGlkVGhyb3dFcnJvci5hcHBseSh0aGlzLCBbdF0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfcmVtb3ZlRXJyb3JcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVN0YXRlKFwiZXJyb3JcIiksIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLWxhYmVsXCIpLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb3BlbkZpbGVEaWFsb2dcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUVycm9yKCksIHRoaXMuX2lucHV0LmNsaWNrKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkNsaWNrXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLCBpID0gdC50YXJnZXQuY2xhc3NMaXN0LCBuID0gdC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5jb250YWlucyhcInNsaW0tZmlsZS1ob3BwZXJcIikpIHJldHVybiB0LnByZXZlbnREZWZhdWx0KCksIHZvaWQgdGhpcy5fb3BlbkZpbGVEaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi5nZXRBdHRyaWJ1dGUoXCJkYXRhLWFjdGlvblwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcInJlbW92ZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLndpbGxSZW1vdmUuYXBwbHkodGhpcywgW3RoaXMuZGF0YSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fZG9SZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImVkaXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9FZGl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VcImRvd25sb2FkXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvRG93bmxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVwidXBsb2FkXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvVXBsb2FkKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkludmFsaWRGaWxlRHJvcFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25JbnZhbGlkRmlsZSgpLCB0aGlzLl9yZW1vdmVTdGF0ZShcImZpbGUtb3ZlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZ2V0RHJpcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdSh0LmZpcnN0Q2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IFsuNSwgLjVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IC41LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHQuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uSW52YWxpZEZpbGVcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5faW1hZ2VIb3BwZXIuYWNjZXB0Lm1hcChIKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fb3B0aW9ucy5zdGF0dXNGaWxlVHlwZS5yZXBsYWNlKFwiJDBcIiwgdC5qb2luKFwiLCBcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGhyb3dFcnJvcihlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uSW1hZ2VUb29TbWFsbFwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9vcHRpb25zLnN0YXR1c0ltYWdlVG9vU21hbGwucmVwbGFjZShcIiQwXCIsIHRoaXMuX29wdGlvbnMubWluU2l6ZS53aWR0aCArIFwiIMOXIFwiICsgdGhpcy5fb3B0aW9ucy5taW5TaXplLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90aHJvd0Vycm9yKHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25PdmVyV2VpZ2h0RmlsZVwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9vcHRpb25zLnN0YXR1c0ZpbGVTaXplLnJlcGxhY2UoXCIkMFwiLCB0aGlzLl9vcHRpb25zLm1heEZpbGVTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rocm93RXJyb3IodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkxvY2FsVVJMUHJvYmxlbVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rocm93RXJyb3IodGhpcy5fb3B0aW9ucy5zdGF0dXNMb2NhbFVybFByb2JsZW0gfHwgdClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vblJlbW90ZVVSTFByb2JsZW1cIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90aHJvd0Vycm9yKHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25GaWxlT3ZlclwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFN0YXRlKFwiZmlsZS1vdmVyXCIpLCB0aGlzLl9yZW1vdmVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXREcmlwKCksIGkgPSB1LmNyZWF0ZU1hdHJpeCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaS50cmFuc2xhdGUodC5kZXRhaWwueCwgdC5kZXRhaWwueSwgMCksIHUuc2V0RWxlbWVudFRyYW5zZm9ybShlLCBpKSwgMSA9PSB0aGlzLl9pbWFnZUhvcHBlci5kcmFnUGF0aC5sZW5ndGggJiYgKGUuc3R5bGUub3BhY2l0eSA9IDEsIHUoZS5maXJzdENoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsuNSwgLjVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxNTBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uRmlsZU91dFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVN0YXRlKFwiZmlsZS1vdmVyXCIpLCB0aGlzLl9yZW1vdmVTdGF0ZShcImZpbGUtaW52YWxpZFwiKSwgdGhpcy5fcmVtb3ZlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fZ2V0RHJpcCgpLCBpID0gdS5jcmVhdGVNYXRyaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkudHJhbnNsYXRlKHQuZGV0YWlsLngsIHQuZGV0YWlsLnksIDApLCB1LnNldEVsZW1lbnRUcmFuc2Zvcm0oZSwgaSksIHUoZS5maXJzdENoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbLjUsIC41XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogWzAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAuNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeihlLmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkRyb3BGaWxlXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlU3RhdGUoXCJmaWxlLW92ZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2dldERyaXAoKSwgbiA9IHUuY3JlYXRlTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuLnRyYW5zbGF0ZSh0LmRldGFpbC54LCB0LmRldGFpbC55LCAwKSwgdS5zZXRFbGVtZW50VHJhbnNmb3JtKGksIG4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLl9pbWFnZUhvcHBlci5kcmFnUGF0aC5sZW5ndGgsIGEgPSB0aGlzLl9pbWFnZUhvcHBlci5kcmFnUGF0aFtvIC0gTWF0aC5taW4oMTAsIG8pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5kZXRhaWwueCAtIGEueCwgcyA9IHQuZGV0YWlsLnkgLSBhLnk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1KGksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246IFt0LmRldGFpbC54LCB0LmRldGFpbC55LCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogW3QuZGV0YWlsLnggKyByLCB0LmRldGFpbC55ICsgcywgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHUoaS5maXJzdENoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbLjUsIC41XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogWzIsIDJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KGkuZmlyc3RDaGlsZCksIGUuX2xvYWQodC50YXJnZXQuZmlsZXNbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkNoYW5nZVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQudGFyZ2V0LmZpbGVzLmxlbmd0aCAmJiB0aGlzLl9sb2FkKHQudGFyZ2V0LmZpbGVzWzBdKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2xvYWRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IGUgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5zSW1hZ2UoKSkgcmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9yZXBsYWNlVGltZW91dCksIHZvaWQgdGhpcy5fZG9SZW1vdmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9yZXBsYWNlVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fbG9hZCh0LCBpLCBvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlU3RhdGUoXCJlbXB0eVwiKSwgdGhpcy5fYWRkU3RhdGUoXCJidXN5XCIpLCB0aGlzLl9zdGFydFByb2dyZXNzTG9vcCgpLCB0aGlzLl9pbWFnZUhvcHBlciAmJiAodGhpcy5faW1hZ2VIb3BwZXIuZW5hYmxlZCA9ICExKSwgY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWRUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG4uX2xvYWRUaW1lb3V0KSwgbi5fbG9hZFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2lzQmVpbmdEZXN0cm95ZWQgfHwgKG4uX2FkZFN0YXRlKFwibG9hZGluZ1wiKSwgdShuLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2xpbS1sYWJlbC1sb2FkaW5nXCIpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2ltYWdlSG9wcGVyICYmIChuLl9pbWFnZUhvcHBlci5lbmFibGVkID0gITApLCBuLl9yZW1vdmVTdGF0ZShcImxvYWRpbmdcIiksIG4uX3JlbW92ZVN0YXRlKFwiYnVzeVwiKSwgbi5fYWRkU3RhdGUoXCJlbXB0eVwiKSwgbi5fc3RvcFByb2dyZXNzTG9vcCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCkgcmV0dXJuIHZvaWQoWCh0KSA/IHRoaXMuX2xvYWQoWih0KSwgaSwgbykgOiAoYSgpLCBKKHQsIHRoaXMuX29wdGlvbnMud2lsbExvYWQsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2xvYWQodCwgaSwgbylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoKSwgbi5fb25Mb2NhbFVSTFByb2JsZW0oXCI8cD5cIiArIHQgKyBcIjwvcD5cIiksIGkgJiYgaS5hcHBseShuLCBbXCJsb2NhbC11cmwtcHJvYmxlbVwiXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIHQucmVtb3RlKSByZXR1cm4gWCh0LnJlbW90ZSkgPyB2b2lkIHRoaXMuX2xvYWQoWih0LnJlbW90ZSksIGksIG8pIDogdm9pZCh0aGlzLl9vcHRpb25zLmZldGNoZXIgJiYgWSh0aGlzLl9vcHRpb25zLmZldGNoZXIsIHRoaXMuX29wdGlvbnMud2lsbEZldGNoLCB0aGlzLl9vcHRpb25zLndpbGxMb2FkLCB0LnJlbW90ZSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcigpLCBuLl9vblJlbW90ZVVSTFByb2JsZW0oXCI8cD5cIiArIHQgKyBcIjwvcD5cIiksIGkgJiYgaS5hcHBseShuLCBbXCJyZW1vdGUtdXJsLXByb2JsZW1cIl0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fbG9hZCh0LCBpLCBvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ltYWdlSG9wcGVyICYmIHRoaXMuX2ltYWdlSG9wcGVyLmFjY2VwdC5pbmRleE9mKHMudHlwZSkgPT09IC0xKSByZXR1cm4gcigpLCB0aGlzLl9vbkludmFsaWRGaWxlKCksIHZvaWQoaSAmJiBpLmFwcGx5KHRoaXMsIFtcImZpbGUtaW52YWxpZFwiXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnNpemUgJiYgdGhpcy5fb3B0aW9ucy5tYXhGaWxlU2l6ZSAmJiBEKHMuc2l6ZSkgPiB0aGlzLl9vcHRpb25zLm1heEZpbGVTaXplKSByZXR1cm4gcigpLCB0aGlzLl9vbk92ZXJXZWlnaHRGaWxlKCksIHZvaWQoaSAmJiBpLmFwcGx5KHRoaXMsIFtcImZpbGUtdG9vLWJpZ1wiXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ltYWdlRWRpdG9yICYmIHRoaXMuX2ltYWdlRWRpdG9yLmRpcnR5KCksIHRoaXMuX2RhdGEuaW5wdXQubmFtZSA9IG8gJiYgby5uYW1lID8gby5uYW1lIDogcShzKSwgdGhpcy5fZGF0YS5pbnB1dC50eXBlID0gaihzKSwgdGhpcy5fZGF0YS5pbnB1dC5zaXplID0gcy5zaXplLCB0aGlzLl9kYXRhLmlucHV0LmZpbGUgPSBzLCBRKHMsIHRoaXMuX29wdGlvbnMuaW50ZXJuYWxDYW52YXNTaXplLCBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2ltYWdlSG9wcGVyICYmIChuLl9pbWFnZUhvcHBlci5lbmFibGVkID0gITApLCBuLl9yZW1vdmVTdGF0ZShcImxvYWRpbmdcIiksIG4uX3JlbW92ZVN0YXRlKFwiYnVzeVwiKSwgbi5fYWRkU3RhdGUoXCJlbXB0eVwiKSwgbi5fc3RvcFByb2dyZXNzTG9vcCgpLCBuLl9yZXNldERhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBhKCksIHZvaWQoaSAmJiBpLmFwcGx5KG4sIFtcImZpbGUtbm90LWZvdW5kXCJdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3QodCwgbi5fb3B0aW9ucy5taW5TaXplKSkgcmV0dXJuIGEoKSwgbi5fb25JbWFnZVRvb1NtYWxsKCksIHZvaWQoaSAmJiBpLmFwcGx5KG4sIFtcImltYWdlLXRvby1zbWFsbFwiXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uX29wdGlvbnMuZGlkTG9hZC5hcHBseShuLCBbcywgdCwgZSwgbl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAhPT0gITApIHJldHVybiBhKCksIHIgIT09ICExICYmIG4uX3Rocm93RXJyb3IociksIHZvaWQoaSAmJiBpLmFwcGx5KG4sIFtyXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9yZW1vdmVTdGF0ZShcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2ltYWdlSG9wcGVyICYmIG4uX29wdGlvbnMuZHJvcFJlcGxhY2UgJiYgKG4uX2ltYWdlSG9wcGVyLmVuYWJsZWQgPSAhMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG4uX2dldEludHJvKCksIGkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbMS4yNSwgMS4yNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IFsxLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHooZSksIGUuc3R5bGUub3BhY2l0eSA9IDEsIHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlzRGV0YWNoZWQoKSA/IGkuZHVyYXRpb24gPSAxIDogKGkuZWFzaW5nID0gXCJzcHJpbmdcIiwgaS5zcHJpbmdDb25zdGFudCA9IC4zLCBpLnNwcmluZ0RlY2VsZXJhdGlvbiA9IC43KSwgbi5fY2FuSW5zdGFudEVkaXQoKSAmJiAoaS5kZWxheSA9IDUwMCwgaS5kdXJhdGlvbiA9IDEsIG4uX2RvRWRpdCgpKSwgdShlLCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9sb2FkQ2FudmFzKHQsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9hZGRTdGF0ZShcInByZXZpZXdcIiksIGgoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2Nhbkluc3RhbnRFZGl0KCkgfHwgdCB8fCBuLl9zaG93QnV0dG9ucygpLCB0IHx8IChuLl9zdG9wUHJvZ3Jlc3NMb29wKCksIG4uX3JlbW92ZVN0YXRlKFwiYnVzeVwiKSksIGkgJiYgaS5hcHBseShuLCBbbnVsbCwgbi5kYXRhXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2Nhbkluc3RhbnRFZGl0KCkgfHwgbi5fc2hvd0J1dHRvbnMoKSwgbi5fcmVtb3ZlU3RhdGUoXCJidXN5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtibG9ja1B1c2g6IG8uYmxvY2tQdXNofSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2xvYWRDYW52YXNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlLCBpLCBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobiB8fCAobiA9IHt9KSwgIXRoaXMuX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLmlucHV0LmltYWdlID0gdCwgdGhpcy5fZGF0YS5pbnB1dC53aWR0aCA9IHQud2lkdGgsIHRoaXMuX2RhdGEuaW5wdXQuaGVpZ2h0ID0gdC5oZWlnaHQsIHRoaXMuX2luaXRpYWxSb3RhdGlvbiAmJiAodGhpcy5fZGF0YS5hY3Rpb25zLnJvdGF0aW9uID0gdGhpcy5faW5pdGlhbFJvdGF0aW9uLCB0aGlzLl9pbml0aWFsUm90YXRpb24gPSBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX2RhdGEuYWN0aW9ucy5yb3RhdGlvbiAlIDE4MCAhPT0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0ZpeGVkUmF0aW8oKSB8fCAodGhpcy5faW5pdGlhbENyb3AgPyB0aGlzLl9yYXRpbyA9IHRoaXMuX2luaXRpYWxDcm9wLmhlaWdodCAvIHRoaXMuX2luaXRpYWxDcm9wLndpZHRoIDogdGhpcy5fcmF0aW8gPSBhID8gdC53aWR0aCAvIHQuaGVpZ2h0IDogdC5oZWlnaHQgLyB0LndpZHRoLCB0aGlzLl9zY2FsZURyb3BBcmVhKHRoaXMuX3JhdGlvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX29wdGlvbnMuc2l6ZSAmJiAoby5fZGF0YS5hY3Rpb25zLnNpemUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogby5fb3B0aW9ucy5zaXplLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBvLl9vcHRpb25zLnNpemUuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvLl9hcHBseVRyYW5zZm9ybXModCwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gby5fZ2V0SW50cm8oKSwgciA9IGEub2Zmc2V0V2lkdGggLyB0LndpZHRoLCBzID0gITE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLl9vcHRpb25zLnNlcnZpY2UgJiYgby5fb3B0aW9ucy5wdXNoICYmICFuLmJsb2NrUHVzaCAmJiAoby5faGFzSW5pdGlhbEltYWdlIHx8IG8uX2Nhbkluc3RhbnRFZGl0KCkgfHwgKHMgPSAhMCwgby5fc3RvcFByb2dyZXNzTG9vcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5fc3RhcnRQcm9ncmVzcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX3VwZGF0ZVByb2dyZXNzKC4xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCBvLl9jYW5JbnN0YW50RWRpdCgpIHx8IG8uX3NhdmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2lzQmVpbmdEZXN0cm95ZWQgfHwgcyAmJiAoby5fc3RvcFByb2dyZXNzKCksIGkoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBcImF1dG9cIiA9PT0gby5fb3B0aW9ucy5kZXZpY2VQaXhlbFJhdGlvID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiBvLl9vcHRpb25zLmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnNyYyA9IFwiXCIsIGEuc3JjID0gaHQodCwgciAqIGgpLnRvRGF0YVVSTCgpLCBhLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLm9ubG9hZCA9IG51bGwsIG8uX2lzQmVpbmdEZXN0cm95ZWQgfHwgZSAmJiBlKHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsQ3JvcCA/ICh0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcCA9IG10KHRoaXMuX2luaXRpYWxDcm9wKSwgdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AudHlwZSA9IEF0LklOSVRJQUwsIHRoaXMuX2luaXRpYWxDcm9wID0gbnVsbCwgcigpKSA6IHRoaXMuX29wdGlvbnMud2lsbENyb3BJbml0aWFsLmFwcGx5KHRoaXMsIFt0aGlzLmRhdGEsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPyAoby5fZGF0YS5hY3Rpb25zLmNyb3AgPSBlLCBvLl9kYXRhLmFjdGlvbnMuY3JvcC50eXBlID0gQXQuSU5JVElBTCkgOiAoby5fZGF0YS5hY3Rpb25zLmNyb3AgPSB0dChhID8gdC5oZWlnaHQgOiB0LndpZHRoLCBhID8gdC53aWR0aCA6IHQuaGVpZ2h0LCBvLl9yYXRpbyksIG8uX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPSBBdC5BVVRPKSwgcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpc10pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfYXBwbHlUcmFuc2Zvcm1zXCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLCBuID0gbXQodGhpcy5fZGF0YS5hY3Rpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG4uZmlsdGVycyA9IHtzaGFycGVuOiB0aGlzLl9vcHRpb25zLmZpbHRlclNoYXJwZW4gLyAxMDB9LCB0aGlzLl9vcHRpb25zLmZvcmNlTWluU2l6ZSA/IG4ubWluU2l6ZSA9IHRoaXMuX29wdGlvbnMubWluU2l6ZSA6IG4ubWluU2l6ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGV0KHQsIG4sIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLl9vcHRpb25zLmZvcmNlU2l6ZSB8fCBpLl9vcHRpb25zLnNpemUgJiYgMSA9PSBydChpLl9vcHRpb25zLnNpemUsIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBrKFwiY2FudmFzXCIpLCBuLndpZHRoID0gaS5fb3B0aW9ucy5zaXplLndpZHRoLCBuLmhlaWdodCA9IGkuX29wdGlvbnMuc2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uZHJhd0ltYWdlKHQsIDAsIDAsIGkuX29wdGlvbnMuc2l6ZS53aWR0aCwgaS5fb3B0aW9ucy5zaXplLmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuX29wdGlvbnMuZm9yY2VNaW5TaXplICYmIGkuX29wdGlvbnMuc2l6ZSAmJiBpLl9vcHRpb25zLm1pblNpemUud2lkdGggPT09IGkuX29wdGlvbnMuc2l6ZS53aWR0aCAmJiBpLl9vcHRpb25zLm1pblNpemUuaGVpZ2h0ID09PSBpLl9vcHRpb25zLnNpemUuaGVpZ2h0ICYmIChuLndpZHRoIDwgaS5fb3B0aW9ucy5taW5TaXplLndpZHRoIHx8IG4uaGVpZ2h0IDwgaS5fb3B0aW9ucy5taW5TaXplLmhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBNYXRoLm1heChuLndpZHRoLCBpLl9vcHRpb25zLm1pblNpemUud2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IE1hdGgubWF4KG4uaGVpZ2h0LCBpLl9vcHRpb25zLm1pblNpemUuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGsoXCJjYW52YXNcIiksIG4ud2lkdGggPSBhLCBuLmhlaWdodCA9IHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gbi5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZHJhd0ltYWdlKHQsIDAsIDAsIGEsIHIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLl9vcHRpb25zLmZvcmNlTWluU2l6ZSAmJiAxID09PSBpLl9yYXRpbyAmJiAobi53aWR0aCA8IGkuX29wdGlvbnMubWluU2l6ZS53aWR0aCB8fCBuLmhlaWdodCA8IGkuX29wdGlvbnMubWluU2l6ZS5oZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBrKFwiY2FudmFzXCIpLCBuLndpZHRoID0gaS5fb3B0aW9ucy5taW5TaXplLndpZHRoLCBuLmhlaWdodCA9IGkuX29wdGlvbnMubWluU2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbi5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguZHJhd0ltYWdlKHQsIDAsIDAsIG4ud2lkdGgsIG4uaGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLl9kYXRhLm91dHB1dC53aWR0aCA9IG4ud2lkdGgsIGkuX2RhdGEub3V0cHV0LmhlaWdodCA9IG4uaGVpZ2h0LCBpLl9kYXRhLm91dHB1dC5pbWFnZSA9IG4sIGkuX29uVHJhbnNmb3JtQ2FudmFzKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX2RhdGEgPSB0LCBpLl9vcHRpb25zLmRpZFRyYW5zZm9ybS5hcHBseShpLCBbaS5kYXRhLCBpXSksIGUoaS5fZGF0YS5vdXRwdXQuaW1hZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfb25UcmFuc2Zvcm1DYW52YXNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLndpbGxUcmFuc2Zvcm0uYXBwbHkodGhpcywgW3RoaXMuZGF0YSwgdCwgdGhpc10pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfYXBwZW5kRWRpdG9yXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbWFnZUVkaXRvciB8fCAodGhpcy5faW1hZ2VFZGl0b3IgPSBuZXcgSXQoayhcImRpdlwiKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblNpemU6IHRoaXMuX29wdGlvbnMubWluU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VQaXhlbFJhdGlvOiB0aGlzLl9vcHRpb25zLmRldmljZVBpeGVsUmF0aW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ29uZmlybUNsYXNzTmFtZTogdGhpcy5fb3B0aW9ucy5idXR0b25Db25maXJtQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNhbmNlbENsYXNzTmFtZTogdGhpcy5fb3B0aW9ucy5idXR0b25DYW5jZWxDbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUm90YXRlQ2xhc3NOYW1lOiB0aGlzLl9vcHRpb25zLmJ1dHRvblJvdGF0ZUNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Db25maXJtTGFiZWw6IHRoaXMuX29wdGlvbnMuYnV0dG9uQ29uZmlybUxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNhbmNlbExhYmVsOiB0aGlzLl9vcHRpb25zLmJ1dHRvbkNhbmNlbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJvdGF0ZUxhYmVsOiB0aGlzLl9vcHRpb25zLmJ1dHRvblJvdGF0ZUxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNvbmZpcm1UaXRsZTogdGhpcy5fb3B0aW9ucy5idXR0b25Db25maXJtVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ2FuY2VsVGl0bGU6IHRoaXMuX29wdGlvbnMuYnV0dG9uQ2FuY2VsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUm90YXRlVGl0bGU6IHRoaXMuX29wdGlvbnMuYnV0dG9uUm90YXRlVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBOdC5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5faW1hZ2VFZGl0b3IuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGUsIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zY2FsZURyb3BBcmVhXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXRSYXRpb1NwYWNlckVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgdGhpcy5fZWxlbWVudCAmJiAoZS5zdHlsZS5tYXJnaW5Cb3R0b20gPSAxMDAgKiB0ICsgXCIlXCIsIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1yYXRpb1wiLCBcIjE6XCIgKyB0KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9vbkNhbmNlbFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVN0YXRlKFwiZWRpdG9yXCIpLCB0aGlzLl9vcHRpb25zLmRpZENhbmNlbC5hcHBseSh0aGlzLCBbdGhpc10pLCB0aGlzLl9zaG93QnV0dG9ucygpLCB0aGlzLl9oaWRlRWRpdG9yKCksIHRoaXMuX29wdGlvbnMuaW5zdGFudEVkaXQgJiYgIXRoaXMuX2hhc0luaXRpYWxJbWFnZSAmJiB0aGlzLl9pc0F1dG9Dcm9wKCkgJiYgdGhpcy5fZG9SZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX29uQ29uZmlybVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywgaSA9IHRoaXMuX29wdGlvbnMuc2VydmljZSAmJiB0aGlzLl9vcHRpb25zLnB1c2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBpID8gdGhpcy5fc3RhcnRQcm9ncmVzcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdXBkYXRlUHJvZ3Jlc3MoLjEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHRoaXMuX3N0YXJ0UHJvZ3Jlc3NMb29wKCksIHRoaXMuX3JlbW92ZVN0YXRlKFwiZWRpdG9yXCIpLCB0aGlzLl9hZGRTdGF0ZShcImJ1c3lcIiksIHRoaXMuX291dHB1dC52YWx1ZSA9IFwiXCIsIHRoaXMuX2RhdGEuYWN0aW9ucy5yb3RhdGlvbiA9IHQuZGV0YWlsLnJvdGF0aW9uLCB0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcCA9IHQuZGV0YWlsLmNyb3AsIHRoaXMuX2RhdGEuYWN0aW9ucy5jcm9wLnR5cGUgPSBBdC5NQU5VQUwsIHRoaXMuX2FwcGx5VHJhbnNmb3Jtcyh0aGlzLl9kYXRhLmlucHV0LmltYWdlLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX29wdGlvbnMuZGlkQ29uZmlybS5hcHBseShlLCBbZS5kYXRhLCBlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLl9nZXRJbk91dCgpLCBvID0gXCJvdXRcIiA9PT0gblswXS5jbGFzc05hbWUgPyBuWzBdIDogblsxXSwgYSA9IG8gPT09IG5bMF0gPyBuWzFdIDogblswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNsYXNzTmFtZSA9IFwiaW5cIiwgby5zdHlsZS5vcGFjaXR5ID0gXCIwXCIsIG8uc3R5bGUuekluZGV4ID0gXCIyXCIsIGEuY2xhc3NOYW1lID0gXCJvdXRcIiwgYS5zdHlsZS56SW5kZXggPSBcIjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IFwiYXV0b1wiID09PSBlLl9vcHRpb25zLmRldmljZVBpeGVsUmF0aW8gPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IGUuX29wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnNyYyA9IFwiXCIsIG8uc3JjID0gaHQodCwgby5vZmZzZXRXaWR0aCAvIHQud2lkdGggKiByKS50b0RhdGFVUkwoKSwgby5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ub25sb2FkID0gbnVsbCwgXCJmcmVlXCIgPT09IGUuX29wdGlvbnMucmF0aW8gJiYgKGUuX3JhdGlvID0gby5uYXR1cmFsSGVpZ2h0IC8gby5uYXR1cmFsV2lkdGgsIGUuX3NjYWxlRHJvcEFyZWEoZS5fcmF0aW8pKSwgZS5faGlkZUVkaXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fc2hvd1ByZXZpZXcobywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3NhdmUoZnVuY3Rpb24gKHQsIG4sIG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdG9nZ2xlQnV0dG9uKFwidXBsb2FkXCIsICEwKSwgaSA/IGUuX3N0b3BQcm9ncmVzcygpIDogZS5fc3RvcFByb2dyZXNzTG9vcCgpLCBlLl9yZW1vdmVTdGF0ZShcImJ1c3lcIiksIGUuX3Nob3dCdXR0b25zKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdGltZXJzLnB1c2godClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2Nyb3BBdXRvXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gZSA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSA9IHRoaXMuX2RhdGEuYWN0aW9ucy5yb3RhdGlvbiAlIDE4MCAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdHQoaSA/IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UuaGVpZ2h0IDogdGhpcy5fZGF0YS5pbnB1dC5pbWFnZS53aWR0aCwgaSA/IHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2Uud2lkdGggOiB0aGlzLl9kYXRhLmlucHV0LmltYWdlLmhlaWdodCwgdGhpcy5fcmF0aW8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JvcChuLngsIG4ueSwgbi53aWR0aCwgbi5oZWlnaHQsIHQsIEF0LkFVVE8pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfY3JvcFwiLCB2YWx1ZTogZnVuY3Rpb24gKHQsIGksIG4sIG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSBlID8gYXJndW1lbnRzWzRdIDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IGUgPyBhcmd1bWVudHNbNV0gOiBBdC5NQU5VQUw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vdXRwdXQudmFsdWUgPSBcIlwiLCB0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9kYXRhLmFjdGlvbnMuY3JvcC50eXBlID0gciwgdGhpcy5fbWFudWFsVHJhbnNmb3JtKGEpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfbWFudWFsVHJhbnNmb3JtXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRQcm9ncmVzc0xvb3AoKSwgdGhpcy5fYWRkU3RhdGUoXCJidXN5XCIpLCB0aGlzLl9hcHBseVRyYW5zZm9ybXModGhpcy5fZGF0YS5pbnB1dC5pbWFnZSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuX2dldEluT3V0KCksIG8gPSBcIm91dFwiID09PSBuWzBdLmNsYXNzTmFtZSA/IG5bMF0gOiBuWzFdLCBhID0gbyA9PT0gblswXSA/IG5bMV0gOiBuWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY2xhc3NOYW1lID0gXCJpblwiLCBvLnN0eWxlLm9wYWNpdHkgPSBcIjFcIiwgby5zdHlsZS56SW5kZXggPSBcIjJcIiwgYS5jbGFzc05hbWUgPSBcIm91dFwiLCBhLnN0eWxlLnpJbmRleCA9IFwiMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gXCJhdXRvXCIgPT09IGUuX29wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbyA/IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogZS5fb3B0aW9ucy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3JjID0gXCJcIiwgby5zcmMgPSBodChpLCBvLm9mZnNldFdpZHRoIC8gaS53aWR0aCAqIHIpLnRvRGF0YVVSTCgpLCBvLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5vbmxvYWQgPSBudWxsLCBcImZyZWVcIiA9PT0gZS5fb3B0aW9ucy5yYXRpbyAmJiAoZS5fcmF0aW8gPSBvLm5hdHVyYWxIZWlnaHQgLyBvLm5hdHVyYWxXaWR0aCwgZS5fc2NhbGVEcm9wQXJlYShlLl9yYXRpbykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuX29wdGlvbnMuc2VydmljZSAmJiBlLl9vcHRpb25zLnB1c2gsIG4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9zYXZlKGZ1bmN0aW9uIChuLCBvLCBhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSB8fCBlLl9zdG9wUHJvZ3Jlc3NMb29wKCksIGUuX3JlbW92ZVN0YXRlKFwiYnVzeVwiKSwgdC5hcHBseShlLCBbZS5kYXRhXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPyBlLl9zdGFydFByb2dyZXNzKG4pIDogbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zYXZlXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IGUgPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBuID0gIShhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IGUpIHx8IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5kYXRhQmFzZTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuc2VydmljZSB8fCB0aGlzLl9pc0luaXRpYWxpc2luZyAmJiAhdGhpcy5faXNJbWFnZU9ubHkoKSB8fCB0aGlzLl9vcHRpb25zLndpbGxTYXZlLmFwcGx5KHRoaXMsIFtvLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9zdG9yZShlKSwgdC5fb3B0aW9ucy5kaWRTYXZlLmFwcGx5KHQsIFtlLCB0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzXSksIHRoaXMuX2lzQmVpbmdEZXN0cm95ZWQgfHwgKHRoaXMuX29wdGlvbnMuc2VydmljZSAmJiBuICYmIHRoaXMuX29wdGlvbnMud2lsbFNhdmUuYXBwbHkodGhpcywgW28sIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2FkZFN0YXRlKFwidXBsb2FkXCIpLCB0Ll9pbWFnZUhvcHBlciAmJiB0Ll9vcHRpb25zLmRyb3BSZXBsYWNlICYmICh0Ll9pbWFnZUhvcHBlci5lbmFibGVkID0gITEpLCB0Ll91cGxvYWQoZSwgZnVuY3Rpb24gKG4sIG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2ltYWdlSG9wcGVyICYmIHQuX29wdGlvbnMuZHJvcFJlcGxhY2UgJiYgKHQuX2ltYWdlSG9wcGVyLmVuYWJsZWQgPSAhMCksIG4gfHwgdC5fc3RvcmVTZXJ2ZXJSZXNwb25zZShvKSwgdC5fb3B0aW9ucy5kaWRVcGxvYWQuYXBwbHkodCwgW24sIGUsIG8sIHRdKSwgdC5fcmVtb3ZlU3RhdGUoXCJ1cGxvYWRcIiksIGkobiwgZSwgbylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzXSksIHRoaXMuX29wdGlvbnMuc2VydmljZSAmJiBuIHx8IGkoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zdG9yZVNlcnZlclJlc3BvbnNlXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNSZXF1aXJlZCAmJiAodGhpcy5faW5wdXQucmVxdWlyZWQgPSAhMSksIHRoaXMuX2RhdGEuc2VydmVyID0gdCwgdGhpcy5fb3V0cHV0LnZhbHVlID0gXCJvYmplY3RcIiA9PT0gKFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQgPyBcInVuZGVmaW5lZFwiIDogYyh0KSkgPyBKU09OLnN0cmluZ2lmeSh0aGlzLl9kYXRhLnNlcnZlcikgOiB0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfc3RvcmVcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1JlcXVpcmVkICYmICh0aGlzLl9pbnB1dC5yZXF1aXJlZCA9ICExKSwgdGhpcy5fb3V0cHV0LnZhbHVlID0gSlNPTi5zdHJpbmdpZnkodClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl91cGxvYWRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RPdXRwdXQoZnVuY3Rpb24gKHQsIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGkuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLXVwbG9hZC1zdGF0dXNcIiksIGEgPSBpLl9vcHRpb25zLndpbGxSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX3VwZGF0ZVByb2dyZXNzKE1hdGgubWF4KC4xLCB0IC8gZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkuX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbm5lckhUTUwgPSBpLl9vcHRpb25zLnN0YXR1c1VwbG9hZFN1Y2Nlc3MsIG8uc2V0QXR0cmlidXRlKFwiZGF0YS1zdGF0ZVwiLCBcInN1Y2Nlc3NcIiksIG8uc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnN0eWxlLm9wYWNpdHkgPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDJlMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX3RpbWVycy5wdXNoKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX3RpbWVycy5wdXNoKG4pLCBlKG51bGwsIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGggPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFwiZmlsZS10b28tYmlnXCIgPT09IHQgPyBpLl9vcHRpb25zLnN0YXR1c0NvbnRlbnRMZW5ndGggOiBpLl9vcHRpb25zLmRpZFJlY2VpdmVTZXJ2ZXJFcnJvci5hcHBseShpLCBbdCwgaS5fb3B0aW9ucy5zdGF0dXNVbmtub3duUmVzcG9uc2UsIGldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbm5lckhUTUwgPSBuLCBvLnNldEF0dHJpYnV0ZShcImRhdGEtc3RhdGVcIiwgXCJlcnJvclwiKSwgby5zdHlsZS5vcGFjaXR5ID0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuX3RpbWVycy5wdXNoKGEpLCBlKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PSB0eXBlb2YgaS5fb3B0aW9ucy5zZXJ2aWNlID8gTyhpLl9vcHRpb25zLnNlcnZpY2UsIGkuX29wdGlvbnMudXBsb2FkTWV0aG9kLCBuLCBhLCByLCBzLCBoKSA6IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgaS5fb3B0aW9ucy5zZXJ2aWNlICYmIGkuX29wdGlvbnMuc2VydmljZS5hcHBseShpLCBbXCJmaWxlXCIgPT09IGkuX29wdGlvbnMuc2VydmljZUZvcm1hdCA/IHQgOiBuLCByLCBzLCBoLCBpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJyZXF1ZXN0T3V0cHV0XCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuaW5wdXQuZmlsZSA/IChlIHx8IChlID0gdGhpcy5kYXRhQmFzZTY0KSwgdm9pZCBuLnBhcnNlTWV0YURhdGEodGhpcy5fZGF0YS5pbnB1dC5maWxlLCBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gW10sIHIgPSBuZXcgRm9ybURhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEwoXCJpbnB1dFwiLCBpLl9vcHRpb25zLnBvc3QpICYmIChhLnB1c2goaS5fZGF0YS5pbnB1dC5maWxlKSwgci5hcHBlbmQoaS5faW5wdXRSZWZlcmVuY2UsIGkuX2RhdGEuaW5wdXQuZmlsZSwgaS5fZGF0YS5pbnB1dC5maWxlLm5hbWUpKSwgTChcIm91dHB1dFwiLCBpLl9vcHRpb25zLnBvc3QpICYmIG51bGwgIT09IGkuX2RhdGEub3V0cHV0LmltYWdlICYmIGkuX29wdGlvbnMudXBsb2FkQmFzZTY0ID09PSAhMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IFooZS5vdXRwdXQuaW1hZ2UsIGUub3V0cHV0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5pbWFnZUhlYWQgJiYgaS5fb3B0aW9ucy5jb3B5SW1hZ2VIZWFkKSB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBCbG9iKFtvLmltYWdlSGVhZCwgbi5ibG9iU2xpY2UuY2FsbChzLCAyMCldLCB7dHlwZTogd3QoZS5vdXRwdXQuaW1hZ2UpfSksIHMgPSBHKHMsIGUub3V0cHV0Lm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gXCJzbGltX291dHB1dF9cIiArIGkuX3VpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5vdXRwdXQuaW1hZ2UgPSBudWxsLCBlLm91dHB1dC5maWVsZCA9IHUsIHIuYXBwZW5kKHUsIHMsIGUub3V0cHV0Lm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwZW5kKGkuX291dHB1dC5uYW1lLCBKU09OLnN0cmluZ2lmeShlKSksIHQoYSwgcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHttYXhNZXRhRGF0YVNpemU6IDI2MjE0NCwgZGlzYWJsZUltYWdlSGVhZDogITF9KSkgOiB2b2lkIHQobnVsbCwgbnVsbClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9zaG93RWRpdG9yXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBGdC5jbGFzc05hbWUgPSB0aGlzLl9vcHRpb25zLnBvcG92ZXJDbGFzc05hbWUsIEZ0LnNob3coKSwgdGhpcy5faW1hZ2VFZGl0b3Iuc2hvdygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaGlkZUVkaXRvclwiLCB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW1hZ2VFZGl0b3IuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdC5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDI1MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90aW1lcnMucHVzaCh0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3Nob3dQcmV2aWV3XCIsIHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdSh0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBbMCwgNTAsIDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbMS41LCAxLjVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMSwgMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IFwic3ByaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nQ29uc3RhbnQ6IC4zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmluZ0RlY2VsZXJhdGlvbjogLjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeih0KSwgZSAmJiBlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2hpZGVSZXN1bHRcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2dldEludHJvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlICYmIHUoZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21TY2FsZTogWzEsIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbLjUsIC41XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogXCJzcHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbmdDb25zdGFudDogLjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW5nRGVjZWxlcmF0aW9uOiAuNzUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeihlKSwgdCAmJiB0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX3Nob3dCdXR0b25zXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2J0bkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYnRuR3JvdXAuc3R5bGUuZGlzcGxheSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21TY2FsZTogWy41LCAuNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbMSwgMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogWzAsIDEwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFswLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbU9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbERvbmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEZXRhY2hlZCgpID8gZS5kdXJhdGlvbiA9IDEgOiAoZS5kZWxheSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyNTAgKyA1MCAqIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLmVhc2luZyA9IFwic3ByaW5nXCIsIGUuc3ByaW5nQ29uc3RhbnQgPSAuMywgZS5zcHJpbmdEZWNlbGVyYXRpb24gPSAuODUpLCB1KHRoaXMuX2J0bkdyb3VwLmNoaWxkTm9kZXMsIGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfaGlkZUJ1dHRvbnNcIiwgdmFsdWU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYnRuR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVNjYWxlOiBbMSwgMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBbLjg1LCAuODVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9uZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fYnRuR3JvdXAuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiLCB0ICYmIHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGV0YWNoZWQoKSA/IGkuZHVyYXRpb24gPSAxIDogKGkuZWFzaW5nID0gXCJzcHJpbmdcIiwgaS5zcHJpbmdDb25zdGFudCA9IC4zLCBpLnNwcmluZ0RlY2VsZXJhdGlvbiA9IC43NSksIHUodGhpcy5fYnRuR3JvdXAuY2hpbGROb2RlcywgaSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9oaWRlU3RhdHVzXCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5zbGltLXVwbG9hZC1zdGF0dXNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0LnN0eWxlLm9wYWNpdHkgPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJfZG9FZGl0XCIsIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLmlucHV0LmltYWdlICYmICh0aGlzLl9hZGRTdGF0ZShcImVkaXRvclwiKSwgdGhpcy5faW1hZ2VFZGl0b3IgfHwgdGhpcy5fYXBwZW5kRWRpdG9yKCksIHRoaXMuX2ltYWdlRWRpdG9yLnNob3dSb3RhdGVCdXR0b24gPSB0aGlzLl9vcHRpb25zLnJvdGF0ZUJ1dHRvbiwgRnQuaW5uZXIgPSB0aGlzLl9pbWFnZUVkaXRvci5lbGVtZW50LCB0aGlzLl9pbWFnZUVkaXRvci5vcGVuKHN0KHRoaXMuX2RhdGEuaW5wdXQuaW1hZ2UpLCBcImZyZWVcIiA9PT0gdGhpcy5fb3B0aW9ucy5yYXRpbyA/IG51bGwgOiB0aGlzLl9yYXRpbywgdGhpcy5fZGF0YS5hY3Rpb25zLmNyb3AsIHRoaXMuX2RhdGEuYWN0aW9ucy5yb3RhdGlvbiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX3Nob3dFZGl0b3IoKSwgdC5faGlkZUJ1dHRvbnMoKSwgdC5faGlkZVN0YXR1cygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9kb1JlbW92ZVwiLCB2YWx1ZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNJbWFnZU9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyU3RhdGUoKSwgdGhpcy5fYWRkU3RhdGUoXCJlbXB0eVwiKSwgdGhpcy5faGFzSW5pdGlhbEltYWdlID0gITEsIHRoaXMuX2ltYWdlSG9wcGVyICYmICh0aGlzLl9pbWFnZUhvcHBlci5lbmFibGVkID0gITApLCB0aGlzLl9pc1JlcXVpcmVkICYmICh0aGlzLl9pbnB1dC5yZXF1aXJlZCA9ICEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX2dldE91dHJvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAmJiAoaS5zdHlsZS5vcGFjaXR5ID0gXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0RGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX2lzQmVpbmdEZXN0cm95ZWQgfHwgKGUuX2hpZGVCdXR0b25zKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3RvZ2dsZUJ1dHRvbihcInVwbG9hZFwiLCAhMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuX2hpZGVTdGF0dXMoKSwgZS5faGlkZVJlc3VsdCgpLCBlLl9vcHRpb25zLmRpZFJlbW92ZS5hcHBseShlLCBbbiwgZV0pLCB0ICYmIHQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmlzRGV0YWNoZWQoKSA/IDAgOiAyNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90aW1lcnMucHVzaChvKSwgblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2RvVXBsb2FkXCIsIHZhbHVlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5pbnB1dC5pbWFnZSAmJiAodGhpcy5fYWRkU3RhdGUoXCJ1cGxvYWRcIiksIHRoaXMuX3N0YXJ0UHJvZ3Jlc3MoKSwgdGhpcy5faGlkZUJ1dHRvbnMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3RvZ2dsZUJ1dHRvbihcInVwbG9hZFwiLCAhMSksIGUuX3NhdmUoZnVuY3Rpb24gKGksIG4sIG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fcmVtb3ZlU3RhdGUoXCJ1cGxvYWRcIiksIGUuX3N0b3BQcm9ncmVzcygpLCB0ICYmIHQuYXBwbHkoZSwgW2ksIG4sIG9dKSwgaSAmJiBlLl90b2dnbGVCdXR0b24oXCJ1cGxvYWRcIiwgITApLCBlLl9zaG93QnV0dG9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiX2RvRG93bmxvYWRcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fZGF0YS5vdXRwdXQuaW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ICYmIGt0KHRoaXMuX2RhdGEsIHRoaXMuX29wdGlvbnMuanBlZ0NvbXByZXNzaW9uLCB0aGlzLl9vcHRpb25zLmZvcmNlVHlwZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIl9kb0Rlc3Ryb3lcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwICE9PSBlLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5uYW1lID09PSBlLm5hbWUgJiYgdC52YWx1ZSA9PT0gZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0JlaW5nRGVzdHJveWVkID0gITAsIHRoaXMuX3RpbWVycy5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fdGltZXJzID0gW10sIHUodGhpcy5fZWxlbWVudCwgXCJkZXRhY2hcIiksIHRoaXMuX2ltYWdlSG9wcGVyICYmIChIdC5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5faW1hZ2VIb3BwZXIuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5faW1hZ2VIb3BwZXIuZGVzdHJveSgpLCB0aGlzLl9pbWFnZUhvcHBlciA9IG51bGwpLCB0aGlzLl9pbWFnZUVkaXRvciAmJiAoTnQuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX2ltYWdlRWRpdG9yLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2ltYWdlRWRpdG9yLmRlc3Ryb3koKSwgdGhpcy5faW1hZ2VFZGl0b3IgPSBudWxsKSwgU3QodGhpcy5fYnRuR3JvdXAuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgdGhpcyksIHRoaXMuX2VsZW1lbnQgIT09IHRoaXMuX29yaWdpbmFsRWxlbWVudCAmJiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgJiYgdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0aGlzLl9vcmlnaW5hbEVsZW1lbnQsIHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9vcmlnaW5hbEVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fb3JpZ2luYWxFbGVtZW50SW5uZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IF8odGhpcy5fb3JpZ2luYWxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkuZm9yRWFjaChmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQoaSwgZS5fb3JpZ2luYWxFbGVtZW50QXR0cmlidXRlcykgfHwgZS5fb3JpZ2luYWxFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShpLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fb3JpZ2luYWxFbGVtZW50QXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdChuLCBpKSB8fCBlLl9vcmlnaW5hbEVsZW1lbnQuc2V0QXR0cmlidXRlKG4ubmFtZSwgbi52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBXdCA9IE1hdGgubWF4KDAsIFd0IC0gMSksIEZ0ICYmIDAgPT09IFd0ICYmIChGdC5kZXN0cm95KCksIEZ0ID0gbnVsbCksIHRoaXMuX29yaWdpbmFsRWxlbWVudCA9IG51bGwsIHRoaXMuX2VsZW1lbnQgPSBudWxsLCB0aGlzLl9pbnB1dCA9IG51bGwsIHRoaXMuX291dHB1dCA9IG51bGwsIHRoaXMuX2J0bkdyb3VwID0gbnVsbCwgdGhpcy5fb3B0aW9ucyA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImRhdGFCYXNlNjRcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnQodGhpcy5fZGF0YSwgdGhpcy5fb3B0aW9ucy5wb3N0LCB0aGlzLl9vcHRpb25zLmpwZWdDb21wcmVzc2lvbiwgdGhpcy5fb3B0aW9ucy5mb3JjZVR5cGUsIG51bGwgIT09IHRoaXMuX29wdGlvbnMuc2VydmljZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImRhdGFcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdnQodGhpcy5fZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcImVsZW1lbnRcIiwgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwic2VydmljZVwiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLnNlcnZpY2UgPSB0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJzaXplXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2l6ZSh0LCBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwicm90YXRpb25cIiwgc2V0OiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSb3RhdGlvbih0LCBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiZm9yY2VTaXplXCIsIHNldDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9yY2VTaXplKHQsIG51bGwpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJyYXRpb1wiLCBzZXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJhdGlvKHQsIG51bGwpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XSwgW3tcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIm9wdGlvbnNcIiwgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXQ6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbnRFZGl0OiAhMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRCYXNlNjQ6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGlvOiBcImZyZWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VQaXhlbFJhdGlvOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JvcDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0OiBbXCJvdXRwdXRcIiwgXCJhY3Rpb25zXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUZvcm1hdDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJTaGFycGVuOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2g6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbnB1dE5hbWU6IFwic2xpbVtdXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluU2l6ZToge3dpZHRoOiAwLCBoZWlnaHQ6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEZpbGVTaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZWdDb21wcmVzc2lvbjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkOiAhMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlSW5pdGlhbEltYWdlOiAhMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVR5cGU6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlU2l6ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZU1pblNpemU6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BSZXBsYWNlOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsQ2FudmFzU2l6ZToge3dpZHRoOiA0MDk2LCBoZWlnaHQ6IDQwOTZ9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlJbWFnZUhlYWQ6ICExLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZUJ1dHRvbjogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCI8cD5Ecm9wIHlvdXIgaW1hZ2UgaGVyZTwvcD5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbExvYWRpbmc6IFwiPHA+TG9hZGluZyBpbWFnZS4uLjwvcD5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNGaWxlVHlwZTogXCI8cD5JbnZhbGlkIGZpbGUgdHlwZSwgZXhwZWN0czogJDAuPC9wPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0ZpbGVTaXplOiBcIjxwPkZpbGUgaXMgdG9vIGJpZywgbWF4aW11bSBmaWxlIHNpemU6ICQwIE1CLjwvcD5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNOb1N1cHBvcnQ6IFwiPHA+WW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgaW1hZ2UgY3JvcHBpbmcuPC9wPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0ltYWdlVG9vU21hbGw6IFwiPHA+SW1hZ2UgaXMgdG9vIHNtYWxsLCBtaW5pbXVtIHNpemUgaXM6ICQwIHBpeGVscy48L3A+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29udGVudExlbmd0aDogJzxzcGFuIGNsYXNzPVwic2xpbS11cGxvYWQtc3RhdHVzLWljb25cIj48L3NwYW4+IFRoZSBmaWxlIGlzIHByb2JhYmx5IHRvbyBiaWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1Vua25vd25SZXNwb25zZTogJzxzcGFuIGNsYXNzPVwic2xpbS11cGxvYWQtc3RhdHVzLWljb25cIj48L3NwYW4+IEFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1VwbG9hZFN1Y2Nlc3M6ICc8c3BhbiBjbGFzcz1cInNsaW0tdXBsb2FkLXN0YXR1cy1pY29uXCI+PC9zcGFuPiBTYXZlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTG9jYWxVcmxQcm9ibGVtOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEluaXQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMb2FkOiBmdW5jdGlvbiAodCwgZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNhdmU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRVcGxvYWQ6IGZ1bmN0aW9uICh0LCBlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVyRXJyb3I6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZW1vdmU6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRUcmFuc2Zvcm06IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDb25maXJtOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2FuY2VsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRUaHJvd0Vycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsQ3JvcEluaXRpYWw6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxUcmFuc2Zvcm06IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxTYXZlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsUmVtb3ZlOiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxSZXF1ZXN0OiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEZldGNoOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbExvYWQ6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCdC5jb25jYXQoSXQuQnV0dG9ucykuY29uY2F0KFwicm90YXRlXCIpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtcImJ1dHRvblwiICsgaSArIFwiQ2xhc3NOYW1lXCJdID0gbnVsbCwgdFtcImJ1dHRvblwiICsgaSArIFwiTGFiZWxcIl0gPSBpLCB0W1wiYnV0dG9uXCIgKyBpICsgXCJUaXRsZVwiXSA9IGlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XSksIGlcbiAgICAgICAgICAgIH0oKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ID8gXCI8cD5cIiArIHQgKyBcIjwvcD5cIiA6IG51bGxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSB3aW5kb3csIGkgPSB0LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uICh0LCBuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVbaVtuXV0gJiYgKGUgPSBlW2lbbl1dKVxuICAgICAgICAgICAgICAgIH0pLCBlICE9PSB3aW5kb3cgPyBlIDogbnVsbFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgaSA9IFtdLCBuID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgbiA9IGkubGVuZ3RoOyBlIDwgbjsgZSsrKSBpZiAoaVtlXS5pc0F0dGFjaGVkVG8odCkpIHJldHVybiBlO1xuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfSwgbyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRcbiAgICAgICAgICAgIH0sIGEgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInRydWVcIiA9PT0gdFxuICAgICAgICAgICAgfSwgciA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8IFwidHJ1ZVwiID09PSB0XG4gICAgICAgICAgICB9LCBzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdChlKVxuICAgICAgICAgICAgfSwgaCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBlKHQpIDogbnVsbFxuICAgICAgICAgICAgfSwgdSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IHp0KHQsIFwiLFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogZVswXSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlWzFdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgbCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBwYXJzZUZsb2F0KHQpIDogbnVsbFxuICAgICAgICAgICAgfSwgcCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBwYXJzZUludCh0LCAxMCkgOiBudWxsXG4gICAgICAgICAgICB9LCBjID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBlID0ge307XG4gICAgICAgICAgICAgICAgcmV0dXJuIHQuc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodCwgMTApXG4gICAgICAgICAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAodCwgaSkge1xuICAgICAgICAgICAgICAgICAgICBlW1V0W2ldXSA9IHRcbiAgICAgICAgICAgICAgICB9KSwgZVxuICAgICAgICAgICAgfSwgZiA9IHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZDogYSxcbiAgICAgICAgICAgICAgICBlZGl0OiByLFxuICAgICAgICAgICAgICAgIGluc3RhbnRFZGl0OiBhLFxuICAgICAgICAgICAgICAgIG1pblNpemU6IHUsXG4gICAgICAgICAgICAgICAgc2l6ZTogdSxcbiAgICAgICAgICAgICAgICBmb3JjZVNpemU6IHUsXG4gICAgICAgICAgICAgICAgZm9yY2VNaW5TaXplOiByLFxuICAgICAgICAgICAgICAgIGludGVybmFsQ2FudmFzU2l6ZTogdSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gZSh0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPyBpIDogdFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2VydmljZUZvcm1hdDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQgPyBudWxsIDogdFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmV0Y2hlcjogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQgPyBudWxsIDogdFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHVzaDogYSxcbiAgICAgICAgICAgICAgICByb3RhdGlvbjogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHQgPyBudWxsIDogcGFyc2VJbnQodCwgMTApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjcm9wOiBjLFxuICAgICAgICAgICAgICAgIHBvc3Q6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8gdC5zcGxpdChcIixcIikubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgfSkgOiBudWxsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5wdXROYW1lOiBvLFxuICAgICAgICAgICAgICAgIHJhdGlvOiBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA/IHQgOiBudWxsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtYXhGaWxlU2l6ZTogbCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJTaGFycGVuOiBwLFxuICAgICAgICAgICAgICAgIGpwZWdDb21wcmVzc2lvbjogcCxcbiAgICAgICAgICAgICAgICB1cGxvYWRCYXNlNjQ6IGEsXG4gICAgICAgICAgICAgICAgZm9yY2VUeXBlOiBvLFxuICAgICAgICAgICAgICAgIGRyb3BSZXBsYWNlOiByLFxuICAgICAgICAgICAgICAgIHNhdmVJbml0aWFsSW1hZ2U6IGEsXG4gICAgICAgICAgICAgICAgY29weUltYWdlSGVhZDogYSxcbiAgICAgICAgICAgICAgICByb3RhdGVCdXR0b246IHIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHMsXG4gICAgICAgICAgICAgICAgbGFiZWxMb2FkaW5nOiBzLFxuICAgICAgICAgICAgICAgIHBvcG92ZXJDbGFzc05hbWU6IG8sXG4gICAgICAgICAgICAgICAgZGV2aWNlUGl4ZWxSYXRpbzogbyxcbiAgICAgICAgICAgICAgICB1cGxvYWRNZXRob2Q6IG9cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBbXCJGaWxlU2l6ZVwiLCBcIkZpbGVUeXBlXCIsIFwiTm9TdXBwb3J0XCIsIFwiSW1hZ2VUb29TbWFsbFwiXS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgZltcInN0YXR1c1wiICsgdF0gPSBzXG4gICAgICAgICAgICB9KSwgW1wiQ29udGVudExlbmd0aFwiLCBcIlVua25vd25SZXNwb25zZVwiLCBcIlVwbG9hZFN1Y2Nlc3NcIiwgXCJsb2NhbFVybFByb2JsZW1cIl0uZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGZbXCJzdGF0dXNcIiArIHRdID0gb1xuICAgICAgICAgICAgfSksIFtcIkluaXRcIiwgXCJMb2FkXCIsIFwiU2F2ZVwiLCBcIlVwbG9hZFwiLCBcIlJlbW92ZVwiLCBcIlRyYW5zZm9ybVwiLCBcIlJlY2VpdmVTZXJ2ZXJFcnJvclwiLCBcIkNvbmZpcm1cIiwgXCJDYW5jZWxcIiwgXCJUaHJvd0Vycm9yXCJdLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBmW1wiZGlkXCIgKyB0XSA9IGhcbiAgICAgICAgICAgIH0pLCBbXCJDcm9wSW5pdGlhbFwiLCBcIlRyYW5zZm9ybVwiLCBcIlNhdmVcIiwgXCJSZW1vdmVcIiwgXCJSZXF1ZXN0XCIsIFwiTG9hZFwiLCBcIkZldGNoXCJdLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBmW1wid2lsbFwiICsgdF0gPSBoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBfID0gW1wiQ2xhc3NOYW1lXCIsIFwiTGFiZWxcIiwgXCJUaXRsZVwiXTtcbiAgICAgICAgICAgIEJ0LmNvbmNhdChJdC5CdXR0b25zKS5jb25jYXQoXCJyb3RhdGVcIikuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gUih0KTtcbiAgICAgICAgICAgICAgICBfLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZltcImJ1dHRvblwiICsgZSArIHRdID0gb1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KSwgR3Quc3VwcG9ydGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhKFwiW29iamVjdCBPcGVyYU1pbmldXCIgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh3aW5kb3cub3BlcmFtaW5pKSB8fCBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB3aW5kb3cuRmlsZVJlYWRlciB8fCAhKFwic2xpY2VcIiBpbiBCbG9iLnByb3RvdHlwZSkgfHwgXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2Ygd2luZG93LlVSTCB8fCBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTClcbiAgICAgICAgICAgIH0oKSwgR3QucGFyc2UgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlLCBpLCBuLCBvID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChlID0gdC5xdWVyeVNlbGVjdG9yQWxsKFwiLnNsaW06bm90KFtkYXRhLXN0YXRlXSlcIiksIG4gPSBlLmxlbmd0aDsgbi0tOykgaSA9IGVbbl0sIG8ucHVzaChHdC5jcmVhdGUoaSwgR3QuZ2V0T3B0aW9uc0Zyb21BdHRyaWJ1dGVzKGkpKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9cbiAgICAgICAgICAgIH0sIEd0LmdldE9wdGlvbnNGcm9tQXR0cmlidXRlcyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBkKHQpLCBpID0ge21ldGE6IHt9fTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBmW25dLCBhID0gZVtuXTtcbiAgICAgICAgICAgICAgICAgICAgbyA/IChhID0gbyhhKSwgYSA9IG51bGwgPT09IGEgPyBtdChHdC5vcHRpb25zKClbbl0pIDogYSwgaVtuXSA9IGEpIDogMCA9PT0gbi5pbmRleE9mKFwibWV0YVwiKSAmJiAoaS5tZXRhW00obi5zdWJzdHIoNCkpXSA9IGEpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpXG4gICAgICAgICAgICB9LCBHdC5maW5kID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IGkuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmlzQXR0YWNoZWRUbyh0KVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBlID8gZVswXSA6IG51bGxcbiAgICAgICAgICAgIH0sIEd0LmNyZWF0ZSA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFHdC5maW5kKHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUgfHwgKGUgPSBHdC5nZXRPcHRpb25zRnJvbUF0dHJpYnV0ZXModCkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG5ldyBHdCh0LCBlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkucHVzaChuKSwgblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIEd0LmRlc3Ryb3kgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gbih0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gIShlIDwgMCkgJiYgKGlbZV0uZGVzdHJveSgpLCBpLnNwbGljZShlLCAxKSwgITApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0oKSwgR3RcbiAgICB9KCksIHQuU2xpbS5zdXBwb3J0ZWQpIFwibG9hZGluZ1wiICE9PSBkb2N1bWVudC5yZWFkeVN0YXRlID8gaSgpIDogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwgaSk7IGVsc2Uge1xuICAgICAgICB2YXIgbiA9IHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNsaW1cIiksIG8gPSAwLCBhID0gbi5sZW5ndGg7XG4gICAgICAgIGZvciAobyA9IDA7IG8gPCBhOyBvKyspIG5bb10uY2xhc3NOYW1lID0gXCJcIlxuICAgIH1cbn0od2luZG93KTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxVQUFVQSxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNiLFNBQVNDLENBQUMsR0FBRztJQUNURixDQUFDLENBQUNHLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxRQUFRLENBQUM7RUFDMUI7RUFFQSxJQUFJTCxDQUFDLEVBQUUsSUFBSUEsQ0FBQyxDQUFDRyxJQUFJLEdBQUcsWUFBWTtJQUM1QixTQUFTSCxDQUFDLENBQUNBLENBQUMsRUFBRUMsQ0FBQyxFQUFFO01BQ2IsSUFBSSxFQUFFRCxDQUFDLFlBQVlDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSUssU0FBUyxDQUFDLG1DQUFtQyxDQUFDO0lBQ25GO0lBRUEsU0FBU0osQ0FBQyxDQUFDRixDQUFDLEVBQUVDLENBQUMs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RSxLQUFLLEdBQUd0RSxDQUFDLENBQUNtRSxJQUFJO1VBQ2xDO1FBQ0osS0FBSyxDQUFDO1VBQ0YzRSxDQUFDLENBQUMyRSxJQUFJLEdBQUduRSxDQUFDLENBQUNzRSxLQUFLLEVBQUU5RSxDQUFDLENBQUM0RSxHQUFHLEdBQUdwRSxDQUFDLENBQUN3RSxNQUFNLEVBQUVoRixDQUFDLENBQUM4RSxLQUFLLEdBQUd0RSxDQUFDLENBQUNtRSxJQUFJLEVBQUUzRSxDQUFDLENBQUNnRixNQUFNLEdBQUd4RSxDQUFDLENBQUNvRSxHQUFHO1VBQ3RFO1FBQ0osS0FBSyxDQUFDO1VBQ0Y1RSxDQUFDLENBQUM0RSxHQUFHLEdBQUdwRSxDQUFDLENBQUN3RSxNQUFNLEVBQUVoRixDQUFDLENBQUNnRixNQUFNLEdBQUd4RSxDQUFDLENBQUNvRSxHQUFHO1VBQ2xDO1FBQ0osS0FBSyxDQUFDO1VBQ0Y1RSxDQUFDLENBQUMyRSxJQUFJLEdBQUduRSxDQUFDLENBQUNvRSxHQUFHLEVBQUU1RSxDQUFDLENBQUM0RSxHQUFHLEdBQUdwRSxDQUFDLENBQUNtRSxJQUFJLEVBQUUzRSxDQUFDLENBQUM4RSxLQUFLLEdBQUd0RSxDQUFDLENBQUN3RSxNQUFNLEVBQUVoRixDQUFDLENBQUNnRixNQUFNLEdBQUd4RSxDQUFDLENBQUNzRSxLQUFLO1VBQ3RFO1FBQ0osS0FBSyxDQUFDO1VBQ0Y5RSxDQUFDLENBQUMyRSxJQUFJLEdBQUduRSxDQUFDLENBQUNvRSxHQUFHLEVBQUU1RSxDQUFDLENBQUM0RSxHQUFHLEdBQUdwRSxDQUFDLENBQUNzRSxLQUFLLEVBQUU5RSxDQUFDLENBQUM4RSxLQUFLLEdBQUd0RSxDQUFDLENBQUN3RSxNQUFNLEVBQUVoRixDQUFDLENBQUNnRixNQUFNLEdBQUd4RSxDQUFDLENBQUNtRSxJQUFJO1VBQ3RFO1FBQ0osS0FBSyxDQUFDO1VBQ0YzRSxDQUFDLENBQUMyRSxJQUFJLEdBQUduRSxDQUFDLENBQUN3RSxNQUFNLEVBQUVoRixDQUFDLENBQUM0RSxHQUFHLEdBQUdwRSxDQUFDLENBQUNzRSxL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Q0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRSxDQUFDLEVBQUVGLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR08sQ0FBQyxFQUFFUCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztVQUN4SyxDQUFDO1VBQUUwTyxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhMU8sQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDbkJELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2EsSUFBSSxDQUFDOE0sR0FBRyxDQUFDMU4sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDYSxJQUFJLENBQUM4TixHQUFHLENBQUMxTyxDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHYSxJQUFJLENBQUM4TixHQUFHLENBQUMxTyxDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHYSxJQUFJLENBQUM4TSxHQUFHLENBQUMxTixDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7VUFDak4sQ0FBQztVQUFFNE8sQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYTVPLENBQUMsRUFBRUMsQ0FBQyxFQUFFO1lBQ25CRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQzhNLEdBQUcsQ0FBQzFOLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQzhOLEdBQUcsQ0FBQzFPLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2EsSUFBSSxDQUFDOE4sR0FBRyxDQUFDMU8sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR2EsSUFBSSxDQUFDOE0sR0FBRyxDQUFDMU4sQ0FBQyxDQUFDLEVBQUVELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO1VBQ2pOLENBQUM7VUFBRTZPLENBQUMsR0FBRyxTQUFKQSxDQUFDLENBQWE3TyxDQUFDLEVBQUVDLENBQUMsRUFBRTtZQUNuQkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHYSxJQUFJLENBQUM4TSxHQUFHLENBQUMxTixDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUNhLElBQUksQ0FBQzhOLEdBQUcsQ0FBQzFPLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQzhOLEdBQUcsQ0FBQzFPLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdhLElBQUksQ0FBQzhNLEdBQUcsQ0FBQzFOLENBQUMsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztVQUNqTixDQUFDO1VBQUU4TyxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhOU8sQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtZQUN0QkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHYSxJQUFJLENBQUNrTyxHQUFHLENBQUM5TyxDQUFDLENBQUMsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHYSxJQUFJLENBQUNrTyxHQUFHLENBQUM3TyxDQUFDLENBQUMsRUFBRUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7VUFDNUwsQ0FBQztVQUFFZ1AsQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYWhQLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDdEJGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxFQUFFRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdFLENBQUMsRUFBRUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7VUFDeEssQ0FBQztVQUFFaVAsQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYWpQLENBQUMsRUFBRTtZQUNoQkEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7VUFDeEssQ0FBQztVQUFFa1AsQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYWxQLENBQUMsRUFBRUMsQ0FBQyxFQUFFO1lBQ25CQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUM7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QUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUMsQ0FBQztVQUNsaUMsQ0FBQztVQUFFeUssQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYTNLLENBQUMsRUFBRTtZQUNoQixJQUFJRSxDQUFDLEdBQUdpUCxDQUFDLEVBQUU7Y0FBRTVPLENBQUMsR0FBRztnQkFBQ3FMLE9BQU8sRUFBRTNMLENBQUM7Z0JBQUVRLEtBQUssRUFBRVIsQ0FBQztnQkFBRVUsTUFBTSxFQUFFVjtjQUFDLENBQUM7WUFDbEQsT0FBTztjQUNIcUwsUUFBUSxFQUFFdEwsQ0FBQyxDQUFDc0wsUUFBUTtjQUNwQkMsUUFBUSxFQUFFdkwsQ0FBQyxDQUFDdUwsUUFBUTtjQUNwQkMsWUFBWSxFQUFFeEwsQ0FBQyxDQUFDd0wsWUFBWTtjQUM1QkMsSUFBSSxFQUFFekwsQ0FBQyxDQUFDeUwsSUFBSTtjQUNabkosS0FBSyxFQUFFdEMsQ0FBQyxDQUFDc0MsS0FBSztjQUNkcUosU0FBUyxFQUFFM0wsQ0FBQyxDQUFDMkwsU0FBUztjQUN0QkMsT0FBTyxFQUFFNUwsQ0FBQyxDQUFDNEwsT0FBTztjQUNsQm5MLEtBQUssRUFBRVQsQ0FBQyxDQUFDUyxLQUFLO2NBQ2RFLE1BQU0sRUFBRVgsQ0FBQyxDQUFDVyxNQUFNO2NBQ2hCNkwsS0FBSyxFQUFFLGlCQUFZO2dCQUNmLE9BQU83QixDQUFDLENBQUM7a0JBQ0xXLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsR0FBRyxJQUFJLENBQUNBLFFBQVEsQ0FBQ3RGLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRy9GLENBQUM7a0JBQ3BEc0wsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQ0EsUUFBUSxDQUFDdkYsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHL0YsQ0FBQztrQkFDcER1TCxZQUFZLEVBQUUsSUFBSSxDQUFDQSxZQUFZLEdBQUcsSUFBSSxDQUFDQSxZQUFZLENBQUN4RixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcvRixDQUFDO2tCQUNoRXdMLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUksR0FBRyxJQUFJLENBQUNBLElBQUksQ0FBQ3pGLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRy9GLENBQUM7a0JBQ3hDcUMsS0FBSyxFQUFFLElBQUksQ0FBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQ0EsS0FBSyxDQUFDMEQsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHL0YsQ0FBQztrQkFDM0MwTCxTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFTLEdBQUcsSUFBSSxDQUFDQSxTQUFTLENBQUMzRixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcvRixDQUFDO2tCQUN2RFUsTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtrQkFDbkJGLEtBQUssRUFBRSxJQUFJLENBQUNBLEtBQUs7a0JBQ2pCbUwsT0FBTyxFQUFFLElBQUksQ0FBQ0E7Z0JBQ2xCLENBQUMsQ0FBQztjQUNOLENBQUM7Y0FDRG9CLFFBQVEsRUFBRSxvQkFBWTtnQkFDbEIsSUFBSWhOLENBQUMsR0FBR0UsQ0FBQztnQkFDVCxPQUFPRixDQUFDLENBQUN3UCxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMvQyxlQUFlLElBQUl6TSxDQUFDLENBQUM0RixTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUM2RyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUNBLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQ0EsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDbkssS0FBSyxJQUFJdEMsQ0FBQyxDQUFDc0MsS0FBSyxDQUFDLElBQUksQ0FBQ0EsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ0EsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDbUosSUFBSSxJQUFJekwsQ0FBQyxDQUFDeUwsSUFBSSxDQUFDLElBQUksQ0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDRixRQUFRLEtBQUt2TCxDQUFDLENBQUMwUCxPQUFPLENBQUMsSUFBSSxDQUFDbkUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUV2TCxDQUFDLENBQUMyUCxPQUFPLENBQUMsSUFBSSxDQUFDcEUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUV2TCxDQUFDLENBQUM0UCxPQUFPLENBQUMsSUFBSSxDQUFDckUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNELFFBQVEsSUFBSXRMLENBQUMsQ0FBQzRGLFNBQVMsQ0FBQyxJQUFJLENBQUMwRixRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDQSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDQSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNFLFlBQVksS0FBS3hMLENBQUMsQ0FBQzBQLE9BQU8sQ0FBQyxJQUFJLENBQUNsRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRXhMLENBQUMsQ0FBQzJQLE9BQU8sQ0FBQyxJQUFJLENBQUNuRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRXhMLENBQUMsQ0FBQzRQLE9BQU8sQ0FBQyxJQUFJLENBQUNwRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ0csU0FBUyxJQUFJM0wsQ0FBQyxDQUFDc0MsS0FBSyxDQUFDLElBQUksQ0FBQ3FKLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ2MsZUFBZSxJQUFJek0sQ0FBQyxDQUFDNEYsU0FBUyxDQUFDLElBQUksQ0FBQzZHLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNBLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNBLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFek0sQ0FBQztjQUN6dEIsQ0FBQztjQUNEaU4sYUFBYSxFQUFFLHlCQUFZO2dCQUN2QixPQUFPMU0sQ0FBQyxDQUFDcUwsT0FBTyxHQUFHLElBQUksQ0FBQ0EsT0FBTyxFQUFFckwsQ0FBQyxDQUFDRSxLQUFLLEdBQUcsSUFBSSxDQUFDQSxLQUFLLEdBQUcsSUFBSSxFQUFFRixDQUFDLENBQUNJLE1BQU0sR0FBRyxJQUFJLENBQUNBLE1BQU0sR0FBRyxJQUFJLEVBQUVKLENBQUM7Y0FDbEc7WUFDSixDQUFDO1VBQ0wsQ0FBQztVQUFFb00sQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYTNNLENBQUMsRUFBRUUsQ0FBQyxFQUFFSyxDQUFDLEVBQUU7WUFDdEIsSUFBSUMsQ0FBQyxHQUFHUixDQUFDO2NBQUVVLENBQUMsR0FBR1IsQ0FBQztjQUFFVSxDQUFDLEdBQUdMLENBQUM7Y0FBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUM0SyxRQUFRLEtBQUtyTCxDQUFDO2NBQUVpQixDQUFDLEdBQUdSLENBQUMsQ0FBQzZLLFFBQVEsS0FBS3RMLENBQUM7Y0FBRW1CLENBQUMsR0FBR1YsQ0FBQyxDQUFDOEssWUFBWSxLQUFLdkwsQ0FBQztjQUN6Rm9CLENBQUMsR0FBR1gsQ0FBQyxDQUFDNEIsS0FBSyxLQUFLckMsQ0FBQztjQUFFa0UsQ0FBQyxHQUFHekQsQ0FBQyxDQUFDK0ssSUFBSSxLQUFLeEwsQ0FBQztjQUFFbUUsQ0FBQyxHQUFHMUQsQ0FBQyxDQUFDRCxLQUFLLEtBQUtSLENBQUM7Y0FBRW9FLENBQUMsR0FBRzNELENBQUMsQ0FBQ0MsTUFBTSxLQUFLVixDQUFDO2NBQUVxRSxDQUFDLEdBQUc1RCxDQUFDLENBQUNrTCxPQUFPLEtBQUszTCxDQUFDO1lBQ25HLE9BQU87Y0FDSDhNLEtBQUssRUFBRSxlQUFVL00sQ0FBQyxFQUFFO2dCQUNoQixJQUFJaUIsQ0FBQyxFQUFFO2tCQUNILElBQUloQixDQUFDLEdBQUdTLENBQUMsQ0FBQzRLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRzlLLENBQUMsQ0FBQzhLLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQUVwTCxDQUFDLEdBQUdRLENBQUMsQ0FBQzRLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRzlLLENBQUMsQ0FBQzhLLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3BFL0ssQ0FBQyxHQUFHRyxDQUFDLENBQUM0SyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUc5SyxDQUFDLENBQUM4SyxRQUFRLENBQUMsQ0FBQyxDQUFDO2tCQUNyQzFLLENBQUMsQ0FBQzBLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRzlLLENBQUMsQ0FBQzhLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBR3RMLENBQUMsR0FBR0MsQ0FBQyxFQUFFVyxDQUFDLENBQUMwSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUc5SyxDQUFDLENBQUM4SyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUd0TCxDQUFDLEdBQUdFLENBQUMsRUFBRVUsQ0FBQyxDQUFDMEssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHOUssQ0FBQyxDQUFDOEssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHdEwsQ0FBQyxHQUFHTyxDQUFDO2dCQUN2SDtnQkFDQSxJQUFJVyxDQUFDLEVBQUU7a0JBQ0gsSUFBSXFELENBQUMsR0FBRzdELENBQUMsQ0FBQzZLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRy9LLENBQUMsQ0FBQytLLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQUUvRyxDQUFDLEdBQUc5RCxDQUFDLENBQUM2SyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcvSyxDQUFDLENBQUMrSyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNwRTlHLENBQUMsR0FBRy9ELENBQUMsQ0FBQzZLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRy9LLENBQUMsQ0FBQytLLFFBQVEsQ0FBQyxDQUFDLENBQUM7a0JBQ3JDM0ssQ0FBQyxDQUFDMkssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHL0ssQ0FBQyxDQUFDK0ssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHdkwsQ0FBQyxHQUFHdUUsQ0FBQyxFQUFFM0QsQ0FBQyxDQUFDMkssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHL0ssQ0FBQyxDQUFDK0ssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHdkwsQ0FBQyxHQUFHd0UsQ0FBQyxFQUFFNUQsQ0FBQyxDQUFDMkssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHL0ssQ0FBQyxDQUFDK0ssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHdkwsQ0FBQyxHQUFHeUUsQ0FBQztnQkFDdkg7Z0JBQ0EsSUFBSXJELENBQUMsRUFBRTtrQkFDSCxJQUFJc0QsQ0FBQyxHQUFHaEUsQ0FBQyxDQUFDOEssWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHaEwsQ0FBQyxDQUFDZ0wsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFBRTdHLENBQUMsR0FBR2pFLENBQUMsQ0FBQzhLLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBR2hMLENBQUMsQ0FBQ2dMLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ3BGNUcsQ0FBQyxHQUFHbEUsQ0FBQyxDQUFDOEssWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHaEwsQ0FBQyxDQUFDZ0wsWUFBWSxDQUFDLENBQUMsQ0FBQztrQkFDN0M1SyxDQUFDLENBQUM0SyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUdoTCxDQUFDLENBQUNnTCxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUd4TCxDQUFDLEdBQUcwRSxDQUFDLEVBQUU5RCxDQUFDLENBQUM0SyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUdoTCxDQUFDLENBQUNnTCxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUd4TCxDQUFDLEdBQUcyRSxDQUFDLEVBQUUvRCxDQUFDLENBQUM0SyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUdoTCxDQUFDLENBQUNnTCxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUd4TCxDQUFDLEdBQUc0RSxDQUFDO2dCQUMvSTtnQkFDQSxJQUFJVCxDQUFDLEVBQUU7a0JBQ0gsSUFBSUYsQ0FBQyxHQUFHdkQsQ0FBQyxDQUFDNEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHOUIsQ0FBQyxDQUFDOEIsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFBRTRCLENBQUMsR0FBR3hELENBQUMsQ0FBQzRCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRzlCLENBQUMsQ0FBQzhCLEtBQUssQ0FBQyxDQUFDLENBQUM7a0JBQzVEMUIsQ0FBQyxDQUFDMEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHOUIsQ0FBQyxDQUFDOEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHdEMsQ0FBQyxHQUFHaUUsQ0FBQyxFQUFFckQsQ0FBQyxDQUFDMEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHOUIsQ0FBQyxDQUFDOEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHdEMsQ0FBQyxHQUFHa0UsQ0FBQztnQkFDcEU7Z0JBQ0EsSUFBSTdDLENBQUMsRUFBRTtrQkFDSCxJQUFJK0ssQ0FBQyxHQUFHMUwsQ0FBQyxDQUFDK0ssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHakwsQ0FBQyxDQUFDaUwsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFBRWpCLENBQUMsR0FBRzlKLENBQUMsQ0FBQytLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR2pMLENBQUMsQ0FBQ2lMLElBQUksQ0FBQyxDQUFDLENBQUM7a0JBQ3hEN0ssQ0FBQyxDQUFDNkssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHakwsQ0FBQyxDQUFDaUwsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHekwsQ0FBQyxHQUFHb00sQ0FBQyxFQUFFeEwsQ0FBQyxDQUFDNkssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHakwsQ0FBQyxDQUFDaUwsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHekwsQ0FBQyxHQUFHd0ssQ0FBQztnQkFDaEU7Z0JBQ0EsSUFBSXBHLENBQUMsRUFBRTtrQkFDSCxJQUFJeUcsQ0FBQyxHQUFHbkssQ0FBQyxDQUFDRCxLQUFLLEdBQUdELENBQUMsQ0FBQ0MsS0FBSztrQkFDekJHLENBQUMsQ0FBQ0gsS0FBSyxHQUFHRCxDQUFDLENBQUNDLEtBQUssR0FBR1QsQ0FBQyxHQUFHNkssQ0FBQztnQkFDN0I7Z0JBQ0EsSUFBSXhHLENBQUMsRUFBRTtrQkFDSCxJQUFJb0osQ0FBQyxHQUFHL00sQ0FBQyxDQUFDQyxNQUFNLEdBQUdILENBQUMsQ0FBQ0csTUFBTTtrQkFDM0JDLENBQUMsQ0FBQ0QsTUFBTSxHQUFHSCxDQUFDLENBQUNHLE1BQU0sR0FBR1gsQ0FBQyxHQUFHeU4sQ0FBQztnQkFDL0I7Z0JBQ0EsSUFBSW5KLENBQUMsRUFBRTtrQkFDSCxJQUFJb0osQ0FBQyxHQUFHaE4sQ0FBQyxDQUFDa0wsT0FBTyxHQUFHcEwsQ0FBQyxDQUFDb0wsT0FBTztrQkFDN0JoTCxDQUFDLENBQUNnTCxPQUFPLEdBQUdwTCxDQUFDLENBQUNvTCxPQUFPLEdBQUc1TCxDQUFDLEdBQUcwTixDQUFDO2dCQUNqQztjQUNKLENBQUM7Y0FBRVYsUUFBUSxFQUFFLG9CQUFZO2dCQUNyQixPQUFPcE0sQ0FBQyxDQUFDb00sUUFBUSxFQUFFO2NBQ3ZCLENBQUM7Y0FBRUMsYUFBYSxFQUFFLHlCQUFZO2dCQUMxQixPQUFPck0sQ0FBQyxDQUFDcU0sYUFBYSxFQUFFO2NBQzVCLENBQUM7Y0FBRUosVUFBVSxFQUFFLHNCQUFZO2dCQUN2QixJQUFJN00sQ0FBQyxHQUFHUSxDQUFDO2dCQUNUQSxDQUFDLEdBQUdFLENBQUMsRUFBRUEsQ0FBQyxHQUFHVixDQUFDO2NBQ2hCO1lBQ0osQ0FBQztVQUNMLENBQUM7VUFBRTBNLENBQUMsR0FBRyxTQUFKQSxDQUFDLENBQWExTSxDQUFDLEVBQUVFLENBQUMsRUFBRUssQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDekIsSUFBSUUsQ0FBQyxHQUFHVixDQUFDLENBQUMsQ0FBQyxFQUFFbVAsQ0FBQyxFQUFFLENBQUM7Y0FBRXZPLENBQUMsR0FBR1YsQ0FBQztjQUFFZSxDQUFDLEdBQUdWLENBQUM7Y0FBRVcsQ0FBQyxHQUFHVixDQUFDO2NBQUVZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsT0FBTztjQUNIMkwsS0FBSyxFQUFFLGVBQVU3TSxDQUFDLEVBQUU7Z0JBQ2hCa0IsQ0FBQyxLQUFLbEIsQ0FBQyxHQUFHLENBQUMsR0FBR0EsQ0FBQyxDQUFDLEVBQUVRLENBQUMsQ0FBQzhPLEtBQUssRUFBRSxFQUFFOU8sQ0FBQyxHQUFHVixDQUFDLENBQUNFLENBQUMsRUFBRVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJSCxDQUFDLEdBQUdVLENBQUMsQ0FBQ1IsS0FBSyxHQUFHRyxDQUFDLENBQUNILEtBQUs7a0JBQUVELENBQUMsR0FBR1MsQ0FBQyxDQUFDTixNQUFNLEdBQUdDLENBQUMsQ0FBQ0QsTUFBTTtrQkFBRVUsQ0FBQyxHQUFHSixDQUFDLENBQUMySyxPQUFPLEdBQUdoTCxDQUFDLENBQUNnTCxPQUFPO2dCQUM3RTNLLENBQUMsQ0FBQ1IsS0FBSyxLQUFLUixDQUFDLEtBQUtpQixDQUFDLENBQUNULEtBQUssR0FBR0csQ0FBQyxDQUFDSCxLQUFLLEdBQUdQLENBQUMsR0FBR0ssQ0FBQyxDQUFDLEVBQUVVLENBQUMsQ0FBQ04sTUFBTSxLQUFLVixDQUFDLEtBQUtpQixDQUFDLENBQUNQLE1BQU0sR0FBR0MsQ0FBQyxDQUFDRCxNQUFNLEdBQUdULENBQUMsR0FBR00sQ0FBQyxDQUFDLEVBQUVTLENBQUMsQ0FBQzJLLE9BQU8sS0FBSzNMLENBQUMsS0FBS2lCLENBQUMsQ0FBQzBLLE9BQU8sR0FBR2hMLENBQUMsQ0FBQ2dMLE9BQU8sR0FBRzFMLENBQUMsR0FBR21CLENBQUMsQ0FBQztjQUNySixDQUFDO2NBQUUyTCxRQUFRLEVBQUUsb0JBQVk7Z0JBQ3JCLE9BQU90TSxDQUFDO2NBQ1osQ0FBQztjQUFFdU0sYUFBYSxFQUFFLHlCQUFZO2dCQUMxQixPQUFPL0wsQ0FBQyxDQUFDK0wsYUFBYSxFQUFFO2NBQzVCLENBQUM7Y0FBRUosVUFBVSxFQUFFLHNCQUFZO2dCQUN2QnpMLENBQUMsR0FBRyxDQUFDLENBQUM7Y0FDVjtZQUNKLENBQUM7VUFDTCxDQUFDO1VBQUVzSyxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhMUwsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxXQUFXLElBQUksT0FBT0QsQ0FBQyxHQUFHQyxDQUFDLEdBQUdELENBQUM7VUFDMUMsQ0FBQztVQUFFa04sQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYWxOLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDdEIsSUFBSUssQ0FBQyxHQUFHLEVBQUU7WUFDVkwsQ0FBQyxLQUFLSyxDQUFDLEdBQUcsY0FBYyxHQUFHTCxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3RDLElBQUlRLENBQUMsR0FBR1QsQ0FBQyxDQUFDcVAsS0FBSyxFQUFFO1lBQ2pCdFAsQ0FBQyxDQUFDd0YsS0FBSyxDQUFDaEYsQ0FBQyxDQUFDLEdBQUdELENBQUMsR0FBR0csQ0FBQztVQUN0QixDQUFDO1VBQUV5TSxDQUFDLEdBQUcsU0FBSkEsQ0FBQyxDQUFhbk4sQ0FBQyxFQUFFQyxDQUFDLEVBQUU7WUFDbkIsS0FBSyxJQUFJQyxDQUFDLElBQUlELENBQUM7Y0FBRUQsQ0FBQyxDQUFDd0YsS0FBSyxDQUFDdEYsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDO1lBQUE7VUFDdEMsQ0FBQztVQUFFd0osQ0FBQyxHQUFHLFNBQUpBLENBQUMsQ0FBYTFKLENBQUMsRUFBRTtZQUNoQixPQUFPLFVBQVUsSUFBSSxPQUFPQSxDQUFDO1VBQ2pDLENBQUM7VUFBRXlKLENBQUMsR0FBRyxTQUFKQSxDQUFDLENBQWF6SixDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDQSxDQUFDLEVBQUUsT0FBT0EsQ0FBQztZQUNoQixJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlGLENBQUM7Y0FBRUMsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0YsQ0FBQyxDQUFDRSxDQUFDLENBQUM7WUFBQztZQUM3QixPQUFPRCxDQUFDO1VBQ1osQ0FBQztRQUNMLE9BQU9nQixDQUFDLENBQUM0TyxZQUFZLEdBQUdWLENBQUMsRUFBRWxPLENBQUMsQ0FBQzZPLG1CQUFtQixHQUFHNUMsQ0FBQyxFQUFFak0sQ0FBQztNQUMzRCxDQUFDLEVBQUU7TUFBRUksQ0FBQyxHQUFHLFlBQVk7UUFDakIsU0FBU3JCLENBQUMsQ0FBQ0EsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLENBQUMsRUFBRUssQ0FBQyxFQUFFQyxDQUFDLEVBQUU7VUFDdEIsSUFBSSxRQUFRLElBQUksT0FBT1IsQ0FBQyxFQUFFQSxDQUFDLEdBQUdLLFFBQVEsQ0FBQzBQLGNBQWMsQ0FBQy9QLENBQUMsQ0FBQyxDQUFDLEtBQU0sSUFBSSxDQUFDQSxDQUFDLFlBQVlnUSxpQkFBaUIsRUFBRTtVQUNwRyxJQUFJdFAsQ0FBQztZQUFFRSxDQUFDLEdBQUdaLENBQUMsQ0FBQ3VCLFVBQVUsQ0FBQyxJQUFJLENBQUM7VUFDN0IsSUFBSTtZQUNBLElBQUk7Y0FDQWIsQ0FBQyxHQUFHRSxDQUFDLENBQUNxUCxZQUFZLENBQUNoUSxDQUFDLEVBQUVDLENBQUMsRUFBRUssQ0FBQyxFQUFFQyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLE9BQU9TLENBQUMsRUFBRTtjQUNSLE1BQU0sSUFBSWlQLEtBQUssQ0FBQyxxQ0FBcUMsR0FBR2pQLENBQUMsQ0FBQztZQUM5RDtVQUNKLENBQUMsQ0FBQyxPQUFPQSxDQUFDLEVBQUU7WUFDUixNQUFNLElBQUlpUCxLQUFLLENBQUMsK0JBQStCLEdBQUdqUCxDQUFDLENBQUM7VUFDeEQ7VUFDQSxPQUFPUCxDQUFDO1FBQ1o7UUFFQSxTQUFTVCxDQUFDLENBQUNBLENBQUMsRUFBRU0sQ0FBQyxFQUFFQyxDQUFDLEVBQUVFLENBQUMsRUFBRUUsQ0FBQyxFQUFFSyxDQUFDLEVBQUU7VUFDekIsSUFBSSxFQUFFa1AsS0FBSyxDQUFDbFAsQ0FBQyxDQUFDLElBQUlBLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN0QkEsQ0FBQyxJQUFJLENBQUM7WUFDTixJQUFJQyxDQUFDLEdBQUdsQixDQUFDLENBQUNDLENBQUMsRUFBRU0sQ0FBQyxFQUFFQyxDQUFDLEVBQUVFLENBQUMsRUFBRUUsQ0FBQyxDQUFDO1lBQ3hCTSxDQUFDLEdBQUdoQixDQUFDLENBQUNnQixDQUFDLEVBQUVYLENBQUMsRUFBRUMsQ0FBQyxFQUFFRSxDQUFDLEVBQUVFLENBQUMsRUFBRUssQ0FBQyxDQUFDLEVBQUVoQixDQUFDLENBQUNzQixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM2TyxZQUFZLENBQUNsUCxDQUFDLEVBQUVYLENBQUMsRUFBRUMsQ0FBQyxDQUFDO1VBQ3JFO1FBQ0o7UUFFQSxTQUFTTixDQUFDLENBQUNGLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUVVLENBQUMsRUFBRUssQ0FBQyxFQUFFQyxDQUFDLEVBQUU7VUFDekIsSUFBSUUsQ0FBQztZQUFFQyxDQUFDO1lBQUU4QyxDQUFDO1lBQUVDLENBQUM7WUFBRUMsQ0FBQztZQUFFQyxDQUFDO1lBQUVDLENBQUM7WUFBRUMsQ0FBQztZQUFFQyxDQUFDO1lBQUVDLENBQUM7WUFBRUMsQ0FBQztZQUFFQyxDQUFDO1lBQUVYLENBQUM7WUFBRUMsQ0FBQztZQUFFa0ksQ0FBQztZQUFFNUIsQ0FBQztZQUFFSyxDQUFDO1lBQUU0QyxDQUFDO1lBQUVDLENBQUM7WUFBRUUsQ0FBQztZQUFFQyxDQUFDO1lBQUVQLENBQUM7WUFBRWMsQ0FBQztZQUFFN0IsQ0FBQztZQUFFa0MsQ0FBQyxHQUFHek8sQ0FBQyxDQUFDcVAsSUFBSTtZQUFFWCxDQUFDLEdBQUd4TixDQUFDLEdBQUdBLENBQUMsR0FBRyxDQUFDO1lBQ2pHME4sQ0FBQyxHQUFHaE8sQ0FBQyxHQUFHLENBQUM7WUFBRWlPLENBQUMsR0FBRzVOLENBQUMsR0FBRyxDQUFDO1lBQUU2TixDQUFDLEdBQUc1TixDQUFDLEdBQUcsQ0FBQztZQUFFOE4sQ0FBQyxHQUFHRixDQUFDLElBQUlBLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUVHLENBQUMsR0FBRyxJQUFJMU8sQ0FBQztZQUFFMk8sQ0FBQyxHQUFHRCxDQUFDO1VBQzFFLEtBQUs5SyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUd1SyxDQUFDLEVBQUV2SyxDQUFDLEVBQUU7WUFBRSxJQUFJK0ssQ0FBQyxHQUFHQSxDQUFDLENBQUNtQixJQUFJLEdBQUcsSUFBSTlQLENBQUMsSUFBRTRELENBQUMsSUFBSTJLLENBQUMsRUFBRSxJQUFJSyxDQUFDLEdBQUdELENBQUM7VUFBQztVQUNsRUEsQ0FBQyxDQUFDbUIsSUFBSSxHQUFHcEIsQ0FBQztVQUNWLElBQUlRLENBQUMsR0FBRyxJQUFJO1lBQUU5RSxDQUFDLEdBQUcsSUFBSTtVQUN0QnBHLENBQUMsR0FBR0QsQ0FBQyxHQUFHLENBQUM7VUFDVCxJQUFJcUksQ0FBQyxHQUFHbk0sQ0FBQyxDQUFDVSxDQUFDLENBQUM7WUFBRXdMLENBQUMsR0FBR2hNLENBQUMsQ0FBQ1EsQ0FBQyxDQUFDO1VBQ3RCLEtBQUtHLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0osQ0FBQyxFQUFFSSxDQUFDLEVBQUUsRUFBRTtZQUNwQixLQUFLbUosQ0FBQyxHQUFHSyxDQUFDLEdBQUc0QyxDQUFDLEdBQUdDLENBQUMsR0FBR2xKLENBQUMsR0FBR0MsQ0FBQyxHQUFHQyxDQUFDLEdBQUdDLENBQUMsR0FBRyxDQUFDLEVBQUVDLENBQUMsR0FBR2tLLENBQUMsSUFBSWxCLENBQUMsR0FBR2EsQ0FBQyxDQUFDbkssQ0FBQyxDQUFDLENBQUMsRUFBRUwsQ0FBQyxHQUFHNkssQ0FBQyxJQUFJakIsQ0FBQyxHQUFHWSxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUosQ0FBQyxHQUFHNEssQ0FBQyxJQUFJeEIsQ0FBQyxHQUFHbUIsQ0FBQyxDQUFDbkssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU4SCxDQUFDLEdBQUcwQyxDQUFDLElBQUlWLENBQUMsR0FBR0ssQ0FBQyxDQUFDbkssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVFLENBQUMsSUFBSXdLLENBQUMsR0FBR3BCLENBQUMsRUFBRW5KLENBQUMsSUFBSXVLLENBQUMsR0FBR25CLENBQUMsRUFBRW5KLENBQUMsSUFBSXNLLENBQUMsR0FBRzFCLENBQUMsRUFBRTNJLENBQUMsSUFBSXFLLENBQUMsR0FBR1osQ0FBQyxFQUFFYyxDQUFDLEdBQUdELENBQUMsRUFBRTlLLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRzJLLENBQUMsRUFBRTNLLENBQUMsRUFBRTtjQUFFK0ssQ0FBQyxDQUFDdE8sQ0FBQyxHQUFHZ04sQ0FBQyxFQUFFc0IsQ0FBQyxDQUFDekssQ0FBQyxHQUFHb0osQ0FBQyxFQUFFcUIsQ0FBQyxDQUFDakwsQ0FBQyxHQUFHcUosQ0FBQyxFQUFFNEIsQ0FBQyxDQUFDeE8sQ0FBQyxHQUFHME4sQ0FBQyxFQUFFYyxDQUFDLEdBQUdBLENBQUMsQ0FBQ21CLElBQUk7WUFBQztZQUM3UCxLQUFLbE0sQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHMkssQ0FBQyxFQUFFM0ssQ0FBQyxFQUFFO2NBQUVDLENBQUMsR0FBR0UsQ0FBQyxJQUFJLENBQUNzSyxDQUFDLEdBQUd6SyxDQUFDLEdBQUd5SyxDQUFDLEdBQUd6SyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUVLLENBQUMsSUFBSSxDQUFDMEssQ0FBQyxDQUFDdE8sQ0FBQyxHQUFHZ04sQ0FBQyxHQUFHYSxDQUFDLENBQUNySyxDQUFDLENBQUMsS0FBS21JLENBQUMsR0FBR3VDLENBQUMsR0FBRzNLLENBQUMsQ0FBQyxFQUFFTSxDQUFDLElBQUksQ0FBQ3lLLENBQUMsQ0FBQ3pLLENBQUMsR0FBR29KLENBQUMsR0FBR1ksQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJbUksQ0FBQyxFQUFFN0gsQ0FBQyxJQUFJLENBQUN3SyxDQUFDLENBQUNqTCxDQUFDLEdBQUdxSixDQUFDLEdBQUdtQixDQUFDLENBQUNySyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUltSSxDQUFDLEVBQUU1SCxDQUFDLElBQUksQ0FBQ3VLLENBQUMsQ0FBQ3hPLENBQUMsR0FBRzBOLENBQUMsR0FBR0ssQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJbUksQ0FBQyxFQUFFL0IsQ0FBQyxJQUFJb0QsQ0FBQyxFQUFFL0MsQ0FBQyxJQUFJZ0QsQ0FBQyxFQUFFSixDQUFDLElBQUlILENBQUMsRUFBRUksQ0FBQyxJQUFJVSxDQUFDLEVBQUVjLENBQUMsR0FBR0EsQ0FBQyxDQUFDbUIsSUFBSTtZQUFDO1lBQ3JPLEtBQUtaLENBQUMsR0FBR1IsQ0FBQyxFQUFFdEUsQ0FBQyxHQUFHd0UsQ0FBQyxFQUFFL04sQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHUixDQUFDLEVBQUVRLENBQUMsRUFBRTtjQUFFcU4sQ0FBQyxDQUFDbkssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHOEosQ0FBQyxHQUFHekosQ0FBQyxHQUFHZ0ksQ0FBQyxJQUFJRCxDQUFDLEVBQUUsQ0FBQyxJQUFJMEIsQ0FBQyxJQUFJQSxDQUFDLEdBQUcsR0FBRyxHQUFHQSxDQUFDLEVBQUVLLENBQUMsQ0FBQ25LLENBQUMsQ0FBQyxHQUFHLENBQUNFLENBQUMsR0FBR21JLENBQUMsSUFBSUQsQ0FBQyxJQUFJMEIsQ0FBQyxFQUFFSyxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ0csQ0FBQyxHQUFHa0ksQ0FBQyxJQUFJRCxDQUFDLElBQUkwQixDQUFDLEVBQUVLLENBQUMsQ0FBQ25LLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDSSxDQUFDLEdBQUdpSSxDQUFDLElBQUlELENBQUMsSUFBSTBCLENBQUMsSUFBSUssQ0FBQyxDQUFDbkssQ0FBQyxDQUFDLEdBQUdtSyxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUdtSyxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFRSxDQUFDLElBQUlJLENBQUMsRUFBRUgsQ0FBQyxJQUFJUixDQUFDLEVBQUVTLENBQUMsSUFBSVIsQ0FBQyxFQUFFUyxDQUFDLElBQUl5SCxDQUFDLEVBQUV4SCxDQUFDLElBQUk2SyxDQUFDLENBQUM3TyxDQUFDLEVBQUVxRCxDQUFDLElBQUl3TCxDQUFDLENBQUNoTCxDQUFDLEVBQUVQLENBQUMsSUFBSXVMLENBQUMsQ0FBQ3hMLENBQUMsRUFBRW1JLENBQUMsSUFBSXFELENBQUMsQ0FBQy9PLENBQUMsRUFBRTBELENBQUMsR0FBR0csQ0FBQyxJQUFJLENBQUNILENBQUMsR0FBR2hELENBQUMsR0FBR0YsQ0FBQyxHQUFHLENBQUMsSUFBSTBOLENBQUMsR0FBR3hLLENBQUMsR0FBR3dLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRXBFLENBQUMsSUFBSWlGLENBQUMsQ0FBQzdPLENBQUMsR0FBRzZOLENBQUMsQ0FBQ3JLLENBQUMsQ0FBQyxFQUFFeUcsQ0FBQyxJQUFJNEUsQ0FBQyxDQUFDaEwsQ0FBQyxHQUFHZ0ssQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFcUosQ0FBQyxJQUFJZ0MsQ0FBQyxDQUFDeEwsQ0FBQyxHQUFHd0ssQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFc0osQ0FBQyxJQUFJK0IsQ0FBQyxDQUFDL08sQ0FBQyxHQUFHK04sQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFSSxDQUFDLElBQUlnRyxDQUFDLEVBQUUvRixDQUFDLElBQUlvRyxDQUFDLEVBQUVuRyxDQUFDLElBQUkrSSxDQUFDLEVBQUU5SSxDQUFDLElBQUkrSSxDQUFDLEVBQUUrQixDQUFDLEdBQUdBLENBQUMsQ0FBQ1ksSUFBSSxFQUFFekwsQ0FBQyxJQUFJZ0osQ0FBQyxHQUFHakQsQ0FBQyxDQUFDL0osQ0FBQyxFQUFFcUQsQ0FBQyxJQUFJNEosQ0FBQyxHQUFHbEQsQ0FBQyxDQUFDbEcsQ0FBQyxFQUFFUCxDQUFDLElBQUlvSixDQUFDLEdBQUczQyxDQUFDLENBQUMxRyxDQUFDLEVBQUVtSSxDQUFDLElBQUlnQyxDQUFDLEdBQUd6RCxDQUFDLENBQUNqSyxDQUFDLEVBQUU4SixDQUFDLElBQUlvRCxDQUFDLEVBQUUvQyxDQUFDLElBQUlnRCxDQUFDLEVBQUVKLENBQUMsSUFBSUgsQ0FBQyxFQUFFSSxDQUFDLElBQUlVLENBQUMsRUFBRXpELENBQUMsR0FBR0EsQ0FBQyxDQUFDMEYsSUFBSSxFQUFFL0wsQ0FBQyxJQUFJLENBQUM7WUFBQztZQUN4aUJDLENBQUMsSUFBSTNELENBQUM7VUFDVjtVQUNBLEtBQUtRLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR1IsQ0FBQyxFQUFFUSxDQUFDLEVBQUUsRUFBRTtZQUNwQixLQUFLeUosQ0FBQyxHQUFHNEMsQ0FBQyxHQUFHQyxDQUFDLEdBQUdsRCxDQUFDLEdBQUcvRixDQUFDLEdBQUdDLENBQUMsR0FBR0MsQ0FBQyxHQUFHSCxDQUFDLEdBQUcsQ0FBQyxFQUFFRixDQUFDLEdBQUdsRCxDQUFDLElBQUksQ0FBQyxFQUFFd0QsQ0FBQyxHQUFHa0ssQ0FBQyxJQUFJbEIsQ0FBQyxHQUFHYSxDQUFDLENBQUNuSyxDQUFDLENBQUMsQ0FBQyxFQUFFTCxDQUFDLEdBQUc2SyxDQUFDLElBQUlqQixDQUFDLEdBQUdZLENBQUMsQ0FBQ25LLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFSixDQUFDLEdBQUc0SyxDQUFDLElBQUl4QixDQUFDLEdBQUdtQixDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRThILENBQUMsR0FBRzBDLENBQUMsSUFBSVYsQ0FBQyxHQUFHSyxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUUsQ0FBQyxJQUFJd0ssQ0FBQyxHQUFHcEIsQ0FBQyxFQUFFbkosQ0FBQyxJQUFJdUssQ0FBQyxHQUFHbkIsQ0FBQyxFQUFFbkosQ0FBQyxJQUFJc0ssQ0FBQyxHQUFHMUIsQ0FBQyxFQUFFM0ksQ0FBQyxJQUFJcUssQ0FBQyxHQUFHWixDQUFDLEVBQUVjLENBQUMsR0FBR0QsQ0FBQyxFQUFFOUssQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHMkssQ0FBQyxFQUFFM0ssQ0FBQyxFQUFFO2NBQUUrSyxDQUFDLENBQUN0TyxDQUFDLEdBQUdnTixDQUFDLEVBQUVzQixDQUFDLENBQUN6SyxDQUFDLEdBQUdvSixDQUFDLEVBQUVxQixDQUFDLENBQUNqTCxDQUFDLEdBQUdxSixDQUFDLEVBQUU0QixDQUFDLENBQUN4TyxDQUFDLEdBQUcwTixDQUFDLEVBQUVjLENBQUMsR0FBR0EsQ0FBQyxDQUFDbUIsSUFBSTtZQUFDO1lBQ3pRLEtBQUtoTSxDQUFDLEdBQUd6RCxDQUFDLEVBQUV1RCxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLElBQUlqRCxDQUFDLEVBQUVpRCxDQUFDLEVBQUU7Y0FBRUcsQ0FBQyxHQUFHRCxDQUFDLEdBQUdqRCxDQUFDLElBQUksQ0FBQyxFQUFFb0QsQ0FBQyxJQUFJLENBQUMwSyxDQUFDLENBQUN0TyxDQUFDLEdBQUdnTixDQUFDLEdBQUdhLENBQUMsQ0FBQ25LLENBQUMsQ0FBQyxLQUFLaUksQ0FBQyxHQUFHdUMsQ0FBQyxHQUFHM0ssQ0FBQyxDQUFDLEVBQUVNLENBQUMsSUFBSSxDQUFDeUssQ0FBQyxDQUFDekssQ0FBQyxHQUFHb0osQ0FBQyxHQUFHWSxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUlpSSxDQUFDLEVBQUU3SCxDQUFDLElBQUksQ0FBQ3dLLENBQUMsQ0FBQ2pMLENBQUMsR0FBR3FKLENBQUMsR0FBR21CLENBQUMsQ0FBQ25LLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSWlJLENBQUMsRUFBRTVILENBQUMsSUFBSSxDQUFDdUssQ0FBQyxDQUFDeE8sQ0FBQyxHQUFHME4sQ0FBQyxHQUFHSyxDQUFDLENBQUNuSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUlpSSxDQUFDLEVBQUUvQixDQUFDLElBQUlvRCxDQUFDLEVBQUUvQyxDQUFDLElBQUlnRCxDQUFDLEVBQUVKLENBQUMsSUFBSUgsQ0FBQyxFQUFFSSxDQUFDLElBQUlVLENBQUMsRUFBRWMsQ0FBQyxHQUFHQSxDQUFDLENBQUNtQixJQUFJLEVBQUVsTSxDQUFDLEdBQUcwSyxDQUFDLEtBQUt4SyxDQUFDLElBQUl6RCxDQUFDLENBQUM7WUFBQztZQUNoUCxLQUFLMEQsQ0FBQyxHQUFHbEQsQ0FBQyxFQUFFcU8sQ0FBQyxHQUFHUixDQUFDLEVBQUV0RSxDQUFDLEdBQUd3RSxDQUFDLEVBQUU5TixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdKLENBQUMsRUFBRUksQ0FBQyxFQUFFO2NBQUUrQyxDQUFDLEdBQUdFLENBQUMsSUFBSSxDQUFDLEVBQUVtSyxDQUFDLENBQUNySyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUdnSyxDQUFDLEdBQUd6SixDQUFDLEdBQUdnSSxDQUFDLElBQUlELENBQUMsRUFBRTBCLENBQUMsR0FBRyxDQUFDLElBQUlBLENBQUMsR0FBRyxHQUFHLEdBQUdBLENBQUMsRUFBRUssQ0FBQyxDQUFDckssQ0FBQyxDQUFDLEdBQUcsQ0FBQ0ksQ0FBQyxHQUFHbUksQ0FBQyxJQUFJRCxDQUFDLElBQUkwQixDQUFDLEVBQUVLLENBQUMsQ0FBQ3JLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDSyxDQUFDLEdBQUdrSSxDQUFDLElBQUlELENBQUMsSUFBSTBCLENBQUMsRUFBRUssQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUNNLENBQUMsR0FBR2lJLENBQUMsSUFBSUQsQ0FBQyxJQUFJMEIsQ0FBQyxJQUFJSyxDQUFDLENBQUNySyxDQUFDLENBQUMsR0FBR3FLLENBQUMsQ0FBQ3JLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR3FLLENBQUMsQ0FBQ3JLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUVJLENBQUMsSUFBSUksQ0FBQyxFQUFFSCxDQUFDLElBQUlSLENBQUMsRUFBRVMsQ0FBQyxJQUFJUixDQUFDLEVBQUVTLENBQUMsSUFBSXlILENBQUMsRUFBRXhILENBQUMsSUFBSTZLLENBQUMsQ0FBQzdPLENBQUMsRUFBRXFELENBQUMsSUFBSXdMLENBQUMsQ0FBQ2hMLENBQUMsRUFBRVAsQ0FBQyxJQUFJdUwsQ0FBQyxDQUFDeEwsQ0FBQyxFQUFFbUksQ0FBQyxJQUFJcUQsQ0FBQyxDQUFDL08sQ0FBQyxFQUFFMEQsQ0FBQyxHQUFHaEQsQ0FBQyxHQUFHLENBQUMsQ0FBQ2dELENBQUMsR0FBRy9DLENBQUMsR0FBR3lOLENBQUMsSUFBSUQsQ0FBQyxHQUFHekssQ0FBQyxHQUFHeUssQ0FBQyxJQUFJak8sQ0FBQyxJQUFJLENBQUMsRUFBRTRELENBQUMsSUFBSWdHLENBQUMsSUFBSWlGLENBQUMsQ0FBQzdPLENBQUMsR0FBRzZOLENBQUMsQ0FBQ3JLLENBQUMsQ0FBQyxFQUFFSyxDQUFDLElBQUlvRyxDQUFDLElBQUk0RSxDQUFDLENBQUNoTCxDQUFDLEdBQUdnSyxDQUFDLENBQUNySyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUVNLENBQUMsSUFBSStJLENBQUMsSUFBSWdDLENBQUMsQ0FBQ3hMLENBQUMsR0FBR3dLLENBQUMsQ0FBQ3JLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRU8sQ0FBQyxJQUFJK0ksQ0FBQyxJQUFJK0IsQ0FBQyxDQUFDL08sQ0FBQyxHQUFHK04sQ0FBQyxDQUFDckssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFcUwsQ0FBQyxHQUFHQSxDQUFDLENBQUNZLElBQUksRUFBRXpMLENBQUMsSUFBSWdKLENBQUMsR0FBR2pELENBQUMsQ0FBQy9KLENBQUMsRUFBRXFELENBQUMsSUFBSTRKLENBQUMsR0FBR2xELENBQUMsQ0FBQ2xHLENBQUMsRUFBRVAsQ0FBQyxJQUFJb0osQ0FBQyxHQUFHM0MsQ0FBQyxDQUFDMUcsQ0FBQyxFQUFFbUksQ0FBQyxJQUFJZ0MsQ0FBQyxHQUFHekQsQ0FBQyxDQUFDakssQ0FBQyxFQUFFOEosQ0FBQyxJQUFJb0QsQ0FBQyxFQUFFL0MsQ0FBQyxJQUFJZ0QsQ0FBQyxFQUFFSixDQUFDLElBQUlILENBQUMsRUFBRUksQ0FBQyxJQUFJVSxDQUFDLEVBQUV6RCxDQUFDLEdBQUdBLENBQUMsQ0FBQzBGLElBQUksRUFBRS9MLENBQUMsSUFBSTFELENBQUM7WUFBQTtVQUNqakI7VUFDQSxPQUFPWixDQUFDO1FBQ1o7UUFFQSxTQUFTTyxDQUFDLEdBQUc7VUFDVCxJQUFJLENBQUNLLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDNkQsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUNSLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDdkQsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMyUCxJQUFJLEdBQUcsSUFBSTtRQUNwRTtRQUVBLElBQUk3UCxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztVQUMvdkNFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxF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LENBQUM7UUFDWixPQUFPLEVBQUVDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBS0MsQ0FBQyxDQUFDRCxDQUFDLENBQUMsQ0FBQ2lmLE9BQU8sRUFBRSxFQUFFaGYsQ0FBQyxDQUFDK0ssTUFBTSxDQUFDaEwsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQzNELENBQUM7SUFDTCxDQUFDLEVBQUUsRUFBRStoQixFQUFFO0VBQ1gsQ0FBQyxFQUFFLEVBQUVoaUIsQ0FBQyxDQUFDRyxJQUFJLENBQUNtakIsU0FBUyxFQUFFLFNBQVMsS0FBS2pqQixRQUFRLENBQUNzVCxVQUFVLEdBQUd6VCxDQUFDLEVBQUUsR0FBR0csUUFBUSxDQUFDc1MsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUV6UyxDQUFDLENBQUMsQ0FBQyxLQUFNO0lBQ3BILElBQUlLLENBQUMsR0FBR1AsQ0FBQyxDQUFDNHNCLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztNQUFFcHNCLENBQUMsR0FBRyxDQUFDO01BQUVFLENBQUMsR0FBR0gsQ0FBQyxDQUFDd0csTUFBTTtJQUM3RCxLQUFLdkcsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRSxDQUFDLEVBQUVGLENBQUMsRUFBRTtNQUFFRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxDQUFDa1MsU0FBUyxHQUFHLEVBQUU7SUFBQTtFQUMvQztBQUNKLENBQUMsQ0FBQzVRLE1BQU0sQ0FBQyIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9zbGltLmtpY2tzdGFydC5taW4uanMuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/slim.kickstart.min.js\n"); /***/ }),