Files
FloatBackOfffice/assets/js/d3-mitch-tree.min.js
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

1198 lines
1.3 MiB
Plaintext

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("mitchTree",[],e):"object"==typeof exports?exports.mitchTree=e():(t.d3=t.d3||{},t.d3.mitchTree=e())}(this,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="./dist",n(n.s="./src/index.js")}({"./node_modules/d3-array/src/array.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/array.js ***!
\********************************************/
/*! exports provided: slice, map */function(t,e,n){"use strict";n.r(e),n.d(e,"slice",function(){return o}),n.d(e,"map",function(){return i});var r=Array.prototype,o=r.slice,i=r.map},"./node_modules/d3-array/src/ascending.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/ascending.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}},"./node_modules/d3-array/src/bisect.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/bisect.js ***!
\*********************************************/
/*! exports provided: bisectRight, bisectLeft, default */function(t,e,n){"use strict";n.r(e),n.d(e,"bisectRight",function(){return u}),n.d(e,"bisectLeft",function(){return s});var r=n(/*! ./ascending */"./node_modules/d3-array/src/ascending.js"),o=n(/*! ./bisector */"./node_modules/d3-array/src/bisector.js"),i=Object(o.default)(r.default),u=i.right,s=i.left;e.default=u},"./node_modules/d3-array/src/bisector.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/bisector.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./ascending */"./node_modules/d3-array/src/ascending.js");e.default=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return Object(r.default)(e(t),n)}),{left:function(e,n,r,o){for(null==r&&(r=0),null==o&&(o=e.length);r<o;){var i=r+o>>>1;t(e[i],n)<0?r=i+1:o=i}return r},right:function(e,n,r,o){for(null==r&&(r=0),null==o&&(o=e.length);r<o;){var i=r+o>>>1;t(e[i],n)>0?o=i:r=i+1}return r}}}},"./node_modules/d3-array/src/constant.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/constant.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3-array/src/cross.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/cross.js ***!
\********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./pairs */"./node_modules/d3-array/src/pairs.js");e.default=function(t,e,n){var o,i,u,s,c=t.length,a=e.length,l=new Array(c*a);for(null==n&&(n=r.pair),o=u=0;o<c;++o)for(s=t[o],i=0;i<a;++i,++u)l[u]=n(s,e[i]);return l}},"./node_modules/d3-array/src/descending.js":
/*!*************************************************!*\
!*** ./node_modules/d3-array/src/descending.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}},"./node_modules/d3-array/src/deviation.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/deviation.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./variance */"./node_modules/d3-array/src/variance.js");e.default=function(t,e){var n=Object(r.default)(t,e);return n?Math.sqrt(n):n}},"./node_modules/d3-array/src/extent.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/extent.js ***!
\*********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){var n,r,o,i=t.length,u=-1;if(null==e){for(;++u<i;)if(null!=(n=t[u])&&n>=n)for(r=o=n;++u<i;)null!=(n=t[u])&&(r>n&&(r=n),o<n&&(o=n))}else for(;++u<i;)if(null!=(n=e(t[u],u,t))&&n>=n)for(r=o=n;++u<i;)null!=(n=e(t[u],u,t))&&(r>n&&(r=n),o<n&&(o=n));return[r,o]}},"./node_modules/d3-array/src/histogram.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/histogram.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./array */"./node_modules/d3-array/src/array.js"),o=n(/*! ./bisect */"./node_modules/d3-array/src/bisect.js"),i=n(/*! ./constant */"./node_modules/d3-array/src/constant.js"),u=n(/*! ./extent */"./node_modules/d3-array/src/extent.js"),s=n(/*! ./identity */"./node_modules/d3-array/src/identity.js"),c=n(/*! ./range */"./node_modules/d3-array/src/range.js"),a=n(/*! ./ticks */"./node_modules/d3-array/src/ticks.js"),l=n(/*! ./threshold/sturges */"./node_modules/d3-array/src/threshold/sturges.js");e.default=function(){var t=s.default,e=u.default,n=l.default;function d(r){var i,u,s=r.length,l=new Array(s);for(i=0;i<s;++i)l[i]=t(r[i],i,r);var d=e(l),f=d[0],h=d[1],p=n(l,f,h);Array.isArray(p)||(p=Object(a.tickStep)(f,h,p),p=Object(c.default)(Math.ceil(f/p)*p,h,p));for(var m=p.length;p[0]<=f;)p.shift(),--m;for(;p[m-1]>h;)p.pop(),--m;var y,v=new Array(m+1);for(i=0;i<=m;++i)(y=v[i]=[]).x0=i>0?p[i-1]:f,y.x1=i<m?p[i]:h;for(i=0;i<s;++i)f<=(u=l[i])&&u<=h&&v[Object(o.default)(p,u,0,m)].push(r[i]);return v}return d.value=function(e){return arguments.length?(t="function"==typeof e?e:Object(i.default)(e),d):t},d.domain=function(t){return arguments.length?(e="function"==typeof t?t:Object(i.default)([t[0],t[1]]),d):e},d.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Object(i.default)(r.slice.call(t)):Object(i.default)(t),d):n},d}},"./node_modules/d3-array/src/identity.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/identity.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return t}},"./node_modules/d3-array/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/index.js ***!
\********************************************/
/*! exports provided: bisect, bisectRight, bisectLeft, ascending, bisector, cross, descending, deviation, extent, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, mean, median, merge, min, pairs, permute, quantile, range, scan, shuffle, sum, ticks, tickIncrement, tickStep, transpose, variance, zip */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./bisect */"./node_modules/d3-array/src/bisect.js");n.d(e,"bisect",function(){return r.default}),n.d(e,"bisectRight",function(){return r.bisectRight}),n.d(e,"bisectLeft",function(){return r.bisectLeft});var o=n(/*! ./ascending */"./node_modules/d3-array/src/ascending.js");n.d(e,"ascending",function(){return o.default});var i=n(/*! ./bisector */"./node_modules/d3-array/src/bisector.js");n.d(e,"bisector",function(){return i.default});var u=n(/*! ./cross */"./node_modules/d3-array/src/cross.js");n.d(e,"cross",function(){return u.default});var s=n(/*! ./descending */"./node_modules/d3-array/src/descending.js");n.d(e,"descending",function(){return s.default});var c=n(/*! ./deviation */"./node_modules/d3-array/src/deviation.js");n.d(e,"deviation",function(){return c.default});var a=n(/*! ./extent */"./node_modules/d3-array/src/extent.js");n.d(e,"extent",function(){return a.default});var l=n(/*! ./histogram */"./node_modules/d3-array/src/histogram.js");n.d(e,"histogram",function(){return l.default});var d=n(/*! ./threshold/freedmanDiaconis */"./node_modules/d3-array/src/threshold/freedmanDiaconis.js");n.d(e,"thresholdFreedmanDiaconis",function(){return d.default});var f=n(/*! ./threshold/scott */"./node_modules/d3-array/src/threshold/scott.js");n.d(e,"thresholdScott",function(){return f.default});var h=n(/*! ./threshold/sturges */"./node_modules/d3-array/src/threshold/sturges.js");n.d(e,"thresholdSturges",function(){return h.default});var p=n(/*! ./max */"./node_modules/d3-array/src/max.js");n.d(e,"max",function(){return p.default});var m=n(/*! ./mean */"./node_modules/d3-array/src/mean.js");n.d(e,"mean",function(){return m.default});var y=n(/*! ./median */"./node_modules/d3-array/src/median.js");n.d(e,"median",function(){return y.default});var v=n(/*! ./merge */"./node_modules/d3-array/src/merge.js");n.d(e,"merge",function(){return v.default});var g=n(/*! ./min */"./node_modules/d3-array/src/min.js");n.d(e,"min",function(){return g.default});var j=n(/*! ./pairs */"./node_modules/d3-array/src/pairs.js");n.d(e,"pairs",function(){return j.default});var b=n(/*! ./permute */"./node_modules/d3-array/src/permute.js");n.d(e,"permute",function(){return b.default});var _=n(/*! ./quantile */"./node_modules/d3-array/src/quantile.js");n.d(e,"quantile",function(){return _.default});var x=n(/*! ./range */"./node_modules/d3-array/src/range.js");n.d(e,"range",function(){return x.default});var w=n(/*! ./scan */"./node_modules/d3-array/src/scan.js");n.d(e,"scan",function(){return w.default});var A=n(/*! ./shuffle */"./node_modules/d3-array/src/shuffle.js");n.d(e,"shuffle",function(){return A.default});var O=n(/*! ./sum */"./node_modules/d3-array/src/sum.js");n.d(e,"sum",function(){return O.default});var k=n(/*! ./ticks */"./node_modules/d3-array/src/ticks.js");n.d(e,"ticks",function(){return k.default}),n.d(e,"tickIncrement",function(){return k.tickIncrement}),n.d(e,"tickStep",function(){return k.tickStep});var S=n(/*! ./transpose */"./node_modules/d3-array/src/transpose.js");n.d(e,"transpose",function(){return S.default});var C=n(/*! ./variance */"./node_modules/d3-array/src/variance.js");n.d(e,"variance",function(){return C.default});var B=n(/*! ./zip */"./node_modules/d3-array/src/zip.js");n.d(e,"zip",function(){return B.default})},"./node_modules/d3-array/src/max.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/max.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){var n,r,o=t.length,i=-1;if(null==e){for(;++i<o;)if(null!=(n=t[i])&&n>=n)for(r=n;++i<o;)null!=(n=t[i])&&n>r&&(r=n)}else for(;++i<o;)if(null!=(n=e(t[i],i,t))&&n>=n)for(r=n;++i<o;)null!=(n=e(t[i],i,t))&&n>r&&(r=n);return r}},"./node_modules/d3-array/src/mean.js":
/*!*******************************************!*\
!*** ./node_modules/d3-array/src/mean.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./number */"./node_modules/d3-array/src/number.js");e.default=function(t,e){var n,o=t.length,i=o,u=-1,s=0;if(null==e)for(;++u<o;)isNaN(n=Object(r.default)(t[u]))?--i:s+=n;else for(;++u<o;)isNaN(n=Object(r.default)(e(t[u],u,t)))?--i:s+=n;if(i)return s/i}},"./node_modules/d3-array/src/median.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/median.js ***!
\*********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./ascending */"./node_modules/d3-array/src/ascending.js"),o=n(/*! ./number */"./node_modules/d3-array/src/number.js"),i=n(/*! ./quantile */"./node_modules/d3-array/src/quantile.js");e.default=function(t,e){var n,u=t.length,s=-1,c=[];if(null==e)for(;++s<u;)isNaN(n=Object(o.default)(t[s]))||c.push(n);else for(;++s<u;)isNaN(n=Object(o.default)(e(t[s],s,t)))||c.push(n);return Object(i.default)(c.sort(r.default),.5)}},"./node_modules/d3-array/src/merge.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/merge.js ***!
\********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){for(var e,n,r,o=t.length,i=-1,u=0;++i<o;)u+=t[i].length;for(n=new Array(u);--o>=0;)for(e=(r=t[o]).length;--e>=0;)n[--u]=r[e];return n}},"./node_modules/d3-array/src/min.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/min.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){var n,r,o=t.length,i=-1;if(null==e){for(;++i<o;)if(null!=(n=t[i])&&n>=n)for(r=n;++i<o;)null!=(n=t[i])&&r>n&&(r=n)}else for(;++i<o;)if(null!=(n=e(t[i],i,t))&&n>=n)for(r=n;++i<o;)null!=(n=e(t[i],i,t))&&r>n&&(r=n);return r}},"./node_modules/d3-array/src/number.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/number.js ***!
\*********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return null===t?NaN:+t}},"./node_modules/d3-array/src/pairs.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/pairs.js ***!
\********************************************/
/*! exports provided: default, pair */function(t,e,n){"use strict";function r(t,e){return[t,e]}n.r(e),n.d(e,"pair",function(){return r}),e.default=function(t,e){null==e&&(e=r);for(var n=0,o=t.length-1,i=t[0],u=new Array(o<0?0:o);n<o;)u[n]=e(i,i=t[++n]);return u}},"./node_modules/d3-array/src/permute.js":
/*!**********************************************!*\
!*** ./node_modules/d3-array/src/permute.js ***!
\**********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r}},"./node_modules/d3-array/src/quantile.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/quantile.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./number */"./node_modules/d3-array/src/number.js");e.default=function(t,e,n){if(null==n&&(n=r.default),o=t.length){if((e=+e)<=0||o<2)return+n(t[0],0,t);if(e>=1)return+n(t[o-1],o-1,t);var o,i=(o-1)*e,u=Math.floor(i),s=+n(t[u],u,t);return s+(+n(t[u+1],u+1,t)-s)*(i-u)}}},"./node_modules/d3-array/src/range.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/range.js ***!
\********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n){t=+t,e=+e,n=(o=arguments.length)<2?(e=t,t=0,1):o<3?1:+n;for(var r=-1,o=0|Math.max(0,Math.ceil((e-t)/n)),i=new Array(o);++r<o;)i[r]=t+r*n;return i}},"./node_modules/d3-array/src/scan.js":
/*!*******************************************!*\
!*** ./node_modules/d3-array/src/scan.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./ascending */"./node_modules/d3-array/src/ascending.js");e.default=function(t,e){if(n=t.length){var n,o,i=0,u=0,s=t[u];for(null==e&&(e=r.default);++i<n;)(e(o=t[i],s)<0||0!==e(s,s))&&(s=o,u=i);return 0===e(s,s)?u:void 0}}},"./node_modules/d3-array/src/shuffle.js":
/*!**********************************************!*\
!*** ./node_modules/d3-array/src/shuffle.js ***!
\**********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n){for(var r,o,i=(null==n?t.length:n)-(e=null==e?0:+e);i;)o=Math.random()*i--|0,r=t[i+e],t[i+e]=t[o+e],t[o+e]=r;return t}},"./node_modules/d3-array/src/sum.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/sum.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){var n,r=t.length,o=-1,i=0;if(null==e)for(;++o<r;)(n=+t[o])&&(i+=n);else for(;++o<r;)(n=+e(t[o],o,t))&&(i+=n);return i}},"./node_modules/d3-array/src/threshold/freedmanDiaconis.js":
/*!*****************************************************************!*\
!*** ./node_modules/d3-array/src/threshold/freedmanDiaconis.js ***!
\*****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../array */"./node_modules/d3-array/src/array.js"),o=n(/*! ../ascending */"./node_modules/d3-array/src/ascending.js"),i=n(/*! ../number */"./node_modules/d3-array/src/number.js"),u=n(/*! ../quantile */"./node_modules/d3-array/src/quantile.js");e.default=function(t,e,n){return t=r.map.call(t,i.default).sort(o.default),Math.ceil((n-e)/(2*(Object(u.default)(t,.75)-Object(u.default)(t,.25))*Math.pow(t.length,-1/3)))}},"./node_modules/d3-array/src/threshold/scott.js":
/*!******************************************************!*\
!*** ./node_modules/d3-array/src/threshold/scott.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../deviation */"./node_modules/d3-array/src/deviation.js");e.default=function(t,e,n){return Math.ceil((n-e)/(3.5*Object(r.default)(t)*Math.pow(t.length,-1/3)))}},"./node_modules/d3-array/src/threshold/sturges.js":
/*!********************************************************!*\
!*** ./node_modules/d3-array/src/threshold/sturges.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}},"./node_modules/d3-array/src/ticks.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/ticks.js ***!
\********************************************/
/*! exports provided: default, tickIncrement, tickStep */function(t,e,n){"use strict";n.r(e),n.d(e,"tickIncrement",function(){return u}),n.d(e,"tickStep",function(){return s});var r=Math.sqrt(50),o=Math.sqrt(10),i=Math.sqrt(2);function u(t,e,n){var u=(e-t)/Math.max(0,n),s=Math.floor(Math.log(u)/Math.LN10),c=u/Math.pow(10,s);return s>=0?(c>=r?10:c>=o?5:c>=i?2:1)*Math.pow(10,s):-Math.pow(10,-s)/(c>=r?10:c>=o?5:c>=i?2:1)}function s(t,e,n){var u=Math.abs(e-t)/Math.max(0,n),s=Math.pow(10,Math.floor(Math.log(u)/Math.LN10)),c=u/s;return c>=r?s*=10:c>=o?s*=5:c>=i&&(s*=2),e<t?-s:s}e.default=function(t,e,n){var r,o,i,s,c=-1;if(n=+n,(t=+t)===(e=+e)&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),0===(s=u(t,e,n))||!isFinite(s))return[];if(s>0)for(t=Math.ceil(t/s),e=Math.floor(e/s),i=new Array(o=Math.ceil(e-t+1));++c<o;)i[c]=(t+c)*s;else for(t=Math.floor(t*s),e=Math.ceil(e*s),i=new Array(o=Math.ceil(t-e+1));++c<o;)i[c]=(t-c)/s;return r&&i.reverse(),i}},"./node_modules/d3-array/src/transpose.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/transpose.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./min */"./node_modules/d3-array/src/min.js");function o(t){return t.length}e.default=function(t){if(!(u=t.length))return[];for(var e=-1,n=Object(r.default)(t,o),i=new Array(n);++e<n;)for(var u,s=-1,c=i[e]=new Array(u);++s<u;)c[s]=t[s][e];return i}},"./node_modules/d3-array/src/variance.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/variance.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./number */"./node_modules/d3-array/src/number.js");e.default=function(t,e){var n,o,i=t.length,u=0,s=-1,c=0,a=0;if(null==e)for(;++s<i;)isNaN(n=Object(r.default)(t[s]))||(a+=(o=n-c)*(n-(c+=o/++u)));else for(;++s<i;)isNaN(n=Object(r.default)(e(t[s],s,t)))||(a+=(o=n-c)*(n-(c+=o/++u)));if(u>1)return a/(u-1)}},"./node_modules/d3-array/src/zip.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/zip.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./transpose */"./node_modules/d3-array/src/transpose.js");e.default=function(){return Object(r.default)(arguments)}},"./node_modules/d3-collection/src/entries.js":
/*!***************************************************!*\
!*** ./node_modules/d3-collection/src/entries.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e}},"./node_modules/d3-collection/src/index.js":
/*!*************************************************!*\
!*** ./node_modules/d3-collection/src/index.js ***!
\*************************************************/
/*! exports provided: nest, set, map, keys, values, entries */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./nest */"./node_modules/d3-collection/src/nest.js");n.d(e,"nest",function(){return r.default});var o=n(/*! ./set */"./node_modules/d3-collection/src/set.js");n.d(e,"set",function(){return o.default});var i=n(/*! ./map */"./node_modules/d3-collection/src/map.js");n.d(e,"map",function(){return i.default});var u=n(/*! ./keys */"./node_modules/d3-collection/src/keys.js");n.d(e,"keys",function(){return u.default});var s=n(/*! ./values */"./node_modules/d3-collection/src/values.js");n.d(e,"values",function(){return s.default});var c=n(/*! ./entries */"./node_modules/d3-collection/src/entries.js");n.d(e,"entries",function(){return c.default})},"./node_modules/d3-collection/src/keys.js":
/*!************************************************!*\
!*** ./node_modules/d3-collection/src/keys.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){var e=[];for(var n in t)e.push(n);return e}},"./node_modules/d3-collection/src/map.js":
/*!***********************************************!*\
!*** ./node_modules/d3-collection/src/map.js ***!
\***********************************************/
/*! exports provided: prefix, default */function(t,e,n){"use strict";n.r(e),n.d(e,"prefix",function(){return r});var r="$";function o(){}function i(t,e){var n=new o;if(t instanceof o)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var r,i=-1,u=t.length;if(null==e)for(;++i<u;)n.set(i,t[i]);else for(;++i<u;)n.set(e(r=t[i],i,t),r)}else if(t)for(var s in t)n.set(s,t[s]);return n}o.prototype=i.prototype={constructor:o,has:function(t){return r+t in this},get:function(t){return this[r+t]},set:function(t,e){return this[r+t]=e,this},remove:function(t){var e=r+t;return e in this&&delete this[e]},clear:function(){for(var t in this)t[0]===r&&delete this[t]},keys:function(){var t=[];for(var e in this)e[0]===r&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)e[0]===r&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)e[0]===r&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)e[0]===r&&++t;return t},empty:function(){for(var t in this)if(t[0]===r)return!1;return!0},each:function(t){for(var e in this)e[0]===r&&t(this[e],e.slice(1),this)}},e.default=i},"./node_modules/d3-collection/src/nest.js":
/*!************************************************!*\
!*** ./node_modules/d3-collection/src/nest.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./map */"./node_modules/d3-collection/src/map.js");function o(){return{}}function i(t,e,n){t[e]=n}function u(){return Object(r.default)()}function s(t,e,n){t.set(e,n)}e.default=function(){var t,e,n,c=[],a=[];function l(n,o,i,u){if(o>=c.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,a,d,f=-1,h=n.length,p=c[o++],m=Object(r.default)(),y=i();++f<h;)(d=m.get(s=p(a=n[f])+""))?d.push(a):m.set(s,[a]);return m.each(function(t,e){u(y,e,l(t,o,i,u))}),y}return n={object:function(t){return l(t,0,o,i)},map:function(t){return l(t,0,u,s)},entries:function(t){return function t(n,r){if(++r>c.length)return n;var o,i=a[r-1];return null!=e&&r>=c.length?o=n.entries():(o=[],n.each(function(e,n){o.push({key:n,values:t(e,r)})})),null!=i?o.sort(function(t,e){return i(t.key,e.key)}):o}(l(t,0,u,s),0)},key:function(t){return c.push(t),n},sortKeys:function(t){return a[c.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}}},"./node_modules/d3-collection/src/set.js":
/*!***********************************************!*\
!*** ./node_modules/d3-collection/src/set.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./map */"./node_modules/d3-collection/src/map.js");function o(){}var i=r.default.prototype;function u(t,e){var n=new o;if(t instanceof o)t.each(function(t){n.add(t)});else if(t){var r=-1,i=t.length;if(null==e)for(;++r<i;)n.add(t[r]);else for(;++r<i;)n.add(e(t[r],r,t))}return n}o.prototype=u.prototype={constructor:o,has:i.has,add:function(t){return t+="",this[r.prefix+t]=t,this},remove:i.remove,clear:i.clear,values:i.keys,size:i.size,empty:i.empty,each:i.each},e.default=u},"./node_modules/d3-collection/src/values.js":
/*!**************************************************!*\
!*** ./node_modules/d3-collection/src/values.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){var e=[];for(var n in t)e.push(t[n]);return e}},"./node_modules/d3-color/src/color.js":
/*!********************************************!*\
!*** ./node_modules/d3-color/src/color.js ***!
\********************************************/
/*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */function(t,e,n){"use strict";n.r(e),n.d(e,"Color",function(){return o}),n.d(e,"darker",function(){return i}),n.d(e,"brighter",function(){return u}),n.d(e,"default",function(){return j}),n.d(e,"rgbConvert",function(){return x}),n.d(e,"rgb",function(){return w}),n.d(e,"Rgb",function(){return A}),n.d(e,"hslConvert",function(){return S}),n.d(e,"hsl",function(){return C});var r=n(/*! ./define */"./node_modules/d3-color/src/define.js");function o(){}var i=.7,u=1/i,s="\\s*([+-]?\\d+)\\s*",c="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",a="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",l=/^#([0-9a-f]{3})$/,d=/^#([0-9a-f]{6})$/,f=new RegExp("^rgb\\("+[s,s,s]+"\\)$"),h=new RegExp("^rgb\\("+[a,a,a]+"\\)$"),p=new RegExp("^rgba\\("+[s,s,s,c]+"\\)$"),m=new RegExp("^rgba\\("+[a,a,a,c]+"\\)$"),y=new RegExp("^hsl\\("+[c,a,a]+"\\)$"),v=new RegExp("^hsla\\("+[c,a,a,c]+"\\)$"),g={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function j(t){var e;return t=(t+"").trim().toLowerCase(),(e=l.exec(t))?new A((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=d.exec(t))?b(parseInt(e[1],16)):(e=f.exec(t))?new A(e[1],e[2],e[3],1):(e=h.exec(t))?new A(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=p.exec(t))?_(e[1],e[2],e[3],e[4]):(e=m.exec(t))?_(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=y.exec(t))?k(e[1],e[2]/100,e[3]/100,1):(e=v.exec(t))?k(e[1],e[2]/100,e[3]/100,e[4]):g.hasOwnProperty(t)?b(g[t]):"transparent"===t?new A(NaN,NaN,NaN,0):null}function b(t){return new A(t>>16&255,t>>8&255,255&t,1)}function _(t,e,n,r){return r<=0&&(t=e=n=NaN),new A(t,e,n,r)}function x(t){return t instanceof o||(t=j(t)),t?new A((t=t.rgb()).r,t.g,t.b,t.opacity):new A}function w(t,e,n,r){return 1===arguments.length?x(t):new A(t,e,n,null==r?1:r)}function A(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function O(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function k(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new B(t,e,n,r)}function S(t){if(t instanceof B)return new B(t.h,t.s,t.l,t.opacity);if(t instanceof o||(t=j(t)),!t)return new B;if(t instanceof B)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),u=Math.max(e,n,r),s=NaN,c=u-i,a=(u+i)/2;return c?(s=e===u?(n-r)/c+6*(n<r):n===u?(r-e)/c+2:(e-n)/c+4,c/=a<.5?u+i:2-u-i,s*=60):c=a>0&&a<1?0:s,new B(s,c,a,t.opacity)}function C(t,e,n,r){return 1===arguments.length?S(t):new B(t,e,n,null==r?1:r)}function B(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function F(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Object(r.default)(o,j,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),Object(r.default)(A,w,Object(r.extend)(o,{brighter:function(t){return t=null==t?u:Math.pow(u,t),new A(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?i:Math.pow(i,t),new A(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+O(this.r)+O(this.g)+O(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Object(r.default)(B,C,Object(r.extend)(o,{brighter:function(t){return t=null==t?u:Math.pow(u,t),new B(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?i:Math.pow(i,t),new B(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,o=2*n-r;return new A(F(t>=240?t-240:t+120,o,r),F(t,o,r),F(t<120?t+240:t-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}))},"./node_modules/d3-color/src/cubehelix.js":
/*!************************************************!*\
!*** ./node_modules/d3-color/src/cubehelix.js ***!
\************************************************/
/*! exports provided: default, Cubehelix */function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return p}),n.d(e,"Cubehelix",function(){return m});var r=n(/*! ./define */"./node_modules/d3-color/src/define.js"),o=n(/*! ./color */"./node_modules/d3-color/src/color.js"),i=n(/*! ./math */"./node_modules/d3-color/src/math.js"),u=-.14861,s=1.78277,c=-.29227,a=-.90649,l=1.97294,d=l*a,f=l*s,h=s*c-a*u;function p(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof m)return new m(t.h,t.s,t.l,t.opacity);t instanceof o.Rgb||(t=Object(o.rgbConvert)(t));var e=t.r/255,n=t.g/255,r=t.b/255,u=(h*r+d*e-f*n)/(h+d-f),s=r-u,p=(l*(n-u)-c*s)/a,y=Math.sqrt(p*p+s*s)/(l*u*(1-u)),v=y?Math.atan2(p,s)*i.rad2deg-120:NaN;return new m(v<0?v+360:v,y,u,t.opacity)}(t):new m(t,e,n,null==r?1:r)}function m(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Object(r.default)(m,p,Object(r.extend)(o.Color,{brighter:function(t){return t=null==t?o.brighter:Math.pow(o.brighter,t),new m(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?o.darker:Math.pow(o.darker,t),new m(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*i.deg2rad,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),d=Math.sin(t);return new o.Rgb(255*(e+n*(u*r+s*d)),255*(e+n*(c*r+a*d)),255*(e+n*(l*r)),this.opacity)}}))},"./node_modules/d3-color/src/define.js":
/*!*********************************************!*\
!*** ./node_modules/d3-color/src/define.js ***!
\*********************************************/
/*! exports provided: default, extend */function(t,e,n){"use strict";function r(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}n.r(e),n.d(e,"extend",function(){return r}),e.default=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t}},"./node_modules/d3-color/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-color/src/index.js ***!
\********************************************/
/*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./color */"./node_modules/d3-color/src/color.js");n.d(e,"color",function(){return r.default}),n.d(e,"rgb",function(){return r.rgb}),n.d(e,"hsl",function(){return r.hsl});var o=n(/*! ./lab */"./node_modules/d3-color/src/lab.js");n.d(e,"lab",function(){return o.default}),n.d(e,"hcl",function(){return o.hcl}),n.d(e,"lch",function(){return o.lch}),n.d(e,"gray",function(){return o.gray});var i=n(/*! ./cubehelix */"./node_modules/d3-color/src/cubehelix.js");n.d(e,"cubehelix",function(){return i.default})},"./node_modules/d3-color/src/lab.js":
/*!******************************************!*\
!*** ./node_modules/d3-color/src/lab.js ***!
\******************************************/
/*! exports provided: gray, default, Lab, lch, hcl, Hcl */function(t,e,n){"use strict";n.r(e),n.d(e,"gray",function(){return p}),n.d(e,"default",function(){return m}),n.d(e,"Lab",function(){return y}),n.d(e,"lch",function(){return x}),n.d(e,"hcl",function(){return w}),n.d(e,"Hcl",function(){return A});var r=n(/*! ./define */"./node_modules/d3-color/src/define.js"),o=n(/*! ./color */"./node_modules/d3-color/src/color.js"),i=n(/*! ./math */"./node_modules/d3-color/src/math.js"),u=.96422,s=1,c=.82521,a=4/29,l=6/29,d=3*l*l,f=l*l*l;function h(t){if(t instanceof y)return new y(t.l,t.a,t.b,t.opacity);if(t instanceof A){if(isNaN(t.h))return new y(t.l,0,0,t.opacity);var e=t.h*i.deg2rad;return new y(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof o.Rgb||(t=Object(o.rgbConvert)(t));var n,r,a=b(t.r),l=b(t.g),d=b(t.b),f=v((.2225045*a+.7168786*l+.0606169*d)/s);return a===l&&l===d?n=r=f:(n=v((.4360747*a+.3850649*l+.1430804*d)/u),r=v((.0139322*a+.0971045*l+.7141733*d)/c)),new y(116*f-16,500*(n-f),200*(f-r),t.opacity)}function p(t,e){return new y(t,0,0,null==e?1:e)}function m(t,e,n,r){return 1===arguments.length?h(t):new y(t,e,n,null==r?1:r)}function y(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function v(t){return t>f?Math.pow(t,1/3):t/d+a}function g(t){return t>l?t*t*t:d*(t-a)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function b(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function _(t){if(t instanceof A)return new A(t.h,t.c,t.l,t.opacity);if(t instanceof y||(t=h(t)),0===t.a&&0===t.b)return new A(NaN,0,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*i.rad2deg;return new A(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function x(t,e,n,r){return 1===arguments.length?_(t):new A(n,e,t,null==r?1:r)}function w(t,e,n,r){return 1===arguments.length?_(t):new A(t,e,n,null==r?1:r)}function A(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}Object(r.default)(y,m,Object(r.extend)(o.Color,{brighter:function(t){return new y(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new y(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=u*g(e),t=s*g(t),n=c*g(n),new o.Rgb(j(3.1338561*e-1.6168667*t-.4906146*n),j(-.9787684*e+1.9161415*t+.033454*n),j(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Object(r.default)(A,w,Object(r.extend)(o.Color,{brighter:function(t){return new A(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new A(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return h(this).rgb()}}))},"./node_modules/d3-color/src/math.js":
/*!*******************************************!*\
!*** ./node_modules/d3-color/src/math.js ***!
\*******************************************/
/*! exports provided: deg2rad, rad2deg */function(t,e,n){"use strict";n.r(e),n.d(e,"deg2rad",function(){return r}),n.d(e,"rad2deg",function(){return o});var r=Math.PI/180,o=180/Math.PI},"./node_modules/d3-dispatch/src/dispatch.js":
/*!**************************************************!*\
!*** ./node_modules/d3-dispatch/src/dispatch.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r={value:function(){}};function o(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new i(r)}function i(t){this._=t}function u(t,e){for(var n,r=0,o=t.length;r<o;++r)if((n=t[r]).name===e)return n.value}function s(t,e,n){for(var o=0,i=t.length;o<i;++o)if(t[o].name===e){t[o]=r,t=t.slice(0,o).concat(t.slice(o+1));break}return null!=n&&t.push({name:e,value:n}),t}i.prototype=o.prototype={constructor:i,on:function(t,e){var n,r,o=this._,i=(r=o,(t+"").trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),c=-1,a=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++c<a;)if(n=(t=i[c]).type)o[n]=s(o[n],t.name,e);else if(null==e)for(n in o)o[n]=s(o[n],t.name,null);return this}for(;++c<a;)if((n=(t=i[c]).type)&&(n=u(o[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new i(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,o=new Array(n),i=0;i<n;++i)o[i]=arguments[i+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=0,n=(r=this._[t]).length;i<n;++i)r[i].value.apply(e,o)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],o=0,i=r.length;o<i;++o)r[o].value.apply(e,n)}},e.default=o},"./node_modules/d3-dispatch/src/index.js":
/*!***********************************************!*\
!*** ./node_modules/d3-dispatch/src/index.js ***!
\***********************************************/
/*! exports provided: dispatch */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./dispatch */"./node_modules/d3-dispatch/src/dispatch.js");n.d(e,"dispatch",function(){return r.default})},"./node_modules/d3-drag/src/constant.js":
/*!**********************************************!*\
!*** ./node_modules/d3-drag/src/constant.js ***!
\**********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3-drag/src/drag.js":
/*!******************************************!*\
!*** ./node_modules/d3-drag/src/drag.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-dispatch */"./node_modules/d3-dispatch/src/index.js"),o=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),i=n(/*! ./nodrag */"./node_modules/d3-drag/src/nodrag.js"),u=n(/*! ./noevent */"./node_modules/d3-drag/src/noevent.js"),s=n(/*! ./constant */"./node_modules/d3-drag/src/constant.js"),c=n(/*! ./event */"./node_modules/d3-drag/src/event.js");function a(){return!o.event.button}function l(){return this.parentNode}function d(t){return null==t?{x:o.event.x,y:o.event.y}:t}function f(){return"ontouchstart"in this}e.default=function(){var t,e,n,h,p=a,m=l,y=d,v=f,g={},j=Object(r.dispatch)("start","drag","end"),b=0,_=0;function x(t){t.on("mousedown.drag",w).filter(v).on("touchstart.drag",k).on("touchmove.drag",S).on("touchend.drag touchcancel.drag",C).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function w(){if(!h&&p.apply(this,arguments)){var r=B("mouse",m.apply(this,arguments),o.mouse,this,arguments);r&&(Object(o.select)(o.event.view).on("mousemove.drag",A,!0).on("mouseup.drag",O,!0),Object(i.default)(o.event.view),Object(u.nopropagation)(),n=!1,t=o.event.clientX,e=o.event.clientY,r("start"))}}function A(){if(Object(u.default)(),!n){var r=o.event.clientX-t,i=o.event.clientY-e;n=r*r+i*i>_}g.mouse("drag")}function O(){Object(o.select)(o.event.view).on("mousemove.drag mouseup.drag",null),Object(i.yesdrag)(o.event.view,n),Object(u.default)(),g.mouse("end")}function k(){if(p.apply(this,arguments)){var t,e,n=o.event.changedTouches,r=m.apply(this,arguments),i=n.length;for(t=0;t<i;++t)(e=B(n[t].identifier,r,o.touch,this,arguments))&&(Object(u.nopropagation)(),e("start"))}}function S(){var t,e,n=o.event.changedTouches,r=n.length;for(t=0;t<r;++t)(e=g[n[t].identifier])&&(Object(u.default)(),e("drag"))}function C(){var t,e,n=o.event.changedTouches,r=n.length;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),t=0;t<r;++t)(e=g[n[t].identifier])&&(Object(u.nopropagation)(),e("end"))}function B(t,e,n,r,i){var u,s,a,l=n(e,t),d=j.copy();if(Object(o.customEvent)(new c.default(x,"beforestart",u,t,b,l[0],l[1],0,0,d),function(){return null!=(o.event.subject=u=y.apply(r,i))&&(s=u.x-l[0]||0,a=u.y-l[1]||0,!0)}))return function f(h){var p,m=l;switch(h){case"start":g[t]=f,p=b++;break;case"end":delete g[t],--b;case"drag":l=n(e,t),p=b}Object(o.customEvent)(new c.default(x,h,u,t,p,l[0]+s,l[1]+a,l[0]-m[0],l[1]-m[1],d),d.apply,d,[h,r,i])}}return x.filter=function(t){return arguments.length?(p="function"==typeof t?t:Object(s.default)(!!t),x):p},x.container=function(t){return arguments.length?(m="function"==typeof t?t:Object(s.default)(t),x):m},x.subject=function(t){return arguments.length?(y="function"==typeof t?t:Object(s.default)(t),x):y},x.touchable=function(t){return arguments.length?(v="function"==typeof t?t:Object(s.default)(!!t),x):v},x.on=function(){var t=j.on.apply(j,arguments);return t===j?x:t},x.clickDistance=function(t){return arguments.length?(_=(t=+t)*t,x):Math.sqrt(_)},x}},"./node_modules/d3-drag/src/event.js":
/*!*******************************************!*\
!*** ./node_modules/d3-drag/src/event.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e,n,r,o,i,u,s,c,a){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=o,this.x=i,this.y=u,this.dx=s,this.dy=c,this._=a}n.r(e),n.d(e,"default",function(){return r}),r.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t}},"./node_modules/d3-drag/src/index.js":
/*!*******************************************!*\
!*** ./node_modules/d3-drag/src/index.js ***!
\*******************************************/
/*! exports provided: drag, dragDisable, dragEnable */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./drag */"./node_modules/d3-drag/src/drag.js");n.d(e,"drag",function(){return r.default});var o=n(/*! ./nodrag */"./node_modules/d3-drag/src/nodrag.js");n.d(e,"dragDisable",function(){return o.default}),n.d(e,"dragEnable",function(){return o.yesdrag})},"./node_modules/d3-drag/src/nodrag.js":
/*!********************************************!*\
!*** ./node_modules/d3-drag/src/nodrag.js ***!
\********************************************/
/*! exports provided: default, yesdrag */function(t,e,n){"use strict";n.r(e),n.d(e,"yesdrag",function(){return i});var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! ./noevent */"./node_modules/d3-drag/src/noevent.js");function i(t,e){var n=t.document.documentElement,i=Object(r.select)(t).on("dragstart.drag",null);e&&(i.on("click.drag",o.default,!0),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in n?i.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}e.default=function(t){var e=t.document.documentElement,n=Object(r.select)(t).on("dragstart.drag",o.default,!0);"onselectstart"in e?n.on("selectstart.drag",o.default,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}},"./node_modules/d3-drag/src/noevent.js":
/*!*********************************************!*\
!*** ./node_modules/d3-drag/src/noevent.js ***!
\*********************************************/
/*! exports provided: nopropagation, default */function(t,e,n){"use strict";n.r(e),n.d(e,"nopropagation",function(){return o});var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js");function o(){r.event.stopImmediatePropagation()}e.default=function(){r.event.preventDefault(),r.event.stopImmediatePropagation()}},"./node_modules/d3-ease/src/back.js":
/*!******************************************!*\
!*** ./node_modules/d3-ease/src/back.js ***!
\******************************************/
/*! exports provided: backIn, backOut, backInOut */function(t,e,n){"use strict";n.r(e),n.d(e,"backIn",function(){return r}),n.d(e,"backOut",function(){return o}),n.d(e,"backInOut",function(){return i});var r=function t(e){function n(t){return t*t*((e+1)*t-e)}return e=+e,n.overshoot=t,n}(1.70158),o=function t(e){function n(t){return--t*t*((e+1)*t+e)+1}return e=+e,n.overshoot=t,n}(1.70158),i=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(1.70158)},"./node_modules/d3-ease/src/bounce.js":
/*!********************************************!*\
!*** ./node_modules/d3-ease/src/bounce.js ***!
\********************************************/
/*! exports provided: bounceIn, bounceOut, bounceInOut */function(t,e,n){"use strict";n.r(e),n.d(e,"bounceIn",function(){return h}),n.d(e,"bounceOut",function(){return p}),n.d(e,"bounceInOut",function(){return m});var r=4/11,o=6/11,i=8/11,u=.75,s=9/11,c=10/11,a=.9375,l=21/22,d=63/64,f=1/r/r;function h(t){return 1-p(1-t)}function p(t){return(t=+t)<r?f*t*t:t<i?f*(t-=o)*t+u:t<c?f*(t-=s)*t+a:f*(t-=l)*t+d}function m(t){return((t*=2)<=1?1-p(1-t):p(t-1)+1)/2}},"./node_modules/d3-ease/src/circle.js":
/*!********************************************!*\
!*** ./node_modules/d3-ease/src/circle.js ***!
\********************************************/
/*! exports provided: circleIn, circleOut, circleInOut */function(t,e,n){"use strict";function r(t){return 1-Math.sqrt(1-t*t)}function o(t){return Math.sqrt(1- --t*t)}function i(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}n.r(e),n.d(e,"circleIn",function(){return r}),n.d(e,"circleOut",function(){return o}),n.d(e,"circleInOut",function(){return i})},"./node_modules/d3-ease/src/cubic.js":
/*!*******************************************!*\
!*** ./node_modules/d3-ease/src/cubic.js ***!
\*******************************************/
/*! exports provided: cubicIn, cubicOut, cubicInOut */function(t,e,n){"use strict";function r(t){return t*t*t}function o(t){return--t*t*t+1}function i(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}n.r(e),n.d(e,"cubicIn",function(){return r}),n.d(e,"cubicOut",function(){return o}),n.d(e,"cubicInOut",function(){return i})},"./node_modules/d3-ease/src/elastic.js":
/*!*********************************************!*\
!*** ./node_modules/d3-ease/src/elastic.js ***!
\*********************************************/
/*! exports provided: elasticIn, elasticOut, elasticInOut */function(t,e,n){"use strict";n.r(e),n.d(e,"elasticIn",function(){return o}),n.d(e,"elasticOut",function(){return i}),n.d(e,"elasticInOut",function(){return u});var r=2*Math.PI,o=function t(e,n){var o=Math.asin(1/(e=Math.max(1,e)))*(n/=r);function i(t){return e*Math.pow(2,10*--t)*Math.sin((o-t)/n)}return i.amplitude=function(e){return t(e,n*r)},i.period=function(n){return t(e,n)},i}(1,.3),i=function t(e,n){var o=Math.asin(1/(e=Math.max(1,e)))*(n/=r);function i(t){return 1-e*Math.pow(2,-10*(t=+t))*Math.sin((t+o)/n)}return i.amplitude=function(e){return t(e,n*r)},i.period=function(n){return t(e,n)},i}(1,.3),u=function t(e,n){var o=Math.asin(1/(e=Math.max(1,e)))*(n/=r);function i(t){return((t=2*t-1)<0?e*Math.pow(2,10*t)*Math.sin((o-t)/n):2-e*Math.pow(2,-10*t)*Math.sin((o+t)/n))/2}return i.amplitude=function(e){return t(e,n*r)},i.period=function(n){return t(e,n)},i}(1,.3)},"./node_modules/d3-ease/src/exp.js":
/*!*****************************************!*\
!*** ./node_modules/d3-ease/src/exp.js ***!
\*****************************************/
/*! exports provided: expIn, expOut, expInOut */function(t,e,n){"use strict";function r(t){return Math.pow(2,10*t-10)}function o(t){return 1-Math.pow(2,-10*t)}function i(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}n.r(e),n.d(e,"expIn",function(){return r}),n.d(e,"expOut",function(){return o}),n.d(e,"expInOut",function(){return i})},"./node_modules/d3-ease/src/index.js":
/*!*******************************************!*\
!*** ./node_modules/d3-ease/src/index.js ***!
\*******************************************/
/*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./linear */"./node_modules/d3-ease/src/linear.js");n.d(e,"easeLinear",function(){return r.linear});var o=n(/*! ./quad */"./node_modules/d3-ease/src/quad.js");n.d(e,"easeQuad",function(){return o.quadInOut}),n.d(e,"easeQuadIn",function(){return o.quadIn}),n.d(e,"easeQuadOut",function(){return o.quadOut}),n.d(e,"easeQuadInOut",function(){return o.quadInOut});var i=n(/*! ./cubic */"./node_modules/d3-ease/src/cubic.js");n.d(e,"easeCubic",function(){return i.cubicInOut}),n.d(e,"easeCubicIn",function(){return i.cubicIn}),n.d(e,"easeCubicOut",function(){return i.cubicOut}),n.d(e,"easeCubicInOut",function(){return i.cubicInOut});var u=n(/*! ./poly */"./node_modules/d3-ease/src/poly.js");n.d(e,"easePoly",function(){return u.polyInOut}),n.d(e,"easePolyIn",function(){return u.polyIn}),n.d(e,"easePolyOut",function(){return u.polyOut}),n.d(e,"easePolyInOut",function(){return u.polyInOut});var s=n(/*! ./sin */"./node_modules/d3-ease/src/sin.js");n.d(e,"easeSin",function(){return s.sinInOut}),n.d(e,"easeSinIn",function(){return s.sinIn}),n.d(e,"easeSinOut",function(){return s.sinOut}),n.d(e,"easeSinInOut",function(){return s.sinInOut});var c=n(/*! ./exp */"./node_modules/d3-ease/src/exp.js");n.d(e,"easeExp",function(){return c.expInOut}),n.d(e,"easeExpIn",function(){return c.expIn}),n.d(e,"easeExpOut",function(){return c.expOut}),n.d(e,"easeExpInOut",function(){return c.expInOut});var a=n(/*! ./circle */"./node_modules/d3-ease/src/circle.js");n.d(e,"easeCircle",function(){return a.circleInOut}),n.d(e,"easeCircleIn",function(){return a.circleIn}),n.d(e,"easeCircleOut",function(){return a.circleOut}),n.d(e,"easeCircleInOut",function(){return a.circleInOut});var l=n(/*! ./bounce */"./node_modules/d3-ease/src/bounce.js");n.d(e,"easeBounce",function(){return l.bounceOut}),n.d(e,"easeBounceIn",function(){return l.bounceIn}),n.d(e,"easeBounceOut",function(){return l.bounceOut}),n.d(e,"easeBounceInOut",function(){return l.bounceInOut});var d=n(/*! ./back */"./node_modules/d3-ease/src/back.js");n.d(e,"easeBack",function(){return d.backInOut}),n.d(e,"easeBackIn",function(){return d.backIn}),n.d(e,"easeBackOut",function(){return d.backOut}),n.d(e,"easeBackInOut",function(){return d.backInOut});var f=n(/*! ./elastic */"./node_modules/d3-ease/src/elastic.js");n.d(e,"easeElastic",function(){return f.elasticOut}),n.d(e,"easeElasticIn",function(){return f.elasticIn}),n.d(e,"easeElasticOut",function(){return f.elasticOut}),n.d(e,"easeElasticInOut",function(){return f.elasticInOut})},"./node_modules/d3-ease/src/linear.js":
/*!********************************************!*\
!*** ./node_modules/d3-ease/src/linear.js ***!
\********************************************/
/*! exports provided: linear */function(t,e,n){"use strict";function r(t){return+t}n.r(e),n.d(e,"linear",function(){return r})},"./node_modules/d3-ease/src/poly.js":
/*!******************************************!*\
!*** ./node_modules/d3-ease/src/poly.js ***!
\******************************************/
/*! exports provided: polyIn, polyOut, polyInOut */function(t,e,n){"use strict";n.r(e),n.d(e,"polyIn",function(){return r}),n.d(e,"polyOut",function(){return o}),n.d(e,"polyInOut",function(){return i});var r=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),o=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),i=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3)},"./node_modules/d3-ease/src/quad.js":
/*!******************************************!*\
!*** ./node_modules/d3-ease/src/quad.js ***!
\******************************************/
/*! exports provided: quadIn, quadOut, quadInOut */function(t,e,n){"use strict";function r(t){return t*t}function o(t){return t*(2-t)}function i(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}n.r(e),n.d(e,"quadIn",function(){return r}),n.d(e,"quadOut",function(){return o}),n.d(e,"quadInOut",function(){return i})},"./node_modules/d3-ease/src/sin.js":
/*!*****************************************!*\
!*** ./node_modules/d3-ease/src/sin.js ***!
\*****************************************/
/*! exports provided: sinIn, sinOut, sinInOut */function(t,e,n){"use strict";n.r(e),n.d(e,"sinIn",function(){return i}),n.d(e,"sinOut",function(){return u}),n.d(e,"sinInOut",function(){return s});var r=Math.PI,o=r/2;function i(t){return 1-Math.cos(t*o)}function u(t){return Math.sin(t*o)}function s(t){return(1-Math.cos(r*t))/2}},"./node_modules/d3-hierarchy/src/accessors.js":
/*!****************************************************!*\
!*** ./node_modules/d3-hierarchy/src/accessors.js ***!
\****************************************************/
/*! exports provided: optional, required */function(t,e,n){"use strict";function r(t){return null==t?null:o(t)}function o(t){if("function"!=typeof t)throw new Error;return t}n.r(e),n.d(e,"optional",function(){return r}),n.d(e,"required",function(){return o})},"./node_modules/d3-hierarchy/src/array.js":
/*!************************************************!*\
!*** ./node_modules/d3-hierarchy/src/array.js ***!
\************************************************/
/*! exports provided: slice, shuffle */function(t,e,n){"use strict";n.r(e),n.d(e,"slice",function(){return r}),n.d(e,"shuffle",function(){return o});var r=Array.prototype.slice;function o(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}},"./node_modules/d3-hierarchy/src/cluster.js":
/*!**************************************************!*\
!*** ./node_modules/d3-hierarchy/src/cluster.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e){return t.parent===e.parent?1:2}function o(t,e){return t+e.x}function i(t,e){return Math.max(t,e.y)}n.r(e),e.default=function(){var t=r,e=1,n=1,u=!1;function s(r){var s,c=0;r.eachAfter(function(e){var n=e.children;n?(e.x=function(t){return t.reduce(o,0)/t.length}(n),e.y=function(t){return 1+t.reduce(i,0)}(n)):(e.x=s?c+=t(e,s):0,e.y=0,s=e)});var a=function(t){for(var e;e=t.children;)t=e[0];return t}(r),l=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(r),d=a.x-t(a,l)/2,f=l.x+t(l,a)/2;return r.eachAfter(u?function(t){t.x=(t.x-r.x)*e,t.y=(r.y-t.y)*n}:function(t){t.x=(t.x-d)/(f-d)*e,t.y=(1-(r.y?t.y/r.y:1))*n})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(u=!1,e=+t[0],n=+t[1],s):u?null:[e,n]},s.nodeSize=function(t){return arguments.length?(u=!0,e=+t[0],n=+t[1],s):u?[e,n]:null},s}},"./node_modules/d3-hierarchy/src/constant.js":
/*!***************************************************!*\
!*** ./node_modules/d3-hierarchy/src/constant.js ***!
\***************************************************/
/*! exports provided: constantZero, default */function(t,e,n){"use strict";function r(){return 0}n.r(e),n.d(e,"constantZero",function(){return r}),e.default=function(t){return function(){return t}}},"./node_modules/d3-hierarchy/src/hierarchy/ancestors.js":
/*!**************************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/ancestors.js ***!
\**************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}},"./node_modules/d3-hierarchy/src/hierarchy/count.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/count.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}n.r(e),e.default=function(){return this.eachAfter(r)}},"./node_modules/d3-hierarchy/src/hierarchy/descendants.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/descendants.js ***!
\****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){var t=[];return this.each(function(e){t.push(e)}),t}},"./node_modules/d3-hierarchy/src/hierarchy/each.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/each.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){var e,n,r,o,i=this,u=[i];do{for(e=u.reverse(),u=[];i=e.pop();)if(t(i),n=i.children)for(r=0,o=n.length;r<o;++r)u.push(n[r])}while(u.length);return this}},"./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js":
/*!**************************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js ***!
\**************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){for(var e,n,r,o=this,i=[o],u=[];o=i.pop();)if(u.push(o),e=o.children)for(n=0,r=e.length;n<r;++n)i.push(e[n]);for(;o=u.pop();)t(o);return this}},"./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js":
/*!***************************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js ***!
\***************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){for(var e,n,r=this,o=[r];r=o.pop();)if(t(r),e=r.children)for(n=e.length-1;n>=0;--n)o.push(e[n]);return this}},"./node_modules/d3-hierarchy/src/hierarchy/index.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/index.js ***!
\**********************************************************/
/*! exports provided: default, computeHeight, Node */function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return p}),n.d(e,"computeHeight",function(){return v}),n.d(e,"Node",function(){return g});var r=n(/*! ./count */"./node_modules/d3-hierarchy/src/hierarchy/count.js"),o=n(/*! ./each */"./node_modules/d3-hierarchy/src/hierarchy/each.js"),i=n(/*! ./eachBefore */"./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js"),u=n(/*! ./eachAfter */"./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js"),s=n(/*! ./sum */"./node_modules/d3-hierarchy/src/hierarchy/sum.js"),c=n(/*! ./sort */"./node_modules/d3-hierarchy/src/hierarchy/sort.js"),a=n(/*! ./path */"./node_modules/d3-hierarchy/src/hierarchy/path.js"),l=n(/*! ./ancestors */"./node_modules/d3-hierarchy/src/hierarchy/ancestors.js"),d=n(/*! ./descendants */"./node_modules/d3-hierarchy/src/hierarchy/descendants.js"),f=n(/*! ./leaves */"./node_modules/d3-hierarchy/src/hierarchy/leaves.js"),h=n(/*! ./links */"./node_modules/d3-hierarchy/src/hierarchy/links.js");function p(t,e){var n,r,o,i,u,s=new g(t),c=+t.value&&(s.value=t.value),a=[s];for(null==e&&(e=m);n=a.pop();)if(c&&(n.value=+n.data.value),(o=e(n.data))&&(u=o.length))for(n.children=new Array(u),i=u-1;i>=0;--i)a.push(r=n.children[i]=new g(o[i])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(v)}function m(t){return t.children}function y(t){t.data=t.data.data}function v(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function g(t){this.data=t,this.depth=this.height=0,this.parent=null}g.prototype=p.prototype={constructor:g,count:r.default,each:o.default,eachAfter:u.default,eachBefore:i.default,sum:s.default,sort:c.default,path:a.default,ancestors:l.default,descendants:d.default,leaves:f.default,links:h.default,copy:function(){return p(this).eachBefore(y)}}},"./node_modules/d3-hierarchy/src/hierarchy/leaves.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/leaves.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}},"./node_modules/d3-hierarchy/src/hierarchy/links.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/links.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e}},"./node_modules/d3-hierarchy/src/hierarchy/path.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/path.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),o=null;t=n.pop(),e=r.pop();for(;t===e;)o=t,t=n.pop(),e=r.pop();return o}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var o=r.length;t!==n;)r.splice(o,0,t),t=t.parent;return r}},"./node_modules/d3-hierarchy/src/hierarchy/sort.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/sort.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}},"./node_modules/d3-hierarchy/src/hierarchy/sum.js":
/*!********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/hierarchy/sum.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,r=e.children,o=r&&r.length;--o>=0;)n+=r[o].value;e.value=n})}},"./node_modules/d3-hierarchy/src/index.js":
/*!************************************************!*\
!*** ./node_modules/d3-hierarchy/src/index.js ***!
\************************************************/
/*! exports provided: cluster, hierarchy, pack, packSiblings, packEnclose, partition, stratify, tree, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./cluster */"./node_modules/d3-hierarchy/src/cluster.js");n.d(e,"cluster",function(){return r.default});var o=n(/*! ./hierarchy/index */"./node_modules/d3-hierarchy/src/hierarchy/index.js");n.d(e,"hierarchy",function(){return o.default});var i=n(/*! ./pack/index */"./node_modules/d3-hierarchy/src/pack/index.js");n.d(e,"pack",function(){return i.default});var u=n(/*! ./pack/siblings */"./node_modules/d3-hierarchy/src/pack/siblings.js");n.d(e,"packSiblings",function(){return u.default});var s=n(/*! ./pack/enclose */"./node_modules/d3-hierarchy/src/pack/enclose.js");n.d(e,"packEnclose",function(){return s.default});var c=n(/*! ./partition */"./node_modules/d3-hierarchy/src/partition.js");n.d(e,"partition",function(){return c.default});var a=n(/*! ./stratify */"./node_modules/d3-hierarchy/src/stratify.js");n.d(e,"stratify",function(){return a.default});var l=n(/*! ./tree */"./node_modules/d3-hierarchy/src/tree.js");n.d(e,"tree",function(){return l.default});var d=n(/*! ./treemap/index */"./node_modules/d3-hierarchy/src/treemap/index.js");n.d(e,"treemap",function(){return d.default});var f=n(/*! ./treemap/binary */"./node_modules/d3-hierarchy/src/treemap/binary.js");n.d(e,"treemapBinary",function(){return f.default});var h=n(/*! ./treemap/dice */"./node_modules/d3-hierarchy/src/treemap/dice.js");n.d(e,"treemapDice",function(){return h.default});var p=n(/*! ./treemap/slice */"./node_modules/d3-hierarchy/src/treemap/slice.js");n.d(e,"treemapSlice",function(){return p.default});var m=n(/*! ./treemap/sliceDice */"./node_modules/d3-hierarchy/src/treemap/sliceDice.js");n.d(e,"treemapSliceDice",function(){return m.default});var y=n(/*! ./treemap/squarify */"./node_modules/d3-hierarchy/src/treemap/squarify.js");n.d(e,"treemapSquarify",function(){return y.default});var v=n(/*! ./treemap/resquarify */"./node_modules/d3-hierarchy/src/treemap/resquarify.js");n.d(e,"treemapResquarify",function(){return v.default})},"./node_modules/d3-hierarchy/src/pack/enclose.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-hierarchy/src/pack/enclose.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../array */"./node_modules/d3-hierarchy/src/array.js");function o(t,e){var n,r;if(s(e,t))return[e];for(n=0;n<t.length;++n)if(i(e,t[n])&&s(a(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(i(a(t[n],t[r]),e)&&i(a(t[n],e),t[r])&&i(a(t[r],e),t[n])&&s(l(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}function i(t,e){var n=t.r-e.r,r=e.x-t.x,o=e.y-t.y;return n<0||n*n<r*r+o*o}function u(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,o=e.y-t.y;return n>0&&n*n>r*r+o*o}function s(t,e){for(var n=0;n<e.length;++n)if(!u(t,e[n]))return!1;return!0}function c(t){switch(t.length){case 1:return{x:(e=t[0]).x,y:e.y,r:e.r};case 2:return a(t[0],t[1]);case 3:return l(t[0],t[1],t[2])}var e}function a(t,e){var n=t.x,r=t.y,o=t.r,i=e.x,u=e.y,s=e.r,c=i-n,a=u-r,l=s-o,d=Math.sqrt(c*c+a*a);return{x:(n+i+c/d*l)/2,y:(r+u+a/d*l)/2,r:(d+o+s)/2}}function l(t,e,n){var r=t.x,o=t.y,i=t.r,u=e.x,s=e.y,c=e.r,a=n.x,l=n.y,d=n.r,f=r-u,h=r-a,p=o-s,m=o-l,y=c-i,v=d-i,g=r*r+o*o-i*i,j=g-u*u-s*s+c*c,b=g-a*a-l*l+d*d,_=h*p-f*m,x=(p*b-m*j)/(2*_)-r,w=(m*y-p*v)/_,A=(h*j-f*b)/(2*_)-o,O=(f*v-h*y)/_,k=w*w+O*O-1,S=2*(i+x*w+A*O),C=x*x+A*A-i*i,B=-(k?(S+Math.sqrt(S*S-4*k*C))/(2*k):C/S);return{x:r+x+w*B,y:o+A+O*B,r:B}}e.default=function(t){for(var e,n,i=0,s=(t=Object(r.shuffle)(r.slice.call(t))).length,a=[];i<s;)e=t[i],n&&u(n,e)?++i:(n=c(a=o(a,e)),i=0);return n}},"./node_modules/d3-hierarchy/src/pack/index.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-hierarchy/src/pack/index.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./siblings */"./node_modules/d3-hierarchy/src/pack/siblings.js"),o=n(/*! ../accessors */"./node_modules/d3-hierarchy/src/accessors.js"),i=n(/*! ../constant */"./node_modules/d3-hierarchy/src/constant.js");function u(t){return Math.sqrt(t.value)}function s(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function c(t,e){return function(n){if(o=n.children){var o,i,u,s=o.length,c=t(n)*e||0;if(c)for(i=0;i<s;++i)o[i].r+=c;if(u=Object(r.packEnclose)(o),c)for(i=0;i<s;++i)o[i].r-=c;n.r=u+c}}}function a(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}e.default=function(){var t=null,e=1,n=1,r=i.constantZero;function l(o){return o.x=e/2,o.y=n/2,t?o.eachBefore(s(t)).eachAfter(c(r,.5)).eachBefore(a(1)):o.eachBefore(s(u)).eachAfter(c(i.constantZero,1)).eachAfter(c(r,o.r/Math.min(e,n))).eachBefore(a(Math.min(e,n)/(2*o.r))),o}return l.radius=function(e){return arguments.length?(t=Object(o.optional)(e),l):t},l.size=function(t){return arguments.length?(e=+t[0],n=+t[1],l):[e,n]},l.padding=function(t){return arguments.length?(r="function"==typeof t?t:Object(i.default)(+t),l):r},l}},"./node_modules/d3-hierarchy/src/pack/siblings.js":
/*!********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/pack/siblings.js ***!
\********************************************************/
/*! exports provided: packEnclose, default */function(t,e,n){"use strict";n.r(e),n.d(e,"packEnclose",function(){return c});var r=n(/*! ./enclose */"./node_modules/d3-hierarchy/src/pack/enclose.js");function o(t,e,n){var r,o,i,u,s=t.x-e.x,c=t.y-e.y,a=s*s+c*c;a?(o=e.r+n.r,o*=o,u=t.r+n.r,o>(u*=u)?(r=(a+u-o)/(2*a),i=Math.sqrt(Math.max(0,u/a-r*r)),n.x=t.x-r*s-i*c,n.y=t.y-r*c+i*s):(r=(a+o-u)/(2*a),i=Math.sqrt(Math.max(0,o/a-r*r)),n.x=e.x+r*s-i*c,n.y=e.y+r*c+i*s)):(n.x=e.x+n.r,n.y=e.y)}function i(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,o=e.y-t.y;return n>0&&n*n>r*r+o*o}function u(t){var e=t._,n=t.next._,r=e.r+n.r,o=(e.x*n.r+n.x*e.r)/r,i=(e.y*n.r+n.y*e.r)/r;return o*o+i*i}function s(t){this._=t,this.next=null,this.previous=null}function c(t){if(!(a=t.length))return 0;var e,n,c,a,l,d,f,h,p,m,y;if((e=t[0]).x=0,e.y=0,!(a>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(a>2))return e.r+n.r;o(n,e,c=t[2]),e=new s(e),n=new s(n),c=new s(c),e.next=c.previous=n,n.next=e.previous=c,c.next=n.previous=e;t:for(f=3;f<a;++f){o(e._,n._,c=t[f]),c=new s(c),h=n.next,p=e.previous,m=n._.r,y=e._.r;do{if(m<=y){if(i(h._,c._)){n=h,e.next=n,n.previous=e,--f;continue t}m+=h._.r,h=h.next}else{if(i(p._,c._)){(e=p).next=n,n.previous=e,--f;continue t}y+=p._.r,p=p.previous}}while(h!==p.next);for(c.previous=e,c.next=n,e.next=n.previous=n=c,l=u(e);(c=c.next)!==n;)(d=u(c))<l&&(e=c,l=d);n=e.next}for(e=[n._],c=n;(c=c.next)!==n;)e.push(c._);for(c=Object(r.default)(e),f=0;f<a;++f)(e=t[f]).x-=c.x,e.y-=c.y;return c.r}e.default=function(t){return c(t),t}},"./node_modules/d3-hierarchy/src/partition.js":
/*!****************************************************!*\
!*** ./node_modules/d3-hierarchy/src/partition.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./treemap/round */"./node_modules/d3-hierarchy/src/treemap/round.js"),o=n(/*! ./treemap/dice */"./node_modules/d3-hierarchy/src/treemap/dice.js");e.default=function(){var t=1,e=1,n=0,i=!1;function u(u){var s=u.height+1;return u.x0=u.y0=n,u.x1=t,u.y1=e/s,u.eachBefore(function(t,e){return function(r){r.children&&Object(o.default)(r,r.x0,t*(r.depth+1)/e,r.x1,t*(r.depth+2)/e);var i=r.x0,u=r.y0,s=r.x1-n,c=r.y1-n;s<i&&(i=s=(i+s)/2),c<u&&(u=c=(u+c)/2),r.x0=i,r.y0=u,r.x1=s,r.y1=c}}(e,s)),i&&u.eachBefore(r.default),u}return u.round=function(t){return arguments.length?(i=!!t,u):i},u.size=function(n){return arguments.length?(t=+n[0],e=+n[1],u):[t,e]},u.padding=function(t){return arguments.length?(n=+t,u):n},u}},"./node_modules/d3-hierarchy/src/stratify.js":
/*!***************************************************!*\
!*** ./node_modules/d3-hierarchy/src/stratify.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./accessors */"./node_modules/d3-hierarchy/src/accessors.js"),o=n(/*! ./hierarchy/index */"./node_modules/d3-hierarchy/src/hierarchy/index.js"),i="$",u={depth:-1},s={};function c(t){return t.id}function a(t){return t.parentId}e.default=function(){var t=c,e=a;function n(n){var r,c,a,l,d,f,h,p=n.length,m=new Array(p),y={};for(c=0;c<p;++c)r=n[c],d=m[c]=new o.Node(r),null!=(f=t(r,c,n))&&(f+="")&&(y[h=i+(d.id=f)]=h in y?s:d);for(c=0;c<p;++c)if(d=m[c],null!=(f=e(n[c],c,n))&&(f+="")){if(!(l=y[i+f]))throw new Error("missing: "+f);if(l===s)throw new Error("ambiguous: "+f);l.children?l.children.push(d):l.children=[d],d.parent=l}else{if(a)throw new Error("multiple roots");a=d}if(!a)throw new Error("no root");if(a.parent=u,a.eachBefore(function(t){t.depth=t.parent.depth+1,--p}).eachBefore(o.computeHeight),a.parent=null,p>0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Object(r.required)(e),n):t},n.parentId=function(t){return arguments.length?(e=Object(r.required)(t),n):e},n}},"./node_modules/d3-hierarchy/src/tree.js":
/*!***********************************************!*\
!*** ./node_modules/d3-hierarchy/src/tree.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./hierarchy/index */"./node_modules/d3-hierarchy/src/hierarchy/index.js");function o(t,e){return t.parent===e.parent?1:2}function i(t){var e=t.children;return e?e[0]:t.t}function u(t){var e=t.children;return e?e[e.length-1]:t.t}function s(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function c(t,e,n){return t.a.parent===e.parent?t.a:n}function a(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}a.prototype=Object.create(r.Node.prototype),e.default=function(){var t=o,e=1,n=1,r=null;function l(o){var i=function(t){for(var e,n,r,o,i,u=new a(t,0),s=[u];e=s.pop();)if(r=e._.children)for(e.children=new Array(i=r.length),o=i-1;o>=0;--o)s.push(n=e.children[o]=new a(r[o],o)),n.parent=e;return(u.parent=new a(null,0)).children=[u],u}(o);if(i.eachAfter(d),i.parent.m=-i.z,i.eachBefore(f),r)o.eachBefore(h);else{var u=o,s=o,c=o;o.eachBefore(function(t){t.x<u.x&&(u=t),t.x>s.x&&(s=t),t.depth>c.depth&&(c=t)});var l=u===s?1:t(u,s)/2,p=l-u.x,m=e/(s.x+l+p),y=n/(c.depth||1);o.eachBefore(function(t){t.x=(t.x+p)*m,t.y=t.depth*y})}return o}function d(e){var n=e.children,r=e.parent.children,o=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,o=t.children,i=o.length;--i>=0;)(e=o[i]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;o?(e.z=o.z+t(e._,o._),e.m=e.z-a):e.z=a}else o&&(e.z=o.z+t(e._,o._));e.parent.A=function(e,n,r){if(n){for(var o,a=e,l=e,d=n,f=a.parent.children[0],h=a.m,p=l.m,m=d.m,y=f.m;d=u(d),a=i(a),d&&a;)f=i(f),(l=u(l)).a=e,(o=d.z+m-a.z-h+t(d._,a._))>0&&(s(c(d,e,r),e,o),h+=o,p+=o),m+=d.m,h+=a.m,y+=f.m,p+=l.m;d&&!u(l)&&(l.t=d,l.m+=m-p),a&&!i(f)&&(f.t=a,f.m+=h-y,r=e)}return r}(e,o,e.parent.A||r[0])}function f(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function h(t){t.x*=e,t.y=t.depth*n}return l.separation=function(e){return arguments.length?(t=e,l):t},l.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],l):r?null:[e,n]},l.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],l):r?[e,n]:null},l}},"./node_modules/d3-hierarchy/src/treemap/binary.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/binary.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n,r,o){var i,u,s=t.children,c=s.length,a=new Array(c+1);for(a[0]=u=i=0;i<c;++i)a[i+1]=u+=s[i].value;!function t(e,n,r,o,i,u,c){if(e>=n-1){var l=s[e];return l.x0=o,l.y0=i,l.x1=u,void(l.y1=c)}var d=a[e],f=r/2+d,h=e+1,p=n-1;for(;h<p;){var m=h+p>>>1;a[m]<f?h=m+1:p=m}f-a[h-1]<a[h]-f&&e+1<h&&--h;var y=a[h]-d,v=r-y;if(u-o>c-i){var g=(o*v+u*y)/r;t(e,h,y,o,i,g,c),t(h,n,v,g,i,u,c)}else{var j=(i*v+c*y)/r;t(e,h,y,o,i,u,j),t(h,n,v,o,j,u,c)}}(0,c,t.value,e,n,r,o)}},"./node_modules/d3-hierarchy/src/treemap/dice.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/dice.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n,r,o){for(var i,u=t.children,s=-1,c=u.length,a=t.value&&(r-e)/t.value;++s<c;)(i=u[s]).y0=n,i.y1=o,i.x0=e,i.x1=e+=i.value*a}},"./node_modules/d3-hierarchy/src/treemap/index.js":
/*!********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/index.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./round */"./node_modules/d3-hierarchy/src/treemap/round.js"),o=n(/*! ./squarify */"./node_modules/d3-hierarchy/src/treemap/squarify.js"),i=n(/*! ../accessors */"./node_modules/d3-hierarchy/src/accessors.js"),u=n(/*! ../constant */"./node_modules/d3-hierarchy/src/constant.js");e.default=function(){var t=o.default,e=!1,n=1,s=1,c=[0],a=u.constantZero,l=u.constantZero,d=u.constantZero,f=u.constantZero,h=u.constantZero;function p(t){return t.x0=t.y0=0,t.x1=n,t.y1=s,t.eachBefore(m),c=[0],e&&t.eachBefore(r.default),t}function m(e){var n=c[e.depth],r=e.x0+n,o=e.y0+n,i=e.x1-n,u=e.y1-n;i<r&&(r=i=(r+i)/2),u<o&&(o=u=(o+u)/2),e.x0=r,e.y0=o,e.x1=i,e.y1=u,e.children&&(n=c[e.depth+1]=a(e)/2,r+=h(e)-n,o+=l(e)-n,(i-=d(e)-n)<r&&(r=i=(r+i)/2),(u-=f(e)-n)<o&&(o=u=(o+u)/2),t(e,r,o,i,u))}return p.round=function(t){return arguments.length?(e=!!t,p):e},p.size=function(t){return arguments.length?(n=+t[0],s=+t[1],p):[n,s]},p.tile=function(e){return arguments.length?(t=Object(i.required)(e),p):t},p.padding=function(t){return arguments.length?p.paddingInner(t).paddingOuter(t):p.paddingInner()},p.paddingInner=function(t){return arguments.length?(a="function"==typeof t?t:Object(u.default)(+t),p):a},p.paddingOuter=function(t){return arguments.length?p.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):p.paddingTop()},p.paddingTop=function(t){return arguments.length?(l="function"==typeof t?t:Object(u.default)(+t),p):l},p.paddingRight=function(t){return arguments.length?(d="function"==typeof t?t:Object(u.default)(+t),p):d},p.paddingBottom=function(t){return arguments.length?(f="function"==typeof t?t:Object(u.default)(+t),p):f},p.paddingLeft=function(t){return arguments.length?(h="function"==typeof t?t:Object(u.default)(+t),p):h},p}},"./node_modules/d3-hierarchy/src/treemap/resquarify.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/resquarify.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./dice */"./node_modules/d3-hierarchy/src/treemap/dice.js"),o=n(/*! ./slice */"./node_modules/d3-hierarchy/src/treemap/slice.js"),i=n(/*! ./squarify */"./node_modules/d3-hierarchy/src/treemap/squarify.js");e.default=function t(e){function n(t,n,u,s,c){if((a=t._squarify)&&a.ratio===e)for(var a,l,d,f,h,p=-1,m=a.length,y=t.value;++p<m;){for(d=(l=a[p]).children,f=l.value=0,h=d.length;f<h;++f)l.value+=d[f].value;l.dice?Object(r.default)(l,n,u,s,u+=(c-u)*l.value/y):Object(o.default)(l,n,u,n+=(s-n)*l.value/y,c),y-=l.value}else t._squarify=a=Object(i.squarifyRatio)(e,t,n,u,s,c),a.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(i.phi)},"./node_modules/d3-hierarchy/src/treemap/round.js":
/*!********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/round.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}},"./node_modules/d3-hierarchy/src/treemap/slice.js":
/*!********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/slice.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n,r,o){for(var i,u=t.children,s=-1,c=u.length,a=t.value&&(o-n)/t.value;++s<c;)(i=u[s]).x0=e,i.x1=r,i.y0=n,i.y1=n+=i.value*a}},"./node_modules/d3-hierarchy/src/treemap/sliceDice.js":
/*!************************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/sliceDice.js ***!
\************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./dice */"./node_modules/d3-hierarchy/src/treemap/dice.js"),o=n(/*! ./slice */"./node_modules/d3-hierarchy/src/treemap/slice.js");e.default=function(t,e,n,i,u){(1&t.depth?o.default:r.default)(t,e,n,i,u)}},"./node_modules/d3-hierarchy/src/treemap/squarify.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-hierarchy/src/treemap/squarify.js ***!
\***********************************************************/
/*! exports provided: phi, squarifyRatio, default */function(t,e,n){"use strict";n.r(e),n.d(e,"phi",function(){return i}),n.d(e,"squarifyRatio",function(){return u});var r=n(/*! ./dice */"./node_modules/d3-hierarchy/src/treemap/dice.js"),o=n(/*! ./slice */"./node_modules/d3-hierarchy/src/treemap/slice.js"),i=(1+Math.sqrt(5))/2;function u(t,e,n,i,u,s){for(var c,a,l,d,f,h,p,m,y,v,g,j=[],b=e.children,_=0,x=0,w=b.length,A=e.value;_<w;){l=u-n,d=s-i;do{f=b[x++].value}while(!f&&x<w);for(h=p=f,g=f*f*(v=Math.max(d/l,l/d)/(A*t)),y=Math.max(p/g,g/h);x<w;++x){if(f+=a=b[x].value,a<h&&(h=a),a>p&&(p=a),g=f*f*v,(m=Math.max(p/g,g/h))>y){f-=a;break}y=m}j.push(c={value:f,dice:l<d,children:b.slice(_,x)}),c.dice?Object(r.default)(c,n,i,u,A?i+=d*f/A:s):Object(o.default)(c,n,i,A?n+=l*f/A:u,s),A-=f,_=x}return j}e.default=function t(e){function n(t,n,r,o,i){u(e,t,n,r,o,i)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(i)},"./node_modules/d3-interpolate/src/array.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/array.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./value */"./node_modules/d3-interpolate/src/value.js");e.default=function(t,e){var n,o=e?e.length:0,i=t?Math.min(o,t.length):0,u=new Array(i),s=new Array(o);for(n=0;n<i;++n)u[n]=Object(r.default)(t[n],e[n]);for(;n<o;++n)s[n]=e[n];return function(t){for(n=0;n<i;++n)s[n]=u[n](t);return s}}},"./node_modules/d3-interpolate/src/basis.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/basis.js ***!
\**************************************************/
/*! exports provided: basis, default */function(t,e,n){"use strict";function r(t,e,n,r,o){var i=t*t,u=i*t;return((1-3*t+3*i-u)*e+(4-6*i+3*u)*n+(1+3*t+3*i-3*u)*r+u*o)/6}n.r(e),n.d(e,"basis",function(){return r}),e.default=function(t){var e=t.length-1;return function(n){var o=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[o],u=t[o+1],s=o>0?t[o-1]:2*i-u,c=o<e-1?t[o+2]:2*u-i;return r((n-o/e)*e,s,i,u,c)}}},"./node_modules/d3-interpolate/src/basisClosed.js":
/*!********************************************************!*\
!*** ./node_modules/d3-interpolate/src/basisClosed.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./basis */"./node_modules/d3-interpolate/src/basis.js");e.default=function(t){var e=t.length;return function(n){var o=Math.floor(((n%=1)<0?++n:n)*e),i=t[(o+e-1)%e],u=t[o%e],s=t[(o+1)%e],c=t[(o+2)%e];return Object(r.basis)((n-o/e)*e,i,u,s,c)}}},"./node_modules/d3-interpolate/src/color.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/color.js ***!
\**************************************************/
/*! exports provided: hue, gamma, default */function(t,e,n){"use strict";n.r(e),n.d(e,"hue",function(){return i}),n.d(e,"gamma",function(){return u}),n.d(e,"default",function(){return s});var r=n(/*! ./constant */"./node_modules/d3-interpolate/src/constant.js");function o(t,e){return function(n){return t+n*e}}function i(t,e){var n=e-t;return n?o(t,n>180||n<-180?n-360*Math.round(n/360):n):Object(r.default)(isNaN(t)?e:t)}function u(t){return 1==(t=+t)?s:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Object(r.default)(isNaN(e)?n:e)}}function s(t,e){var n=e-t;return n?o(t,n):Object(r.default)(isNaN(t)?e:t)}},"./node_modules/d3-interpolate/src/constant.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-interpolate/src/constant.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3-interpolate/src/cubehelix.js":
/*!******************************************************!*\
!*** ./node_modules/d3-interpolate/src/cubehelix.js ***!
\******************************************************/
/*! exports provided: default, cubehelixLong */function(t,e,n){"use strict";n.r(e),n.d(e,"cubehelixLong",function(){return u});var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! ./color */"./node_modules/d3-interpolate/src/color.js");function i(t){return function e(n){function i(e,i){var u=t((e=Object(r.cubehelix)(e)).h,(i=Object(r.cubehelix)(i)).h),s=Object(o.default)(e.s,i.s),c=Object(o.default)(e.l,i.l),a=Object(o.default)(e.opacity,i.opacity);return function(t){return e.h=u(t),e.s=s(t),e.l=c(Math.pow(t,n)),e.opacity=a(t),e+""}}return n=+n,i.gamma=e,i}(1)}e.default=i(o.hue);var u=i(o.default)},"./node_modules/d3-interpolate/src/date.js":
/*!*************************************************!*\
!*** ./node_modules/d3-interpolate/src/date.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){var n=new Date;return e-=t=+t,function(r){return n.setTime(t+e*r),n}}},"./node_modules/d3-interpolate/src/discrete.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-interpolate/src/discrete.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}},"./node_modules/d3-interpolate/src/hcl.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/hcl.js ***!
\************************************************/
/*! exports provided: default, hclLong */function(t,e,n){"use strict";n.r(e),n.d(e,"hclLong",function(){return u});var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! ./color */"./node_modules/d3-interpolate/src/color.js");function i(t){return function(e,n){var i=t((e=Object(r.hcl)(e)).h,(n=Object(r.hcl)(n)).h),u=Object(o.default)(e.c,n.c),s=Object(o.default)(e.l,n.l),c=Object(o.default)(e.opacity,n.opacity);return function(t){return e.h=i(t),e.c=u(t),e.l=s(t),e.opacity=c(t),e+""}}}e.default=i(o.hue);var u=i(o.default)},"./node_modules/d3-interpolate/src/hsl.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/hsl.js ***!
\************************************************/
/*! exports provided: default, hslLong */function(t,e,n){"use strict";n.r(e),n.d(e,"hslLong",function(){return u});var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! ./color */"./node_modules/d3-interpolate/src/color.js");function i(t){return function(e,n){var i=t((e=Object(r.hsl)(e)).h,(n=Object(r.hsl)(n)).h),u=Object(o.default)(e.s,n.s),s=Object(o.default)(e.l,n.l),c=Object(o.default)(e.opacity,n.opacity);return function(t){return e.h=i(t),e.s=u(t),e.l=s(t),e.opacity=c(t),e+""}}}e.default=i(o.hue);var u=i(o.default)},"./node_modules/d3-interpolate/src/hue.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/hue.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./color */"./node_modules/d3-interpolate/src/color.js");e.default=function(t,e){var n=Object(r.hue)(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}}},"./node_modules/d3-interpolate/src/index.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/index.js ***!
\**************************************************/
/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./value */"./node_modules/d3-interpolate/src/value.js");n.d(e,"interpolate",function(){return r.default});var o=n(/*! ./array */"./node_modules/d3-interpolate/src/array.js");n.d(e,"interpolateArray",function(){return o.default});var i=n(/*! ./basis */"./node_modules/d3-interpolate/src/basis.js");n.d(e,"interpolateBasis",function(){return i.default});var u=n(/*! ./basisClosed */"./node_modules/d3-interpolate/src/basisClosed.js");n.d(e,"interpolateBasisClosed",function(){return u.default});var s=n(/*! ./date */"./node_modules/d3-interpolate/src/date.js");n.d(e,"interpolateDate",function(){return s.default});var c=n(/*! ./discrete */"./node_modules/d3-interpolate/src/discrete.js");n.d(e,"interpolateDiscrete",function(){return c.default});var a=n(/*! ./hue */"./node_modules/d3-interpolate/src/hue.js");n.d(e,"interpolateHue",function(){return a.default});var l=n(/*! ./number */"./node_modules/d3-interpolate/src/number.js");n.d(e,"interpolateNumber",function(){return l.default});var d=n(/*! ./object */"./node_modules/d3-interpolate/src/object.js");n.d(e,"interpolateObject",function(){return d.default});var f=n(/*! ./round */"./node_modules/d3-interpolate/src/round.js");n.d(e,"interpolateRound",function(){return f.default});var h=n(/*! ./string */"./node_modules/d3-interpolate/src/string.js");n.d(e,"interpolateString",function(){return h.default});var p=n(/*! ./transform/index */"./node_modules/d3-interpolate/src/transform/index.js");n.d(e,"interpolateTransformCss",function(){return p.interpolateTransformCss}),n.d(e,"interpolateTransformSvg",function(){return p.interpolateTransformSvg});var m=n(/*! ./zoom */"./node_modules/d3-interpolate/src/zoom.js");n.d(e,"interpolateZoom",function(){return m.default});var y=n(/*! ./rgb */"./node_modules/d3-interpolate/src/rgb.js");n.d(e,"interpolateRgb",function(){return y.default}),n.d(e,"interpolateRgbBasis",function(){return y.rgbBasis}),n.d(e,"interpolateRgbBasisClosed",function(){return y.rgbBasisClosed});var v=n(/*! ./hsl */"./node_modules/d3-interpolate/src/hsl.js");n.d(e,"interpolateHsl",function(){return v.default}),n.d(e,"interpolateHslLong",function(){return v.hslLong});var g=n(/*! ./lab */"./node_modules/d3-interpolate/src/lab.js");n.d(e,"interpolateLab",function(){return g.default});var j=n(/*! ./hcl */"./node_modules/d3-interpolate/src/hcl.js");n.d(e,"interpolateHcl",function(){return j.default}),n.d(e,"interpolateHclLong",function(){return j.hclLong});var b=n(/*! ./cubehelix */"./node_modules/d3-interpolate/src/cubehelix.js");n.d(e,"interpolateCubehelix",function(){return b.default}),n.d(e,"interpolateCubehelixLong",function(){return b.cubehelixLong});var _=n(/*! ./piecewise */"./node_modules/d3-interpolate/src/piecewise.js");n.d(e,"piecewise",function(){return _.default});var x=n(/*! ./quantize */"./node_modules/d3-interpolate/src/quantize.js");n.d(e,"quantize",function(){return x.default})},"./node_modules/d3-interpolate/src/lab.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/lab.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return i});var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! ./color */"./node_modules/d3-interpolate/src/color.js");function i(t,e){var n=Object(o.default)((t=Object(r.lab)(t)).l,(e=Object(r.lab)(e)).l),i=Object(o.default)(t.a,e.a),u=Object(o.default)(t.b,e.b),s=Object(o.default)(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=i(e),t.b=u(e),t.opacity=s(e),t+""}}},"./node_modules/d3-interpolate/src/number.js":
/*!***************************************************!*\
!*** ./node_modules/d3-interpolate/src/number.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return e-=t=+t,function(n){return t+e*n}}},"./node_modules/d3-interpolate/src/object.js":
/*!***************************************************!*\
!*** ./node_modules/d3-interpolate/src/object.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./value */"./node_modules/d3-interpolate/src/value.js");e.default=function(t,e){var n,o={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?o[n]=Object(r.default)(t[n],e[n]):i[n]=e[n];return function(t){for(n in o)i[n]=o[n](t);return i}}},"./node_modules/d3-interpolate/src/piecewise.js":
/*!******************************************************!*\
!*** ./node_modules/d3-interpolate/src/piecewise.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e){for(var n=0,r=e.length-1,o=e[0],i=new Array(r<0?0:r);n<r;)i[n]=t(o,o=e[++n]);return function(t){var e=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return i[e](t-e)}}n.r(e),n.d(e,"default",function(){return r})},"./node_modules/d3-interpolate/src/quantize.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-interpolate/src/quantize.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}},"./node_modules/d3-interpolate/src/rgb.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/rgb.js ***!
\************************************************/
/*! exports provided: default, rgbBasis, rgbBasisClosed */function(t,e,n){"use strict";n.r(e),n.d(e,"rgbBasis",function(){return c}),n.d(e,"rgbBasisClosed",function(){return a});var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! ./basis */"./node_modules/d3-interpolate/src/basis.js"),i=n(/*! ./basisClosed */"./node_modules/d3-interpolate/src/basisClosed.js"),u=n(/*! ./color */"./node_modules/d3-interpolate/src/color.js");function s(t){return function(e){var n,o,i=e.length,u=new Array(i),s=new Array(i),c=new Array(i);for(n=0;n<i;++n)o=Object(r.rgb)(e[n]),u[n]=o.r||0,s[n]=o.g||0,c[n]=o.b||0;return u=t(u),s=t(s),c=t(c),o.opacity=1,function(t){return o.r=u(t),o.g=s(t),o.b=c(t),o+""}}}e.default=function t(e){var n=Object(u.gamma)(e);function o(t,e){var o=n((t=Object(r.rgb)(t)).r,(e=Object(r.rgb)(e)).r),i=n(t.g,e.g),s=n(t.b,e.b),c=Object(u.default)(t.opacity,e.opacity);return function(e){return t.r=o(e),t.g=i(e),t.b=s(e),t.opacity=c(e),t+""}}return o.gamma=t,o}(1);var c=s(o.default),a=s(i.default)},"./node_modules/d3-interpolate/src/round.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/round.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return e-=t=+t,function(n){return Math.round(t+e*n)}}},"./node_modules/d3-interpolate/src/string.js":
/*!***************************************************!*\
!*** ./node_modules/d3-interpolate/src/string.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./number */"./node_modules/d3-interpolate/src/number.js"),o=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,i=new RegExp(o.source,"g");e.default=function(t,e){var n,u,s,c=o.lastIndex=i.lastIndex=0,a=-1,l=[],d=[];for(t+="",e+="";(n=o.exec(t))&&(u=i.exec(e));)(s=u.index)>c&&(s=e.slice(c,s),l[a]?l[a]+=s:l[++a]=s),(n=n[0])===(u=u[0])?l[a]?l[a]+=u:l[++a]=u:(l[++a]=null,d.push({i:a,x:Object(r.default)(n,u)})),c=i.lastIndex;return c<e.length&&(s=e.slice(c),l[a]?l[a]+=s:l[++a]=s),l.length<2?d[0]?function(t){return function(e){return t(e)+""}}(d[0].x):function(t){return function(){return t}}(e):(e=d.length,function(t){for(var n,r=0;r<e;++r)l[(n=d[r]).i]=n.x(t);return l.join("")})}},"./node_modules/d3-interpolate/src/transform/decompose.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-interpolate/src/transform/decompose.js ***!
\****************************************************************/
/*! exports provided: identity, default */function(t,e,n){"use strict";n.r(e),n.d(e,"identity",function(){return o});var r=180/Math.PI,o={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};e.default=function(t,e,n,o,i,u){var s,c,a;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(a=t*n+e*o)&&(n-=t*a,o-=e*a),(c=Math.sqrt(n*n+o*o))&&(n/=c,o/=c,a/=c),t*o<e*n&&(t=-t,e=-e,a=-a,s=-s),{translateX:i,translateY:u,rotate:Math.atan2(e,t)*r,skewX:Math.atan(a)*r,scaleX:s,scaleY:c}}},"./node_modules/d3-interpolate/src/transform/index.js":
/*!************************************************************!*\
!*** ./node_modules/d3-interpolate/src/transform/index.js ***!
\************************************************************/
/*! exports provided: interpolateTransformCss, interpolateTransformSvg */function(t,e,n){"use strict";n.r(e),n.d(e,"interpolateTransformCss",function(){return u}),n.d(e,"interpolateTransformSvg",function(){return s});var r=n(/*! ../number */"./node_modules/d3-interpolate/src/number.js"),o=n(/*! ./parse */"./node_modules/d3-interpolate/src/transform/parse.js");function i(t,e,n,o){function i(t){return t.length?t.pop()+" ":""}return function(u,s){var c=[],a=[];return u=t(u),s=t(s),function(t,o,i,u,s,c){if(t!==i||o!==u){var a=s.push("translate(",null,e,null,n);c.push({i:a-4,x:Object(r.default)(t,i)},{i:a-2,x:Object(r.default)(o,u)})}else(i||u)&&s.push("translate("+i+e+u+n)}(u.translateX,u.translateY,s.translateX,s.translateY,c,a),function(t,e,n,u){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),u.push({i:n.push(i(n)+"rotate(",null,o)-2,x:Object(r.default)(t,e)})):e&&n.push(i(n)+"rotate("+e+o)}(u.rotate,s.rotate,c,a),function(t,e,n,u){t!==e?u.push({i:n.push(i(n)+"skewX(",null,o)-2,x:Object(r.default)(t,e)}):e&&n.push(i(n)+"skewX("+e+o)}(u.skewX,s.skewX,c,a),function(t,e,n,o,u,s){if(t!==n||e!==o){var c=u.push(i(u)+"scale(",null,",",null,")");s.push({i:c-4,x:Object(r.default)(t,n)},{i:c-2,x:Object(r.default)(e,o)})}else 1===n&&1===o||u.push(i(u)+"scale("+n+","+o+")")}(u.scaleX,u.scaleY,s.scaleX,s.scaleY,c,a),u=s=null,function(t){for(var e,n=-1,r=a.length;++n<r;)c[(e=a[n]).i]=e.x(t);return c.join("")}}}var u=i(o.parseCss,"px, ","px)","deg)"),s=i(o.parseSvg,", ",")",")")},"./node_modules/d3-interpolate/src/transform/parse.js":
/*!************************************************************!*\
!*** ./node_modules/d3-interpolate/src/transform/parse.js ***!
\************************************************************/
/*! exports provided: parseCss, parseSvg */function(t,e,n){"use strict";n.r(e),n.d(e,"parseCss",function(){return c}),n.d(e,"parseSvg",function(){return a});var r,o,i,u,s=n(/*! ./decompose */"./node_modules/d3-interpolate/src/transform/decompose.js");function c(t){return"none"===t?s.identity:(r||(r=document.createElement("DIV"),o=document.documentElement,i=document.defaultView),r.style.transform=t,t=i.getComputedStyle(o.appendChild(r),null).getPropertyValue("transform"),o.removeChild(r),t=t.slice(7,-1).split(","),Object(s.default)(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function a(t){return null==t?s.identity:(u||(u=document.createElementNS("http://www.w3.org/2000/svg","g")),u.setAttribute("transform",t),(t=u.transform.baseVal.consolidate())?(t=t.matrix,Object(s.default)(t.a,t.b,t.c,t.d,t.e,t.f)):s.identity)}},"./node_modules/d3-interpolate/src/value.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/value.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! ./rgb */"./node_modules/d3-interpolate/src/rgb.js"),i=n(/*! ./array */"./node_modules/d3-interpolate/src/array.js"),u=n(/*! ./date */"./node_modules/d3-interpolate/src/date.js"),s=n(/*! ./number */"./node_modules/d3-interpolate/src/number.js"),c=n(/*! ./object */"./node_modules/d3-interpolate/src/object.js"),a=n(/*! ./string */"./node_modules/d3-interpolate/src/string.js"),l=n(/*! ./constant */"./node_modules/d3-interpolate/src/constant.js");e.default=function(t,e){var n,d=typeof e;return null==e||"boolean"===d?Object(l.default)(e):("number"===d?s.default:"string"===d?(n=Object(r.color)(e))?(e=n,o.default):a.default:e instanceof r.color?o.default:e instanceof Date?u.default:Array.isArray(e)?i.default:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?c.default:s.default)(t,e)}},"./node_modules/d3-interpolate/src/zoom.js":
/*!*************************************************!*\
!*** ./node_modules/d3-interpolate/src/zoom.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=Math.SQRT2;function o(t){return((t=Math.exp(t))+1/t)/2}e.default=function(t,e){var n,i,u=t[0],s=t[1],c=t[2],a=e[0],l=e[1],d=e[2],f=a-u,h=l-s,p=f*f+h*h;if(p<1e-12)i=Math.log(d/c)/r,n=function(t){return[u+t*f,s+t*h,c*Math.exp(r*t*i)]};else{var m=Math.sqrt(p),y=(d*d-c*c+4*p)/(2*c*2*m),v=(d*d-c*c-4*p)/(2*d*2*m),g=Math.log(Math.sqrt(y*y+1)-y),j=Math.log(Math.sqrt(v*v+1)-v);i=(j-g)/r,n=function(t){var e,n=t*i,a=o(g),l=c/(2*m)*(a*(e=r*n+g,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[u+l*f,s+l*h,c*a/o(r*n+g)]}}return n.duration=1e3*i,n}},"./node_modules/d3-path/src/index.js":
/*!*******************************************!*\
!*** ./node_modules/d3-path/src/index.js ***!
\*******************************************/
/*! exports provided: path */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./path */"./node_modules/d3-path/src/path.js");n.d(e,"path",function(){return r.default})},"./node_modules/d3-path/src/path.js":
/*!******************************************!*\
!*** ./node_modules/d3-path/src/path.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=Math.PI,o=2*r,i=o-1e-6;function u(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function s(){return new u}u.prototype=s.prototype={constructor:u,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,o,i){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+o)+","+(this._y1=+i)},arcTo:function(t,e,n,o,i){t=+t,e=+e,n=+n,o=+o,i=+i;var u=this._x1,s=this._y1,c=n-t,a=o-e,l=u-t,d=s-e,f=l*l+d*d;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>1e-6)if(Math.abs(d*c-a*l)>1e-6&&i){var h=n-u,p=o-s,m=c*c+a*a,y=h*h+p*p,v=Math.sqrt(m),g=Math.sqrt(f),j=i*Math.tan((r-Math.acos((m+f-y)/(2*v*g)))/2),b=j/g,_=j/v;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*l)+","+(e+b*d)),this._+="A"+i+","+i+",0,0,"+ +(d*h>l*p)+","+(this._x1=t+_*c)+","+(this._y1=e+_*a)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,u,s,c){t=+t,e=+e;var a=(n=+n)*Math.cos(u),l=n*Math.sin(u),d=t+a,f=e+l,h=1^c,p=c?u-s:s-u;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+d+","+f:(Math.abs(this._x1-d)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+d+","+f),n&&(p<0&&(p=p%o+o),p>i?this._+="A"+n+","+n+",0,1,"+h+","+(t-a)+","+(e-l)+"A"+n+","+n+",0,1,"+h+","+(this._x1=d)+","+(this._y1=f):p>1e-6&&(this._+="A"+n+","+n+",0,"+ +(p>=r)+","+h+","+(this._x1=t+n*Math.cos(s))+","+(this._y1=e+n*Math.sin(s))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}},e.default=s},"./node_modules/d3-selection/src/constant.js":
/*!***************************************************!*\
!*** ./node_modules/d3-selection/src/constant.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3-selection/src/create.js":
/*!*************************************************!*\
!*** ./node_modules/d3-selection/src/create.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./creator */"./node_modules/d3-selection/src/creator.js"),o=n(/*! ./select */"./node_modules/d3-selection/src/select.js");e.default=function(t){return Object(o.default)(Object(r.default)(t).call(document.documentElement))}},"./node_modules/d3-selection/src/creator.js":
/*!**************************************************!*\
!*** ./node_modules/d3-selection/src/creator.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./namespace */"./node_modules/d3-selection/src/namespace.js"),o=n(/*! ./namespaces */"./node_modules/d3-selection/src/namespaces.js");e.default=function(t){var e=Object(r.default)(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===o.xhtml&&e.documentElement.namespaceURI===o.xhtml?e.createElement(t):e.createElementNS(n,t)}})(e)}},"./node_modules/d3-selection/src/index.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/index.js ***!
\************************************************/
/*! exports provided: create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./create */"./node_modules/d3-selection/src/create.js");n.d(e,"create",function(){return r.default});var o=n(/*! ./creator */"./node_modules/d3-selection/src/creator.js");n.d(e,"creator",function(){return o.default});var i=n(/*! ./local */"./node_modules/d3-selection/src/local.js");n.d(e,"local",function(){return i.default});var u=n(/*! ./matcher */"./node_modules/d3-selection/src/matcher.js");n.d(e,"matcher",function(){return u.default});var s=n(/*! ./mouse */"./node_modules/d3-selection/src/mouse.js");n.d(e,"mouse",function(){return s.default});var c=n(/*! ./namespace */"./node_modules/d3-selection/src/namespace.js");n.d(e,"namespace",function(){return c.default});var a=n(/*! ./namespaces */"./node_modules/d3-selection/src/namespaces.js");n.d(e,"namespaces",function(){return a.default});var l=n(/*! ./point */"./node_modules/d3-selection/src/point.js");n.d(e,"clientPoint",function(){return l.default});var d=n(/*! ./select */"./node_modules/d3-selection/src/select.js");n.d(e,"select",function(){return d.default});var f=n(/*! ./selectAll */"./node_modules/d3-selection/src/selectAll.js");n.d(e,"selectAll",function(){return f.default});var h=n(/*! ./selection/index */"./node_modules/d3-selection/src/selection/index.js");n.d(e,"selection",function(){return h.default});var p=n(/*! ./selector */"./node_modules/d3-selection/src/selector.js");n.d(e,"selector",function(){return p.default});var m=n(/*! ./selectorAll */"./node_modules/d3-selection/src/selectorAll.js");n.d(e,"selectorAll",function(){return m.default});var y=n(/*! ./selection/style */"./node_modules/d3-selection/src/selection/style.js");n.d(e,"style",function(){return y.styleValue});var v=n(/*! ./touch */"./node_modules/d3-selection/src/touch.js");n.d(e,"touch",function(){return v.default});var g=n(/*! ./touches */"./node_modules/d3-selection/src/touches.js");n.d(e,"touches",function(){return g.default});var j=n(/*! ./window */"./node_modules/d3-selection/src/window.js");n.d(e,"window",function(){return j.default});var b=n(/*! ./selection/on */"./node_modules/d3-selection/src/selection/on.js");n.d(e,"event",function(){return b.event}),n.d(e,"customEvent",function(){return b.customEvent})},"./node_modules/d3-selection/src/local.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/local.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return o});var r=0;function o(){return new i}function i(){this._="@"+(++r).toString(36)}i.prototype=o.prototype={constructor:i,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}}},"./node_modules/d3-selection/src/matcher.js":
/*!**************************************************!*\
!*** ./node_modules/d3-selection/src/matcher.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return this.matches(t)}}},"./node_modules/d3-selection/src/mouse.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/mouse.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./sourceEvent */"./node_modules/d3-selection/src/sourceEvent.js"),o=n(/*! ./point */"./node_modules/d3-selection/src/point.js");e.default=function(t){var e=Object(r.default)();return e.changedTouches&&(e=e.changedTouches[0]),Object(o.default)(t,e)}},"./node_modules/d3-selection/src/namespace.js":
/*!****************************************************!*\
!*** ./node_modules/d3-selection/src/namespace.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./namespaces */"./node_modules/d3-selection/src/namespaces.js");e.default=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),r.default.hasOwnProperty(e)?{space:r.default[e],local:t}:t}},"./node_modules/d3-selection/src/namespaces.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-selection/src/namespaces.js ***!
\*****************************************************/
/*! exports provided: xhtml, default */function(t,e,n){"use strict";n.r(e),n.d(e,"xhtml",function(){return r});var r="http://www.w3.org/1999/xhtml";e.default={svg:"http://www.w3.org/2000/svg",xhtml:r,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},"./node_modules/d3-selection/src/point.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/point.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var o=t.getBoundingClientRect();return[e.clientX-o.left-t.clientLeft,e.clientY-o.top-t.clientTop]}},"./node_modules/d3-selection/src/select.js":
/*!*************************************************!*\
!*** ./node_modules/d3-selection/src/select.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./selection/index */"./node_modules/d3-selection/src/selection/index.js");e.default=function(t){return"string"==typeof t?new r.Selection([[document.querySelector(t)]],[document.documentElement]):new r.Selection([[t]],r.root)}},"./node_modules/d3-selection/src/selectAll.js":
/*!****************************************************!*\
!*** ./node_modules/d3-selection/src/selectAll.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./selection/index */"./node_modules/d3-selection/src/selection/index.js");e.default=function(t){return"string"==typeof t?new r.Selection([document.querySelectorAll(t)],[document.documentElement]):new r.Selection([null==t?[]:t],r.root)}},"./node_modules/d3-selection/src/selection/append.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/append.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../creator */"./node_modules/d3-selection/src/creator.js");e.default=function(t){var e="function"==typeof t?t:Object(r.default)(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}},"./node_modules/d3-selection/src/selection/attr.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/attr.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../namespace */"./node_modules/d3-selection/src/namespace.js");e.default=function(t,e){var n=Object(r.default)(t);if(arguments.length<2){var o=this.node();return n.local?o.getAttributeNS(n.space,n.local):o.getAttribute(n)}return this.each((null==e?n.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:"function"==typeof e?n.local?function(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}:function(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}:n.local?function(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}:function(t,e){return function(){this.setAttribute(t,e)}})(n,e))}},"./node_modules/d3-selection/src/selection/call.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/call.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}},"./node_modules/d3-selection/src/selection/classed.js":
/*!************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/classed.js ***!
\************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t){return t.trim().split(/^|\s+/)}function o(t){return t.classList||new i(t)}function i(t){this._node=t,this._names=r(t.getAttribute("class")||"")}function u(t,e){for(var n=o(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function s(t,e){for(var n=o(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}n.r(e),i.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}},e.default=function(t,e){var n=r(t+"");if(arguments.length<2){for(var i=o(this.node()),c=-1,a=n.length;++c<a;)if(!i.contains(n[c]))return!1;return!0}return this.each(("function"==typeof e?function(t,e){return function(){(e.apply(this,arguments)?u:s)(this,t)}}:e?function(t){return function(){u(this,t)}}:function(t){return function(){s(this,t)}})(n,e))}},"./node_modules/d3-selection/src/selection/clone.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/clone.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function o(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}n.r(e),e.default=function(t){return this.select(t?o:r)}},"./node_modules/d3-selection/src/selection/data.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/data.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js"),o=n(/*! ./enter */"./node_modules/d3-selection/src/selection/enter.js"),i=n(/*! ../constant */"./node_modules/d3-selection/src/constant.js"),u="$";function s(t,e,n,r,i,u){for(var s,c=0,a=e.length,l=u.length;c<l;++c)(s=e[c])?(s.__data__=u[c],r[c]=s):n[c]=new o.EnterNode(t,u[c]);for(;c<a;++c)(s=e[c])&&(i[c]=s)}function c(t,e,n,r,i,s,c){var a,l,d,f={},h=e.length,p=s.length,m=new Array(h);for(a=0;a<h;++a)(l=e[a])&&(m[a]=d=u+c.call(l,l.__data__,a,e),d in f?i[a]=l:f[d]=l);for(a=0;a<p;++a)(l=f[d=u+c.call(t,s[a],a,s)])?(r[a]=l,l.__data__=s[a],f[d]=null):n[a]=new o.EnterNode(t,s[a]);for(a=0;a<h;++a)(l=e[a])&&f[m[a]]===l&&(i[a]=l)}e.default=function(t,e){if(!t)return v=new Array(this.size()),h=-1,this.each(function(t){v[++h]=t}),v;var n=e?c:s,o=this._parents,u=this._groups;"function"!=typeof t&&(t=Object(i.default)(t));for(var a=u.length,l=new Array(a),d=new Array(a),f=new Array(a),h=0;h<a;++h){var p=o[h],m=u[h],y=m.length,v=t.call(p,p&&p.__data__,h,o),g=v.length,j=d[h]=new Array(g),b=l[h]=new Array(g);n(p,m,j,b,f[h]=new Array(y),v,e);for(var _,x,w=0,A=0;w<g;++w)if(_=j[w]){for(w>=A&&(A=w+1);!(x=b[A])&&++A<g;);_._next=x||null}}return(l=new r.Selection(l,o))._enter=d,l._exit=f,l}},"./node_modules/d3-selection/src/selection/datum.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/datum.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return arguments.length?this.property("__data__",t):this.node().__data__}},"./node_modules/d3-selection/src/selection/dispatch.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/dispatch.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../window */"./node_modules/d3-selection/src/window.js");function o(t,e,n){var o=Object(r.default)(t),i=o.CustomEvent;"function"==typeof i?i=new i(e,n):(i=o.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}e.default=function(t,e){return this.each(("function"==typeof e?function(t,e){return function(){return o(this,t,e.apply(this,arguments))}}:function(t,e){return function(){return o(this,t,e)}})(t,e))}},"./node_modules/d3-selection/src/selection/each.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/each.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var o,i=e[n],u=0,s=i.length;u<s;++u)(o=i[u])&&t.call(o,o.__data__,u,i);return this}},"./node_modules/d3-selection/src/selection/empty.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/empty.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){return!this.node()}},"./node_modules/d3-selection/src/selection/enter.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/enter.js ***!
\**********************************************************/
/*! exports provided: default, EnterNode */function(t,e,n){"use strict";n.r(e),n.d(e,"EnterNode",function(){return i});var r=n(/*! ./sparse */"./node_modules/d3-selection/src/selection/sparse.js"),o=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js");function i(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}e.default=function(){return new o.Selection(this._enter||this._groups.map(r.default),this._parents)},i.prototype={constructor:i,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}}},"./node_modules/d3-selection/src/selection/exit.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/exit.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./sparse */"./node_modules/d3-selection/src/selection/sparse.js"),o=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js");e.default=function(){return new o.Selection(this._exit||this._groups.map(r.default),this._parents)}},"./node_modules/d3-selection/src/selection/filter.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/filter.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js"),o=n(/*! ../matcher */"./node_modules/d3-selection/src/matcher.js");e.default=function(t){"function"!=typeof t&&(t=Object(o.default)(t));for(var e=this._groups,n=e.length,i=new Array(n),u=0;u<n;++u)for(var s,c=e[u],a=c.length,l=i[u]=[],d=0;d<a;++d)(s=c[d])&&t.call(s,s.__data__,d,c)&&l.push(s);return new r.Selection(i,this._parents)}},"./node_modules/d3-selection/src/selection/html.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/html.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){this.innerHTML=""}n.r(e),e.default=function(t){return arguments.length?this.each(null==t?r:("function"==typeof t?function(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML}},"./node_modules/d3-selection/src/selection/index.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/index.js ***!
\**********************************************************/
/*! exports provided: root, Selection, default */function(t,e,n){"use strict";n.r(e),n.d(e,"root",function(){return q}),n.d(e,"Selection",function(){return H});var r=n(/*! ./select */"./node_modules/d3-selection/src/selection/select.js"),o=n(/*! ./selectAll */"./node_modules/d3-selection/src/selection/selectAll.js"),i=n(/*! ./filter */"./node_modules/d3-selection/src/selection/filter.js"),u=n(/*! ./data */"./node_modules/d3-selection/src/selection/data.js"),s=n(/*! ./enter */"./node_modules/d3-selection/src/selection/enter.js"),c=n(/*! ./exit */"./node_modules/d3-selection/src/selection/exit.js"),a=n(/*! ./join */"./node_modules/d3-selection/src/selection/join.js"),l=n(/*! ./merge */"./node_modules/d3-selection/src/selection/merge.js"),d=n(/*! ./order */"./node_modules/d3-selection/src/selection/order.js"),f=n(/*! ./sort */"./node_modules/d3-selection/src/selection/sort.js"),h=n(/*! ./call */"./node_modules/d3-selection/src/selection/call.js"),p=n(/*! ./nodes */"./node_modules/d3-selection/src/selection/nodes.js"),m=n(/*! ./node */"./node_modules/d3-selection/src/selection/node.js"),y=n(/*! ./size */"./node_modules/d3-selection/src/selection/size.js"),v=n(/*! ./empty */"./node_modules/d3-selection/src/selection/empty.js"),g=n(/*! ./each */"./node_modules/d3-selection/src/selection/each.js"),j=n(/*! ./attr */"./node_modules/d3-selection/src/selection/attr.js"),b=n(/*! ./style */"./node_modules/d3-selection/src/selection/style.js"),_=n(/*! ./property */"./node_modules/d3-selection/src/selection/property.js"),x=n(/*! ./classed */"./node_modules/d3-selection/src/selection/classed.js"),w=n(/*! ./text */"./node_modules/d3-selection/src/selection/text.js"),A=n(/*! ./html */"./node_modules/d3-selection/src/selection/html.js"),O=n(/*! ./raise */"./node_modules/d3-selection/src/selection/raise.js"),k=n(/*! ./lower */"./node_modules/d3-selection/src/selection/lower.js"),S=n(/*! ./append */"./node_modules/d3-selection/src/selection/append.js"),C=n(/*! ./insert */"./node_modules/d3-selection/src/selection/insert.js"),B=n(/*! ./remove */"./node_modules/d3-selection/src/selection/remove.js"),F=n(/*! ./clone */"./node_modules/d3-selection/src/selection/clone.js"),N=n(/*! ./datum */"./node_modules/d3-selection/src/selection/datum.js"),z=n(/*! ./on */"./node_modules/d3-selection/src/selection/on.js"),T=n(/*! ./dispatch */"./node_modules/d3-selection/src/selection/dispatch.js"),q=[null];function H(t,e){this._groups=t,this._parents=e}function D(){return new H([[document.documentElement]],q)}H.prototype=D.prototype={constructor:H,select:r.default,selectAll:o.default,filter:i.default,data:u.default,enter:s.default,exit:c.default,join:a.default,merge:l.default,order:d.default,sort:f.default,call:h.default,nodes:p.default,node:m.default,size:y.default,empty:v.default,each:g.default,attr:j.default,style:b.default,property:_.default,classed:x.default,text:w.default,html:A.default,raise:O.default,lower:k.default,append:S.default,insert:C.default,remove:B.default,clone:F.default,datum:N.default,on:z.default,dispatch:T.default},e.default=D},"./node_modules/d3-selection/src/selection/insert.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/insert.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../creator */"./node_modules/d3-selection/src/creator.js"),o=n(/*! ../selector */"./node_modules/d3-selection/src/selector.js");function i(){return null}e.default=function(t,e){var n="function"==typeof t?t:Object(r.default)(t),u=null==e?i:"function"==typeof e?e:Object(o.default)(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),u.apply(this,arguments)||null)})}},"./node_modules/d3-selection/src/selection/join.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/join.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n){var r=this.enter(),o=this,i=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=e&&(o=e(o)),null==n?i.remove():n(i),r&&o?r.merge(o).order():o}},"./node_modules/d3-selection/src/selection/lower.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/lower.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}n.r(e),e.default=function(){return this.each(r)}},"./node_modules/d3-selection/src/selection/merge.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/merge.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js");e.default=function(t){for(var e=this._groups,n=t._groups,o=e.length,i=n.length,u=Math.min(o,i),s=new Array(o),c=0;c<u;++c)for(var a,l=e[c],d=n[c],f=l.length,h=s[c]=new Array(f),p=0;p<f;++p)(a=l[p]||d[p])&&(h[p]=a);for(;c<o;++c)s[c]=e[c];return new r.Selection(s,this._parents)}},"./node_modules/d3-selection/src/selection/node.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/node.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],o=0,i=r.length;o<i;++o){var u=r[o];if(u)return u}return null}},"./node_modules/d3-selection/src/selection/nodes.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/nodes.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){var t=new Array(this.size()),e=-1;return this.each(function(){t[++e]=this}),t}},"./node_modules/d3-selection/src/selection/on.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-selection/src/selection/on.js ***!
\*******************************************************/
/*! exports provided: event, default, customEvent */function(t,e,n){"use strict";n.r(e),n.d(e,"event",function(){return o}),n.d(e,"customEvent",function(){return a});var r={},o=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(r={mouseenter:"mouseover",mouseleave:"mouseout"}));function i(t,e,n){return t=u(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function u(t,e,n){return function(r){var i=o;o=r;try{t.call(this,this.__data__,e,n)}finally{o=i}}}function s(t){return function(){var e=this.__on;if(e){for(var n,r=0,o=-1,i=e.length;r<i;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++o]=n:this.removeEventListener(n.type,n.listener,n.capture);++o?e.length=o:delete this.__on}}}function c(t,e,n){var o=r.hasOwnProperty(t.type)?i:u;return function(r,i,u){var s,c=this.__on,a=o(e,i,u);if(c)for(var l=0,d=c.length;l<d;++l)if((s=c[l]).type===t.type&&s.name===t.name)return this.removeEventListener(s.type,s.listener,s.capture),this.addEventListener(s.type,s.listener=a,s.capture=n),void(s.value=e);this.addEventListener(t.type,a,n),s={type:t.type,name:t.name,value:e,listener:a,capture:n},c?c.push(s):this.__on=[s]}}function a(t,e,n,r){var i=o;t.sourceEvent=o,o=t;try{return e.apply(n,r)}finally{o=i}}e.default=function(t,e,n){var r,o,i=function(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),u=i.length;if(!(arguments.length<2)){for(a=e?c:s,null==n&&(n=!1),r=0;r<u;++r)this.each(a(i[r],e,n));return this}var a=this.node().__on;if(a)for(var l,d=0,f=a.length;d<f;++d)for(r=0,l=a[d];r<u;++r)if((o=i[r]).type===l.type&&o.name===l.name)return l.value}},"./node_modules/d3-selection/src/selection/order.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/order.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,o=t[e],i=o.length-1,u=o[i];--i>=0;)(r=o[i])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this}},"./node_modules/d3-selection/src/selection/property.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/property.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return arguments.length>1?this.each((null==e?function(t){return function(){delete this[t]}}:"function"==typeof e?function(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}:function(t,e){return function(){this[t]=e}})(t,e)):this.node()[t]}},"./node_modules/d3-selection/src/selection/raise.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/raise.js ***!
\**********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){this.nextSibling&&this.parentNode.appendChild(this)}n.r(e),e.default=function(){return this.each(r)}},"./node_modules/d3-selection/src/selection/remove.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/remove.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){var t=this.parentNode;t&&t.removeChild(this)}n.r(e),e.default=function(){return this.each(r)}},"./node_modules/d3-selection/src/selection/select.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/select.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js"),o=n(/*! ../selector */"./node_modules/d3-selection/src/selector.js");e.default=function(t){"function"!=typeof t&&(t=Object(o.default)(t));for(var e=this._groups,n=e.length,i=new Array(n),u=0;u<n;++u)for(var s,c,a=e[u],l=a.length,d=i[u]=new Array(l),f=0;f<l;++f)(s=a[f])&&(c=t.call(s,s.__data__,f,a))&&("__data__"in s&&(c.__data__=s.__data__),d[f]=c);return new r.Selection(i,this._parents)}},"./node_modules/d3-selection/src/selection/selectAll.js":
/*!**************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/selectAll.js ***!
\**************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js"),o=n(/*! ../selectorAll */"./node_modules/d3-selection/src/selectorAll.js");e.default=function(t){"function"!=typeof t&&(t=Object(o.default)(t));for(var e=this._groups,n=e.length,i=[],u=[],s=0;s<n;++s)for(var c,a=e[s],l=a.length,d=0;d<l;++d)(c=a[d])&&(i.push(t.call(c,c.__data__,d,a)),u.push(c));return new r.Selection(i,u)}},"./node_modules/d3-selection/src/selection/size.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/size.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){var t=0;return this.each(function(){++t}),t}},"./node_modules/d3-selection/src/selection/sort.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/sort.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-selection/src/selection/index.js");function o(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}e.default=function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=o);for(var n=this._groups,i=n.length,u=new Array(i),s=0;s<i;++s){for(var c,a=n[s],l=a.length,d=u[s]=new Array(l),f=0;f<l;++f)(c=a[f])&&(d[f]=c);d.sort(e)}return new r.Selection(u,this._parents).order()}},"./node_modules/d3-selection/src/selection/sparse.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/sparse.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return new Array(t.length)}},"./node_modules/d3-selection/src/selection/style.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/style.js ***!
\**********************************************************/
/*! exports provided: default, styleValue */function(t,e,n){"use strict";n.r(e),n.d(e,"styleValue",function(){return o});var r=n(/*! ../window */"./node_modules/d3-selection/src/window.js");function o(t,e){return t.style.getPropertyValue(e)||Object(r.default)(t).getComputedStyle(t,null).getPropertyValue(e)}e.default=function(t,e,n){return arguments.length>1?this.each((null==e?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof e?function(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}:function(t,e,n){return function(){this.style.setProperty(t,e,n)}})(t,e,null==n?"":n)):o(this.node(),t)}},"./node_modules/d3-selection/src/selection/text.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/text.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){this.textContent=""}n.r(e),e.default=function(t){return arguments.length?this.each(null==t?r:("function"==typeof t?function(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent}},"./node_modules/d3-selection/src/selector.js":
/*!***************************************************!*\
!*** ./node_modules/d3-selection/src/selector.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){}n.r(e),e.default=function(t){return null==t?r:function(){return this.querySelector(t)}}},"./node_modules/d3-selection/src/selectorAll.js":
/*!******************************************************!*\
!*** ./node_modules/d3-selection/src/selectorAll.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){return[]}n.r(e),e.default=function(t){return null==t?r:function(){return this.querySelectorAll(t)}}},"./node_modules/d3-selection/src/sourceEvent.js":
/*!******************************************************!*\
!*** ./node_modules/d3-selection/src/sourceEvent.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./selection/on */"./node_modules/d3-selection/src/selection/on.js");e.default=function(){for(var t,e=r.event;t=e.sourceEvent;)e=t;return e}},"./node_modules/d3-selection/src/touch.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/touch.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./sourceEvent */"./node_modules/d3-selection/src/sourceEvent.js"),o=n(/*! ./point */"./node_modules/d3-selection/src/point.js");e.default=function(t,e,n){arguments.length<3&&(n=e,e=Object(r.default)().changedTouches);for(var i,u=0,s=e?e.length:0;u<s;++u)if((i=e[u]).identifier===n)return Object(o.default)(t,i);return null}},"./node_modules/d3-selection/src/touches.js":
/*!**************************************************!*\
!*** ./node_modules/d3-selection/src/touches.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./sourceEvent */"./node_modules/d3-selection/src/sourceEvent.js"),o=n(/*! ./point */"./node_modules/d3-selection/src/point.js");e.default=function(t,e){null==e&&(e=Object(r.default)().touches);for(var n=0,i=e?e.length:0,u=new Array(i);n<i;++n)u[n]=Object(o.default)(t,e[n]);return u}},"./node_modules/d3-selection/src/window.js":
/*!*************************************************!*\
!*** ./node_modules/d3-selection/src/window.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}},"./node_modules/d3-shape/src/arc.js":
/*!******************************************!*\
!*** ./node_modules/d3-shape/src/arc.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-path */"./node_modules/d3-path/src/index.js"),o=n(/*! ./constant */"./node_modules/d3-shape/src/constant.js"),i=n(/*! ./math */"./node_modules/d3-shape/src/math.js");function u(t){return t.innerRadius}function s(t){return t.outerRadius}function c(t){return t.startAngle}function a(t){return t.endAngle}function l(t){return t&&t.padAngle}function d(t,e,n,r,o,u,s){var c=t-n,a=e-r,l=(s?u:-u)/Object(i.sqrt)(c*c+a*a),d=l*a,f=-l*c,h=t+d,p=e+f,m=n+d,y=r+f,v=(h+m)/2,g=(p+y)/2,j=m-h,b=y-p,_=j*j+b*b,x=o-u,w=h*y-m*p,A=(b<0?-1:1)*Object(i.sqrt)(Object(i.max)(0,x*x*_-w*w)),O=(w*b-j*A)/_,k=(-w*j-b*A)/_,S=(w*b+j*A)/_,C=(-w*j+b*A)/_,B=O-v,F=k-g,N=S-v,z=C-g;return B*B+F*F>N*N+z*z&&(O=S,k=C),{cx:O,cy:k,x01:-d,y01:-f,x11:O*(o/x-1),y11:k*(o/x-1)}}e.default=function(){var t=u,e=s,n=Object(o.default)(0),f=null,h=c,p=a,m=l,y=null;function v(){var o,u,s=+t.apply(this,arguments),c=+e.apply(this,arguments),a=h.apply(this,arguments)-i.halfPi,l=p.apply(this,arguments)-i.halfPi,v=Object(i.abs)(l-a),g=l>a;if(y||(y=o=Object(r.path)()),c<s&&(u=c,c=s,s=u),c>i.epsilon)if(v>i.tau-i.epsilon)y.moveTo(c*Object(i.cos)(a),c*Object(i.sin)(a)),y.arc(0,0,c,a,l,!g),s>i.epsilon&&(y.moveTo(s*Object(i.cos)(l),s*Object(i.sin)(l)),y.arc(0,0,s,l,a,g));else{var j,b,_=a,x=l,w=a,A=l,O=v,k=v,S=m.apply(this,arguments)/2,C=S>i.epsilon&&(f?+f.apply(this,arguments):Object(i.sqrt)(s*s+c*c)),B=Object(i.min)(Object(i.abs)(c-s)/2,+n.apply(this,arguments)),F=B,N=B;if(C>i.epsilon){var z=Object(i.asin)(C/s*Object(i.sin)(S)),T=Object(i.asin)(C/c*Object(i.sin)(S));(O-=2*z)>i.epsilon?(w+=z*=g?1:-1,A-=z):(O=0,w=A=(a+l)/2),(k-=2*T)>i.epsilon?(_+=T*=g?1:-1,x-=T):(k=0,_=x=(a+l)/2)}var q=c*Object(i.cos)(_),H=c*Object(i.sin)(_),D=s*Object(i.cos)(A),V=s*Object(i.sin)(A);if(B>i.epsilon){var X,Y=c*Object(i.cos)(x),Z=c*Object(i.sin)(x),G=s*Object(i.cos)(w),$=s*Object(i.sin)(w);if(v<=i.tau-i.epsilon&&(X=function(t,e,n,r,o,u,s,c){var a=n-t,l=r-e,d=s-o,f=c-u,h=f*a-d*l;if(!(h*h<i.epsilon))return[t+(h=(d*(e-u)-f*(t-o))/h)*a,e+h*l]}(q,H,G,$,Y,Z,D,V))){var E=q-X[0],Q=H-X[1],J=Y-X[0],M=Z-X[1],I=1/Object(i.sin)(Object(i.acos)((E*J+Q*M)/(Object(i.sqrt)(E*E+Q*Q)*Object(i.sqrt)(J*J+M*M)))/2),R=Object(i.sqrt)(X[0]*X[0]+X[1]*X[1]);F=Object(i.min)(B,(s-R)/(I-1)),N=Object(i.min)(B,(c-R)/(I+1))}}k>i.epsilon?N>i.epsilon?(j=d(G,$,q,H,c,N,g),b=d(Y,Z,D,V,c,N,g),y.moveTo(j.cx+j.x01,j.cy+j.y01),N<B?y.arc(j.cx,j.cy,N,Object(i.atan2)(j.y01,j.x01),Object(i.atan2)(b.y01,b.x01),!g):(y.arc(j.cx,j.cy,N,Object(i.atan2)(j.y01,j.x01),Object(i.atan2)(j.y11,j.x11),!g),y.arc(0,0,c,Object(i.atan2)(j.cy+j.y11,j.cx+j.x11),Object(i.atan2)(b.cy+b.y11,b.cx+b.x11),!g),y.arc(b.cx,b.cy,N,Object(i.atan2)(b.y11,b.x11),Object(i.atan2)(b.y01,b.x01),!g))):(y.moveTo(q,H),y.arc(0,0,c,_,x,!g)):y.moveTo(q,H),s>i.epsilon&&O>i.epsilon?F>i.epsilon?(j=d(D,V,Y,Z,s,-F,g),b=d(q,H,G,$,s,-F,g),y.lineTo(j.cx+j.x01,j.cy+j.y01),F<B?y.arc(j.cx,j.cy,F,Object(i.atan2)(j.y01,j.x01),Object(i.atan2)(b.y01,b.x01),!g):(y.arc(j.cx,j.cy,F,Object(i.atan2)(j.y01,j.x01),Object(i.atan2)(j.y11,j.x11),!g),y.arc(0,0,s,Object(i.atan2)(j.cy+j.y11,j.cx+j.x11),Object(i.atan2)(b.cy+b.y11,b.cx+b.x11),g),y.arc(b.cx,b.cy,F,Object(i.atan2)(b.y11,b.x11),Object(i.atan2)(b.y01,b.x01),!g))):y.arc(0,0,s,A,w,g):y.lineTo(D,V)}else y.moveTo(0,0);if(y.closePath(),o)return y=null,o+""||null}return v.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+h.apply(this,arguments)+ +p.apply(this,arguments))/2-i.pi/2;return[Object(i.cos)(r)*n,Object(i.sin)(r)*n]},v.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:Object(o.default)(+e),v):t},v.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Object(o.default)(+t),v):e},v.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:Object(o.default)(+t),v):n},v.padRadius=function(t){return arguments.length?(f=null==t?null:"function"==typeof t?t:Object(o.default)(+t),v):f},v.startAngle=function(t){return arguments.length?(h="function"==typeof t?t:Object(o.default)(+t),v):h},v.endAngle=function(t){return arguments.length?(p="function"==typeof t?t:Object(o.default)(+t),v):p},v.padAngle=function(t){return arguments.length?(m="function"==typeof t?t:Object(o.default)(+t),v):m},v.context=function(t){return arguments.length?(y=null==t?null:t,v):y},v}},"./node_modules/d3-shape/src/area.js":
/*!*******************************************!*\
!*** ./node_modules/d3-shape/src/area.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-path */"./node_modules/d3-path/src/index.js"),o=n(/*! ./constant */"./node_modules/d3-shape/src/constant.js"),i=n(/*! ./curve/linear */"./node_modules/d3-shape/src/curve/linear.js"),u=n(/*! ./line */"./node_modules/d3-shape/src/line.js"),s=n(/*! ./point */"./node_modules/d3-shape/src/point.js");e.default=function(){var t=s.x,e=null,n=Object(o.default)(0),c=s.y,a=Object(o.default)(!0),l=null,d=i.default,f=null;function h(o){var i,u,s,h,p,m=o.length,y=!1,v=new Array(m),g=new Array(m);for(null==l&&(f=d(p=Object(r.path)())),i=0;i<=m;++i){if(!(i<m&&a(h=o[i],i,o))===y)if(y=!y)u=i,f.areaStart(),f.lineStart();else{for(f.lineEnd(),f.lineStart(),s=i-1;s>=u;--s)f.point(v[s],g[s]);f.lineEnd(),f.areaEnd()}y&&(v[i]=+t(h,i,o),g[i]=+n(h,i,o),f.point(e?+e(h,i,o):v[i],c?+c(h,i,o):g[i]))}if(p)return f=null,p+""||null}function p(){return Object(u.default)().defined(a).curve(d).context(l)}return h.x=function(n){return arguments.length?(t="function"==typeof n?n:Object(o.default)(+n),e=null,h):t},h.x0=function(e){return arguments.length?(t="function"==typeof e?e:Object(o.default)(+e),h):t},h.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:Object(o.default)(+t),h):e},h.y=function(t){return arguments.length?(n="function"==typeof t?t:Object(o.default)(+t),c=null,h):n},h.y0=function(t){return arguments.length?(n="function"==typeof t?t:Object(o.default)(+t),h):n},h.y1=function(t){return arguments.length?(c=null==t?null:"function"==typeof t?t:Object(o.default)(+t),h):c},h.lineX0=h.lineY0=function(){return p().x(t).y(n)},h.lineY1=function(){return p().x(t).y(c)},h.lineX1=function(){return p().x(e).y(n)},h.defined=function(t){return arguments.length?(a="function"==typeof t?t:Object(o.default)(!!t),h):a},h.curve=function(t){return arguments.length?(d=t,null!=l&&(f=d(l)),h):d},h.context=function(t){return arguments.length?(null==t?l=f=null:f=d(l=t),h):l},h}},"./node_modules/d3-shape/src/areaRadial.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/areaRadial.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./curve/radial */"./node_modules/d3-shape/src/curve/radial.js"),o=n(/*! ./area */"./node_modules/d3-shape/src/area.js"),i=n(/*! ./lineRadial */"./node_modules/d3-shape/src/lineRadial.js");e.default=function(){var t=Object(o.default)().curve(r.curveRadialLinear),e=t.curve,n=t.lineX0,u=t.lineX1,s=t.lineY0,c=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Object(i.lineRadial)(n())},delete t.lineX0,t.lineEndAngle=function(){return Object(i.lineRadial)(u())},delete t.lineX1,t.lineInnerRadius=function(){return Object(i.lineRadial)(s())},delete t.lineY0,t.lineOuterRadius=function(){return Object(i.lineRadial)(c())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Object(r.default)(t)):e()._curve},t}},"./node_modules/d3-shape/src/array.js":
/*!********************************************!*\
!*** ./node_modules/d3-shape/src/array.js ***!
\********************************************/
/*! exports provided: slice */function(t,e,n){"use strict";n.r(e),n.d(e,"slice",function(){return r});var r=Array.prototype.slice},"./node_modules/d3-shape/src/constant.js":
/*!***********************************************!*\
!*** ./node_modules/d3-shape/src/constant.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3-shape/src/curve/basis.js":
/*!**************************************************!*\
!*** ./node_modules/d3-shape/src/curve/basis.js ***!
\**************************************************/
/*! exports provided: point, Basis, default */function(t,e,n){"use strict";function r(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function o(t){this._context=t}n.r(e),n.d(e,"point",function(){return r}),n.d(e,"Basis",function(){return o}),o.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:r(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:r(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.default=function(t){return new o(t)}},"./node_modules/d3-shape/src/curve/basisClosed.js":
/*!********************************************************!*\
!*** ./node_modules/d3-shape/src/curve/basisClosed.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../noop */"./node_modules/d3-shape/src/noop.js"),o=n(/*! ./basis */"./node_modules/d3-shape/src/curve/basis.js");function i(t){this._context=t}i.prototype={areaStart:r.default,areaEnd:r.default,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Object(o.point)(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.default=function(t){return new i(t)}},"./node_modules/d3-shape/src/curve/basisOpen.js":
/*!******************************************************!*\
!*** ./node_modules/d3-shape/src/curve/basisOpen.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./basis */"./node_modules/d3-shape/src/curve/basis.js");function o(t){this._context=t}o.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,o=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,o):this._context.moveTo(n,o);break;case 3:this._point=4;default:Object(r.point)(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.default=function(t){return new o(t)}},"./node_modules/d3-shape/src/curve/bundle.js":
/*!***************************************************!*\
!*** ./node_modules/d3-shape/src/curve/bundle.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./basis */"./node_modules/d3-shape/src/curve/basis.js");function o(t,e){this._basis=new r.Basis(t),this._beta=e}o.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,o=t[0],i=e[0],u=t[n]-o,s=e[n]-i,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(o+r*u),this._beta*e[c]+(1-this._beta)*(i+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}},e.default=function t(e){function n(t){return 1===e?new r.Basis(t):new o(t,e)}return n.beta=function(e){return t(+e)},n}(.85)},"./node_modules/d3-shape/src/curve/cardinal.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-shape/src/curve/cardinal.js ***!
\*****************************************************/
/*! exports provided: point, Cardinal, default */function(t,e,n){"use strict";function r(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function o(t,e){this._context=t,this._k=(1-e)/6}n.r(e),n.d(e,"point",function(){return r}),n.d(e,"Cardinal",function(){return o}),o.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:r(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:r(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.default=function t(e){function n(t){return new o(t,e)}return n.tension=function(e){return t(+e)},n}(0)},"./node_modules/d3-shape/src/curve/cardinalClosed.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-shape/src/curve/cardinalClosed.js ***!
\***********************************************************/
/*! exports provided: CardinalClosed, default */function(t,e,n){"use strict";n.r(e),n.d(e,"CardinalClosed",function(){return i});var r=n(/*! ../noop */"./node_modules/d3-shape/src/noop.js"),o=n(/*! ./cardinal */"./node_modules/d3-shape/src/curve/cardinal.js");function i(t,e){this._context=t,this._k=(1-e)/6}i.prototype={areaStart:r.default,areaEnd:r.default,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Object(o.point)(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.default=function t(e){function n(t){return new i(t,e)}return n.tension=function(e){return t(+e)},n}(0)},"./node_modules/d3-shape/src/curve/cardinalOpen.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-shape/src/curve/cardinalOpen.js ***!
\*********************************************************/
/*! exports provided: CardinalOpen, default */function(t,e,n){"use strict";n.r(e),n.d(e,"CardinalOpen",function(){return o});var r=n(/*! ./cardinal */"./node_modules/d3-shape/src/curve/cardinal.js");function o(t,e){this._context=t,this._k=(1-e)/6}o.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Object(r.point)(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.default=function t(e){function n(t){return new o(t,e)}return n.tension=function(e){return t(+e)},n}(0)},"./node_modules/d3-shape/src/curve/catmullRom.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-shape/src/curve/catmullRom.js ***!
\*******************************************************/
/*! exports provided: point, default */function(t,e,n){"use strict";n.r(e),n.d(e,"point",function(){return i});var r=n(/*! ../math */"./node_modules/d3-shape/src/math.js"),o=n(/*! ./cardinal */"./node_modules/d3-shape/src/curve/cardinal.js");function i(t,e,n){var o=t._x1,i=t._y1,u=t._x2,s=t._y2;if(t._l01_a>r.epsilon){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,a=3*t._l01_a*(t._l01_a+t._l12_a);o=(o*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/a,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/a}if(t._l23_a>r.epsilon){var l=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,d=3*t._l23_a*(t._l23_a+t._l12_a);u=(u*l+t._x1*t._l23_2a-e*t._l12_2a)/d,s=(s*l+t._y1*t._l23_2a-n*t._l12_2a)/d}t._context.bezierCurveTo(o,i,u,s,t._x2,t._y2)}function u(t,e){this._context=t,this._alpha=e}u.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:i(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.default=function t(e){function n(t){return e?new u(t,e):new o.Cardinal(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},"./node_modules/d3-shape/src/curve/catmullRomClosed.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-shape/src/curve/catmullRomClosed.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./cardinalClosed */"./node_modules/d3-shape/src/curve/cardinalClosed.js"),o=n(/*! ../noop */"./node_modules/d3-shape/src/noop.js"),i=n(/*! ./catmullRom */"./node_modules/d3-shape/src/curve/catmullRom.js");function u(t,e){this._context=t,this._alpha=e}u.prototype={areaStart:o.default,areaEnd:o.default,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Object(i.point)(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.default=function t(e){function n(t){return e?new u(t,e):new r.CardinalClosed(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},"./node_modules/d3-shape/src/curve/catmullRomOpen.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-shape/src/curve/catmullRomOpen.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./cardinalOpen */"./node_modules/d3-shape/src/curve/cardinalOpen.js"),o=n(/*! ./catmullRom */"./node_modules/d3-shape/src/curve/catmullRom.js");function i(t,e){this._context=t,this._alpha=e}i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Object(o.point)(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.default=function t(e){function n(t){return e?new i(t,e):new r.CardinalOpen(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},"./node_modules/d3-shape/src/curve/linear.js":
/*!***************************************************!*\
!*** ./node_modules/d3-shape/src/curve/linear.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t){this._context=t}n.r(e),r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},e.default=function(t){return new r(t)}},"./node_modules/d3-shape/src/curve/linearClosed.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-shape/src/curve/linearClosed.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../noop */"./node_modules/d3-shape/src/noop.js");function o(t){this._context=t}o.prototype={areaStart:r.default,areaEnd:r.default,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},e.default=function(t){return new o(t)}},"./node_modules/d3-shape/src/curve/monotone.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-shape/src/curve/monotone.js ***!
\*****************************************************/
/*! exports provided: monotoneX, monotoneY */function(t,e,n){"use strict";function r(t){return t<0?-1:1}function o(t,e,n){var o=t._x1-t._x0,i=e-t._x1,u=(t._y1-t._y0)/(o||i<0&&-0),s=(n-t._y1)/(i||o<0&&-0),c=(u*i+s*o)/(o+i);return(r(u)+r(s))*Math.min(Math.abs(u),Math.abs(s),.5*Math.abs(c))||0}function i(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function u(t,e,n){var r=t._x0,o=t._y0,i=t._x1,u=t._y1,s=(i-r)/3;t._context.bezierCurveTo(r+s,o+s*e,i-s,u-s*n,i,u)}function s(t){this._context=t}function c(t){this._context=new a(t)}function a(t){this._context=t}function l(t){return new s(t)}function d(t){return new c(t)}n.r(e),n.d(e,"monotoneX",function(){return l}),n.d(e,"monotoneY",function(){return d}),s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:u(this,this._t0,i(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,u(this,i(this,n=o(this,t,e)),n);break;default:u(this,this._t0,n=o(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(c.prototype=Object.create(s.prototype)).point=function(t,e){s.prototype.point.call(this,e,t)},a.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,o,i){this._context.bezierCurveTo(e,t,r,n,i,o)}}},"./node_modules/d3-shape/src/curve/natural.js":
/*!****************************************************!*\
!*** ./node_modules/d3-shape/src/curve/natural.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t){this._context=t}function o(t){var e,n,r=t.length-1,o=new Array(r),i=new Array(r),u=new Array(r);for(o[0]=0,i[0]=2,u[0]=t[0]+2*t[1],e=1;e<r-1;++e)o[e]=1,i[e]=4,u[e]=4*t[e]+2*t[e+1];for(o[r-1]=2,i[r-1]=7,u[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=o[e]/i[e-1],i[e]-=n,u[e]-=n*u[e-1];for(o[r-1]=u[r-1]/i[r-1],e=r-2;e>=0;--e)o[e]=(u[e]-o[e+1])/i[e];for(i[r-1]=(t[r]+o[r-1])/2,e=0;e<r-1;++e)i[e]=2*t[e+1]-o[e+1];return[o,i]}n.r(e),r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=o(t),i=o(e),u=0,s=1;s<n;++u,++s)this._context.bezierCurveTo(r[0][u],i[0][u],r[1][u],i[1][u],t[s],e[s]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},e.default=function(t){return new r(t)}},"./node_modules/d3-shape/src/curve/radial.js":
/*!***************************************************!*\
!*** ./node_modules/d3-shape/src/curve/radial.js ***!
\***************************************************/
/*! exports provided: curveRadialLinear, default */function(t,e,n){"use strict";n.r(e),n.d(e,"curveRadialLinear",function(){return r}),n.d(e,"default",function(){return i});var r=i(n(/*! ./linear */"./node_modules/d3-shape/src/curve/linear.js").default);function o(t){this._curve=t}function i(t){function e(e){return new o(t(e))}return e._curve=t,e}o.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}}},"./node_modules/d3-shape/src/curve/step.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/curve/step.js ***!
\*************************************************/
/*! exports provided: default, stepBefore, stepAfter */function(t,e,n){"use strict";function r(t,e){this._context=t,this._t=e}function o(t){return new r(t,0)}function i(t){return new r(t,1)}n.r(e),n.d(e,"stepBefore",function(){return o}),n.d(e,"stepAfter",function(){return i}),r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},e.default=function(t){return new r(t,.5)}},"./node_modules/d3-shape/src/descending.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/descending.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}},"./node_modules/d3-shape/src/identity.js":
/*!***********************************************!*\
!*** ./node_modules/d3-shape/src/identity.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return t}},"./node_modules/d3-shape/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-shape/src/index.js ***!
\********************************************/
/*! exports provided: arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./arc */"./node_modules/d3-shape/src/arc.js");n.d(e,"arc",function(){return r.default});var o=n(/*! ./area */"./node_modules/d3-shape/src/area.js");n.d(e,"area",function(){return o.default});var i=n(/*! ./line */"./node_modules/d3-shape/src/line.js");n.d(e,"line",function(){return i.default});var u=n(/*! ./pie */"./node_modules/d3-shape/src/pie.js");n.d(e,"pie",function(){return u.default});var s=n(/*! ./areaRadial */"./node_modules/d3-shape/src/areaRadial.js");n.d(e,"areaRadial",function(){return s.default}),n.d(e,"radialArea",function(){return s.default});var c=n(/*! ./lineRadial */"./node_modules/d3-shape/src/lineRadial.js");n.d(e,"lineRadial",function(){return c.default}),n.d(e,"radialLine",function(){return c.default});var a=n(/*! ./pointRadial */"./node_modules/d3-shape/src/pointRadial.js");n.d(e,"pointRadial",function(){return a.default});var l=n(/*! ./link/index */"./node_modules/d3-shape/src/link/index.js");n.d(e,"linkHorizontal",function(){return l.linkHorizontal}),n.d(e,"linkVertical",function(){return l.linkVertical}),n.d(e,"linkRadial",function(){return l.linkRadial});var d=n(/*! ./symbol */"./node_modules/d3-shape/src/symbol.js");n.d(e,"symbol",function(){return d.default}),n.d(e,"symbols",function(){return d.symbols});var f=n(/*! ./symbol/circle */"./node_modules/d3-shape/src/symbol/circle.js");n.d(e,"symbolCircle",function(){return f.default});var h=n(/*! ./symbol/cross */"./node_modules/d3-shape/src/symbol/cross.js");n.d(e,"symbolCross",function(){return h.default});var p=n(/*! ./symbol/diamond */"./node_modules/d3-shape/src/symbol/diamond.js");n.d(e,"symbolDiamond",function(){return p.default});var m=n(/*! ./symbol/square */"./node_modules/d3-shape/src/symbol/square.js");n.d(e,"symbolSquare",function(){return m.default});var y=n(/*! ./symbol/star */"./node_modules/d3-shape/src/symbol/star.js");n.d(e,"symbolStar",function(){return y.default});var v=n(/*! ./symbol/triangle */"./node_modules/d3-shape/src/symbol/triangle.js");n.d(e,"symbolTriangle",function(){return v.default});var g=n(/*! ./symbol/wye */"./node_modules/d3-shape/src/symbol/wye.js");n.d(e,"symbolWye",function(){return g.default});var j=n(/*! ./curve/basisClosed */"./node_modules/d3-shape/src/curve/basisClosed.js");n.d(e,"curveBasisClosed",function(){return j.default});var b=n(/*! ./curve/basisOpen */"./node_modules/d3-shape/src/curve/basisOpen.js");n.d(e,"curveBasisOpen",function(){return b.default});var _=n(/*! ./curve/basis */"./node_modules/d3-shape/src/curve/basis.js");n.d(e,"curveBasis",function(){return _.default});var x=n(/*! ./curve/bundle */"./node_modules/d3-shape/src/curve/bundle.js");n.d(e,"curveBundle",function(){return x.default});var w=n(/*! ./curve/cardinalClosed */"./node_modules/d3-shape/src/curve/cardinalClosed.js");n.d(e,"curveCardinalClosed",function(){return w.default});var A=n(/*! ./curve/cardinalOpen */"./node_modules/d3-shape/src/curve/cardinalOpen.js");n.d(e,"curveCardinalOpen",function(){return A.default});var O=n(/*! ./curve/cardinal */"./node_modules/d3-shape/src/curve/cardinal.js");n.d(e,"curveCardinal",function(){return O.default});var k=n(/*! ./curve/catmullRomClosed */"./node_modules/d3-shape/src/curve/catmullRomClosed.js");n.d(e,"curveCatmullRomClosed",function(){return k.default});var S=n(/*! ./curve/catmullRomOpen */"./node_modules/d3-shape/src/curve/catmullRomOpen.js");n.d(e,"curveCatmullRomOpen",function(){return S.default});var C=n(/*! ./curve/catmullRom */"./node_modules/d3-shape/src/curve/catmullRom.js");n.d(e,"curveCatmullRom",function(){return C.default});var B=n(/*! ./curve/linearClosed */"./node_modules/d3-shape/src/curve/linearClosed.js");n.d(e,"curveLinearClosed",function(){return B.default});var F=n(/*! ./curve/linear */"./node_modules/d3-shape/src/curve/linear.js");n.d(e,"curveLinear",function(){return F.default});var N=n(/*! ./curve/monotone */"./node_modules/d3-shape/src/curve/monotone.js");n.d(e,"curveMonotoneX",function(){return N.monotoneX}),n.d(e,"curveMonotoneY",function(){return N.monotoneY});var z=n(/*! ./curve/natural */"./node_modules/d3-shape/src/curve/natural.js");n.d(e,"curveNatural",function(){return z.default});var T=n(/*! ./curve/step */"./node_modules/d3-shape/src/curve/step.js");n.d(e,"curveStep",function(){return T.default}),n.d(e,"curveStepAfter",function(){return T.stepAfter}),n.d(e,"curveStepBefore",function(){return T.stepBefore});var q=n(/*! ./stack */"./node_modules/d3-shape/src/stack.js");n.d(e,"stack",function(){return q.default});var H=n(/*! ./offset/expand */"./node_modules/d3-shape/src/offset/expand.js");n.d(e,"stackOffsetExpand",function(){return H.default});var D=n(/*! ./offset/diverging */"./node_modules/d3-shape/src/offset/diverging.js");n.d(e,"stackOffsetDiverging",function(){return D.default});var V=n(/*! ./offset/none */"./node_modules/d3-shape/src/offset/none.js");n.d(e,"stackOffsetNone",function(){return V.default});var X=n(/*! ./offset/silhouette */"./node_modules/d3-shape/src/offset/silhouette.js");n.d(e,"stackOffsetSilhouette",function(){return X.default});var Y=n(/*! ./offset/wiggle */"./node_modules/d3-shape/src/offset/wiggle.js");n.d(e,"stackOffsetWiggle",function(){return Y.default});var Z=n(/*! ./order/appearance */"./node_modules/d3-shape/src/order/appearance.js");n.d(e,"stackOrderAppearance",function(){return Z.default});var G=n(/*! ./order/ascending */"./node_modules/d3-shape/src/order/ascending.js");n.d(e,"stackOrderAscending",function(){return G.default});var $=n(/*! ./order/descending */"./node_modules/d3-shape/src/order/descending.js");n.d(e,"stackOrderDescending",function(){return $.default});var E=n(/*! ./order/insideOut */"./node_modules/d3-shape/src/order/insideOut.js");n.d(e,"stackOrderInsideOut",function(){return E.default});var Q=n(/*! ./order/none */"./node_modules/d3-shape/src/order/none.js");n.d(e,"stackOrderNone",function(){return Q.default});var J=n(/*! ./order/reverse */"./node_modules/d3-shape/src/order/reverse.js");n.d(e,"stackOrderReverse",function(){return J.default})},"./node_modules/d3-shape/src/line.js":
/*!*******************************************!*\
!*** ./node_modules/d3-shape/src/line.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-path */"./node_modules/d3-path/src/index.js"),o=n(/*! ./constant */"./node_modules/d3-shape/src/constant.js"),i=n(/*! ./curve/linear */"./node_modules/d3-shape/src/curve/linear.js"),u=n(/*! ./point */"./node_modules/d3-shape/src/point.js");e.default=function(){var t=u.x,e=u.y,n=Object(o.default)(!0),s=null,c=i.default,a=null;function l(o){var i,u,l,d=o.length,f=!1;for(null==s&&(a=c(l=Object(r.path)())),i=0;i<=d;++i)!(i<d&&n(u=o[i],i,o))===f&&((f=!f)?a.lineStart():a.lineEnd()),f&&a.point(+t(u,i,o),+e(u,i,o));if(l)return a=null,l+""||null}return l.x=function(e){return arguments.length?(t="function"==typeof e?e:Object(o.default)(+e),l):t},l.y=function(t){return arguments.length?(e="function"==typeof t?t:Object(o.default)(+t),l):e},l.defined=function(t){return arguments.length?(n="function"==typeof t?t:Object(o.default)(!!t),l):n},l.curve=function(t){return arguments.length?(c=t,null!=s&&(a=c(s)),l):c},l.context=function(t){return arguments.length?(null==t?s=a=null:a=c(s=t),l):s},l}},"./node_modules/d3-shape/src/lineRadial.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/lineRadial.js ***!
\*************************************************/
/*! exports provided: lineRadial, default */function(t,e,n){"use strict";n.r(e),n.d(e,"lineRadial",function(){return i});var r=n(/*! ./curve/radial */"./node_modules/d3-shape/src/curve/radial.js"),o=n(/*! ./line */"./node_modules/d3-shape/src/line.js");function i(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Object(r.default)(t)):e()._curve},t}e.default=function(){return i(Object(o.default)().curve(r.curveRadialLinear))}},"./node_modules/d3-shape/src/link/index.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/link/index.js ***!
\*************************************************/
/*! exports provided: linkHorizontal, linkVertical, linkRadial */function(t,e,n){"use strict";n.r(e),n.d(e,"linkHorizontal",function(){return p}),n.d(e,"linkVertical",function(){return m}),n.d(e,"linkRadial",function(){return y});var r=n(/*! d3-path */"./node_modules/d3-path/src/index.js"),o=n(/*! ../array */"./node_modules/d3-shape/src/array.js"),i=n(/*! ../constant */"./node_modules/d3-shape/src/constant.js"),u=n(/*! ../point */"./node_modules/d3-shape/src/point.js"),s=n(/*! ../pointRadial */"./node_modules/d3-shape/src/pointRadial.js");function c(t){return t.source}function a(t){return t.target}function l(t){var e=c,n=a,s=u.x,l=u.y,d=null;function f(){var i,u=o.slice.call(arguments),c=e.apply(this,u),a=n.apply(this,u);if(d||(d=i=Object(r.path)()),t(d,+s.apply(this,(u[0]=c,u)),+l.apply(this,u),+s.apply(this,(u[0]=a,u)),+l.apply(this,u)),i)return d=null,i+""||null}return f.source=function(t){return arguments.length?(e=t,f):e},f.target=function(t){return arguments.length?(n=t,f):n},f.x=function(t){return arguments.length?(s="function"==typeof t?t:Object(i.default)(+t),f):s},f.y=function(t){return arguments.length?(l="function"==typeof t?t:Object(i.default)(+t),f):l},f.context=function(t){return arguments.length?(d=null==t?null:t,f):d},f}function d(t,e,n,r,o){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,o,r,o)}function f(t,e,n,r,o){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+o)/2,r,n,r,o)}function h(t,e,n,r,o){var i=Object(s.default)(e,n),u=Object(s.default)(e,n=(n+o)/2),c=Object(s.default)(r,n),a=Object(s.default)(r,o);t.moveTo(i[0],i[1]),t.bezierCurveTo(u[0],u[1],c[0],c[1],a[0],a[1])}function p(){return l(d)}function m(){return l(f)}function y(){var t=l(h);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}},"./node_modules/d3-shape/src/math.js":
/*!*******************************************!*\
!*** ./node_modules/d3-shape/src/math.js ***!
\*******************************************/
/*! exports provided: abs, atan2, cos, max, min, sin, sqrt, epsilon, pi, halfPi, tau, acos, asin */function(t,e,n){"use strict";n.r(e),n.d(e,"abs",function(){return r}),n.d(e,"atan2",function(){return o}),n.d(e,"cos",function(){return i}),n.d(e,"max",function(){return u}),n.d(e,"min",function(){return s}),n.d(e,"sin",function(){return c}),n.d(e,"sqrt",function(){return a}),n.d(e,"epsilon",function(){return l}),n.d(e,"pi",function(){return d}),n.d(e,"halfPi",function(){return f}),n.d(e,"tau",function(){return h}),n.d(e,"acos",function(){return p}),n.d(e,"asin",function(){return m});var r=Math.abs,o=Math.atan2,i=Math.cos,u=Math.max,s=Math.min,c=Math.sin,a=Math.sqrt,l=1e-12,d=Math.PI,f=d/2,h=2*d;function p(t){return t>1?0:t<-1?d:Math.acos(t)}function m(t){return t>=1?f:t<=-1?-f:Math.asin(t)}},"./node_modules/d3-shape/src/noop.js":
/*!*******************************************!*\
!*** ./node_modules/d3-shape/src/noop.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){}},"./node_modules/d3-shape/src/offset/diverging.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-shape/src/offset/diverging.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){if((s=t.length)>1)for(var n,r,o,i,u,s,c=0,a=t[e[0]].length;c<a;++c)for(i=u=0,n=0;n<s;++n)(o=(r=t[e[n]][c])[1]-r[0])>=0?(r[0]=i,r[1]=i+=o):o<0?(r[1]=u,r[0]=u+=o):r[0]=i}},"./node_modules/d3-shape/src/offset/expand.js":
/*!****************************************************!*\
!*** ./node_modules/d3-shape/src/offset/expand.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./none */"./node_modules/d3-shape/src/offset/none.js");e.default=function(t,e){if((o=t.length)>0){for(var n,o,i,u=0,s=t[0].length;u<s;++u){for(i=n=0;n<o;++n)i+=t[n][u][1]||0;if(i)for(n=0;n<o;++n)t[n][u][1]/=i}Object(r.default)(t,e)}}},"./node_modules/d3-shape/src/offset/none.js":
/*!**************************************************!*\
!*** ./node_modules/d3-shape/src/offset/none.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){if((o=t.length)>1)for(var n,r,o,i=1,u=t[e[0]],s=u.length;i<o;++i)for(r=u,u=t[e[i]],n=0;n<s;++n)u[n][1]+=u[n][0]=isNaN(r[n][1])?r[n][0]:r[n][1]}},"./node_modules/d3-shape/src/offset/silhouette.js":
/*!********************************************************!*\
!*** ./node_modules/d3-shape/src/offset/silhouette.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./none */"./node_modules/d3-shape/src/offset/none.js");e.default=function(t,e){if((n=t.length)>0){for(var n,o=0,i=t[e[0]],u=i.length;o<u;++o){for(var s=0,c=0;s<n;++s)c+=t[s][o][1]||0;i[o][1]+=i[o][0]=-c/2}Object(r.default)(t,e)}}},"./node_modules/d3-shape/src/offset/wiggle.js":
/*!****************************************************!*\
!*** ./node_modules/d3-shape/src/offset/wiggle.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./none */"./node_modules/d3-shape/src/offset/none.js");e.default=function(t,e){if((i=t.length)>0&&(o=(n=t[e[0]]).length)>0){for(var n,o,i,u=0,s=1;s<o;++s){for(var c=0,a=0,l=0;c<i;++c){for(var d=t[e[c]],f=d[s][1]||0,h=(f-(d[s-1][1]||0))/2,p=0;p<c;++p){var m=t[e[p]];h+=(m[s][1]||0)-(m[s-1][1]||0)}a+=f,l+=h*f}n[s-1][1]+=n[s-1][0]=u,a&&(u-=l/a)}n[s-1][1]+=n[s-1][0]=u,Object(r.default)(t,e)}}},"./node_modules/d3-shape/src/order/appearance.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-shape/src/order/appearance.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./none */"./node_modules/d3-shape/src/order/none.js");function o(t){for(var e,n=-1,r=0,o=t.length,i=-1/0;++n<o;)(e=+t[n][1])>i&&(i=e,r=n);return r}e.default=function(t){var e=t.map(o);return Object(r.default)(t).sort(function(t,n){return e[t]-e[n]})}},"./node_modules/d3-shape/src/order/ascending.js":
/*!******************************************************!*\
!*** ./node_modules/d3-shape/src/order/ascending.js ***!
\******************************************************/
/*! exports provided: default, sum */function(t,e,n){"use strict";n.r(e),n.d(e,"sum",function(){return o});var r=n(/*! ./none */"./node_modules/d3-shape/src/order/none.js");function o(t){for(var e,n=0,r=-1,o=t.length;++r<o;)(e=+t[r][1])&&(n+=e);return n}e.default=function(t){var e=t.map(o);return Object(r.default)(t).sort(function(t,n){return e[t]-e[n]})}},"./node_modules/d3-shape/src/order/descending.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-shape/src/order/descending.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./ascending */"./node_modules/d3-shape/src/order/ascending.js");e.default=function(t){return Object(r.default)(t).reverse()}},"./node_modules/d3-shape/src/order/insideOut.js":
/*!******************************************************!*\
!*** ./node_modules/d3-shape/src/order/insideOut.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./appearance */"./node_modules/d3-shape/src/order/appearance.js"),o=n(/*! ./ascending */"./node_modules/d3-shape/src/order/ascending.js");e.default=function(t){var e,n,i=t.length,u=t.map(o.sum),s=Object(r.default)(t),c=0,a=0,l=[],d=[];for(e=0;e<i;++e)n=s[e],c<a?(c+=u[n],l.push(n)):(a+=u[n],d.push(n));return d.reverse().concat(l)}},"./node_modules/d3-shape/src/order/none.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/order/none.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}},"./node_modules/d3-shape/src/order/reverse.js":
/*!****************************************************!*\
!*** ./node_modules/d3-shape/src/order/reverse.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./none */"./node_modules/d3-shape/src/order/none.js");e.default=function(t){return Object(r.default)(t).reverse()}},"./node_modules/d3-shape/src/pie.js":
/*!******************************************!*\
!*** ./node_modules/d3-shape/src/pie.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./constant */"./node_modules/d3-shape/src/constant.js"),o=n(/*! ./descending */"./node_modules/d3-shape/src/descending.js"),i=n(/*! ./identity */"./node_modules/d3-shape/src/identity.js"),u=n(/*! ./math */"./node_modules/d3-shape/src/math.js");e.default=function(){var t=i.default,e=o.default,n=null,s=Object(r.default)(0),c=Object(r.default)(u.tau),a=Object(r.default)(0);function l(r){var o,i,l,d,f,h=r.length,p=0,m=new Array(h),y=new Array(h),v=+s.apply(this,arguments),g=Math.min(u.tau,Math.max(-u.tau,c.apply(this,arguments)-v)),j=Math.min(Math.abs(g)/h,a.apply(this,arguments)),b=j*(g<0?-1:1);for(o=0;o<h;++o)(f=y[m[o]=o]=+t(r[o],o,r))>0&&(p+=f);for(null!=e?m.sort(function(t,n){return e(y[t],y[n])}):null!=n&&m.sort(function(t,e){return n(r[t],r[e])}),o=0,l=p?(g-h*b)/p:0;o<h;++o,v=d)i=m[o],d=v+((f=y[i])>0?f*l:0)+b,y[i]={data:r[i],index:o,value:f,startAngle:v,endAngle:d,padAngle:j};return y}return l.value=function(e){return arguments.length?(t="function"==typeof e?e:Object(r.default)(+e),l):t},l.sortValues=function(t){return arguments.length?(e=t,n=null,l):e},l.sort=function(t){return arguments.length?(n=t,e=null,l):n},l.startAngle=function(t){return arguments.length?(s="function"==typeof t?t:Object(r.default)(+t),l):s},l.endAngle=function(t){return arguments.length?(c="function"==typeof t?t:Object(r.default)(+t),l):c},l.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Object(r.default)(+t),l):a},l}},"./node_modules/d3-shape/src/point.js":
/*!********************************************!*\
!*** ./node_modules/d3-shape/src/point.js ***!
\********************************************/
/*! exports provided: x, y */function(t,e,n){"use strict";function r(t){return t[0]}function o(t){return t[1]}n.r(e),n.d(e,"x",function(){return r}),n.d(e,"y",function(){return o})},"./node_modules/d3-shape/src/pointRadial.js":
/*!**************************************************!*\
!*** ./node_modules/d3-shape/src/pointRadial.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}},"./node_modules/d3-shape/src/stack.js":
/*!********************************************!*\
!*** ./node_modules/d3-shape/src/stack.js ***!
\********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./array */"./node_modules/d3-shape/src/array.js"),o=n(/*! ./constant */"./node_modules/d3-shape/src/constant.js"),i=n(/*! ./offset/none */"./node_modules/d3-shape/src/offset/none.js"),u=n(/*! ./order/none */"./node_modules/d3-shape/src/order/none.js");function s(t,e){return t[e]}e.default=function(){var t=Object(o.default)([]),e=u.default,n=i.default,c=s;function a(r){var o,i,u=t.apply(this,arguments),s=r.length,a=u.length,l=new Array(a);for(o=0;o<a;++o){for(var d,f=u[o],h=l[o]=new Array(s),p=0;p<s;++p)h[p]=d=[0,+c(r[p],f,p,r)],d.data=r[p];h.key=f}for(o=0,i=e(l);o<a;++o)l[i[o]].index=o;return n(l,i),l}return a.keys=function(e){return arguments.length?(t="function"==typeof e?e:Object(o.default)(r.slice.call(e)),a):t},a.value=function(t){return arguments.length?(c="function"==typeof t?t:Object(o.default)(+t),a):c},a.order=function(t){return arguments.length?(e=null==t?u.default:"function"==typeof t?t:Object(o.default)(r.slice.call(t)),a):e},a.offset=function(t){return arguments.length?(n=null==t?i.default:t,a):n},a}},"./node_modules/d3-shape/src/symbol.js":
/*!*********************************************!*\
!*** ./node_modules/d3-shape/src/symbol.js ***!
\*********************************************/
/*! exports provided: symbols, default */function(t,e,n){"use strict";n.r(e),n.d(e,"symbols",function(){return f});var r=n(/*! d3-path */"./node_modules/d3-path/src/index.js"),o=n(/*! ./symbol/circle */"./node_modules/d3-shape/src/symbol/circle.js"),i=n(/*! ./symbol/cross */"./node_modules/d3-shape/src/symbol/cross.js"),u=n(/*! ./symbol/diamond */"./node_modules/d3-shape/src/symbol/diamond.js"),s=n(/*! ./symbol/star */"./node_modules/d3-shape/src/symbol/star.js"),c=n(/*! ./symbol/square */"./node_modules/d3-shape/src/symbol/square.js"),a=n(/*! ./symbol/triangle */"./node_modules/d3-shape/src/symbol/triangle.js"),l=n(/*! ./symbol/wye */"./node_modules/d3-shape/src/symbol/wye.js"),d=n(/*! ./constant */"./node_modules/d3-shape/src/constant.js"),f=[o.default,i.default,u.default,c.default,s.default,a.default,l.default];e.default=function(){var t=Object(d.default)(o.default),e=Object(d.default)(64),n=null;function i(){var o;if(n||(n=o=Object(r.path)()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),o)return n=null,o+""||null}return i.type=function(e){return arguments.length?(t="function"==typeof e?e:Object(d.default)(e),i):t},i.size=function(t){return arguments.length?(e="function"==typeof t?t:Object(d.default)(+t),i):e},i.context=function(t){return arguments.length?(n=null==t?null:t,i):n},i}},"./node_modules/d3-shape/src/symbol/circle.js":
/*!****************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/circle.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../math */"./node_modules/d3-shape/src/math.js");e.default={draw:function(t,e){var n=Math.sqrt(e/r.pi);t.moveTo(n,0),t.arc(0,0,n,0,r.tau)}}},"./node_modules/d3-shape/src/symbol/cross.js":
/*!***************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/cross.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}}},"./node_modules/d3-shape/src/symbol/diamond.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/diamond.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=Math.sqrt(1/3),o=2*r;e.default={draw:function(t,e){var n=Math.sqrt(e/o),i=n*r;t.moveTo(0,-n),t.lineTo(i,0),t.lineTo(0,n),t.lineTo(-i,0),t.closePath()}}},"./node_modules/d3-shape/src/symbol/square.js":
/*!****************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/square.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}}},"./node_modules/d3-shape/src/symbol/star.js":
/*!**************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/star.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../math */"./node_modules/d3-shape/src/math.js"),o=Math.sin(r.pi/10)/Math.sin(7*r.pi/10),i=Math.sin(r.tau/10)*o,u=-Math.cos(r.tau/10)*o;e.default={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),o=i*n,s=u*n;t.moveTo(0,-n),t.lineTo(o,s);for(var c=1;c<5;++c){var a=r.tau*c/5,l=Math.cos(a),d=Math.sin(a);t.lineTo(d*n,-l*n),t.lineTo(l*o-d*s,d*o+l*s)}t.closePath()}}},"./node_modules/d3-shape/src/symbol/triangle.js":
/*!******************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/triangle.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=Math.sqrt(3);e.default={draw:function(t,e){var n=-Math.sqrt(e/(3*r));t.moveTo(0,2*n),t.lineTo(-r*n,-n),t.lineTo(r*n,-n),t.closePath()}}},"./node_modules/d3-shape/src/symbol/wye.js":
/*!*************************************************!*\
!*** ./node_modules/d3-shape/src/symbol/wye.js ***!
\*************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=-.5,o=Math.sqrt(3)/2,i=1/Math.sqrt(12),u=3*(i/2+1);e.default={draw:function(t,e){var n=Math.sqrt(e/u),s=n/2,c=n*i,a=s,l=n*i+n,d=-a,f=l;t.moveTo(s,c),t.lineTo(a,l),t.lineTo(d,f),t.lineTo(r*s-o*c,o*s+r*c),t.lineTo(r*a-o*l,o*a+r*l),t.lineTo(r*d-o*f,o*d+r*f),t.lineTo(r*s+o*c,r*c-o*s),t.lineTo(r*a+o*l,r*l-o*a),t.lineTo(r*d+o*f,r*f-o*d),t.closePath()}}},"./node_modules/d3-timer/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-timer/src/index.js ***!
\********************************************/
/*! exports provided: now, timer, timerFlush, timeout, interval */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./timer */"./node_modules/d3-timer/src/timer.js");n.d(e,"now",function(){return r.now}),n.d(e,"timer",function(){return r.timer}),n.d(e,"timerFlush",function(){return r.timerFlush});var o=n(/*! ./timeout */"./node_modules/d3-timer/src/timeout.js");n.d(e,"timeout",function(){return o.default});var i=n(/*! ./interval */"./node_modules/d3-timer/src/interval.js");n.d(e,"interval",function(){return i.default})},"./node_modules/d3-timer/src/interval.js":
/*!***********************************************!*\
!*** ./node_modules/d3-timer/src/interval.js ***!
\***********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./timer */"./node_modules/d3-timer/src/timer.js");e.default=function(t,e,n){var o=new r.Timer,i=e;return null==e?(o.restart(t,e,n),o):(e=+e,n=null==n?Object(r.now)():+n,o.restart(function r(u){u+=i,o.restart(r,i+=e,n),t(u)},e,n),o)}},"./node_modules/d3-timer/src/timeout.js":
/*!**********************************************!*\
!*** ./node_modules/d3-timer/src/timeout.js ***!
\**********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./timer */"./node_modules/d3-timer/src/timer.js");e.default=function(t,e,n){var o=new r.Timer;return e=null==e?0:+e,o.restart(function(n){o.stop(),t(n+e)},e,n),o}},"./node_modules/d3-timer/src/timer.js":
/*!********************************************!*\
!*** ./node_modules/d3-timer/src/timer.js ***!
\********************************************/
/*! exports provided: now, Timer, timer, timerFlush */function(t,e,n){"use strict";n.r(e),n.d(e,"now",function(){return p}),n.d(e,"Timer",function(){return y}),n.d(e,"timer",function(){return v}),n.d(e,"timerFlush",function(){return g});var r,o,i=0,u=0,s=0,c=1e3,a=0,l=0,d=0,f="object"==typeof performance&&performance.now?performance:Date,h="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function p(){return l||(h(m),l=f.now()+d)}function m(){l=0}function y(){this._call=this._time=this._next=null}function v(t,e,n){var r=new y;return r.restart(t,e,n),r}function g(){p(),++i;for(var t,e=r;e;)(t=l-e._time)>=0&&e._call.call(null,t),e=e._next;--i}function j(){l=(a=f.now())+d,i=u=0;try{g()}finally{i=0,function(){var t,e,n=r,i=1/0;for(;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:r=e);o=t,_(i)}(),l=0}}function b(){var t=f.now(),e=t-a;e>c&&(d-=e,a=t)}function _(t){i||(u&&(u=clearTimeout(u)),t-l>24?(t<1/0&&(u=setTimeout(j,t-f.now()-d)),s&&(s=clearInterval(s))):(s||(a=f.now(),s=setInterval(b,c)),i=1,h(j)))}y.prototype=v.prototype={constructor:y,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?p():+n)+(null==e?0:+e),this._next||o===this||(o?o._next=this:r=this,o=this),this._call=t,this._time=n,_()},stop:function(){this._call&&(this._call=null,this._time=1/0,_())}}},"./node_modules/d3-transition/src/active.js":
/*!**************************************************!*\
!*** ./node_modules/d3-transition/src/active.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./transition/index */"./node_modules/d3-transition/src/transition/index.js"),o=n(/*! ./transition/schedule */"./node_modules/d3-transition/src/transition/schedule.js"),i=[null];e.default=function(t,e){var n,u,s=t.__transition;if(s)for(u in e=null==e?null:e+"",s)if((n=s[u]).state>o.SCHEDULED&&n.name===e)return new r.Transition([[t]],i,e,+u);return null}},"./node_modules/d3-transition/src/index.js":
/*!*************************************************!*\
!*** ./node_modules/d3-transition/src/index.js ***!
\*************************************************/
/*! exports provided: transition, active, interrupt */function(t,e,n){"use strict";n.r(e);n(/*! ./selection/index */"./node_modules/d3-transition/src/selection/index.js");var r=n(/*! ./transition/index */"./node_modules/d3-transition/src/transition/index.js");n.d(e,"transition",function(){return r.default});var o=n(/*! ./active */"./node_modules/d3-transition/src/active.js");n.d(e,"active",function(){return o.default});var i=n(/*! ./interrupt */"./node_modules/d3-transition/src/interrupt.js");n.d(e,"interrupt",function(){return i.default})},"./node_modules/d3-transition/src/interrupt.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-transition/src/interrupt.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./transition/schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t,e){var n,o,i,u=t.__transition,s=!0;if(u){for(i in e=null==e?null:e+"",u)(n=u[i]).name===e?(o=n.state>r.STARTING&&n.state<r.ENDING,n.state=r.ENDED,n.timer.stop(),o&&n.on.call("interrupt",t,t.__data__,n.index,n.group),delete u[i]):s=!1;s&&delete t.__transition}}},"./node_modules/d3-transition/src/selection/index.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-transition/src/selection/index.js ***!
\***********************************************************/
/*! no exports provided */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! ./interrupt */"./node_modules/d3-transition/src/selection/interrupt.js"),i=n(/*! ./transition */"./node_modules/d3-transition/src/selection/transition.js");r.selection.prototype.interrupt=o.default,r.selection.prototype.transition=i.default},"./node_modules/d3-transition/src/selection/interrupt.js":
/*!***************************************************************!*\
!*** ./node_modules/d3-transition/src/selection/interrupt.js ***!
\***************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../interrupt */"./node_modules/d3-transition/src/interrupt.js");e.default=function(t){return this.each(function(){Object(r.default)(this,t)})}},"./node_modules/d3-transition/src/selection/transition.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-transition/src/selection/transition.js ***!
\****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ../transition/index */"./node_modules/d3-transition/src/transition/index.js"),o=n(/*! ../transition/schedule */"./node_modules/d3-transition/src/transition/schedule.js"),i=n(/*! d3-ease */"./node_modules/d3-ease/src/index.js"),u=n(/*! d3-timer */"./node_modules/d3-timer/src/index.js"),s={time:null,delay:0,duration:250,ease:i.easeCubicInOut};function c(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))return s.time=Object(u.now)(),s;return n}e.default=function(t){var e,n;t instanceof r.Transition?(e=t._id,t=t._name):(e=Object(r.newId)(),(n=s).time=Object(u.now)(),t=null==t?null:t+"");for(var i=this._groups,a=i.length,l=0;l<a;++l)for(var d,f=i[l],h=f.length,p=0;p<h;++p)(d=f[p])&&Object(o.default)(d,t,e,p,f,n||c(d,e));return new r.Transition(i,this._parents,t,e)}},"./node_modules/d3-transition/src/transition/attr.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-transition/src/transition/attr.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-interpolate */"./node_modules/d3-interpolate/src/index.js"),o=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),i=n(/*! ./tween */"./node_modules/d3-transition/src/transition/tween.js"),u=n(/*! ./interpolate */"./node_modules/d3-transition/src/transition/interpolate.js");e.default=function(t,e){var n=Object(o.namespace)(t),s="transform"===n?r.interpolateTransformSvg:u.default;return this.attrTween(t,"function"==typeof e?(n.local?function(t,e,n){var r,o,i;return function(){var u,s=n(this);if(null!=s)return(u=this.getAttributeNS(t.space,t.local))===s?null:u===r&&s===o?i:i=e(r=u,o=s);this.removeAttributeNS(t.space,t.local)}}:function(t,e,n){var r,o,i;return function(){var u,s=n(this);if(null!=s)return(u=this.getAttribute(t))===s?null:u===r&&s===o?i:i=e(r=u,o=s);this.removeAttribute(t)}})(n,s,Object(i.tweenValue)(this,"attr."+t,e)):null==e?(n.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(n):(n.local?function(t,e,n){var r,o;return function(){var i=this.getAttributeNS(t.space,t.local);return i===n?null:i===r?o:o=e(r=i,n)}}:function(t,e,n){var r,o;return function(){var i=this.getAttribute(t);return i===n?null:i===r?o:o=e(r=i,n)}})(n,s,e+""))}},"./node_modules/d3-transition/src/transition/attrTween.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/attrTween.js ***!
\****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js");e.default=function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var o=Object(r.namespace)(t);return this.tween(n,(o.local?function(t,e){function n(){var n=this,r=e.apply(n,arguments);return r&&function(e){n.setAttributeNS(t.space,t.local,r(e))}}return n._value=e,n}:function(t,e){function n(){var n=this,r=e.apply(n,arguments);return r&&function(e){n.setAttribute(t,r(e))}}return n._value=e,n})(o,e))}},"./node_modules/d3-transition/src/transition/delay.js":
/*!************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/delay.js ***!
\************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?function(t,e){return function(){Object(r.init)(this,t).delay=+e.apply(this,arguments)}}:function(t,e){return e=+e,function(){Object(r.init)(this,t).delay=e}})(e,t)):Object(r.get)(this.node(),e).delay}},"./node_modules/d3-transition/src/transition/duration.js":
/*!***************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/duration.js ***!
\***************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?function(t,e){return function(){Object(r.set)(this,t).duration=+e.apply(this,arguments)}}:function(t,e){return e=+e,function(){Object(r.set)(this,t).duration=e}})(e,t)):Object(r.get)(this.node(),e).duration}},"./node_modules/d3-transition/src/transition/ease.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-transition/src/transition/ease.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){Object(r.set)(this,t).ease=e}}(e,t)):Object(r.get)(this.node(),e).ease}},"./node_modules/d3-transition/src/transition/filter.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/filter.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! ./index */"./node_modules/d3-transition/src/transition/index.js");e.default=function(t){"function"!=typeof t&&(t=Object(r.matcher)(t));for(var e=this._groups,n=e.length,i=new Array(n),u=0;u<n;++u)for(var s,c=e[u],a=c.length,l=i[u]=[],d=0;d<a;++d)(s=c[d])&&t.call(s,s.__data__,d,c)&&l.push(s);return new o.Transition(i,this._parents,this._name,this._id)}},"./node_modules/d3-transition/src/transition/index.js":
/*!************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/index.js ***!
\************************************************************/
/*! exports provided: Transition, default, newId */function(t,e,n){"use strict";n.r(e),n.d(e,"Transition",function(){return x}),n.d(e,"default",function(){return w}),n.d(e,"newId",function(){return A});var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! ./attr */"./node_modules/d3-transition/src/transition/attr.js"),i=n(/*! ./attrTween */"./node_modules/d3-transition/src/transition/attrTween.js"),u=n(/*! ./delay */"./node_modules/d3-transition/src/transition/delay.js"),s=n(/*! ./duration */"./node_modules/d3-transition/src/transition/duration.js"),c=n(/*! ./ease */"./node_modules/d3-transition/src/transition/ease.js"),a=n(/*! ./filter */"./node_modules/d3-transition/src/transition/filter.js"),l=n(/*! ./merge */"./node_modules/d3-transition/src/transition/merge.js"),d=n(/*! ./on */"./node_modules/d3-transition/src/transition/on.js"),f=n(/*! ./remove */"./node_modules/d3-transition/src/transition/remove.js"),h=n(/*! ./select */"./node_modules/d3-transition/src/transition/select.js"),p=n(/*! ./selectAll */"./node_modules/d3-transition/src/transition/selectAll.js"),m=n(/*! ./selection */"./node_modules/d3-transition/src/transition/selection.js"),y=n(/*! ./style */"./node_modules/d3-transition/src/transition/style.js"),v=n(/*! ./styleTween */"./node_modules/d3-transition/src/transition/styleTween.js"),g=n(/*! ./text */"./node_modules/d3-transition/src/transition/text.js"),j=n(/*! ./transition */"./node_modules/d3-transition/src/transition/transition.js"),b=n(/*! ./tween */"./node_modules/d3-transition/src/transition/tween.js"),_=0;function x(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function w(t){return Object(r.selection)().transition(t)}function A(){return++_}var O=r.selection.prototype;x.prototype=w.prototype={constructor:x,select:h.default,selectAll:p.default,filter:a.default,merge:l.default,selection:m.default,transition:j.default,call:O.call,nodes:O.nodes,node:O.node,size:O.size,empty:O.empty,each:O.each,on:d.default,attr:o.default,attrTween:i.default,style:y.default,styleTween:v.default,text:g.default,remove:f.default,tween:b.default,delay:u.default,duration:s.default,ease:c.default}},"./node_modules/d3-transition/src/transition/interpolate.js":
/*!******************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/interpolate.js ***!
\******************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-color */"./node_modules/d3-color/src/index.js"),o=n(/*! d3-interpolate */"./node_modules/d3-interpolate/src/index.js");e.default=function(t,e){var n;return("number"==typeof e?o.interpolateNumber:e instanceof r.color?o.interpolateRgb:(n=Object(r.color)(e))?(e=n,o.interpolateRgb):o.interpolateString)(t,e)}},"./node_modules/d3-transition/src/transition/merge.js":
/*!************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/merge.js ***!
\************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-transition/src/transition/index.js");e.default=function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,o=e.length,i=n.length,u=Math.min(o,i),s=new Array(o),c=0;c<u;++c)for(var a,l=e[c],d=n[c],f=l.length,h=s[c]=new Array(f),p=0;p<f;++p)(a=l[p]||d[p])&&(h[p]=a);for(;c<o;++c)s[c]=e[c];return new r.Transition(s,this._parents,this._name,this._id)}},"./node_modules/d3-transition/src/transition/on.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-transition/src/transition/on.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t,e){var n=this._id;return arguments.length<2?Object(r.get)(this.node(),n).on.on(t):this.each(function(t,e,n){var o,i,u=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?r.init:r.set;return function(){var r=u(this,t),s=r.on;s!==o&&(i=(o=s).copy()).on(e,n),r.on=i}}(n,t,e))}},"./node_modules/d3-transition/src/transition/remove.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/remove.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){return this.on("end.remove",(t=this._id,function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}));var t}},"./node_modules/d3-transition/src/transition/schedule.js":
/*!***************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/schedule.js ***!
\***************************************************************/
/*! exports provided: CREATED, SCHEDULED, STARTING, STARTED, RUNNING, ENDING, ENDED, default, init, set, get */function(t,e,n){"use strict";n.r(e),n.d(e,"CREATED",function(){return s}),n.d(e,"SCHEDULED",function(){return c}),n.d(e,"STARTING",function(){return a}),n.d(e,"STARTED",function(){return l}),n.d(e,"RUNNING",function(){return d}),n.d(e,"ENDING",function(){return f}),n.d(e,"ENDED",function(){return h}),n.d(e,"init",function(){return p}),n.d(e,"set",function(){return m}),n.d(e,"get",function(){return y});var r=n(/*! d3-dispatch */"./node_modules/d3-dispatch/src/index.js"),o=n(/*! d3-timer */"./node_modules/d3-timer/src/index.js"),i=Object(r.dispatch)("start","end","interrupt"),u=[],s=0,c=1,a=2,l=3,d=4,f=5,h=6;function p(t,e){var n=y(t,e);if(n.state>s)throw new Error("too late; already scheduled");return n}function m(t,e){var n=y(t,e);if(n.state>a)throw new Error("too late; already started");return n}function y(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}e.default=function(t,e,n,r,p,m){var y=t.__transition;if(y){if(n in y)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function u(f){var m,y,v,g;if(n.state!==c)return p();for(m in i)if((g=i[m]).name===n.name){if(g.state===l)return Object(o.timeout)(u);g.state===d?(g.state=h,g.timer.stop(),g.on.call("interrupt",t,t.__data__,g.index,g.group),delete i[m]):+m<e&&(g.state=h,g.timer.stop(),delete i[m])}if(Object(o.timeout)(function(){n.state===l&&(n.state=d,n.timer.restart(s,n.delay,n.time),s(f))}),n.state=a,n.on.call("start",t,t.__data__,n.index,n.group),n.state===a){for(n.state=l,r=new Array(v=n.tween.length),m=0,y=-1;m<v;++m)(g=n.tween[m].value.call(t,t.__data__,n.index,n.group))&&(r[++y]=g);r.length=y+1}}function s(e){for(var o=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(p),n.state=f,1),i=-1,u=r.length;++i<u;)r[i].call(null,o);n.state===f&&(n.on.call("end",t,t.__data__,n.index,n.group),p())}function p(){for(var r in n.state=h,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Object(o.timer)(function(t){n.state=c,n.timer.restart(u,n.delay,n.time),n.delay<=t&&u(t-n.delay)},0,n.time)}(t,n,{name:e,index:r,group:p,on:i,tween:u,time:m.time,delay:m.delay,duration:m.duration,ease:m.ease,timer:null,state:s})}},"./node_modules/d3-transition/src/transition/select.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/select.js ***!
\*************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! ./index */"./node_modules/d3-transition/src/transition/index.js"),i=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Object(r.selector)(t));for(var u=this._groups,s=u.length,c=new Array(s),a=0;a<s;++a)for(var l,d,f=u[a],h=f.length,p=c[a]=new Array(h),m=0;m<h;++m)(l=f[m])&&(d=t.call(l,l.__data__,m,f))&&("__data__"in l&&(d.__data__=l.__data__),p[m]=d,Object(i.default)(p[m],e,n,m,p,Object(i.get)(l,n)));return new o.Transition(c,this._parents,e,n)}},"./node_modules/d3-transition/src/transition/selectAll.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/selectAll.js ***!
\****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! ./index */"./node_modules/d3-transition/src/transition/index.js"),i=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Object(r.selectorAll)(t));for(var u=this._groups,s=u.length,c=[],a=[],l=0;l<s;++l)for(var d,f=u[l],h=f.length,p=0;p<h;++p)if(d=f[p]){for(var m,y=t.call(d,d.__data__,p,f),v=Object(i.get)(d,n),g=0,j=y.length;g<j;++g)(m=y[g])&&Object(i.default)(m,e,n,g,y,v);c.push(y),a.push(d)}return new o.Transition(c,a,e,n)}},"./node_modules/d3-transition/src/transition/selection.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/selection.js ***!
\****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js").selection.prototype.constructor;e.default=function(){return new r(this._groups,this._parents)}},"./node_modules/d3-transition/src/transition/style.js":
/*!************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/style.js ***!
\************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-interpolate */"./node_modules/d3-interpolate/src/index.js"),o=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),i=n(/*! ./tween */"./node_modules/d3-transition/src/transition/tween.js"),u=n(/*! ./interpolate */"./node_modules/d3-transition/src/transition/interpolate.js");e.default=function(t,e,n){var s="transform"==(t+="")?r.interpolateTransformCss:u.default;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var u=Object(o.style)(this,t),s=(this.style.removeProperty(t),Object(o.style)(this,t));return u===s?null:u===n&&s===r?i:i=e(n=u,r=s)}}(t,s)).on("end.style."+t,function(t){return function(){this.style.removeProperty(t)}}(t)):this.styleTween(t,"function"==typeof e?function(t,e,n){var r,i,u;return function(){var s=Object(o.style)(this,t),c=n(this);return null==c&&(this.style.removeProperty(t),c=Object(o.style)(this,t)),s===c?null:s===r&&c===i?u:u=e(r=s,i=c)}}(t,s,Object(i.tweenValue)(this,"style."+t,e)):function(t,e,n){var r,i;return function(){var u=Object(o.style)(this,t);return u===n?null:u===r?i:i=e(r=u,n)}}(t,s,e+""),n)}},"./node_modules/d3-transition/src/transition/styleTween.js":
/*!*****************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/styleTween.js ***!
\*****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){function r(){var r=this,o=e.apply(r,arguments);return o&&function(e){r.style.setProperty(t,o(e),n)}}return r._value=e,r}(t,e,null==n?"":n))}},"./node_modules/d3-transition/src/transition/text.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-transition/src/transition/text.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./tween */"./node_modules/d3-transition/src/transition/tween.js");e.default=function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Object(r.tweenValue)(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))}},"./node_modules/d3-transition/src/transition/transition.js":
/*!*****************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/transition.js ***!
\*****************************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./index */"./node_modules/d3-transition/src/transition/index.js"),o=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");e.default=function(){for(var t=this._name,e=this._id,n=Object(r.newId)(),i=this._groups,u=i.length,s=0;s<u;++s)for(var c,a=i[s],l=a.length,d=0;d<l;++d)if(c=a[d]){var f=Object(o.get)(c,e);Object(o.default)(c,t,n,d,a,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new r.Transition(i,this._parents,t,n)}},"./node_modules/d3-transition/src/transition/tween.js":
/*!************************************************************!*\
!*** ./node_modules/d3-transition/src/transition/tween.js ***!
\************************************************************/
/*! exports provided: default, tweenValue */function(t,e,n){"use strict";n.r(e),n.d(e,"tweenValue",function(){return o});var r=n(/*! ./schedule */"./node_modules/d3-transition/src/transition/schedule.js");function o(t,e,n){var o=t._id;return t.each(function(){var t=Object(r.set)(this,o);(t.value||(t.value={}))[e]=n.apply(this,arguments)}),function(t){return Object(r.get)(t,o).value[e]}}e.default=function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var o,i=Object(r.get)(this.node(),n).tween,u=0,s=i.length;u<s;++u)if((o=i[u]).name===t)return o.value;return null}return this.each((null==e?function(t,e){var n,o;return function(){var i=Object(r.set)(this,t),u=i.tween;if(u!==n)for(var s=0,c=(o=n=u).length;s<c;++s)if(o[s].name===e){(o=o.slice()).splice(s,1);break}i.tween=o}}:function(t,e,n){var o,i;if("function"!=typeof n)throw new Error;return function(){var u=Object(r.set)(this,t),s=u.tween;if(s!==o){i=(o=s).slice();for(var c={name:e,value:n},a=0,l=i.length;a<l;++a)if(i[a].name===e){i[a]=c;break}a===l&&i.push(c)}u.tween=i}})(n,t,e))}},"./node_modules/d3-zoom/src/constant.js":
/*!**********************************************!*\
!*** ./node_modules/d3-zoom/src/constant.js ***!
\**********************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3-zoom/src/event.js":
/*!*******************************************!*\
!*** ./node_modules/d3-zoom/src/event.js ***!
\*******************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e,n){this.target=t,this.type=e,this.transform=n}n.r(e),n.d(e,"default",function(){return r})},"./node_modules/d3-zoom/src/index.js":
/*!*******************************************!*\
!*** ./node_modules/d3-zoom/src/index.js ***!
\*******************************************/
/*! exports provided: zoom, zoomTransform, zoomIdentity */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./zoom */"./node_modules/d3-zoom/src/zoom.js");n.d(e,"zoom",function(){return r.default});var o=n(/*! ./transform */"./node_modules/d3-zoom/src/transform.js");n.d(e,"zoomTransform",function(){return o.default}),n.d(e,"zoomIdentity",function(){return o.identity})},"./node_modules/d3-zoom/src/noevent.js":
/*!*********************************************!*\
!*** ./node_modules/d3-zoom/src/noevent.js ***!
\*********************************************/
/*! exports provided: nopropagation, default */function(t,e,n){"use strict";n.r(e),n.d(e,"nopropagation",function(){return o});var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js");function o(){r.event.stopImmediatePropagation()}e.default=function(){r.event.preventDefault(),r.event.stopImmediatePropagation()}},"./node_modules/d3-zoom/src/transform.js":
/*!***********************************************!*\
!*** ./node_modules/d3-zoom/src/transform.js ***!
\***********************************************/
/*! exports provided: Transform, identity, default */function(t,e,n){"use strict";function r(t,e,n){this.k=t,this.x=e,this.y=n}n.r(e),n.d(e,"Transform",function(){return r}),n.d(e,"identity",function(){return o}),n.d(e,"default",function(){return i}),r.prototype={constructor:r,scale:function(t){return 1===t?this:new r(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new r(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var o=new r(1,0,0);function i(t){return t.__zoom||o}i.prototype=r.prototype},"./node_modules/d3-zoom/src/zoom.js":
/*!******************************************!*\
!*** ./node_modules/d3-zoom/src/zoom.js ***!
\******************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-dispatch */"./node_modules/d3-dispatch/src/index.js"),o=n(/*! d3-drag */"./node_modules/d3-drag/src/index.js"),i=n(/*! d3-interpolate */"./node_modules/d3-interpolate/src/index.js"),u=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),s=n(/*! d3-transition */"./node_modules/d3-transition/src/index.js"),c=n(/*! ./constant */"./node_modules/d3-zoom/src/constant.js"),a=n(/*! ./event */"./node_modules/d3-zoom/src/event.js"),l=n(/*! ./transform */"./node_modules/d3-zoom/src/transform.js"),d=n(/*! ./noevent */"./node_modules/d3-zoom/src/noevent.js");function f(){return!u.event.button}function h(){var t,e,n=this;return n instanceof SVGElement?(t=(n=n.ownerSVGElement||n).width.baseVal.value,e=n.height.baseVal.value):(t=n.clientWidth,e=n.clientHeight),[[0,0],[t,e]]}function p(){return this.__zoom||l.identity}function m(){return-u.event.deltaY*(u.event.deltaMode?120:1)/500}function y(){return"ontouchstart"in this}function v(t,e,n){var r=t.invertX(e[0][0])-n[0][0],o=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],u=t.invertY(e[1][1])-n[1][1];return t.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),u>i?(i+u)/2:Math.min(0,i)||Math.max(0,u))}e.default=function(){var t,e,n=f,g=h,j=v,b=m,_=y,x=[0,1/0],w=[[-1/0,-1/0],[1/0,1/0]],A=250,O=i.interpolateZoom,k=[],S=Object(r.dispatch)("start","zoom","end"),C=500,B=150,F=0;function N(t){t.property("__zoom",p).on("wheel.zoom",X).on("mousedown.zoom",Y).on("dblclick.zoom",Z).filter(_).on("touchstart.zoom",G).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function z(t,e){return(e=Math.max(x[0],Math.min(x[1],e)))===t.k?t:new l.Transform(e,t.x,t.y)}function T(t,e,n){var r=e[0]-n[0]*t.k,o=e[1]-n[1]*t.k;return r===t.x&&o===t.y?t:new l.Transform(t.k,r,o)}function q(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function H(t,e,n){t.on("start.zoom",function(){D(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){D(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=D(this,t),o=g.apply(this,t),i=n||q(o),u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),s=this.__zoom,c="function"==typeof e?e.apply(this,t):e,a=O(s.invert(i).concat(u/s.k),c.invert(i).concat(u/c.k));return function(t){if(1===t)t=c;else{var e=a(t),n=u/e[2];t=new l.Transform(n,i[0]-e[0]*n,i[1]-e[1]*n)}r.zoom(null,t)}})}function D(t,e){for(var n,r=0,o=k.length;r<o;++r)if((n=k[r]).that===t)return n;return new V(t,e)}function V(t,e){this.that=t,this.args=e,this.index=-1,this.active=0,this.extent=g.apply(t,e)}function X(){if(n.apply(this,arguments)){var t=D(this,arguments),e=this.__zoom,r=Math.max(x[0],Math.min(x[1],e.k*Math.pow(2,b.apply(this,arguments)))),o=Object(u.mouse)(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],Object(s.interrupt)(this),t.start()}Object(d.default)(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},B),t.zoom("mouse",j(T(z(e,r),t.mouse[0],t.mouse[1]),t.extent,w))}}function Y(){if(!e&&n.apply(this,arguments)){var t=D(this,arguments),r=Object(u.select)(u.event.view).on("mousemove.zoom",function(){if(Object(d.default)(),!t.moved){var e=u.event.clientX-c,n=u.event.clientY-a;t.moved=e*e+n*n>F}t.zoom("mouse",j(T(t.that.__zoom,t.mouse[0]=Object(u.mouse)(t.that),t.mouse[1]),t.extent,w))},!0).on("mouseup.zoom",function(){r.on("mousemove.zoom mouseup.zoom",null),Object(o.dragEnable)(u.event.view,t.moved),Object(d.default)(),t.end()},!0),i=Object(u.mouse)(this),c=u.event.clientX,a=u.event.clientY;Object(o.dragDisable)(u.event.view),Object(d.nopropagation)(),t.mouse=[i,this.__zoom.invert(i)],Object(s.interrupt)(this),t.start()}}function Z(){if(n.apply(this,arguments)){var t=this.__zoom,e=Object(u.mouse)(this),r=t.invert(e),o=t.k*(u.event.shiftKey?.5:2),i=j(T(z(t,o),e,r),g.apply(this,arguments),w);Object(d.default)(),A>0?Object(u.select)(this).transition().duration(A).call(H,i,e):Object(u.select)(this).call(N.transform,i)}}function G(){if(n.apply(this,arguments)){var e,r,o,i,c=D(this,arguments),a=u.event.changedTouches,l=a.length;for(Object(d.nopropagation)(),r=0;r<l;++r)o=a[r],i=[i=Object(u.touch)(this,a,o.identifier),this.__zoom.invert(i),o.identifier],c.touch0?c.touch1||(c.touch1=i):(c.touch0=i,e=!0);if(t&&(t=clearTimeout(t),!c.touch1))return c.end(),void((i=Object(u.select)(this).on("dblclick.zoom"))&&i.apply(this,arguments));e&&(t=setTimeout(function(){t=null},C),Object(s.interrupt)(this),c.start())}}function $(){var e,n,r,o,i=D(this,arguments),s=u.event.changedTouches,c=s.length;for(Object(d.default)(),t&&(t=clearTimeout(t)),e=0;e<c;++e)n=s[e],r=Object(u.touch)(this,s,n.identifier),i.touch0&&i.touch0[2]===n.identifier?i.touch0[0]=r:i.touch1&&i.touch1[2]===n.identifier&&(i.touch1[0]=r);if(n=i.that.__zoom,i.touch1){var a=i.touch0[0],l=i.touch0[1],f=i.touch1[0],h=i.touch1[1],p=(p=f[0]-a[0])*p+(p=f[1]-a[1])*p,m=(m=h[0]-l[0])*m+(m=h[1]-l[1])*m;n=z(n,Math.sqrt(p/m)),r=[(a[0]+f[0])/2,(a[1]+f[1])/2],o=[(l[0]+h[0])/2,(l[1]+h[1])/2]}else{if(!i.touch0)return;r=i.touch0[0],o=i.touch0[1]}i.zoom("touch",j(T(n,r,o),i.extent,w))}function E(){var t,n,r=D(this,arguments),o=u.event.changedTouches,i=o.length;for(Object(d.nopropagation)(),e&&clearTimeout(e),e=setTimeout(function(){e=null},C),t=0;t<i;++t)n=o[t],r.touch0&&r.touch0[2]===n.identifier?delete r.touch0:r.touch1&&r.touch1[2]===n.identifier&&delete r.touch1;r.touch1&&!r.touch0&&(r.touch0=r.touch1,delete r.touch1),r.touch0?r.touch0[1]=this.__zoom.invert(r.touch0[0]):r.end()}return N.transform=function(t,e){var n=t.selection?t.selection():t;n.property("__zoom",p),t!==n?H(t,e):n.interrupt().each(function(){D(this,arguments).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()})},N.scaleBy=function(t,e){N.scaleTo(t,function(){return this.__zoom.k*("function"==typeof e?e.apply(this,arguments):e)})},N.scaleTo=function(t,e){N.transform(t,function(){var t=g.apply(this,arguments),n=this.__zoom,r=q(t),o=n.invert(r),i="function"==typeof e?e.apply(this,arguments):e;return j(T(z(n,i),r,o),t,w)})},N.translateBy=function(t,e,n){N.transform(t,function(){return j(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof n?n.apply(this,arguments):n),g.apply(this,arguments),w)})},N.translateTo=function(t,e,n){N.transform(t,function(){var t=g.apply(this,arguments),r=this.__zoom,o=q(t);return j(l.identity.translate(o[0],o[1]).scale(r.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof n?-n.apply(this,arguments):-n),t,w)})},V.prototype={start:function(){return 1==++this.active&&(this.index=k.push(this)-1,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(k.splice(this.index,1),this.index=-1,this.emit("end")),this},emit:function(t){Object(u.customEvent)(new a.default(N,t,this.that.__zoom),S.apply,S,[t,this.that,this.args])}},N.wheelDelta=function(t){return arguments.length?(b="function"==typeof t?t:Object(c.default)(+t),N):b},N.filter=function(t){return arguments.length?(n="function"==typeof t?t:Object(c.default)(!!t),N):n},N.touchable=function(t){return arguments.length?(_="function"==typeof t?t:Object(c.default)(!!t),N):_},N.extent=function(t){return arguments.length?(g="function"==typeof t?t:Object(c.default)([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),N):g},N.scaleExtent=function(t){return arguments.length?(x[0]=+t[0],x[1]=+t[1],N):[x[0],x[1]]},N.translateExtent=function(t){return arguments.length?(w[0][0]=+t[0][0],w[1][0]=+t[1][0],w[0][1]=+t[0][1],w[1][1]=+t[1][1],N):[[w[0][0],w[0][1]],[w[1][0],w[1][1]]]},N.constrain=function(t){return arguments.length?(j=t,N):j},N.duration=function(t){return arguments.length?(A=+t,N):A},N.interpolate=function(t){return arguments.length?(O=t,N):O},N.on=function(){var t=S.on.apply(S,arguments);return t===S?N:t},N.clickDistance=function(t){return arguments.length?(F=(t=+t)*t,N):Math.sqrt(F)},N}},"./node_modules/d3plus-common/es/index.js":
/*!************************************************!*\
!*** ./node_modules/d3plus-common/es/index.js ***!
\************************************************/
/*! exports provided: accessor, assign, attrize, BaseClass, closest, configPrep, constant, elem, isObject, merge, parseSides, prefix, RESET, stylize, uuid */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./src/accessor */"./node_modules/d3plus-common/es/src/accessor.js");n.d(e,"accessor",function(){return r.default});var o=n(/*! ./src/assign */"./node_modules/d3plus-common/es/src/assign.js");n.d(e,"assign",function(){return o.default});var i=n(/*! ./src/attrize */"./node_modules/d3plus-common/es/src/attrize.js");n.d(e,"attrize",function(){return i.default});var u=n(/*! ./src/BaseClass */"./node_modules/d3plus-common/es/src/BaseClass.js");n.d(e,"BaseClass",function(){return u.default});var s=n(/*! ./src/closest */"./node_modules/d3plus-common/es/src/closest.js");n.d(e,"closest",function(){return s.default});var c=n(/*! ./src/configPrep */"./node_modules/d3plus-common/es/src/configPrep.js");n.d(e,"configPrep",function(){return c.default});var a=n(/*! ./src/constant */"./node_modules/d3plus-common/es/src/constant.js");n.d(e,"constant",function(){return a.default});var l=n(/*! ./src/elem */"./node_modules/d3plus-common/es/src/elem.js");n.d(e,"elem",function(){return l.default});var d=n(/*! ./src/isObject */"./node_modules/d3plus-common/es/src/isObject.js");n.d(e,"isObject",function(){return d.default});var f=n(/*! ./src/merge */"./node_modules/d3plus-common/es/src/merge.js");n.d(e,"merge",function(){return f.default});var h=n(/*! ./src/parseSides */"./node_modules/d3plus-common/es/src/parseSides.js");n.d(e,"parseSides",function(){return h.default});var p=n(/*! ./src/prefix */"./node_modules/d3plus-common/es/src/prefix.js");n.d(e,"prefix",function(){return p.default});var m=n(/*! ./src/RESET */"./node_modules/d3plus-common/es/src/RESET.js");n.d(e,"RESET",function(){return m.default});var y=n(/*! ./src/stylize */"./node_modules/d3plus-common/es/src/stylize.js");n.d(e,"stylize",function(){return y.default});var v=n(/*! ./src/uuid */"./node_modules/d3plus-common/es/src/uuid.js");n.d(e,"uuid",function(){return v.default})},"./node_modules/d3plus-common/es/src/BaseClass.js":
/*!********************************************************!*\
!*** ./node_modules/d3plus-common/es/src/BaseClass.js ***!
\********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./assign */"./node_modules/d3plus-common/es/src/assign.js"),o=n(/*! ./isObject */"./node_modules/d3plus-common/es/src/isObject.js"),i=n(/*! ./uuid */"./node_modules/d3plus-common/es/src/uuid.js"),u=n(/*! ./RESET */"./node_modules/d3plus-common/es/src/RESET.js");function s(t,e){if(Object(o.default)(t))for(var n in t)if({}.hasOwnProperty.call(t,n)&&!n.startsWith("_")){var r=e&&Object(o.default)(e)?e[n]:void 0;t[n]===u.default?t[n]=r:Object(o.default)(t[n])&&s(t[n],r)}}var c=function(){this._on={},this._uuid=Object(i.default)()};c.prototype.config=function(t){if(!this._configDefault){var e={};for(var n in this.__proto__)if(0!==n.indexOf("_")&&!["config","constructor","render"].includes(n)){var i=this[n]();e[n]=Object(o.default)(i)?Object(r.default)({},i):i}this._configDefault=e}if(arguments.length){for(var c in t)if({}.hasOwnProperty.call(t,c)&&c in this){var a=t[c];a===u.default?"on"===c?this._on=this._configDefault[c]:this[c](this._configDefault[c]):(s(a,this._configDefault[c]),this[c](a))}return this}var l={};for(var d in this.__proto__)0===d.indexOf("_")||["config","constructor","render"].includes(d)||(l[d]=this[d]());return l},c.prototype.on=function(t,e){return 2===arguments.length?(this._on[t]=e,this):arguments.length?"string"==typeof t?this._on[t]:(this._on=Object.assign({},this._on,t),this):this._on},e.default=c},"./node_modules/d3plus-common/es/src/RESET.js":
/*!****************************************************!*\
!*** ./node_modules/d3plus-common/es/src/RESET.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default="D3PLUS-COMMON-RESET"},"./node_modules/d3plus-common/es/src/accessor.js":
/*!*******************************************************!*\
!*** ./node_modules/d3plus-common/es/src/accessor.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){return void 0===e?function(e){return e[t]}:function(n){return void 0===n[t]?e:n[t]}}},"./node_modules/d3plus-common/es/src/assign.js":
/*!*****************************************************!*\
!*** ./node_modules/d3plus-common/es/src/assign.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./isObject */"./node_modules/d3plus-common/es/src/isObject.js");e.default=function t(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];for(var o=e[0],i=function(n){var i=e[n];Object.keys(i).forEach(function(e){var n,u=i[e];Object(r.default)(u)&&(n=u,"undefined"==typeof window||n!==window&&n!==document)?o.hasOwnProperty(e)&&Object(r.default)(o[e])?o[e]=t({},o[e],u):o[e]=t({},u):Array.isArray(u)?o[e]=u.slice():o[e]=u})},u=1;u<e.length;u++)i(u);return o}},"./node_modules/d3plus-common/es/src/attrize.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-common/es/src/attrize.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){for(var n in void 0===e&&(e={}),e)({}).hasOwnProperty.call(e,n)&&t.attr(n,e[n])}},"./node_modules/d3plus-common/es/src/closest.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-common/es/src/closest.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){if(void 0===e&&(e=[]),e&&e instanceof Array&&e.length)return e.reduce(function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})}},"./node_modules/d3plus-common/es/src/configPrep.js":
/*!*********************************************************!*\
!*** ./node_modules/d3plus-common/es/src/configPrep.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e,n){var r=this;void 0===t&&(t=this._shapeConfig),void 0===e&&(e="shape"),void 0===n&&(n=!1);var o={duration:this._duration,on:{}},i=function(t){return function(e,n,o){for(;e.__d3plus__;)n=e.i,e=e.data||e.feature;return t.bind(r)(e,n,o)}},u=function(t,n){for(var r in n)({}.hasOwnProperty.call(n,r)&&!r.includes(".")||r.includes("."+e))&&(t.on[r]=i(n[r]))},s=function(t,e){for(var n in e)({}).hasOwnProperty.call(e,n)&&("on"===n?u(t,e[n]):"function"==typeof e[n]?t[n]=i(e[n]):"object"!=typeof e[n]||e instanceof Array?t[n]=e[n]:(t[n]={on:{}},s(t[n],e[n])))};return s(o,t),this._on&&u(o,this._on),n&&t[n]&&(s(o,t[n]),t[n].on&&u(o,t[n].on)),o}n.r(e),n.d(e,"default",function(){return r})},"./node_modules/d3plus-common/es/src/constant.js":
/*!*******************************************************!*\
!*** ./node_modules/d3plus-common/es/src/constant.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return function(){return t}}},"./node_modules/d3plus-common/es/src/elem.js":
/*!***************************************************!*\
!*** ./node_modules/d3plus-common/es/src/elem.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! d3-transition */"./node_modules/d3-transition/src/index.js"),i=n(/*! ./attrize */"./node_modules/d3plus-common/es/src/attrize.js");e.default=function(t,e){e=Object.assign({},{condition:!0,enter:{},exit:{},parent:Object(r.select)("body"),transition:Object(o.transition)().duration(0),update:{}},e);var n=/\.([^#]+)/g.exec(t),u=/#([^\.]+)/g.exec(t),s=/^([^.^#]+)/g.exec(t)[1],c=e.parent.selectAll(t.includes(":")?t.split(":")[1]:t).data(e.condition?[null]:[]),a=c.enter().append(s).call(i.default,e.enter);u&&a.attr("id",u[1]),n&&a.attr("class",n[1]),c.exit().transition(e.transition).call(i.default,e.exit).remove();var l=a.merge(c);return l.transition(e.transition).call(i.default,e.update),l}},"./node_modules/d3plus-common/es/src/isObject.js":
/*!*******************************************************!*\
!*** ./node_modules/d3plus-common/es/src/isObject.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return!(!t||"object"!=typeof t||"undefined"!=typeof window&&(t===window||t===window.document||t instanceof Element)||Array.isArray(t))}},"./node_modules/d3plus-common/es/src/merge.js":
/*!****************************************************!*\
!*** ./node_modules/d3plus-common/es/src/merge.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-array */"./node_modules/d3-array/src/index.js"),o=n(/*! d3-collection */"./node_modules/d3-collection/src/index.js");e.default=function t(e,n){void 0===n&&(n={});var i=new Set(Object(r.merge)(e.map(function(t){return Object(o.keys)(t)}))),u={};return i.forEach(function(o){var i,s=e.map(function(t){return t[o]});if(n[o])i=n[o](s);else{var c=s.map(function(t){return t||!1===t?t.constructor:t}).filter(function(t){return void 0!==t});c.length?c.indexOf(Array)>=0?(i=Object(r.merge)(s.map(function(t){return t instanceof Array?t:[t]})),1===(i=Array.from(new Set(i))).length&&(i=i[0])):c.indexOf(String)>=0?1===(i=Array.from(new Set(s))).length&&(i=i[0]):c.indexOf(Number)>=0?i=Object(r.sum)(s):c.indexOf(Object)>=0?i=t(s.filter(function(t){return t})):1===(i=Array.from(new Set(s.filter(function(t){return void 0!==t})))).length&&(i=i[0]):i=void 0}u[o]=i}),u}},"./node_modules/d3plus-common/es/src/parseSides.js":
/*!*********************************************************!*\
!*** ./node_modules/d3plus-common/es/src/parseSides.js ***!
\*********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){var e;return 1===(e="number"==typeof t?[t]:t.split(/\s+/)).length?e=[e[0],e[0],e[0],e[0]]:2===e.length?e=e.concat(e):3===e.length&&e.push(e[1]),["top","right","bottom","left"].reduce(function(t,n,r){var o=parseFloat(e[r]);return t[n]=o||0,t},{})}},"./node_modules/d3plus-common/es/src/prefix.js":
/*!*****************************************************!*\
!*** ./node_modules/d3plus-common/es/src/prefix.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(){return"-webkit-transform"in document.body.style?"-webkit-":"-moz-transform"in document.body.style?"-moz-":"-ms-transform"in document.body.style?"-ms-":"-o-transform"in document.body.style?"-o-":""}},"./node_modules/d3plus-common/es/src/stylize.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-common/es/src/stylize.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){for(var n in void 0===e&&(e={}),e)({}).hasOwnProperty.call(e,n)&&t.style(n,e[n])}},"./node_modules/d3plus-common/es/src/uuid.js":
/*!***************************************************!*\
!*** ./node_modules/d3plus-common/es/src/uuid.js ***!
\***************************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}n.r(e),e.default=function(){return""+r()+r()+"-"+r()+"-"+r()+"-"+r()+"-"+r()+r()+r()}},"./node_modules/d3plus-text/es/index.js":
/*!**********************************************!*\
!*** ./node_modules/d3plus-text/es/index.js ***!
\**********************************************/
/*! exports provided: fontExists, rtl, stringify, strip, TextBox, textSplit, textWidth, textWrap, titleCase, trim, trimLeft, trimRight */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./src/fontExists */"./node_modules/d3plus-text/es/src/fontExists.js");n.d(e,"fontExists",function(){return r.default});var o=n(/*! ./src/rtl */"./node_modules/d3plus-text/es/src/rtl.js");n.d(e,"rtl",function(){return o.default});var i=n(/*! ./src/stringify */"./node_modules/d3plus-text/es/src/stringify.js");n.d(e,"stringify",function(){return i.default});var u=n(/*! ./src/strip */"./node_modules/d3plus-text/es/src/strip.js");n.d(e,"strip",function(){return u.default});var s=n(/*! ./src/TextBox */"./node_modules/d3plus-text/es/src/TextBox.js");n.d(e,"TextBox",function(){return s.default});var c=n(/*! ./src/textSplit */"./node_modules/d3plus-text/es/src/textSplit.js");n.d(e,"textSplit",function(){return c.default});var a=n(/*! ./src/textWidth */"./node_modules/d3plus-text/es/src/textWidth.js");n.d(e,"textWidth",function(){return a.default});var l=n(/*! ./src/textWrap */"./node_modules/d3plus-text/es/src/textWrap.js");n.d(e,"textWrap",function(){return l.default});var d=n(/*! ./src/titleCase */"./node_modules/d3plus-text/es/src/titleCase.js");n.d(e,"titleCase",function(){return d.default});var f=n(/*! ./src/trim */"./node_modules/d3plus-text/es/src/trim.js");n.d(e,"trim",function(){return f.trim}),n.d(e,"trimLeft",function(){return f.trimLeft}),n.d(e,"trimRight",function(){return f.trimRight})},"./node_modules/d3plus-text/es/src/TextBox.js":
/*!****************************************************!*\
!*** ./node_modules/d3plus-text/es/src/TextBox.js ***!
\****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! d3-transition */"./node_modules/d3-transition/src/index.js"),i=n(/*! d3-array */"./node_modules/d3-array/src/index.js"),u=n(/*! d3plus-common */"./node_modules/d3plus-common/es/index.js"),s=n(/*! ./fontExists */"./node_modules/d3plus-text/es/src/fontExists.js"),c=n(/*! ./rtl */"./node_modules/d3plus-text/es/src/rtl.js"),a=n(/*! ./strip */"./node_modules/d3plus-text/es/src/strip.js"),l=n(/*! ./textSplit */"./node_modules/d3plus-text/es/src/textSplit.js"),d=n(/*! ./textWidth */"./node_modules/d3plus-text/es/src/textWidth.js"),f=n(/*! ./textWrap */"./node_modules/d3plus-text/es/src/textWrap.js"),h=n(/*! ./trim */"./node_modules/d3plus-text/es/src/trim.js"),p=function(t){function e(){var e=this;t.call(this),this._ariaHidden=Object(u.constant)("false"),this._delay=0,this._duration=0,this._ellipsis=function(t,e){return e?t.replace(/\.|,$/g,"")+"...":""},this._fontColor=Object(u.constant)("black"),this._fontFamily=Object(u.constant)(["Roboto","Helvetica Neue","HelveticaNeue","Helvetica","Arial","sans-serif"]),this._fontMax=Object(u.constant)(50),this._fontMin=Object(u.constant)(8),this._fontOpacity=Object(u.constant)(1),this._fontResize=Object(u.constant)(!1),this._fontSize=Object(u.constant)(10),this._fontWeight=Object(u.constant)(400),this._height=Object(u.accessor)("height",200),this._id=function(t,e){return t.id||""+e},this._lineHeight=function(t,n){return 1.2*e._fontSize(t,n)},this._maxLines=Object(u.constant)(null),this._on={},this._overflow=Object(u.constant)(!1),this._padding=Object(u.constant)(0),this._pointerEvents=Object(u.constant)("auto"),this._rotate=Object(u.constant)(0),this._rotateAnchor=function(t){return[t.w/2,t.h/2]},this._split=l.default,this._text=Object(u.accessor)("text"),this._textAnchor=Object(u.constant)("start"),this._verticalAlign=Object(u.constant)("top"),this._width=Object(u.accessor)("width",200),this._x=Object(u.accessor)("x",0),this._y=Object(u.accessor)("y",0)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.render=function(t){var e=this;void 0===this._select&&this.select(Object(r.select)("body").append("svg").style("width",window.innerWidth+"px").style("height",window.innerHeight+"px").node());var n=this,l=this._select.selectAll(".d3plus-textBox").data(this._data.reduce(function(t,r,o){var c=e._text(r,o);if(void 0===c)return t;var a,l,h=e._fontResize(r,o),p=e._lineHeight(r,o)/e._fontSize(r,o),m=h?e._fontMax(r,o):e._fontSize(r,o),y=h?m*p:e._lineHeight(r,o),v=1,g=[],j={"font-family":Object(s.default)(e._fontFamily(r,o)),"font-size":m,"font-weight":e._fontWeight(r,o),"line-height":y},b=Object(u.parseSides)(e._padding(r,o)),_=e._height(r,o)-(b.top+b.bottom),x=e._width(r,o)-(b.left+b.right),w=Object(f.default)().fontFamily(j["font-family"]).fontSize(m).fontWeight(j["font-weight"]).lineHeight(y).maxLines(e._maxLines(r,o)).height(_).overflow(e._overflow(r,o)).width(x),A=e._fontMax(r,o),O=e._fontMin(r,o),k=e._verticalAlign(r,o),S=e._split(c,o);if(x>O&&(_>y||h&&_>O*p)){if(h){a=Object(d.default)(S,j);var C=1.165+x/_*.1,B=x*_,F=Object(i.max)(a),N=Object(i.sum)(a,function(t){return t*y})*C;if(F>x||N>B){var z=Math.sqrt(B/N),T=x/F,q=Object(i.min)([z,T]);m=Math.floor(m*q)}var H=Math.floor(.8*_);m>H&&(m=H)}!function t(){var e=function(){v<1?g=[n._ellipsis("",v)]:g[v-1]=n._ellipsis(g[v-1],v)};if(m=Object(i.max)([m,O]),m=Object(i.min)([m,A]),h&&(y=m*p,w.fontSize(m).lineHeight(y),j["font-size"]=m,j["line-height"]=y),l=w(c),g=l.lines.filter(function(t){return""!==t}),v=g.length,l.truncated)if(h){if(--m<O)return m=O,void e();t()}else e()}()}if(g.length){var D=v*y,V=e._rotate(r,o),X=0===V?"top"===k?0:"middle"===k?_/2-D/2:_-D:0;X-=.1*y,t.push({aH:e._ariaHidden(r,o),data:r,i:o,lines:g,fC:e._fontColor(r,o),fF:j["font-family"],fO:e._fontOpacity(r,o),fW:j["font-weight"],id:e._id(r,o),tA:e._textAnchor(r,o),vA:e._verticalAlign(r,o),widths:l.widths,fS:m,lH:y,w:x,h:_,r:V,x:e._x(r,o)+b.left,y:e._y(r,o)+X+b.top})}return t},[]),function(t){return e._id(t.data,t.i)}),p=Object(o.transition)().duration(this._duration);function m(t){t.attr("transform",function(t,e){var r=n._rotateAnchor(t,e);return"translate("+t.x+", "+t.y+") rotate("+t.r+", "+r[0]+", "+r[1]+")"})}0===this._duration?l.exit().remove():(l.exit().transition().delay(this._duration).remove(),l.exit().selectAll("text").transition(p).attr("opacity",0).style("opacity",0));var y=l.enter().append("g").attr("class","d3plus-textBox").attr("id",function(t){return"d3plus-textBox-"+Object(a.default)(t.id)}).call(m).merge(l),v=Object(c.default)();y.style("pointer-events",function(t){return e._pointerEvents(t.data,t.i)}).each(function(t){function e(e){e.text(function(t){return Object(h.trimRight)(t)}).attr("aria-hidden",t.aH).attr("dir",v?"rtl":"ltr").attr("fill",t.fC).attr("text-anchor",t.tA).attr("font-family",t.fF).style("font-family",t.fF).attr("font-size",t.fS+"px").style("font-size",t.fS+"px").attr("font-weight",t.fW).style("font-weight",t.fW).attr("x",("middle"===t.tA?t.w/2:v?"start"===t.tA?t.w:0:"end"===t.tA?t.w:2*Math.sin(Math.PI*t.r/180))+"px").attr("y",function(e,n){return 0===t.r||"top"===t.vA?(n+1)*t.lH-(t.lH-t.fS)+"px":"middle"===t.vA?(t.h+t.fS)/2-(t.lH-t.fS)+(n-t.lines.length/2+.5)*t.lH+"px":t.h-2*(t.lH-t.fS)-(t.lines.length-(n+1))*t.lH+2*Math.cos(Math.PI*t.r/180)+"px"})}var o=Object(r.select)(this).selectAll("text").data(t.lines);0===n._duration?(o.call(e),o.exit().remove(),o.enter().append("text").attr("dominant-baseline","alphabetic").style("baseline-shift","0%").attr("unicode-bidi","bidi-override").call(e).attr("opacity",t.fO).style("opacity",t.fO)):(o.transition(p).call(e),o.exit().transition(p).attr("opacity",0).remove(),o.enter().append("text").attr("dominant-baseline","alphabetic").style("baseline-shift","0%").attr("opacity",0).style("opacity",0).call(e).merge(o).transition(p).delay(n._delay).call(e).attr("opacity",t.fO).style("opacity",t.fO))}).transition(p).call(m);for(var g=Object.keys(this._on),j=g.reduce(function(t,n){return t[n]=function(t,r){return e._on[n](t.data,r)},t},{}),b=0;b<g.length;b++)y.on(g[b],j[g[b]]);return t&&setTimeout(t,this._duration+100),this},e.prototype.ariaHidden=function(t){return void 0!==t?(this._ariaHidden="function"==typeof t?t:Object(u.constant)(t),this):this._ariaHidden},e.prototype.data=function(t){return arguments.length?(this._data=t,this):this._data},e.prototype.delay=function(t){return arguments.length?(this._delay=t,this):this._delay},e.prototype.duration=function(t){return arguments.length?(this._duration=t,this):this._duration},e.prototype.ellipsis=function(t){return arguments.length?(this._ellipsis="function"==typeof t?t:Object(u.constant)(t),this):this._ellipsis},e.prototype.fontColor=function(t){return arguments.length?(this._fontColor="function"==typeof t?t:Object(u.constant)(t),this):this._fontColor},e.prototype.fontFamily=function(t){return arguments.length?(this._fontFamily="function"==typeof t?t:Object(u.constant)(t),this):this._fontFamily},e.prototype.fontMax=function(t){return arguments.length?(this._fontMax="function"==typeof t?t:Object(u.constant)(t),this):this._fontMax},e.prototype.fontMin=function(t){return arguments.length?(this._fontMin="function"==typeof t?t:Object(u.constant)(t),this):this._fontMin},e.prototype.fontOpacity=function(t){return arguments.length?(this._fontOpacity="function"==typeof t?t:Object(u.constant)(t),this):this._fontOpacity},e.prototype.fontResize=function(t){return arguments.length?(this._fontResize="function"==typeof t?t:Object(u.constant)(t),this):this._fontResize},e.prototype.fontSize=function(t){return arguments.length?(this._fontSize="function"==typeof t?t:Object(u.constant)(t),this):this._fontSize},e.prototype.fontWeight=function(t){return arguments.length?(this._fontWeight="function"==typeof t?t:Object(u.constant)(t),this):this._fontWeight},e.prototype.height=function(t){return arguments.length?(this._height="function"==typeof t?t:Object(u.constant)(t),this):this._height},e.prototype.id=function(t){return arguments.length?(this._id="function"==typeof t?t:Object(u.constant)(t),this):this._id},e.prototype.lineHeight=function(t){return arguments.length?(this._lineHeight="function"==typeof t?t:Object(u.constant)(t),this):this._lineHeight},e.prototype.maxLines=function(t){return arguments.length?(this._maxLines="function"==typeof t?t:Object(u.constant)(t),this):this._maxLines},e.prototype.overflow=function(t){return arguments.length?(this._overflow="function"==typeof t?t:Object(u.constant)(t),this):this._overflow},e.prototype.padding=function(t){return arguments.length?(this._padding="function"==typeof t?t:Object(u.constant)(t),this):this._padding},e.prototype.pointerEvents=function(t){return arguments.length?(this._pointerEvents="function"==typeof t?t:Object(u.constant)(t),this):this._pointerEvents},e.prototype.rotate=function(t){return arguments.length?(this._rotate="function"==typeof t?t:Object(u.constant)(t),this):this._rotate},e.prototype.rotateAnchor=function(t){return arguments.length?(this._rotateAnchor="function"==typeof t?t:Object(u.constant)(t),this):this._rotateAnchor},e.prototype.select=function(t){return arguments.length?(this._select=Object(r.select)(t),this):this._select},e.prototype.split=function(t){return arguments.length?(this._split=t,this):this._split},e.prototype.text=function(t){return arguments.length?(this._text="function"==typeof t?t:Object(u.constant)(t),this):this._text},e.prototype.textAnchor=function(t){return arguments.length?(this._textAnchor="function"==typeof t?t:Object(u.constant)(t),this):this._textAnchor},e.prototype.verticalAlign=function(t){return arguments.length?(this._verticalAlign="function"==typeof t?t:Object(u.constant)(t),this):this._verticalAlign},e.prototype.width=function(t){return arguments.length?(this._width="function"==typeof t?t:Object(u.constant)(t),this):this._width},e.prototype.x=function(t){return arguments.length?(this._x="function"==typeof t?t:Object(u.constant)(t),this):this._x},e.prototype.y=function(t){return arguments.length?(this._y="function"==typeof t?t:Object(u.constant)(t),this):this._y},e}(u.BaseClass);e.default=p},"./node_modules/d3plus-text/es/src/combiningMarks.js":
/*!***********************************************************!*\
!*** ./node_modules/d3plus-text/es/src/combiningMarks.js ***!
\***********************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);e.default=["u0903","u093B","u093E","u093F","u0940","u0949","u094A","u094B","u094C","u094E","u094F","u0982","u0983","u09BE","u09BF","u09C0","u09C7","u09C8","u09CB","u09CC","u09D7","u0A03","u0A3E","u0A3F","u0A40","u0A83","u0ABE","u0ABF","u0AC0","u0AC9","u0ACB","u0ACC","u0B02","u0B03","u0B3E","u0B40","u0B47","u0B48","u0B4B","u0B4C","u0B57","u0BBE","u0BBF","u0BC1","u0BC2","u0BC6","u0BC7","u0BC8","u0BCA","u0BCB","u0BCC","u0BD7","u0C01","u0C02","u0C03","u0C41","u0C42","u0C43","u0C44","u0C82","u0C83","u0CBE","u0CC0","u0CC1","u0CC2","u0CC3","u0CC4","u0CC7","u0CC8","u0CCA","u0CCB","u0CD5","u0CD6","u0D02","u0D03","u0D3E","u0D3F","u0D40","u0D46","u0D47","u0D48","u0D4A","u0D4B","u0D4C","u0D57","u0D82","u0D83","u0DCF","u0DD0","u0DD1","u0DD8","u0DD9","u0DDA","u0DDB","u0DDC","u0DDD","u0DDE","u0DDF","u0DF2","u0DF3","u0F3E","u0F3F","u0F7F","u102B","u102C","u1031","u1038","u103B","u103C","u1056","u1057","u1062","u1063","u1064","u1067","u1068","u1069","u106A","u106B","u106C","u106D","u1083","u1084","u1087","u1088","u1089","u108A","u108B","u108C","u108F","u109A","u109B","u109C","u17B6","u17BE","u17BF","u17C0","u17C1","u17C2","u17C3","u17C4","u17C5","u17C7","u17C8","u1923","u1924","u1925","u1926","u1929","u192A","u192B","u1930","u1931","u1933","u1934","u1935","u1936","u1937","u1938","u1A19","u1A1A","u1A55","u1A57","u1A61","u1A63","u1A64","u1A6D","u1A6E","u1A6F","u1A70","u1A71","u1A72","u1B04","u1B35","u1B3B","u1B3D","u1B3E","u1B3F","u1B40","u1B41","u1B43","u1B44","u1B82","u1BA1","u1BA6","u1BA7","u1BAA","u1BE7","u1BEA","u1BEB","u1BEC","u1BEE","u1BF2","u1BF3","u1C24","u1C25","u1C26","u1C27","u1C28","u1C29","u1C2A","u1C2B","u1C34","u1C35","u1CE1","u1CF2","u1CF3","u302E","u302F","uA823","uA824","uA827","uA880","uA881","uA8B4","uA8B5","uA8B6","uA8B7","uA8B8","uA8B9","uA8BA","uA8BB","uA8BC","uA8BD","uA8BE","uA8BF","uA8C0","uA8C1","uA8C2","uA8C3","uA952","uA953","uA983","uA9B4","uA9B5","uA9BA","uA9BB","uA9BD","uA9BE","uA9BF","uA9C0","uAA2F","uAA30","uAA33","uAA34","uAA4D","uAA7B","uAA7D","uAAEB","uAAEE","uAAEF","uAAF5","uABE3","uABE4","uABE6","uABE7","uABE9","uABEA","uABEC"].concat(["u0300","u0301","u0302","u0303","u0304","u0305","u0306","u0307","u0308","u0309","u030A","u030B","u030C","u030D","u030E","u030F","u0310","u0311","u0312","u0313","u0314","u0315","u0316","u0317","u0318","u0319","u031A","u031B","u031C","u031D","u031E","u031F","u0320","u0321","u0322","u0323","u0324","u0325","u0326","u0327","u0328","u0329","u032A","u032B","u032C","u032D","u032E","u032F","u0330","u0331","u0332","u0333","u0334","u0335","u0336","u0337","u0338","u0339","u033A","u033B","u033C","u033D","u033E","u033F","u0340","u0341","u0342","u0343","u0344","u0345","u0346","u0347","u0348","u0349","u034A","u034B","u034C","u034D","u034E","u034F","u0350","u0351","u0352","u0353","u0354","u0355","u0356","u0357","u0358","u0359","u035A","u035B","u035C","u035D","u035E","u035F","u0360","u0361","u0362","u0363","u0364","u0365","u0366","u0367","u0368","u0369","u036A","u036B","u036C","u036D","u036E","u036F","u0483","u0484","u0485","u0486","u0487","u0591","u0592","u0593","u0594","u0595","u0596","u0597","u0598","u0599","u059A","u059B","u059C","u059D","u059E","u059F","u05A0","u05A1","u05A2","u05A3","u05A4","u05A5","u05A6","u05A7","u05A8","u05A9","u05AA","u05AB","u05AC","u05AD","u05AE","u05AF","u05B0","u05B1","u05B2","u05B3","u05B4","u05B5","u05B6","u05B7","u05B8","u05B9","u05BA","u05BB","u05BC","u05BD","u05BF","u05C1","u05C2","u05C4","u05C5","u05C7","u0610","u0611","u0612","u0613","u0614","u0615","u0616","u0617","u0618","u0619","u061A","u064B","u064C","u064D","u064E","u064F","u0650","u0651","u0652","u0653","u0654","u0655","u0656","u0657","u0658","u0659","u065A","u065B","u065C","u065D","u065E","u065F","u0670","u06D6","u06D7","u06D8","u06D9","u06DA","u06DB","u06DC","u06DF","u06E0","u06E1","u06E2","u06E3","u06E4","u06E7","u06E8","u06EA","u06EB","u06EC","u06ED","u0711","u0730","u0731","u0732","u0733","u0734","u0735","u0736","u0737","u0738","u0739","u073A","u073B","u073C","u073D","u073E","u073F","u0740","u0741","u0742","u0743","u0744","u0745","u0746","u0747","u0748","u0749","u074A","u07A6","u07A7","u07A8","u07A9","u07AA","u07AB","u07AC","u07AD","u07AE","u07AF","u07B0","u07EB","u07EC","u07ED","u07EE","u07EF","u07F0","u07F1","u07F2","u07F3","u0816","u0817","u0818","u0819","u081B","u081C","u081D","u081E","u081F","u0820","u0821","u0822","u0823","u0825","u0826","u0827","u0829","u082A","u082B","u082C","u082D","u0859","u085A","u085B","u08E3","u08E4","u08E5","u08E6","u08E7","u08E8","u08E9","u08EA","u08EB","u08EC","u08ED","u08EE","u08EF","u08F0","u08F1","u08F2","u08F3","u08F4","u08F5","u08F6","u08F7","u08F8","u08F9","u08FA","u08FB","u08FC","u08FD","u08FE","u08FF","u0900","u0901","u0902","u093A","u093C","u0941","u0942","u0943","u0944","u0945","u0946","u0947","u0948","u094D","u0951","u0952","u0953","u0954","u0955","u0956","u0957","u0962","u0963","u0981","u09BC","u09C1","u09C2","u09C3","u09C4","u09CD","u09E2","u09E3","u0A01","u0A02","u0A3C","u0A41","u0A42","u0A47","u0A48","u0A4B","u0A4C","u0A4D","u0A51","u0A70","u0A71","u0A75","u0A81","u0A82","u0ABC","u0AC1","u0AC2","u0AC3","u0AC4","u0AC5","u0AC7","u0AC8","u0ACD","u0AE2","u0AE3","u0B01","u0B3C","u0B3F","u0B41","u0B42","u0B43","u0B44","u0B4D","u0B56","u0B62","u0B63","u0B82","u0BC0","u0BCD","u0C00","u0C3E","u0C3F","u0C40","u0C46","u0C47","u0C48","u0C4A","u0C4B","u0C4C","u0C4D","u0C55","u0C56","u0C62","u0C63","u0C81","u0CBC","u0CBF","u0CC6","u0CCC","u0CCD","u0CE2","u0CE3","u0D01","u0D41","u0D42","u0D43","u0D44","u0D4D","u0D62","u0D63","u0DCA","u0DD2","u0DD3","u0DD4","u0DD6","u0E31","u0E34","u0E35","u0E36","u0E37","u0E38","u0E39","u0E3A","u0E47","u0E48","u0E49","u0E4A","u0E4B","u0E4C","u0E4D","u0E4E","u0EB1","u0EB4","u0EB5","u0EB6","u0EB7","u0EB8","u0EB9","u0EBB","u0EBC","u0EC8","u0EC9","u0ECA","u0ECB","u0ECC","u0ECD","u0F18","u0F19","u0F35","u0F37","u0F39","u0F71","u0F72","u0F73","u0F74","u0F75","u0F76","u0F77","u0F78","u0F79","u0F7A","u0F7B","u0F7C","u0F7D","u0F7E","u0F80","u0F81","u0F82","u0F83","u0F84","u0F86","u0F87","u0F8D","u0F8E","u0F8F","u0F90","u0F91","u0F92","u0F93","u0F94","u0F95","u0F96","u0F97","u0F99","u0F9A","u0F9B","u0F9C","u0F9D","u0F9E","u0F9F","u0FA0","u0FA1","u0FA2","u0FA3","u0FA4","u0FA5","u0FA6","u0FA7","u0FA8","u0FA9","u0FAA","u0FAB","u0FAC","u0FAD","u0FAE","u0FAF","u0FB0","u0FB1","u0FB2","u0FB3","u0FB4","u0FB5","u0FB6","u0FB7","u0FB8","u0FB9","u0FBA","u0FBB","u0FBC","u0FC6","u102D","u102E","u102F","u1030","u1032","u1033","u1034","u1035","u1036","u1037","u1039","u103A","u103D","u103E","u1058","u1059","u105E","u105F","u1060","u1071","u1072","u1073","u1074","u1082","u1085","u1086","u108D","u109D","u135D","u135E","u135F","u1712","u1713","u1714","u1732","u1733","u1734","u1752","u1753","u1772","u1773","u17B4","u17B5","u17B7","u17B8","u17B9","u17BA","u17BB","u17BC","u17BD","u17C6","u17C9","u17CA","u17CB","u17CC","u17CD","u17CE","u17CF","u17D0","u17D1","u17D2","u17D3","u17DD","u180B","u180C","u180D","u18A9","u1920","u1921","u1922","u1927","u1928","u1932","u1939","u193A","u193B","u1A17","u1A18","u1A1B","u1A56","u1A58","u1A59","u1A5A","u1A5B","u1A5C","u1A5D","u1A5E","u1A60","u1A62","u1A65","u1A66","u1A67","u1A68","u1A69","u1A6A","u1A6B","u1A6C","u1A73","u1A74","u1A75","u1A76","u1A77","u1A78","u1A79","u1A7A","u1A7B","u1A7C","u1A7F","u1AB0","u1AB1","u1AB2","u1AB3","u1AB4","u1AB5","u1AB6","u1AB7","u1AB8","u1AB9","u1ABA","u1ABB","u1ABC","u1ABD","u1B00","u1B01","u1B02","u1B03","u1B34","u1B36","u1B37","u1B38","u1B39","u1B3A","u1B3C","u1B42","u1B6B","u1B6C","u1B6D","u1B6E","u1B6F","u1B70","u1B71","u1B72","u1B73","u1B80","u1B81","u1BA2","u1BA3","u1BA4","u1BA5","u1BA8","u1BA9","u1BAB","u1BAC","u1BAD","u1BE6","u1BE8","u1BE9","u1BED","u1BEF","u1BF0","u1BF1","u1C2C","u1C2D","u1C2E","u1C2F","u1C30","u1C31","u1C32","u1C33","u1C36","u1C37","u1CD0","u1CD1","u1CD2","u1CD4","u1CD5","u1CD6","u1CD7","u1CD8","u1CD9","u1CDA","u1CDB","u1CDC","u1CDD","u1CDE","u1CDF","u1CE0","u1CE2","u1CE3","u1CE4","u1CE5","u1CE6","u1CE7","u1CE8","u1CED","u1CF4","u1CF8","u1CF9","u1DC0","u1DC1","u1DC2","u1DC3","u1DC4","u1DC5","u1DC6","u1DC7","u1DC8","u1DC9","u1DCA","u1DCB","u1DCC","u1DCD","u1DCE","u1DCF","u1DD0","u1DD1","u1DD2","u1DD3","u1DD4","u1DD5","u1DD6","u1DD7","u1DD8","u1DD9","u1DDA","u1DDB","u1DDC","u1DDD","u1DDE","u1DDF","u1DE0","u1DE1","u1DE2","u1DE3","u1DE4","u1DE5","u1DE6","u1DE7","u1DE8","u1DE9","u1DEA","u1DEB","u1DEC","u1DED","u1DEE","u1DEF","u1DF0","u1DF1","u1DF2","u1DF3","u1DF4","u1DF5","u1DFC","u1DFD","u1DFE","u1DFF","u20D0","u20D1","u20D2","u20D3","u20D4","u20D5","u20D6","u20D7","u20D8","u20D9","u20DA","u20DB","u20DC","u20E1","u20E5","u20E6","u20E7","u20E8","u20E9","u20EA","u20EB","u20EC","u20ED","u20EE","u20EF","u20F0","u2CEF","u2CF0","u2CF1","u2D7F","u2DE0","u2DE1","u2DE2","u2DE3","u2DE4","u2DE5","u2DE6","u2DE7","u2DE8","u2DE9","u2DEA","u2DEB","u2DEC","u2DED","u2DEE","u2DEF","u2DF0","u2DF1","u2DF2","u2DF3","u2DF4","u2DF5","u2DF6","u2DF7","u2DF8","u2DF9","u2DFA","u2DFB","u2DFC","u2DFD","u2DFE","u2DFF","u302A","u302B","u302C","u302D","u3099","u309A","uA66F","uA674","uA675","uA676","uA677","uA678","uA679","uA67A","uA67B","uA67C","uA67D","uA69E","uA69F","uA6F0","uA6F1","uA802","uA806","uA80B","uA825","uA826","uA8C4","uA8E0","uA8E1","uA8E2","uA8E3","uA8E4","uA8E5","uA8E6","uA8E7","uA8E8","uA8E9","uA8EA","uA8EB","uA8EC","uA8ED","uA8EE","uA8EF","uA8F0","uA8F1","uA926","uA927","uA928","uA929","uA92A","uA92B","uA92C","uA92D","uA947","uA948","uA949","uA94A","uA94B","uA94C","uA94D","uA94E","uA94F","uA950","uA951","uA980","uA981","uA982","uA9B3","uA9B6","uA9B7","uA9B8","uA9B9","uA9BC","uA9E5","uAA29","uAA2A","uAA2B","uAA2C","uAA2D","uAA2E","uAA31","uAA32","uAA35","uAA36","uAA43","uAA4C","uAA7C","uAAB0","uAAB2","uAAB3","uAAB4","uAAB7","uAAB8","uAABE","uAABF","uAAC1","uAAEC","uAAED","uAAF6","uABE5","uABE8","uABED","uFB1E","uFE00","uFE01","uFE02","uFE03","uFE04","uFE05","uFE06","uFE07","uFE08","uFE09","uFE0A","uFE0B","uFE0C","uFE0D","uFE0E","uFE0F","uFE20","uFE21","uFE22","uFE23","uFE24","uFE25","uFE26","uFE27","uFE28","uFE29","uFE2A","uFE2B","uFE2C","uFE2D","uFE2E","uFE2F"])},"./node_modules/d3plus-text/es/src/fontExists.js":
/*!*******************************************************!*\
!*** ./node_modules/d3plus-text/es/src/fontExists.js ***!
\*******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r,o,i,u,s=n(/*! ./textWidth */"./node_modules/d3plus-text/es/src/textWidth.js"),c=n(/*! ./trim */"./node_modules/d3plus-text/es/src/trim.js"),a="abcdefghiABCDEFGHI_!@#$%^&*()_+1234567890",l={};e.default=function(t){r||(r=Object(s.default)(a,{"font-family":"DejaVuSans","font-size":32}),o=Object(s.default)(a,{"font-family":"-apple-system","font-size":32}),i=Object(s.default)(a,{"font-family":"monospace","font-size":32}),u=Object(s.default)(a,{"font-family":"sans-serif","font-size":32})),t instanceof Array||(t=t.split(",")),t=t.map(function(t){return Object(c.trim)(t)});for(var e=0;e<t.length;e++){var n=t[e];if(l[n]||["-apple-system","monospace","sans-serif","DejaVuSans"].includes(n))return n;if(!1!==l[n]){var d=Object(s.default)(a,{"font-family":n,"font-size":32});if(l[n]=d!==i,l[n]&&(l[n]=d!==u),o&&l[n]&&(l[n]=d!==o),r&&l[n]&&(l[n]=d!==r),l[n])return n}}return!1}},"./node_modules/d3plus-text/es/src/rtl.js":
/*!************************************************!*\
!*** ./node_modules/d3plus-text/es/src/rtl.js ***!
\************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js");e.default=function(){return"rtl"===Object(r.select)("html").attr("dir")||"rtl"===Object(r.select)("body").attr("dir")||"rtl"===Object(r.select)("html").style("direction")||"rtl"===Object(r.select)("body").style("direction")}},"./node_modules/d3plus-text/es/src/stringify.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-text/es/src/stringify.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t){return void 0===t?t="undefined":"string"==typeof t||t instanceof String||(t=JSON.stringify(t)),t}},"./node_modules/d3plus-text/es/src/strip.js":
/*!**************************************************!*\
!*** ./node_modules/d3plus-text/es/src/strip.js ***!
\**************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=[[/[\300-\305]/g,"A"],[/[\340-\345]/g,"a"],[/[\306]/g,"AE"],[/[\346]/g,"ae"],[/[\337]/g,"B"],[/[\307]/g,"C"],[/[\347]/g,"c"],[/[\320\336\376]/g,"D"],[/[\360]/g,"d"],[/[\310-\313]/g,"E"],[/[\350-\353]/g,"e"],[/[\314-\317]/g,"I"],[/[\354-\357]/g,"i"],[/[\321]/g,"N"],[/[\361]/g,"n"],[/[\322-\326\330]/g,"O"],[/[\362-\366\370]/g,"o"],[/[\331-\334]/g,"U"],[/[\371-\374]/g,"u"],[/[\327]/g,"x"],[/[\335]/g,"Y"],[/[\375\377]/g,"y"]];e.default=function(t){return(""+t).replace(/[^A-Za-z0-9\-_]/g,function(t){if(" "===t)return"-";for(var e=!1,n=0;n<r.length;n++)if(new RegExp(r[n][0]).test(t)){e=r[n][1];break}return e||""})}},"./node_modules/d3plus-text/es/src/textSplit.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-text/es/src/textSplit.js ***!
\******************************************************/
/*! exports provided: default, prefixChars, splitChars, splitWords, suffixChars */function(t,e,n){"use strict";n.r(e),n.d(e,"prefixChars",function(){return s}),n.d(e,"splitChars",function(){return u}),n.d(e,"splitWords",function(){return l}),n.d(e,"suffixChars",function(){return c});var r=n(/*! ./stringify */"./node_modules/d3plus-text/es/src/stringify.js"),o=n(/*! ./combiningMarks */"./node_modules/d3plus-text/es/src/combiningMarks.js"),i=n(/*! d3-array */"./node_modules/d3-array/src/index.js"),u=["-","/",";",":","&","u0E2F","u0EAF","u0EC6","u0ECC","u104A","u104B","u104C","u104D","u104E","u104F","u2013","u2014","u2027","u3000","u3001","u3002","uFF0C","uFF5E"],s=["'","<","(","{","[","u00AB","u300A","u3008"],c=["'",">",")","}","]",".","!","?","u00BB","u300B","u3009"].concat(u),a="က-ဪဿ-၉ၐ-ၕ㐀-龿぀-ゟ゠-ヿ＀-+--}⦅-゚㐀-䶿ກ-ຮະ-ໄ່-໋ໍ-ໝ",l=new RegExp("(\\"+u.join("|\\")+")*[^\\s|\\"+u.join("|\\")+"]*(\\"+u.join("|\\")+")*","g"),d=new RegExp("["+a+"]"),f=new RegExp("(\\"+s.join("|\\")+")*["+a+"](\\"+c.join("|\\")+"|\\"+o.default.join("|\\")+")*|[a-z0-9]+","gi");e.default=function(t){return d.test(t)?Object(i.merge)(Object(r.default)(t).match(l).map(function(t){return d.test(t)?t.match(f):[t]})):Object(r.default)(t).match(l).filter(function(t){return t.length})}},"./node_modules/d3plus-text/es/src/textWidth.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-text/es/src/textWidth.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e),e.default=function(t,e){e=Object.assign({"font-size":10,"font-family":"sans-serif","font-style":"normal","font-weight":400,"font-variant":"normal"},e);var n=document.createElement("canvas").getContext("2d"),r=[];return r.push(e["font-style"]),r.push(e["font-variant"]),r.push(e["font-weight"]),r.push("string"==typeof e["font-size"]?e["font-size"]:e["font-size"]+"px"),r.push(e["font-family"]),n.font=r.join(" "),t instanceof Array?t.map(function(t){return n.measureText(t).width}):n.measureText(t).width}},"./node_modules/d3plus-text/es/src/textWrap.js":
/*!*****************************************************!*\
!*** ./node_modules/d3plus-text/es/src/textWrap.js ***!
\*****************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./textWidth */"./node_modules/d3plus-text/es/src/textWidth.js"),o=n(/*! ./textSplit */"./node_modules/d3plus-text/es/src/textSplit.js"),i=n(/*! ./stringify */"./node_modules/d3plus-text/es/src/stringify.js"),u=n(/*! ./trim */"./node_modules/d3plus-text/es/src/trim.js");e.default=function(){var t,e="sans-serif",n=10,s=400,c=200,a=null,l=!1,d=o.default,f=200;function h(o){o=Object(i.default)(o),void 0===t&&(t=Math.ceil(1.4*n));for(var h=d(o),p={"font-family":e,"font-size":n,"font-weight":s,"line-height":t},m=1,y="",v=!1,g=0,j=[],b=Object(r.default)(h,p),_=Object(r.default)(" ",p),x=0;x<h.length;x++){var w=h[x],A=b[h.indexOf(w)];if(w+=o.slice(y.length+w.length).match("^( |\n)*","g")[0],"\n"===y.slice(-1)||g+A>f){if(!x&&!l){v=!0;break}if(j[m-1]=Object(u.trimRight)(j[m-1]),t*++m>c||A>f&&!l||a&&m>a){v=!0;break}g=0,j.push(w)}else x?j[m-1]+=w:j[0]=w;y+=w,g+=A,g+=w.match(/[\s]*$/g)[0].length*_}return{lines:j,sentence:o,truncated:v,widths:Object(r.default)(j,p),words:h}}return h.fontFamily=function(t){return arguments.length?(e=t,h):e},h.fontSize=function(t){return arguments.length?(n=t,h):n},h.fontWeight=function(t){return arguments.length?(s=t,h):s},h.height=function(t){return arguments.length?(c=t,h):c},h.lineHeight=function(e){return arguments.length?(t=e,h):t},h.maxLines=function(t){return arguments.length?(a=t,h):a},h.overflow=function(t){return arguments.length?(l=t,h):l},h.split=function(t){return arguments.length?(d=t,h):d},h.width=function(t){return arguments.length?(f=t,h):f},h}},"./node_modules/d3plus-text/es/src/titleCase.js":
/*!******************************************************!*\
!*** ./node_modules/d3plus-text/es/src/titleCase.js ***!
\******************************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./textSplit */"./node_modules/d3plus-text/es/src/textSplit.js"),o=["a","an","and","as","at","but","by","for","from","if","in","into","near","nor","of","on","onto","or","per","that","the","to","with","via","vs","vs."],i=["CEO","CFO","CNC","COO","CPU","GDP","HVAC","ID","IT","R&D","TV","UI"];e.default=function(t){if(void 0===t)return"";var e=o.map(function(t){return t.toLowerCase()}),n=i.slice(),u=(n=n.concat(n.map(function(t){return t+"s"}))).map(function(t){return t.toLowerCase()}),s=Object(r.default)(t);return s.map(function(t,o){if(t){var i=t.toLowerCase(),c=r.suffixChars.includes(i.charAt(i.length-1))?i.slice(0,-1):i,a=u.indexOf(c);return a>=0?n[a]:e.includes(c)&&0!==o&&o!==s.length-1?i:t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()}return""}).reduce(function(e,n,r){return r&&" "===t.charAt(e.length)&&(e+=" "),e+=n},"")}},"./node_modules/d3plus-text/es/src/trim.js":
/*!*************************************************!*\
!*** ./node_modules/d3plus-text/es/src/trim.js ***!
\*************************************************/
/*! exports provided: trim, trimLeft, trimRight */function(t,e,n){"use strict";function r(t){return t.replace(/^\s+|\s+$/g,"")}function o(t){return t.replace(/^\s+/,"")}function i(t){return t.replace(/\s+$/,"")}n.r(e),n.d(e,"trim",function(){return r}),n.d(e,"trimLeft",function(){return o}),n.d(e,"trimRight",function(){return i})},"./node_modules/events/events.js":
/*!***************************************!*\
!*** ./node_modules/events/events.js ***!
\***************************************/
/*! no static exports found */function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function o(t){return"object"==typeof t&&null!==t}function i(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,u,s,c,a;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var l=new Error('Uncaught, unspecified "error" event. ('+e+")");throw l.context=e,l}if(i(n=this._events[t]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),u=(a=n.slice()).length,c=0;c<u;c++)a[c].apply(this,s);return!0},n.prototype.addListener=function(t,e){var u;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned&&(u=i(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&u>0&&this._events[t].length>u&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){if(!r(e))throw TypeError("listener must be a function");var n=!1;function o(){this.removeListener(t,o),n||(n=!0,e.apply(this,arguments))}return o.listener=e,this.on(t,o),this},n.prototype.removeListener=function(t,e){var n,i,u,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(u=(n=this._events[t]).length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(s=u;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[t]))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},"./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./js/BoxedTree */"./src/js/BoxedTree.js"),o=n(/*! ./js/CircleTree */"./src/js/CircleTree.js");e.default={boxedTree:r.default,circleTree:o.default}},"./src/js/BaseTree.js":
/*!****************************!*\
!*** ./src/js/BaseTree.js ***!
\****************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./CustomD3 */"./src/js/CustomD3.js"),o=n(/*! ./NodeSettings */"./src/js/NodeSettings.js"),i=n(/*! ./LoadOnDemandSettings */"./src/js/LoadOnDemandSettings.js"),u=n(/*! events */"./node_modules/events/events.js"),s=n.n(u);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function p(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var m=function(t){function e(t){var n,r,u;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),r=this,n=!(u=d(e).call(this))||"object"!==c(u)&&"function"!=typeof u?h(r):u,t=t||{};var s=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){a(t,e,n[e])})}return t}({},e.defaults,t);return n._root=null,n._svg=null,n._panningContainer=null,n._view=null,n._treeGenerator=null,n._linkPathGenerator=null,n._visibleNodes=null,n._links=null,n._zoomListener=null,n.setTheme(s.theme),n.setOrientation(s.orientation),n.setData(s.data),n.setElement(s.element),n.setWidthWithoutMargins(s.widthWithoutMargins),n.setHeightWithoutMargins(s.heightWithoutMargins),n.setMargins(s.margins),n.setDuration(s.duration),n.setAllowPan(s.allowPan),n.setAllowZoom(s.allowZoom),n.setAllowFocus(s.allowFocus),n.setAllowNodeCentering(s.allowNodeCentering),n.setMinScale(s.minScale),n.setMaxScale(s.maxScale),n.setIsFlatData(s.isFlatData),n.setNodeDepthMultiplier(s.nodeDepthMultiplier),n.loadOnDemandSettings=new i.default(h(h(n)),s.loadOnDemandSettings),n.nodeSettings=new o.default(h(h(n)),s.nodeSettings),n._getId=s.getId,n._getChildren=s.getChildren,n._getParentId=s.getParentId,n}var n,u,m;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(e,s.a),n=e,(u=[{key:"_nodeEnter",value:function(t,e){throw"The function _nodeEnter must be implemented"}},{key:"_nodeUpdate",value:function(t,e,n){throw"The function _nodeUpdate must be implemented"}},{key:"_nodeExit",value:function(t,e,n){throw"The function _nodeExit must be implemented"}},{key:"_getLinkPathGenerator",value:function(){throw"The function _getLinkPathGenerator must be implemented"}},{key:"_linkEnter",value:function(t,e,n,r){throw"The function _linkEnter must be implemented"}},{key:"_linkUpdate",value:function(t,e,n,r,o){throw"The function _linkUpdate must be implemented"}},{key:"_linkExit",value:function(t,e,n,r,o){throw"The function _linkExit must be implemented"}},{key:"_getNodeSize",value:function(){throw"The function _getNodeSize must be implemented"}},{key:"focusToNode",value:function(t){this.removeSelection(this.getRoot());var e=t;"object"!==c(e)&&null!==e&&(e=this.getNode(e));var n=null;for(n=e.parent;n;)n._children&&this.expand(n),n=n.parent;if(this.getAllowFocus()){for(n=e.parent;n;)this.hideSiblings(n),n=n.parent;this.updateTreeWithFocusOnNode(e),e.selected=!0}return this.update(this.getRoot()),this.centerNode(e),this}},{key:"getIsFlatData",value:function(){return this._isFlatData}},{key:"setIsFlatData",value:function(t){return this._isFlatData=t,this}},{key:"regenerateNodeData",value:function(){var t=this;if(this.getIsFlatData()){if(!this._getParentId)throw"If you are providing flat structured data, then you must set the getParentId accessor property.";var e=r.default.stratify().id(function(e,n,r){return t.getId.call(t,e)}).parentId(function(e,n,r){return t.getParentId.call(t,e)});this._root=e(this.getData())}else{if(!this._getChildren)throw"If you are providing hierarchical structured data, then you must set the getChildren accessor property.";this._root=r.default.hierarchy(this.getData(),function(e){return t.getChildren.call(t,e)})}return this}},{key:"getTheme",value:function(){return this._theme}},{key:"setTheme",value:function(t){return this._theme=t,this}},{key:"getOrientation",value:function(){return this._orientation}},{key:"setOrientation",value:function(t){return this._orientation=t,this}},{key:"getData",value:function(){return this._data}},{key:"setData",value:function(t){return this._data=t,this}},{key:"getNodeDepthMultiplier",value:function(){return this._nodeDepthMultiplier}},{key:"setNodeDepthMultiplier",value:function(t){return this._nodeDepthMultiplier=t,this}},{key:"getDuration",value:function(){return this._duration}},{key:"setDuration",value:function(t){return this._duration=t,this}},{key:"getAllowPan",value:function(){return this._allowPan}},{key:"setAllowPan",value:function(t){return this._allowPan=t,this}},{key:"getAllowZoom",value:function(){return this._allowZoom}},{key:"setAllowZoom",value:function(t){return this._allowZoom=t,this}},{key:"getAllowFocus",value:function(){return this._allowFocus}},{key:"setAllowFocus",value:function(t){return this._allowFocus=t,this}},{key:"getAllowNodeCentering",value:function(){return this._allowNodeCentering}},{key:"setAllowNodeCentering",value:function(t){return this._allowNodeCentering=t,this}},{key:"getMinScale",value:function(){return this._minScale}},{key:"setMinScale",value:function(t){return this._minScale=t,this}},{key:"getMaxScale",value:function(){return this._maxScale}},{key:"setMaxScale",value:function(t){return this._maxScale=t,this}},{key:"getLoadOnDemandSettings",value:function(){return this.loadOnDemandSettings}},{key:"getNodeSettings",value:function(){return this.nodeSettings}},{key:"getElement",value:function(){return this._element}},{key:"setElement",value:function(t){return this._element=t,this}},{key:"getRoot",value:function(){return this._root}},{key:"getSvg",value:function(){return this._svg}},{key:"getView",value:function(){return this._view}},{key:"getPanningContainer",value:function(){return this._panningContainer}},{key:"getTreeGenerator",value:function(){return this._treeGenerator}},{key:"getNode",value:function(t){var e=this,n=t;"object"===c(n)&&null!==n&&(n=this.getId(n));return function t(e,n,r){if(r(e))return e;var o=n(e),i=o.find(r);if(!i){var u=!0,s=!1,c=void 0;try{for(var a,l=o[Symbol.iterator]();!(u=(a=l.next()).done)&&!(i=t(a.value,n,r));u=!0);}catch(t){s=!0,c=t}finally{try{u||null==l.return||l.return()}finally{if(s)throw c}}}return i}(this.getRoot(),function(t){return t._children?t._children:[]},function(t){return e.getId(t.data)==n})}},{key:"getDataItem",value:function(t){return this.getNode(t).data}},{key:"getNodes",value:function(){return this._nodes}},{key:"getVisibleNodes",value:function(){return this._visibleNodes}},{key:"getLinks",value:function(){return this._links}},{key:"getZoomListener",value:function(){return this._zoomListener}},{key:"getId",value:function(t){return this._getId(t)}},{key:"getChildren",value:function(t){return this._getChildren(t)}},{key:"getParentId",value:function(t){return this._getParentId(t)}},{key:"setIdAccessor",value:function(t){return this._getId=t,this}},{key:"setChildrenAccessor",value:function(t){return this._getChildren=t,this}},{key:"setParentIdAccessor",value:function(t){return this._getParentId=t,this}},{key:"getWidth",value:function(){return this.getWidthWithoutMargins()-this.getMargins().left-this.getMargins().right}},{key:"getHeight",value:function(){return this.getHeightWithoutMargins()-this.getMargins().top-this.getMargins().bottom}},{key:"setMargins",value:function(t){return this._margins=t,this}},{key:"getMargins",value:function(){return this._margins}},{key:"setWidthWithoutMargins",value:function(t){return this._widthWithoutMargin=t,this}},{key:"getWidthWithoutMargins",value:function(){return this._widthWithoutMargin}},{key:"setHeightWithoutMargins",value:function(t){return this._heightWithoutMargin=t,this}},{key:"getHeightWithoutMargins",value:function(){return this._heightWithoutMargin}},{key:"updateDimensions",value:function(){this.getSvg().attr("viewBox","0 0 "+this.getWidthWithoutMargins()+" "+this.getHeightWithoutMargins());var t,e,n=this.getMargins(),r=!1,o=this.nodeSettings.getSizingMode();return"string"==typeof o&&(o=o.trim().toLowerCase()),"nodesize"===o?(this.getTreeGenerator().nodeSize(this._getNodeSize()),!1===this.getAllowFocus()&&(r=!0)):this.getTreeGenerator().size([this.getHeight(),this.getWidth()]),!1===r?this.getView().attr("transform","translate("+n.left+","+n.top+")"):this.getView().attr("transform","translate("+n.left+", "+(this.getHeight()/2+n.top)+")"),"topToBottom"===this.getOrientation()?(t=!1===r?this.getWidth()/2:0,e=this.getHeight()/4):(t=!1===r?this.getHeight()/2:0,e=0),this.getRoot().x0=t,this.getRoot().y0=e,this.getZoomListener()&&this.getZoomListener().extent([[0,0],[this.getWidthWithoutMargins(),this.getHeightWithoutMargins()]]),this}},{key:"validateSettings",value:function(){if(!this.getElement())throw"Need to pass in an element as part of the options";if(!this.getData())throw"Need to pass in data as part of the options";if(!this._getId)throw"Need to define the getId function as part of the options";return this.loadOnDemandSettings.validateSettings(),this}},{key:"initialize",value:function(){var t=this;for(this.validateSettings(),this.regenerateNodeData();this.getElement().firstChild;)this.getElement().removeChild(this.getElement().firstChild);return this._svg=r.default.select(this.getElement()).append("svg").classed("mitch-d3-tree",!0).classed(this.getTheme(),!0).attr("preserveAspectRatio","xMidYMid meet").style("width","100%").style("height","100%"),this._view=this.getSvg().append("g").classed("view",!0),this._treeGenerator=r.default.tree(),this._panningContainer=this.getView().append("g").classed("panningContainer",!0),this._zoomListener=r.default.zoom().scaleExtent([this.getMinScale(),this.getMaxScale()]).on("zoom",function(){var e=r.default.event.transform;t.getPanningContainer().attr("transform",e)}),this.getSvg().call(this.getZoomListener()),!1===this.getAllowPan()&&this.getSvg().on("mousedown.zoom",null).on("touchstart.zoom",null).on("touchmove.zoom",null).on("touchend.zoom",null),!1===this.getAllowZoom()&&this.getSvg().on("dblclick.zoom",null).on("wheel.zoom",null),this.updateDimensions(),this._populateUnderlyingChildren(this.getRoot()),this.getRoot().children&&this.getRoot().children.forEach(this.collapseRecursively),this.removeSelection(this.getRoot()),this.update(this.getRoot()),this.centerNode(this.getRoot()),this}},{key:"expand",value:function(t){return t.children=t._children,this}},{key:"expandRecursively",value:function(t){return function t(e){e.children&&(e.children.forEach(t),e.children=e._children)}(t),this}},{key:"collapse",value:function(t){return t.children=null,this}},{key:"collapseRecursively",value:function(t){return function t(e){e.children&&(e.children.forEach(t),e.children=null)}(t),this}},{key:"_populateUnderlyingChildren",value:function(t){return function t(e){e.children&&(e._children=e.children,e._children.forEach(t))}(t),this}},{key:"removeSelection",value:function(t){return function t(e){e.selected=!1,e.children&&e.children.forEach(t)}(t),this}},{key:"centerNode",value:function(t){var e,n,o,i,u=r.default.zoomTransform(this.getSvg().node()).k;return"toptobottom"===this.getOrientation().toLowerCase()?(e=-t.x0,n=-t.y0,o=e*u+this.getWidth()/2,i=n*u+this.getHeight()/2):(e=-t.y0,n=-t.x0,o=e*u+this.getWidth()/4,i=n*u+this.getHeight()/2),this.getSvg().transition().duration(this.getDuration()).call(this.getZoomListener().transform,r.default.zoomIdentity.translate(o,i).scale(u)),this}},{key:"_onNodeClick",value:function(t,e,n){var r={type:this.getAllowFocus()?"focus":t.children?"collapse":"expand",continue:!0,nodeDataItem:t,nodeDataItemIndex:e,nodeDataItems:n};return this.emit("nodeClick",r),!1!==r.continue&&(this.getAllowFocus()?this.nodeFocus.call(this,t):this.nodeToggle.call(this,t),!0)}},{key:"_createNode",value:function(t,e){var n=r.default.hierarchy(e);return n.depth=t.depth+1,n.height=t.height-1,n.parent=t,n.id=this.getId.call(this,e),n}},{key:"_addUnderlyingChildNode",value:function(t,e){var n=this._createNode(t,e);return t._children.push(n),n}},{key:"_processLoadedDataForNodeFocus",value:function(t,e){var n=this;t._children=[],e.forEach(function(e){return n._addUnderlyingChildNode(t,e)}),this._populateUnderlyingChildren(t),this.updateTreeWithFocusOnNode(t);var r=t.selected;return this.removeSelection(this.getRoot()),t.selected=!0,this.update(t),!0!==this.getAllowNodeCentering()||!1!==r&&void 0!==r||this.centerNode(t),this}},{key:"nodeFocus",value:function(t){var e=this;if(!t.children&&!t._children&&this.loadOnDemandSettings.isEnabled()&&this.loadOnDemandSettings.hasChildren(t.data)){this.loadOnDemandSettings.loadChildren(t.data,function(n){return e._processLoadedDataForNodeFocus(t,n)})}else{this.updateTreeWithFocusOnNode(t);var n=t.selected;this.removeSelection(this.getRoot()),t.selected=!0,this.update(t),!0!==this.getAllowNodeCentering()||!1!==n&&void 0!==n||this.centerNode(t)}return this}},{key:"_processLoadedDataForNodeToggle",value:function(t,e){var n=this;return t._children=[],e.forEach(function(e){return n._addUnderlyingChildNode(t,e)}),this.expand(t),this.update(t),!0===this.getAllowNodeCentering()&&this.centerNode(t),this}},{key:"nodeToggle",value:function(t){var e=this;if(!t.children&&!t._children&&this.loadOnDemandSettings.isEnabled()&&this.loadOnDemandSettings.hasChildren(t.data)){this.loadOnDemandSettings.loadChildren(t.data,function(n){return e._processLoadedDataForNodeToggle(t,n)})}else t.children?this.collapse(t):this.expand(t),this.update(t),!0===this.getAllowNodeCentering()&&this.centerNode(t);return this}},{key:"hideSiblings",value:function(t){var e=this,n=t.parent;if(n){var r=this.getId(t.data);n.children.filter(function(t){return e.getId(t.data)!=r}).forEach(this.collapseRecursively),n.children=[],n.children.push(t)}return this}},{key:"updateTreeWithFocusOnNode",value:function(t){if(!t.children&&t._children)this.hideSiblings(t),this.expand(t),t.children.forEach(this.collapseRecursively);else if(t.children){!1===!t.children.some(function(t,e,n){return t.children})&&(this.collapseRecursively(t),this.expand(t))}return this}},{key:"_updateNodes",value:function(t,e){var n=this;e.forEach(function(t){return t.y=t.depth*n.getNodeDepthMultiplier()});var r=(e=this.getPanningContainer().selectAll("g.node").data(e,function(t){return n.getId.call(n,t.data)})).enter().append("g").classed("node",!0).attr("transform",function(e,r,o){return"toptobottom"===n.getOrientation().toLowerCase()?"translate("+t.x0+","+t.y0+")":"translate("+t.y0+","+t.x0+")"}).on("click",function(t,e,r){return n._onNodeClick.call(n,t,e,r)});this._nodeEnter(r,e);var o=r.merge(e),i=o.transition().duration(this.getDuration());o.classed("collapsed",function(t,e,r){return!(t.children||!t._children)||!(!n.loadOnDemandSettings.isEnabled()||!n.loadOnDemandSettings.hasChildren(t.data)||t.children||t._children)}).classed("expanded",function(t,e,n){return t.children}).classed("childless",function(t,e,n){return!t.children&&!t._children}).classed("selected",function(t,e,n){return t.selected}),this._nodeUpdate(o,i,e);var u=e.exit(),s=u.transition().duration(this.getDuration());return this._nodeExit(u,s,e),this}},{key:"_updateLinks",value:function(t,e){var n=this,r=this._getLinkPathGenerator(),o=this.getPanningContainer().selectAll("path.link").data(e,function(t){return n.getId.call(n,t.data)}),i=o.enter().insert("path","g").classed("link",!0);this._linkEnter(t,i,o,r);var u=i.merge(o),s=u.transition().duration(this.getDuration());this._linkUpdate(t,u,s,o,r);var c=o.exit(),a=c.transition().duration(this.getDuration());return this._linkExit(t,c,a,o,r),this.getVisibleNodes().forEach(function(t){t.x0=t.x,t.y0=t.y}),this}},{key:"update",value:function(t){var e=this.getTreeGenerator()(this.getRoot());return this._visibleNodes=e.descendants(),this._nodes=[this.getRoot()].concat(p(function t(e,n){var r=[],o=n(e);if(o){var i=!0,u=!1,s=void 0;try{for(var c,a=o[Symbol.iterator]();!(i=(c=a.next()).done);i=!0){var l=c.value;r.push(l);var d=t(l,n);d&&(r=[].concat(p(r),p(d)))}}catch(t){u=!0,s=t}finally{try{i||null==a.return||a.return()}finally{if(u)throw s}}}return r}(this.getRoot(),function(t){return t._children}))),this._links=e.descendants().slice(1),this._updateNodes(t,this.getVisibleNodes())._updateLinks(t,this.getLinks()),this}}])&&l(n.prototype,u),m&&l(n,m),e}();m.defaults={theme:"default",orientation:"leftToRight",allowPan:!0,allowZoom:!0,allowFocus:!0,allowNodeCentering:!0,minScale:1,maxScale:2,nodeDepthMultiplier:300,isFlatData:!1,getId:null,getParentId:null,getChildren:null,widthWithoutMargins:960,heightWithoutMargins:800,margins:{top:40,right:20,bottom:40,left:100},duration:750,loadOnDemandSettings:{},nodeSettings:{}},e.default=m},"./src/js/BoxedNodeSettings.js":
/*!*************************************!*\
!*** ./src/js/BoxedNodeSettings.js ***!
\*************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./NodeSettings */"./src/js/NodeSettings.js");function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e){return!e||"object"!==o(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function c(t){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var l=function(t){function e(t,n){var r;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),r=s(this,c(e).call(this,t,n));var o=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){i(t,e,n[e])})}return t}({},e.defaults,n);return r._bodyBoxWidth=o.bodyBoxWidth,r._bodyBoxHeight=o.bodyBoxHeight,r._bodyBoxPadding=o.bodyBoxPadding,r._titleBoxWidth=o.titleBoxWidth,r._titleBoxHeight=o.titleBoxHeight,r._titleBoxPadding=o.titleBoxPadding,r}var n,o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(e,r["default"]),n=e,(o=[{key:"getBodyBoxWidth",value:function(){return this._bodyBoxWidth}},{key:"setBodyBoxWidth",value:function(t){return this._bodyBoxWidth=t,this}},{key:"getBodyBoxHeight",value:function(){return this._bodyBoxHeight}},{key:"setBodyBoxHeight",value:function(t){return this._bodyBoxHeight=t,this}},{key:"setBodyBoxPadding",value:function(t){return this._bodyBoxPadding=t,this}},{key:"getBodyBoxPadding",value:function(){return this._bodyBoxPadding}},{key:"getTitleBoxWidth",value:function(){return this._titleBoxWidth?this._titleBoxWidth:this.getBodyBoxWidth()/2}},{key:"setTitleBoxWidth",value:function(t){return this._titleBoxWidth=t,this}},{key:"getTitleBoxHeight",value:function(){return this._titleBoxHeight}},{key:"setTitleBoxHeight",value:function(t){return this._titleBoxHeight=t,this}},{key:"getTitleBoxPadding",value:function(){return this._titleBoxPadding}},{key:"setTitleBoxPadding",value:function(t){return this._titleBoxPadding=t,this}}])&&u(n.prototype,o),l&&u(n,l),e}();l.defaults={bodyBoxWidth:200,bodyBoxHeight:75,bodyBoxPadding:{top:5,right:10,bottom:5,left:10},titleBoxWidth:null,titleBoxHeight:40,titleBoxPadding:{top:2,right:5,bottom:2,left:5}},e.default=l},"./src/js/BoxedTree.js":
/*!*****************************!*\
!*** ./src/js/BoxedTree.js ***!
\*****************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./CustomD3 */"./src/js/CustomD3.js"),o=n(/*! d3plus-text */"./node_modules/d3plus-text/es/index.js"),i=n(/*! ./BaseTree */"./src/js/BaseTree.js"),u=n(/*! ./BoxedNodeSettings */"./src/js/BoxedNodeSettings.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function l(t,e,n){return(l="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=d(t)););return t}(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var p=function(t){function e(t){var n,r,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),r=this,n=!(o=d(e).call(this,t))||"object"!==s(o)&&"function"!=typeof o?h(r):o;var a=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){c(t,e,n[e])})}return t}({},i.default.defaults,e.defaults,t);return n._getBodyDisplayText=a.getBodyDisplayText,n._getTitleDisplayText=a.getTitleDisplayText,n.nodeSettings=new u.default(h(h(n)),a.nodeSettings),n}var n,p,m;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(e,i["default"]),n=e,(p=[{key:"initialize",value:function(){return l(d(e.prototype),"initialize",this).call(this),this.getSvg().classed("boxed-tree",!0),this}},{key:"_nodeEnter",value:function(t,e){var n=this,i=n.nodeSettings.getBodyBoxWidth(),u=n.nodeSettings.getBodyBoxHeight(),s=n.nodeSettings.getBodyBoxPadding(),c=n.nodeSettings.getTitleBoxWidth(),a=n.nodeSettings.getTitleBoxHeight(),l=n.nodeSettings.getTitleBoxPadding(),d=t.append("g").classed("body-group",!0);return d.append("rect").classed("body-box",!0).attr("width",1e-6).attr("height",1e-6),d.each(function(t,e,c){var l=r.default.select(this),d=[];d.push(t);var f=s.top;n.getTitleDisplayText.call(n,t)&&(f+=a/2);(new o.TextBox).select(this).data(d).text(function(t,e,r){return n.getBodyDisplayText.call(n,t)}).textAnchor("middle").verticalAlign("middle").fontSize(13).x(s.left).y(f-u/2).width(i-s.left-s.right).height(u-f-s.bottom).ellipsis(function(e,r){return l.append("title").text(n.getBodyDisplayText(t)),e.replace(/\.|,$/g,"")+"..."}).render()}),t.append("g").classed("title-group",!0).attr("transform","translate("+-c/3+", "+(-a/2-u/2)+")").each(function(t,e,i){if(n.getTitleDisplayText.call(n,t)){var u=r.default.select(this),s=[];s.push(t),u.append("rect").classed("title-box",!0).attr("width",c).attr("height",a);(new o.TextBox).select(this).data(s).text(function(t,e,r){return n.getTitleDisplayText.call(n,t)}).textAnchor("middle").verticalAlign("middle").x(l.left).y(l.top).fontWeight(700).fontMin(6).fontMax(16).fontResize(!0).width(c-l.left-l.right).height(a-l.top-l.bottom).render()}}),n}},{key:"_nodeUpdate",value:function(t,e,n){"toptobottom"===this.getOrientation().toLowerCase()?e.attr("transform",function(t,e,n){return"translate("+t.x+","+t.y+")"}):e.attr("transform",function(t,e,n){return"translate("+t.y+","+t.x+")"});var r=this.nodeSettings.getBodyBoxWidth(),o=this.nodeSettings.getBodyBoxHeight();return t.select(".node .body-group .body-box").attr("y",-o/2).attr("width",r).attr("height",o),t.select(".d3plus-textBox").style("fill-opacity",1),this}},{key:"_nodeExit",value:function(t,e,n){var r=this,o=this.nodeSettings.getBodyBoxWidth(),i=this.nodeSettings.getBodyBoxHeight();return e.attr("transform",function(t,e,n){for(var u=t.parent;u.parent&&!u.parent.children;)u=u.parent;return"toptobottom"===r.getOrientation().toLowerCase()?"translate("+(u.x+o/2)+","+(u.y+i)+")":"translate("+(u.y+o)+","+(u.x+i/2)+")"}).remove(),e.select(".node .body-group rect").attr("width",1e-6).attr("height",1e-6),e.select(".node .body-group .d3plus-textBox").style("fill-opacity",1e-6).attr("transform",function(t,e,n){return"translate(0,"+-i/2+")"}).selectAll("text").style("font-size",0).attr("y",0).attr("x",0),e.select(".node .title-group").attr("transform","translate(0, "+-i/2+")"),e.select(".node .title-group rect").attr("width",1e-6).attr("height",1e-6),e.select(".node .title-group .d3plus-textBox").style("fill-opacity",1e-6).attr("transform","translate(0,0)").selectAll("text").style("font-size",0).attr("y",0).attr("x",0),e.select(".d3plus-textBox").style("fill-opacity",1e-6),this}},{key:"_getNodeSize",value:function(){return"toptobottom"===this.getOrientation().toLowerCase()?[this.nodeSettings.getBodyBoxWidth()+this.nodeSettings.getHorizontalSpacing(),this.nodeSettings.getBodyBoxHeight()+this.nodeSettings.getVerticalSpacing()]:[this.nodeSettings.getBodyBoxHeight()+this.nodeSettings.getVerticalSpacing(),this.nodeSettings.getBodyBoxWidth()+this.nodeSettings.getHorizontalSpacing()]}},{key:"_linkEnter",value:function(t,e,n,r){return e.attr("d",function(e,n,o){var i={x:t.x0,y:t.y0};return r({source:i,target:i})}),this}},{key:"_linkUpdate",value:function(t,e,n,r,o){return n.attr("d",function(t,e,n){var r=t,i=t.parent;return o({source:r,target:i})}),this}},{key:"_linkExit",value:function(t,e,n,r,o){var i=this;return n.attr("d",function(t,e,n){for(var r=t.parent;r.parent&&!r.parent.children;)r=r.parent;var u=null;if("toptobottom"===i.getOrientation().toLowerCase()){var s=i.nodeSettings.getBodyBoxHeight();u={x:r.x,y:r.y+s}}else{var c=i.nodeSettings.getBodyBoxWidth();u={x:r.x,y:r.y+c}}var a={x:r.x,y:r.y};return o({source:u,target:a})}),this}},{key:"_getLinkPathGenerator",value:function(){var t=this.nodeSettings.getBodyBoxWidth(),e=this.nodeSettings.getBodyBoxHeight();return"toptobottom"===this.getOrientation().toLowerCase()?r.default.linkVertical().source(function(n){return[n.source.x+t/2,n.source.y-e/2]}).target(function(n){return[n.target.x+t/2,n.target.y+e/2]}):r.default.linkHorizontal().source(function(t){return[t.source.y,t.source.x]}).target(function(e){return[e.target.y+t,e.target.x]})}},{key:"validateSettings",value:function(){if(l(d(e.prototype),"validateSettings",this).call(this),!this._getBodyDisplayText)throw"Need to define the getBodyDisplayText function as part of the options";return this}},{key:"setBodyDisplayTextAccessor",value:function(t){return this._getBodyDisplayText=t,this}},{key:"getBodyDisplayText",value:function(t){return this._getBodyDisplayText(t.data)}},{key:"setTitleDisplayTextAccessor",value:function(t){return this._getTitleDisplayText=t,this}},{key:"getTitleDisplayText",value:function(t){return this._getTitleDisplayText(t.data)}},{key:"centerNode",value:function(t){var n=this.nodeSettings.getBodyBoxWidth(),r=this.nodeSettings.getBodyBoxHeight();return"toptobottom"===this.getOrientation().toLowerCase()?(t.x0=t.x0,t.y0=t.y0+r/2):(t.y0=t.y0+n/2,t.x0=t.x0),l(d(e.prototype),"centerNode",this).call(this,t)}}])&&a(n.prototype,p),m&&a(n,m),e}();p.defaults={getBodyDisplayText:null,getTitleDisplayText:function(t){return null}},e.default=p},"./src/js/CircleNodeSettings.js":
/*!**************************************!*\
!*** ./src/js/CircleNodeSettings.js ***!
\**************************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./NodeSettings */"./src/js/NodeSettings.js");function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){return!e||"object"!==o(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),i(this,u(e).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,r["default"]),e}();e.default=c},"./src/js/CircleTree.js":
/*!******************************!*\
!*** ./src/js/CircleTree.js ***!
\******************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! ./CustomD3 */"./src/js/CustomD3.js"),o=n(/*! ./BaseTree */"./src/js/BaseTree.js"),i=n(/*! ./CircleNodeSettings */"./src/js/CircleNodeSettings.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function a(t,e,n){return(a="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=l(t)););return t}(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function l(t){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var h=function(t){function e(t){var n,r,c;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),r=this,n=!(c=l(e).call(this,t))||"object"!==u(c)&&"function"!=typeof c?f(r):c;var a=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){s(t,e,n[e])})}return t}({},o.default.defaults,e.defaults,t);return n._getDisplayText=a.getDisplayText,n.nodeSettings=new i.default(f(f(n)),a.nodeSettings),n}var n,h,p;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(e,o["default"]),n=e,(h=[{key:"initialize",value:function(){return a(l(e.prototype),"initialize",this).call(this),this.getSvg().classed("circle-tree",!0),this}},{key:"_nodeEnter",value:function(t,e){var n=this;return t.append("circle").attr("r",1e-6),t.append("text").text(function(t,e,r){return n.getDisplayText.call(n,t)}),this}},{key:"_nodeUpdate",value:function(t,e,n){return t.classed("middle",function(t,e,n){var r=!1;if(t.parent&&t.parent.children.length%2!=0){var o=t.parent.children;o.indexOf(t)===Math.floor(o.length/2)&&(r=!0)}return r}),"toptobottom"===this.getOrientation().toLowerCase()?e.attr("transform",function(t,e,n){return"translate("+t.x+","+t.y+")"}):e.attr("transform",function(t,e,n){return"translate("+t.y+","+t.x+")"}),t.select("text").style("fill-opacity",1),this}},{key:"_nodeExit",value:function(t,e,n){var r=this;return e.attr("transform",function(t,e,n){for(var o=t.parent;o.parent&&!o.parent.children;)o=o.parent;return"toptobottom"===r.getOrientation().toLowerCase()?"translate("+o.x+","+o.y+")":"translate("+o.y+","+o.x+")"}).remove(),e.select("circle").attr("r",1e-6),e.select("text").style("fill-opacity",1e-6),this}},{key:"_getNodeSize",value:function(){return[this.nodeSettings.getVerticalSpacing(),this.nodeSettings.getHorizontalSpacing()]}},{key:"_linkEnter",value:function(t,e,n,r){return e.attr("d",function(e,n,o){var i={x:t.x0,y:t.y0};return r({source:i,target:i})}),this}},{key:"_linkUpdate",value:function(t,e,n,r,o){return n.attr("d",function(t,e,n){var r=t,i=t.parent;return o({source:r,target:i})}),this}},{key:"_linkExit",value:function(t,e,n,r,o){return n.attr("d",function(t,e,n){for(var r=t.parent;r.parent&&!r.parent.children;)r=r.parent;var i={x:r.x,y:r.y},u={x:r.x,y:r.y};return o({source:i,target:u})}),this}},{key:"_getLinkPathGenerator",value:function(){return"toptobottom"===this.getOrientation().toLowerCase()?r.default.linkVertical().source(function(t){return[t.source.x,t.source.y]}).target(function(t){return[t.target.x,t.target.y]}):r.default.linkHorizontal().source(function(t){return[t.source.y,t.source.x]}).target(function(t){return[t.target.y,t.target.x]})}},{key:"validateSettings",value:function(){if(a(l(e.prototype),"validateSettings",this).call(this),!this.getDisplayText)throw"Need to define the getDisplayText function as part of the options";return this}},{key:"setDisplayTextAccessor",value:function(t){return this._getDisplayText=t,this}},{key:"getDisplayText",value:function(t){return this._getDisplayText(t.data)}}])&&c(n.prototype,h),p&&c(n,p),e}();h.defaults={getDisplayText:function(t){return null}},e.default=h},"./src/js/CustomD3.js":
/*!****************************!*\
!*** ./src/js/CustomD3.js ***!
\****************************/
/*! exports provided: default */function(t,e,n){"use strict";n.r(e);var r=n(/*! d3-selection */"./node_modules/d3-selection/src/index.js"),o=n(/*! d3-hierarchy */"./node_modules/d3-hierarchy/src/index.js"),i=n(/*! d3-zoom */"./node_modules/d3-zoom/src/index.js"),u=n(/*! d3-shape */"./node_modules/d3-shape/src/index.js");function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var c=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){s(t,e,n[e])})}return t}({select:r.select,selectAll:r.selectAll,get event(){return r.event},linkHorizontal:u.linkHorizontal,linkVertical:u.linkVertical},o,i);e.default=c},"./src/js/LoadOnDemandSettings.js":
/*!****************************************!*\
!*** ./src/js/LoadOnDemandSettings.js ***!
\****************************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}n.r(e);var i=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.forEach(function(e){r(t,e,n[e])})}return t}({},t.defaults,n);this._ownerObject=e,this._hasChildren=o.hasChildren,this._loadChildren=o.loadChildren}var e,n,i;return e=t,(n=[{key:"back",value:function(){return this._ownerObject}},{key:"validateSettings",value:function(){if(!this.hasChildren&&this.loadChildren)throw"With load on demand enabled, you need to define hasChildren as part of the options";if(!this.loadChildren&&this.hasChildren)throw"With load on demand enabled, you need to define loadChildren as part of the options";return this}},{key:"loadChildren",value:function(t,e){return this._loadChildren.call(this._ownerObject,t,e)}},{key:"hasChildren",value:function(t){return this._hasChildren.call(this._ownerObject,t)}},{key:"setLoadChildrenMethod",value:function(t){return this._loadChildren=t,this}},{key:"setHasChildrenMethod",value:function(t){return this._hasChildren=t,this}},{key:"isEnabled",value:function(){return this._hasChildren||this._loadChildren}}])&&o(e.prototype,n),i&&o(e,i),t}();i.defaults={hasChildren:null,loadChildren:null},e.default=i},"./src/js/NodeSettings.js":
/*!********************************!*\
!*** ./src/js/NodeSettings.js ***!
\********************************/
/*! exports provided: default */function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}n.r(e);var i=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.forEach(function(e){r(t,e,n[e])})}return t}({},t.defaults,n);this._ownerObject=e,this._sizingMode=o.sizingMode,this._horizontalSpacing=o.horizontalSpacing,this._verticalSpacing=o.verticalSpacing}var e,n,i;return e=t,(n=[{key:"back",value:function(){return this._ownerObject}},{key:"getHorizontalSpacing",value:function(){return this._horizontalSpacing}},{key:"setHorizontalSpacing",value:function(t){return this._horizontalSpacing=t,this}},{key:"getVerticalSpacing",value:function(){return this._verticalSpacing}},{key:"setVerticalSpacing",value:function(t){return this._verticalSpacing=t,this}},{key:"getSizingMode",value:function(){return this._sizingMode}},{key:"setSizingMode",value:function(t){return this._sizingMode=t,this}}])&&o(e.prototype,n),i&&o(e,i),t}();i.defaults={sizingMode:"size",horizontalSpacing:25,verticalSpacing:25},e.default=i}}).default});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2FycmF5LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYXNjZW5kaW5nLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0b3IuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2Nyb3NzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvZGVzY2VuZGluZy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2RldmlhdGlvbi5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2V4dGVudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2hpc3RvZ3JhbS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2lkZW50aXR5LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tZWFuLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvbWVkaWFuLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9taW4uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9udW1iZXIuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9wYWlycy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3Blcm11dGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9xdWFudGlsZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3JhbmdlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvc2Nhbi5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3NodWZmbGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zdW0uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvZnJlZWRtYW5EaWFjb25pcy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3RocmVzaG9sZC9zY290dC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3RocmVzaG9sZC9zdHVyZ2VzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvdGlja3MuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90cmFuc3Bvc2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy92YXJpYW5jZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3ppcC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sbGVjdGlvbi9zcmMvZW50cmllcy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sbGVjdGlvbi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWNvbGxlY3Rpb24vc3JjL2tleXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWNvbGxlY3Rpb24vc3JjL21hcC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sbGVjdGlvbi9zcmMvbmVzdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sbGVjdGlvbi9zcmMvc2V0LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1jb2xsZWN0aW9uL3NyYy92YWx1ZXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jb2xvci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2N1YmVoZWxpeC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2RlZmluZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvbGFiLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvbWF0aC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2Rpc3BhdGNoLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1kaXNwYXRjaC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2NvbnN0YW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1kcmFnL3NyYy9kcmFnLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1kcmFnL3NyYy9ldmVudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtZHJhZy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZHJhZy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtZHJhZy9zcmMvbm9ldmVudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvYmFjay5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvYm91bmNlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9jaXJjbGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2N1YmljLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9lbGFzdGljLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9leHAuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9saW5lYXIuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3BvbHkuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3F1YWQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3Npbi5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9hY2Nlc3NvcnMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvYXJyYXkuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvY2x1c3Rlci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvYW5jZXN0b3JzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9jb3VudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZGVzY2VuZGFudHMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2guanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hBZnRlci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaEJlZm9yZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2xlYXZlcy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGlua3MuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3BhdGguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3NvcnQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYWNrL2VuY2xvc2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFjay9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYWNrL3NpYmxpbmdzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3BhcnRpdGlvbi5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9zdHJhdGlmeS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvYmluYXJ5LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvZGljZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvcmVzcXVhcmlmeS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3JvdW5kLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvc2xpY2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zbGljZURpY2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zcXVhcmlmeS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvYmFzaXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jdWJlaGVsaXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvZGlzY3JldGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oY2wuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oc2wuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9odWUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2xhYi5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3BpZWNld2lzZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcmdiLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcm91bmQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL3BhcnNlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdmFsdWUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy96b29tLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1wYXRoL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvcGF0aC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY3JlYXRvci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9sb2NhbC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9tYXRjaGVyLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL21vdXNlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL25hbWVzcGFjZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2VzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3BvaW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3RBbGwuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2FwcGVuZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vYXR0ci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2FsbC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2xhc3NlZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2xvbmUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdHVtLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9kaXNwYXRjaC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZWFjaC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW1wdHkuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VudGVyLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9leGl0LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2h0bWwuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9pbnNlcnQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2pvaW4uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2xvd2VyLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9tZXJnZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbm9kZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbm9kZXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL29uLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9vcmRlci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JhaXNlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yZW1vdmUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0QWxsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zaXplLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zb3J0LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zcGFyc2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3N0eWxlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi90ZXh0LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yQWxsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NvdXJjZUV2ZW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3RvdWNoLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3RvdWNoZXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvd2luZG93LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJjLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJlYS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FyZWFSYWRpYWwuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcnJheS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2NvbnN0YW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYmFzaXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc0Nsb3NlZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzT3Blbi5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bmRsZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvY2FyZGluYWxDbG9zZWQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbE9wZW4uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvY2F0bXVsbFJvbUNsb3NlZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21PcGVuLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyQ2xvc2VkLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbW9ub3RvbmUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9uYXR1cmFsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvcmFkaWFsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvc3RlcC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2Rlc2NlbmRpbmcuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9pZGVudGl0eS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmVSYWRpYWwuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5rL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbWF0aC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL25vb3AuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvZGl2ZXJnaW5nLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L2V4cGFuZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9ub25lLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L3NpbGhvdWV0dGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvd2lnZ2xlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvYXBwZWFyYW5jZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FzY2VuZGluZy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2Rlc2NlbmRpbmcuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9pbnNpZGVPdXQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9ub25lLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvcmV2ZXJzZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BpZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvcG9pbnRSYWRpYWwuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zdGFjay5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jaXJjbGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY3Jvc3MuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvZGlhbW9uZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zcXVhcmUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3Rhci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC90cmlhbmdsZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC93eWUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL2ludGVydmFsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvdGltZW91dC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL3RpbWVyLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9hY3RpdmUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9pbnRlcnJ1cHQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2ludGVycnVwdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL3RyYW5zaXRpb24uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0ci5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9hdHRyVHdlZW4uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZHVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZWFzZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vb24uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vcmVtb3ZlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NjaGVkdWxlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9zZWxlY3RBbGwuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0aW9uLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlVHdlZW4uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdGV4dC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3R3ZWVuLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy16b29tL3NyYy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvZXZlbnQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy16b29tL3NyYy9ub2V2ZW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kMy16b29tL3NyYy90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL3pvb20uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL0Jhc2VDbGFzcy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLWNvbW1vbi9lcy9zcmMvUkVTRVQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL2FjY2Vzc29yLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtY29tbW9uL2VzL3NyYy9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL2F0dHJpemUuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL2Nsb3Nlc3QuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL2NvbmZpZ1ByZXAuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL2NvbnN0YW50LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtY29tbW9uL2VzL3NyYy9lbGVtLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtY29tbW9uL2VzL3NyYy9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLWNvbW1vbi9lcy9zcmMvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL3BhcnNlU2lkZXMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy1jb21tb24vZXMvc3JjL3ByZWZpeC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLWNvbW1vbi9lcy9zcmMvc3R5bGl6ZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLWNvbW1vbi9lcy9zcmMvdXVpZC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLXRleHQvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy10ZXh0L2VzL3NyYy9UZXh0Qm94LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtdGV4dC9lcy9zcmMvY29tYmluaW5nTWFya3MuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy10ZXh0L2VzL3NyYy9mb250RXhpc3RzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtdGV4dC9lcy9zcmMvcnRsLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtdGV4dC9lcy9zcmMvc3RyaW5naWZ5LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL25vZGVfbW9kdWxlcy9kM3BsdXMtdGV4dC9lcy9zcmMvc3RyaXAuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy10ZXh0L2VzL3NyYy90ZXh0U3BsaXQuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy10ZXh0L2VzL3NyYy90ZXh0V2lkdGguanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2QzcGx1cy10ZXh0L2VzL3NyYy90ZXh0V3JhcC5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLXRleHQvZXMvc3JjL3RpdGxlQ2FzZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9ub2RlX21vZHVsZXMvZDNwbHVzLXRleHQvZXMvc3JjL3RyaW0uanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL3NyYy9qcy9CYXNlVHJlZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9zcmMvanMvQm94ZWROb2RlU2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vc3JjL2pzL0JveGVkVHJlZS5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9zcmMvanMvQ2lyY2xlTm9kZVNldHRpbmdzLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL3NyYy9qcy9DaXJjbGVUcmVlLmpzIiwid2VicGFjazovL2QzLm1pdGNoVHJlZS8uL3NyYy9qcy9DdXN0b21EMy5qcyIsIndlYnBhY2s6Ly9kMy5taXRjaFRyZWUvLi9zcmMvanMvTG9hZE9uRGVtYW5kU2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vZDMubWl0Y2hUcmVlLy4vc3JjL2pzL05vZGVTZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJ0aGlzIiwiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIl9fd2VicGFja19leHBvcnRzX18iLCJzbGljZSIsIm1hcCIsImFycmF5IiwiQXJyYXkiLCJhIiwiYiIsIk5hTiIsImJpc2VjdFJpZ2h0IiwiYmlzZWN0TGVmdCIsIl9hc2NlbmRpbmdfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9iaXNlY3Rvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiYXNjZW5kaW5nQmlzZWN0IiwicmlnaHQiLCJsZWZ0IiwiY29tcGFyZSIsImYiLCJsZW5ndGgiLCJ4IiwibG8iLCJoaSIsIm1pZCIsIl9wYWlyc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwidmFsdWVzMCIsInZhbHVlczEiLCJyZWR1Y2UiLCJpMCIsImkxIiwidmFsdWUwIiwibjAiLCJuMSIsInZhbHVlcyIsIl92YXJpYW5jZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwidiIsIk1hdGgiLCJzcXJ0IiwidmFsdWVvZiIsIm1pbiIsIm1heCIsIl9hcnJheV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2Jpc2VjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX2NvbnN0YW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfZXh0ZW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfaWRlbnRpdHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9yYW5nZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwiX3RpY2tzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfdGhyZXNob2xkX3N0dXJnZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyIsImRvbWFpbiIsInRocmVzaG9sZCIsImhpc3RvZ3JhbSIsImRhdGEiLCJ4eiIsIngwIiwieDEiLCJ0eiIsImlzQXJyYXkiLCJjZWlsIiwic2hpZnQiLCJwb3AiLCJiaW4iLCJiaW5zIiwicHVzaCIsIl8iLCJhcmd1bWVudHMiLCJ0aHJlc2hvbGRzIiwiX2Jpc2VjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2FzY2VuZGluZ19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX2Jpc2VjdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfY3Jvc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9kZXNjZW5kaW5nX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18iLCJfZGV2aWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfZXh0ZW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfaGlzdG9ncmFtX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18iLCJfdGhyZXNob2xkX2ZyZWVkbWFuRGlhY29uaXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyIsIl90aHJlc2hvbGRfc2NvdHRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXyIsIl90aHJlc2hvbGRfc3R1cmdlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl9tYXhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX18iLCJfbWVhbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfXyIsIl9tZWRpYW5fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX18iLCJfbWVyZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X18iLCJfbWluX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNV9fIiwiX3BhaXJzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9fIiwiX3Blcm11dGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE3X18iLCJfcXVhbnRpbGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE4X18iLCJfcmFuZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X18iLCJfc2Nhbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjBfXyIsIl9zaHVmZmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMV9fIiwiX3N1bV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfXyIsIl90aWNrc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjNfXyIsIl90cmFuc3Bvc2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI0X18iLCJfdmFyaWFuY2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI1X18iLCJfemlwX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fIiwiX251bWJlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwic3VtIiwiaXNOYU4iLCJfbnVtYmVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfcXVhbnRpbGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIm51bWJlcnMiLCJzb3J0IiwiYXJyYXlzIiwibWVyZ2VkIiwiaiIsInBhaXIiLCJwYWlycyIsImluZGV4ZXMiLCJwZXJtdXRlcyIsImZsb29yIiwic3RhcnQiLCJzdG9wIiwic3RlcCIsInJhbmdlIiwieGkiLCJ4aiIsInJhbmRvbSIsIl9udW1iZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9xdWFudGlsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwicG93IiwiX2RldmlhdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwibG9nIiwiTE4yIiwidGlja0luY3JlbWVudCIsInRpY2tTdGVwIiwiZTEwIiwiZTUiLCJlMiIsImNvdW50IiwicG93ZXIiLCJMTjEwIiwiZXJyb3IiLCJzdGVwMCIsImFicyIsInN0ZXAxIiwicmV2ZXJzZSIsInRpY2tzIiwiaXNGaW5pdGUiLCJfbWluX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJtYXRyaXgiLCJ0cmFuc3Bvc2UiLCJyb3ciLCJkZWx0YSIsIm1lYW4iLCJfdHJhbnNwb3NlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJlbnRyaWVzIiwiX25lc3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9zZXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9tYXBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9rZXlzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfdmFsdWVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18iLCJfZW50cmllc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwia2V5cyIsInByZWZpeCIsIk1hcCIsImVhY2giLCJzZXQiLCJjb25zdHJ1Y3RvciIsImhhcyIsInJlbW92ZSIsImNsZWFyIiwic2l6ZSIsImVtcHR5IiwiX21hcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiY3JlYXRlT2JqZWN0Iiwic2V0T2JqZWN0IiwiY3JlYXRlTWFwIiwic2V0TWFwIiwic29ydFZhbHVlcyIsInJvbGx1cCIsIm5lc3QiLCJzb3J0S2V5cyIsImFwcGx5IiwiZGVwdGgiLCJjcmVhdGVSZXN1bHQiLCJzZXRSZXN1bHQiLCJrZXlWYWx1ZSIsInZhbHVlc0J5S2V5IiwicmVzdWx0Iiwic29ydEtleSIsImsiLCJvcmRlciIsIlNldCIsInByb3RvIiwiYWRkIiwiQ29sb3IiLCJkYXJrZXIiLCJicmlnaHRlciIsImNvbG9yIiwicmdiQ29udmVydCIsInJnYiIsIlJnYiIsImhzbENvbnZlcnQiLCJoc2wiLCJfZGVmaW5lX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJyZUkiLCJyZU4iLCJyZVAiLCJyZUhleDMiLCJyZUhleDYiLCJyZVJnYkludGVnZXIiLCJSZWdFeHAiLCJyZVJnYlBlcmNlbnQiLCJyZVJnYmFJbnRlZ2VyIiwicmVSZ2JhUGVyY2VudCIsInJlSHNsUGVyY2VudCIsInJlSHNsYVBlcmNlbnQiLCJuYW1lZCIsImFsaWNlYmx1ZSIsImFudGlxdWV3aGl0ZSIsImFxdWEiLCJhcXVhbWFyaW5lIiwiYXp1cmUiLCJiZWlnZSIsImJpc3F1ZSIsImJsYWNrIiwiYmxhbmNoZWRhbG1vbmQiLCJibHVlIiwiYmx1ZXZpb2xldCIsImJyb3duIiwiYnVybHl3b29kIiwiY2FkZXRibHVlIiwiY2hhcnRyZXVzZSIsImNob2NvbGF0ZSIsImNvcmFsIiwiY29ybmZsb3dlcmJsdWUiLCJjb3Juc2lsayIsImNyaW1zb24iLCJjeWFuIiwiZGFya2JsdWUiLCJkYXJrY3lhbiIsImRhcmtnb2xkZW5yb2QiLCJkYXJrZ3JheSIsImRhcmtncmVlbiIsImRhcmtncmV5IiwiZGFya2toYWtpIiwiZGFya21hZ2VudGEiLCJkYXJrb2xpdmVncmVlbiIsImRhcmtvcmFuZ2UiLCJkYXJrb3JjaGlkIiwiZGFya3JlZCIsImRhcmtzYWxtb24iLCJkYXJrc2VhZ3JlZW4iLCJkYXJrc2xhdGVibHVlIiwiZGFya3NsYXRlZ3JheSIsImRhcmtzbGF0ZWdyZXkiLCJkYXJrdHVycXVvaXNlIiwiZGFya3Zpb2xldCIsImRlZXBwaW5rIiwiZGVlcHNreWJsdWUiLCJkaW1ncmF5IiwiZGltZ3JleSIsImRvZGdlcmJsdWUiLCJmaXJlYnJpY2siLCJmbG9yYWx3aGl0ZSIsImZvcmVzdGdyZWVuIiwiZnVjaHNpYSIsImdhaW5zYm9ybyIsImdob3N0d2hpdGUiLCJnb2xkIiwiZ29sZGVucm9kIiwiZ3JheSIsImdyZWVuIiwiZ3JlZW55ZWxsb3ciLCJncmV5IiwiaG9uZXlkZXciLCJob3RwaW5rIiwiaW5kaWFucmVkIiwiaW5kaWdvIiwiaXZvcnkiLCJraGFraSIsImxhdmVuZGVyIiwibGF2ZW5kZXJibHVzaCIsImxhd25ncmVlbiIsImxlbW9uY2hpZmZvbiIsImxpZ2h0Ymx1ZSIsImxpZ2h0Y29yYWwiLCJsaWdodGN5YW4iLCJsaWdodGdvbGRlbnJvZHllbGxvdyIsImxpZ2h0Z3JheSIsImxpZ2h0Z3JlZW4iLCJsaWdodGdyZXkiLCJsaWdodHBpbmsiLCJsaWdodHNhbG1vbiIsImxpZ2h0c2VhZ3JlZW4iLCJsaWdodHNreWJsdWUiLCJsaWdodHNsYXRlZ3JheSIsImxpZ2h0c2xhdGVncmV5IiwibGlnaHRzdGVlbGJsdWUiLCJsaWdodHllbGxvdyIsImxpbWUiLCJsaW1lZ3JlZW4iLCJsaW5lbiIsIm1hZ2VudGEiLCJtYXJvb24iLCJtZWRpdW1hcXVhbWFyaW5lIiwibWVkaXVtYmx1ZSIsIm1lZGl1bW9yY2hpZCIsIm1lZGl1bXB1cnBsZSIsIm1lZGl1bXNlYWdyZWVuIiwibWVkaXVtc2xhdGVibHVlIiwibWVkaXVtc3ByaW5nZ3JlZW4iLCJtZWRpdW10dXJxdW9pc2UiLCJtZWRpdW12aW9sZXRyZWQiLCJtaWRuaWdodGJsdWUiLCJtaW50Y3JlYW0iLCJtaXN0eXJvc2UiLCJtb2NjYXNpbiIsIm5hdmFqb3doaXRlIiwibmF2eSIsIm9sZGxhY2UiLCJvbGl2ZSIsIm9saXZlZHJhYiIsIm9yYW5nZSIsIm9yYW5nZXJlZCIsIm9yY2hpZCIsInBhbGVnb2xkZW5yb2QiLCJwYWxlZ3JlZW4iLCJwYWxldHVycXVvaXNlIiwicGFsZXZpb2xldHJlZCIsInBhcGF5YXdoaXAiLCJwZWFjaHB1ZmYiLCJwZXJ1IiwicGluayIsInBsdW0iLCJwb3dkZXJibHVlIiwicHVycGxlIiwicmViZWNjYXB1cnBsZSIsInJlZCIsInJvc3licm93biIsInJveWFsYmx1ZSIsInNhZGRsZWJyb3duIiwic2FsbW9uIiwic2FuZHlicm93biIsInNlYWdyZWVuIiwic2Vhc2hlbGwiLCJzaWVubmEiLCJzaWx2ZXIiLCJza3libHVlIiwic2xhdGVibHVlIiwic2xhdGVncmF5Iiwic2xhdGVncmV5Iiwic25vdyIsInNwcmluZ2dyZWVuIiwic3RlZWxibHVlIiwidGFuIiwidGVhbCIsInRoaXN0bGUiLCJ0b21hdG8iLCJ0dXJxdW9pc2UiLCJ2aW9sZXQiLCJ3aGVhdCIsIndoaXRlIiwid2hpdGVzbW9rZSIsInllbGxvdyIsInllbGxvd2dyZWVuIiwiZm9ybWF0IiwidHJpbSIsInRvTG93ZXJDYXNlIiwiZXhlYyIsInBhcnNlSW50IiwicmdibiIsInJnYmEiLCJoc2xhIiwiZyIsIm9wYWNpdHkiLCJoZXgiLCJyb3VuZCIsInRvU3RyaW5nIiwiaCIsIkhzbCIsImhzbDJyZ2IiLCJtMSIsIm0yIiwiZGlzcGxheWFibGUiLCJjdWJlaGVsaXgiLCJDdWJlaGVsaXgiLCJfY29sb3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9tYXRoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkVEIiwiRUIiLCJCQ19EQSIsImJsIiwiYXRhbjIiLCJjdWJlaGVsaXhDb252ZXJ0IiwiY29zaCIsImNvcyIsInNpbmgiLCJzaW4iLCJleHRlbmQiLCJwYXJlbnQiLCJkZWZpbml0aW9uIiwiX2NvbG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfbGFiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfY3ViZWhlbGl4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJsYWIiLCJMYWIiLCJsY2giLCJoY2wiLCJIY2wiLCJYbiIsIlluIiwiWm4iLCJ0MCIsInQxIiwidDIiLCJ0MyIsImxhYkNvbnZlcnQiLCJ6IiwicmdiMmxyZ2IiLCJ5IiwieHl6MmxhYiIsImxhYjJ4eXoiLCJscmdiMnJnYiIsImhjbENvbnZlcnQiLCJkZWcycmFkIiwicmFkMmRlZyIsIlBJIiwibm9vcCIsImRpc3BhdGNoIiwiRXJyb3IiLCJEaXNwYXRjaCIsInR5cGUiLCJjYWxsYmFjayIsImNvbmNhdCIsIm9uIiwidHlwZW5hbWUiLCJ0eXBlcyIsIlQiLCJzcGxpdCIsImluZGV4T2YiLCJjb3B5IiwidGhhdCIsImFyZ3MiLCJfZGlzcGF0Y2hfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsImQzX2Rpc3BhdGNoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJkM19zZWxlY3Rpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9ub2RyYWdfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9ub2V2ZW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfY29uc3RhbnRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9ldmVudF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwiZGVmYXVsdEZpbHRlciIsImJ1dHRvbiIsImRlZmF1bHRDb250YWluZXIiLCJwYXJlbnROb2RlIiwiZGVmYXVsdFN1YmplY3QiLCJkZWZhdWx0VG91Y2hhYmxlIiwibW91c2Vkb3dueCIsIm1vdXNlZG93bnkiLCJtb3VzZW1vdmluZyIsInRvdWNoZW5kaW5nIiwiZmlsdGVyIiwiY29udGFpbmVyIiwic3ViamVjdCIsInRvdWNoYWJsZSIsImdlc3R1cmVzIiwibGlzdGVuZXJzIiwiYWN0aXZlIiwiY2xpY2tEaXN0YW5jZTIiLCJkcmFnIiwic2VsZWN0aW9uIiwibW91c2Vkb3duZWQiLCJ0b3VjaHN0YXJ0ZWQiLCJ0b3VjaG1vdmVkIiwidG91Y2hlbmRlZCIsInN0eWxlIiwiZ2VzdHVyZSIsImJlZm9yZXN0YXJ0IiwidmlldyIsIm1vdXNlbW92ZWQiLCJtb3VzZXVwcGVkIiwiY2xpZW50WCIsImNsaWVudFkiLCJkeCIsImR5IiwibW91c2UiLCJ0b3VjaGVzIiwiY2hhbmdlZFRvdWNoZXMiLCJpZGVudGlmaWVyIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImlkIiwicG9pbnQiLCJzdWJsaXN0ZW5lcnMiLCJwMCIsImNsaWNrRGlzdGFuY2UiLCJEcmFnRXZlbnQiLCJ0YXJnZXQiLCJfZHJhZ19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX25vZHJhZ19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwieWVzZHJhZyIsImQzX3NlbGVjdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX25vZXZlbnRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIm5vY2xpY2siLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsIk1velVzZXJTZWxlY3QiLCJfX25vc2VsZWN0Iiwibm9wcm9wYWdhdGlvbiIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiYmFja0luIiwiYmFja091dCIsImJhY2tJbk91dCIsImN1c3RvbSIsIm92ZXJzaG9vdCIsImJvdW5jZUluIiwiYm91bmNlT3V0IiwiYm91bmNlSW5PdXQiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiYjkiLCJiMCIsImNpcmNsZUluIiwiY2lyY2xlT3V0IiwiY2lyY2xlSW5PdXQiLCJjdWJpY0luIiwiY3ViaWNPdXQiLCJjdWJpY0luT3V0IiwiZWxhc3RpY0luIiwiZWxhc3RpY091dCIsImVsYXN0aWNJbk91dCIsInRhdSIsImFzaW4iLCJhbXBsaXR1ZGUiLCJwZXJpb2QiLCJleHBJbiIsImV4cE91dCIsImV4cEluT3V0IiwiX2xpbmVhcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3F1YWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9jdWJpY19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX3BvbHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9zaW5fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9leHBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyIsIl9jaXJjbGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyIsIl9ib3VuY2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyIsIl9iYWNrX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18iLCJfZWxhc3RpY19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fIiwibGluZWFyIiwicG9seUluIiwicG9seU91dCIsInBvbHlJbk91dCIsImUiLCJleHBvbmVudCIsInF1YWRJbiIsInF1YWRPdXQiLCJxdWFkSW5PdXQiLCJzaW5JbiIsInNpbk91dCIsInNpbkluT3V0IiwicGkiLCJoYWxmUGkiLCJvcHRpb25hbCIsInJlcXVpcmVkIiwic2h1ZmZsZSIsImRlZmF1bHRTZXBhcmF0aW9uIiwibWVhblhSZWR1Y2UiLCJtYXhZUmVkdWNlIiwic2VwYXJhdGlvbiIsIm5vZGVTaXplIiwiY2x1c3RlciIsInByZXZpb3VzTm9kZSIsImVhY2hBZnRlciIsIm5vZGUiLCJjaGlsZHJlbiIsIm1lYW5YIiwibWF4WSIsImxlYWZMZWZ0IiwibGVhZlJpZ2h0IiwiY29uc3RhbnRaZXJvIiwibm9kZXMiLCJjdXJyZW50IiwibmV4dCIsImhpZXJhcmNoeSIsImNvbXB1dGVIZWlnaHQiLCJOb2RlIiwiX2NvdW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfZWFjaF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX2VhY2hCZWZvcmVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9lYWNoQWZ0ZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9zdW1fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9zb3J0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfcGF0aF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fIiwiX2FuY2VzdG9yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fIiwiX2Rlc2NlbmRhbnRzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18iLCJfbGVhdmVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X18iLCJfbGlua3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18iLCJjaGlsZCIsImNoaWxkcyIsInZhbHVlZCIsImRlZmF1bHRDaGlsZHJlbiIsImVhY2hCZWZvcmUiLCJjb3B5RGF0YSIsImhlaWdodCIsInBhdGgiLCJhbmNlc3RvcnMiLCJkZXNjZW5kYW50cyIsImxlYXZlcyIsImxpbmtzIiwic291cmNlIiwiZW5kIiwiYW5jZXN0b3IiLCJhTm9kZXMiLCJiTm9kZXMiLCJsZWFzdENvbW1vbkFuY2VzdG9yIiwic3BsaWNlIiwiX2NsdXN0ZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9oaWVyYXJjaHlfaW5kZXhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9wYWNrX2luZGV4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfcGFja19zaWJsaW5nc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwiX3BhY2tfZW5jbG9zZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwiX3BhcnRpdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwiX3N0cmF0aWZ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfdHJlZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fIiwiX3RyZWVtYXBfaW5kZXhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyIsIl90cmVlbWFwX2JpbmFyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fIiwiX3RyZWVtYXBfZGljZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl90cmVlbWFwX3NsaWNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fIiwiX3RyZWVtYXBfc2xpY2VEaWNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fIiwiX3RyZWVtYXBfc3F1YXJpZnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX18iLCJfdHJlZW1hcF9yZXNxdWFyaWZ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fIiwiZXh0ZW5kQmFzaXMiLCJlbmNsb3Nlc1dlYWtBbGwiLCJlbmNsb3Nlc05vdCIsImVuY2xvc2VCYXNpczIiLCJlbmNsb3NlQmFzaXMzIiwiZHIiLCJlbmNsb3Nlc1dlYWsiLCJlbmNsb3NlQmFzaXMiLCJ5MSIsInIxIiwieDIiLCJ5MiIsInIyIiwieDIxIiwieTIxIiwicjIxIiwieDMiLCJ5MyIsInIzIiwiYTIiLCJhMyIsImMyIiwiYzMiLCJkMSIsImQyIiwiZDMiLCJhYiIsInhhIiwieGIiLCJ5YSIsInliIiwiY2lyY2xlcyIsIl9zaWJsaW5nc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2FjY2Vzc29yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiZGVmYXVsdFJhZGl1cyIsInJhZGl1c0xlYWYiLCJyYWRpdXMiLCJwYWNrQ2hpbGRyZW4iLCJwYWRkaW5nIiwidHJhbnNsYXRlQ2hpbGQiLCJwYWNrIiwicGFja0VuY2xvc2UiLCJfZW5jbG9zZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwicGxhY2UiLCJpbnRlcnNlY3RzIiwic2NvcmUiLCJjaXJjbGUiLCJwcmV2aW91cyIsImFhIiwiY2EiLCJzaiIsInNrIiwiX3RyZWVtYXBfcm91bmRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl90cmVlbWFwX2RpY2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsInBhcnRpdGlvbiIsInkwIiwicG9zaXRpb25Ob2RlIiwiX2FjY2Vzc29yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwia2V5UHJlZml4IiwicHJlcm9vdCIsImFtYmlndW91cyIsImRlZmF1bHRJZCIsImRlZmF1bHRQYXJlbnRJZCIsInBhcmVudElkIiwic3RyYXRpZnkiLCJub2RlSWQiLCJub2RlS2V5Iiwibm9kZUJ5S2V5IiwiX2hpZXJhcmNoeV9pbmRleF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwibmV4dExlZnQiLCJuZXh0UmlnaHQiLCJtb3ZlU3VidHJlZSIsIndtIiwid3AiLCJjaGFuZ2UiLCJuZXh0QW5jZXN0b3IiLCJ2aW0iLCJUcmVlTm9kZSIsInRyZWUiLCJ0cmVlUm9vdCIsImZpcnN0V2FsayIsInNlY29uZFdhbGsiLCJzaXplTm9kZSIsImJvdHRvbSIsInR4Iiwia3giLCJreSIsInNpYmxpbmdzIiwidyIsImV4ZWN1dGVTaGlmdHMiLCJtaWRwb2ludCIsInZpcCIsInZvcCIsInZvbSIsInNpcCIsInNvcCIsInNpbSIsInNvbSIsImFwcG9ydGlvbiIsInN1bXMiLCJ2YWx1ZU9mZnNldCIsInZhbHVlVGFyZ2V0IiwidmFsdWVMZWZ0IiwidmFsdWVSaWdodCIsInhrIiwieWsiLCJfcm91bmRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9zcXVhcmlmeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX2FjY2Vzc29yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX2NvbnN0YW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJ0aWxlIiwicGFkZGluZ1N0YWNrIiwicGFkZGluZ0lubmVyIiwicGFkZGluZ1RvcCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCIsInRyZWVtYXAiLCJwYWRkaW5nT3V0ZXIiLCJfZGljZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3NsaWNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfc3F1YXJpZnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsInJhdGlvIiwicmVzcXVhcmlmeSIsInJvd3MiLCJfc3F1YXJpZnkiLCJkaWNlIiwicGhpIiwic3F1YXJpZnlSYXRpbyIsIm5vZGVWYWx1ZSIsInN1bVZhbHVlIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsIm5ld1JhdGlvIiwibWluUmF0aW8iLCJhbHBoYSIsImJldGEiLCJzcXVhcmlmeSIsIl92YWx1ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwibmIiLCJuYSIsImJhc2lzIiwidjAiLCJ2MSIsInYyIiwidjMiLCJfYmFzaXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsImh1ZSIsImdhbW1hIiwibm9nYW1tYSIsIl9jb25zdGFudF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiZXhwb25lbnRpYWwiLCJjdWJlaGVsaXhMb25nIiwiZDNfY29sb3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsImN1YmVoZWxpeEdhbW1hIiwiRGF0ZSIsInNldFRpbWUiLCJoY2xMb25nIiwiaHNsTG9uZyIsIl9hcnJheV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX2Jhc2lzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfYmFzaXNDbG9zZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9kYXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18iLCJfZGlzY3JldGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyIsIl9odWVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyIsIl9udW1iZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyIsIl9vYmplY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyIsIl9yb3VuZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fIiwiX3N0cmluZ19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl90cmFuc2Zvcm1faW5kZXhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX18iLCJfem9vbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfXyIsIl9yZ2JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX18iLCJfaHNsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fIiwiX2xhYl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXyIsIl9oY2xfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE2X18iLCJfY3ViZWhlbGl4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fIiwiX3BpZWNld2lzZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMThfXyIsIl9xdWFudGl6ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTlfXyIsInBpZWNld2lzZSIsImludGVycG9sYXRlIiwiSSIsImludGVycG9sYXRvciIsInNhbXBsZXMiLCJyZ2JCYXNpcyIsInJnYkJhc2lzQ2xvc2VkIiwiX2Jhc2lzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfYmFzaXNDbG9zZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9jb2xvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwicmdiU3BsaW5lIiwic3BsaW5lIiwiY29sb3JzIiwicmdiR2FtbWEiLCJyZUEiLCJyZUIiLCJhbSIsImJtIiwiYnMiLCJiaSIsImxhc3RJbmRleCIsInEiLCJpbmRleCIsIm9uZSIsInplcm8iLCJqb2luIiwiaWRlbnRpdHkiLCJkZWdyZWVzIiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJyb3RhdGUiLCJza2V3WCIsInNjYWxlWCIsInNjYWxlWSIsImF0YW4iLCJpbnRlcnBvbGF0ZVRyYW5zZm9ybUNzcyIsImludGVycG9sYXRlVHJhbnNmb3JtU3ZnIiwiX3BhcnNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJpbnRlcnBvbGF0ZVRyYW5zZm9ybSIsInBhcnNlIiwicHhDb21tYSIsInB4UGFyZW4iLCJkZWdQYXJlbiIsInRyYW5zbGF0ZSIsInNjYWxlIiwicGFyc2VDc3MiLCJwYXJzZVN2ZyIsImNzc05vZGUiLCJjc3NSb290IiwiY3NzVmlldyIsInN2Z05vZGUiLCJfZGVjb21wb3NlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJjcmVhdGVFbGVtZW50IiwiZGVmYXVsdFZpZXciLCJ0cmFuc2Zvcm0iLCJnZXRDb21wdXRlZFN0eWxlIiwiYXBwZW5kQ2hpbGQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicmVtb3ZlQ2hpbGQiLCJjcmVhdGVFbGVtZW50TlMiLCJzZXRBdHRyaWJ1dGUiLCJiYXNlVmFsIiwiY29uc29saWRhdGUiLCJfcmdiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfYXJyYXlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9kYXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfbnVtYmVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18iLCJfb2JqZWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfc3RyaW5nX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfY29uc3RhbnRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyIsInZhbHVlT2YiLCJyaG8iLCJTUVJUMiIsImV4cCIsInAxIiwiUyIsInV4MCIsInV5MCIsIncwIiwidXgxIiwidXkxIiwidzEiLCJyMCIsImNvc2hyMCIsInUiLCJkdXJhdGlvbiIsIl9wYXRoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJ0YXVFcHNpbG9uIiwiUGF0aCIsIl94MCIsIl95MCIsIl94MSIsIl95MSIsIm1vdmVUbyIsImNsb3NlUGF0aCIsImxpbmVUbyIsInF1YWRyYXRpY0N1cnZlVG8iLCJiZXppZXJDdXJ2ZVRvIiwiYXJjVG8iLCJ4MDEiLCJ5MDEiLCJsMDFfMiIsIngyMCIsInkyMCIsImwyMV8yIiwibDIwXzIiLCJsMjEiLCJsMDEiLCJhY29zIiwidDAxIiwidDIxIiwiYXJjIiwiYTAiLCJhMSIsImNjdyIsImN3IiwiZGEiLCJyZWN0IiwiX2NyZWF0b3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9zZWxlY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9uYW1lc3BhY2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9uYW1lc3BhY2VzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJmdWxsbmFtZSIsImxvY2FsIiwib3duZXJEb2N1bWVudCIsInNwYWNlIiwidXJpIiwibmFtZXNwYWNlVVJJIiwiX2NyZWF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2NyZWF0b3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9sb2NhbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX21hdGNoZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9tb3VzZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwiX25hbWVzcGFjZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwiX25hbWVzcGFjZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyIsIl9wb2ludF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fIiwiX3NlbGVjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fIiwiX3NlbGVjdEFsbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fIiwiX3NlbGVjdGlvbl9pbmRleF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl9zZWxlY3Rvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfXyIsIl9zZWxlY3RvckFsbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfXyIsIl9zZWxlY3Rpb25fc3R5bGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX18iLCJfdG91Y2hfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X18iLCJfdG91Y2hlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXyIsIl93aW5kb3dfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE2X18iLCJfc2VsZWN0aW9uX29uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fIiwibmV4dElkIiwiTG9jYWwiLCJzZWxlY3RvciIsIm1hdGNoZXMiLCJfc291cmNlRXZlbnRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9wb2ludF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiZXZlbnQiLCJfbmFtZXNwYWNlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwieGh0bWwiLCJzdmciLCJ4bGluayIsInhtbCIsInhtbG5zIiwib3duZXJTVkdFbGVtZW50IiwiY3JlYXRlU1ZHUG9pbnQiLCJtYXRyaXhUcmFuc2Zvcm0iLCJnZXRTY3JlZW5DVE0iLCJpbnZlcnNlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xpZW50TGVmdCIsInRvcCIsImNsaWVudFRvcCIsIl9zZWxlY3Rpb25faW5kZXhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2VsZWN0IiwiZ2V0QXR0cmlidXRlTlMiLCJnZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsInJlbW92ZUF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZU5TIiwiY2xhc3NBcnJheSIsInN0cmluZyIsImNsYXNzTGlzdCIsIkNsYXNzTGlzdCIsIl9ub2RlIiwiX25hbWVzIiwiY2xhc3NlZEFkZCIsIm5hbWVzIiwibGlzdCIsImNsYXNzZWRSZW1vdmUiLCJjb250YWlucyIsInNlbGVjdGlvbl9jbG9uZVNoYWxsb3ciLCJpbnNlcnRCZWZvcmUiLCJjbG9uZU5vZGUiLCJuZXh0U2libGluZyIsInNlbGVjdGlvbl9jbG9uZURlZXAiLCJkZWVwIiwiX2luZGV4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfZW50ZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImJpbmRJbmRleCIsImdyb3VwIiwiZW50ZXIiLCJ1cGRhdGUiLCJleGl0IiwiZ3JvdXBMZW5ndGgiLCJkYXRhTGVuZ3RoIiwiX19kYXRhX18iLCJiaW5kS2V5Iiwibm9kZUJ5S2V5VmFsdWUiLCJrZXlWYWx1ZXMiLCJwYXJlbnRzIiwiX3BhcmVudHMiLCJncm91cHMiLCJfZ3JvdXBzIiwiZW50ZXJHcm91cCIsInVwZGF0ZUdyb3VwIiwiX25leHQiLCJfZW50ZXIiLCJfZXhpdCIsIl93aW5kb3dfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsImRpc3BhdGNoRXZlbnQiLCJwYXJhbXMiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkZXRhaWwiLCJFbnRlck5vZGUiLCJfc3BhcnNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfaW5kZXhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImRhdHVtIiwiX3BhcmVudCIsIl9tYXRjaGVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJtYXRjaCIsInN1Ymdyb3VwcyIsInN1Ymdyb3VwIiwiaHRtbFJlbW92ZSIsImlubmVySFRNTCIsIlNlbGVjdGlvbiIsIl9zZWxlY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9zZWxlY3RBbGxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9maWx0ZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9kYXRhX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfZW50ZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9leGl0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfam9pbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fIiwiX21lcmdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18iLCJfb3JkZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyIsIl9zb3J0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X18iLCJfY2FsbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl9ub2Rlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfXyIsIl9ub2RlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fIiwiX3NpemVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX18iLCJfZW1wdHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X18iLCJfZWFjaF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXyIsIl9hdHRyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9fIiwiX3N0eWxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fIiwiX3Byb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOF9fIiwiX2NsYXNzZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X18iLCJfdGV4dF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjBfXyIsIl9odG1sX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMV9fIiwiX3JhaXNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMl9fIiwiX2xvd2VyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yM19fIiwiX2FwcGVuZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjRfXyIsIl9pbnNlcnRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI1X18iLCJfcmVtb3ZlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fIiwiX2Nsb25lX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yN19fIiwiX2RhdHVtX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOF9fIiwiX29uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOV9fIiwiX2Rpc3BhdGNoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMF9fIiwic2VsZWN0QWxsIiwibWVyZ2UiLCJhdHRyIiwiY2xhc3NlZCIsInRleHQiLCJodG1sIiwicmFpc2UiLCJsb3dlciIsImFwcGVuZCIsImluc2VydCIsImNsb25lIiwiX3NlbGVjdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJjb25zdGFudE51bGwiLCJiZWZvcmUiLCJvbmVudGVyIiwib251cGRhdGUiLCJvbmV4aXQiLCJwcmV2aW91c1NpYmxpbmciLCJmaXJzdENoaWxkIiwiZ3JvdXBzMCIsImdyb3VwczEiLCJtMCIsIm1lcmdlcyIsImdyb3VwMCIsImdyb3VwMSIsImN1c3RvbUV2ZW50IiwiZmlsdGVyRXZlbnRzIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJmaWx0ZXJDb250ZXh0TGlzdGVuZXIiLCJsaXN0ZW5lciIsImNvbnRleHRMaXN0ZW5lciIsInJlbGF0ZWQiLCJyZWxhdGVkVGFyZ2V0IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJldmVudDEiLCJldmVudDAiLCJvblJlbW92ZSIsIl9fb24iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uQWRkIiwid3JhcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJzb3VyY2VFdmVudCIsInR5cGVuYW1lcyIsInBhcnNlVHlwZW5hbWVzIiwic3Vibm9kZSIsIl9zZWxlY3RvckFsbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiYXNjZW5kaW5nIiwiY29tcGFyZU5vZGUiLCJzb3J0Z3JvdXBzIiwic29ydGdyb3VwIiwic3R5bGVWYWx1ZSIsInByaW9yaXR5IiwicmVtb3ZlUHJvcGVydHkiLCJzZXRQcm9wZXJ0eSIsInRleHRSZW1vdmUiLCJ0ZXh0Q29udGVudCIsIm5vbmUiLCJfc2VsZWN0aW9uX29uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJ0b3VjaCIsInBvaW50cyIsImQzX3BhdGhfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9jb25zdGFudF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiYXJjSW5uZXJSYWRpdXMiLCJpbm5lclJhZGl1cyIsImFyY091dGVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJhcmNTdGFydEFuZ2xlIiwic3RhcnRBbmdsZSIsImFyY0VuZEFuZ2xlIiwiZW5kQW5nbGUiLCJhcmNQYWRBbmdsZSIsInBhZEFuZ2xlIiwiY29ybmVyVGFuZ2VudHMiLCJyYyIsIm94Iiwib3kiLCJ4MTEiLCJ5MTEiLCJ4MTAiLCJ5MTAiLCJ4MDAiLCJ5MDAiLCJjeDAiLCJjeTAiLCJjeDEiLCJjeTEiLCJkeDAiLCJkeTAiLCJkeDEiLCJkeTEiLCJjeCIsImN5IiwiY29ybmVyUmFkaXVzIiwicGFkUmFkaXVzIiwiY29udGV4dCIsImJ1ZmZlciIsImEwMSIsImExMSIsImEwMCIsImExMCIsImRhMCIsImRhMSIsImFwIiwicnAiLCJyYzAiLCJyYzEiLCJvYyIsIngzMiIsInkzMiIsImludGVyc2VjdCIsImF4IiwiYXkiLCJieCIsImJ5Iiwia2MiLCJsYyIsImNlbnRyb2lkIiwiX2N1cnZlX2xpbmVhcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX2xpbmVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9wb2ludF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwiZGVmaW5lZCIsImN1cnZlIiwib3V0cHV0IiwiYXJlYSIsImRlZmluZWQwIiwieDB6IiwieTB6IiwiYXJlYVN0YXJ0IiwibGluZVN0YXJ0IiwibGluZUVuZCIsImFyZWFFbmQiLCJhcmVhbGluZSIsImxpbmVYMCIsImxpbmVZMCIsImxpbmVZMSIsImxpbmVYMSIsIl9jdXJ2ZV9yYWRpYWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9hcmVhX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfbGluZVJhZGlhbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiYW5nbGUiLCJsaW5lU3RhcnRBbmdsZSIsImxpbmVFbmRBbmdsZSIsImxpbmVJbm5lclJhZGl1cyIsImxpbmVPdXRlclJhZGl1cyIsIl9jdXJ2ZSIsIl9jb250ZXh0IiwiQmFzaXMiLCJfbGluZSIsIl9wb2ludCIsIl9ub29wX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJCYXNpc0Nsb3NlZCIsIl94MiIsIl94MyIsIl94NCIsIl95MiIsIl95MyIsIl95NCIsIkJhc2lzT3BlbiIsIkJ1bmRsZSIsIl9iYXNpcyIsIl9iZXRhIiwiX3giLCJfeSIsImJ1bmRsZSIsIl9rIiwiQ2FyZGluYWwiLCJ0ZW5zaW9uIiwiY2FyZGluYWwiLCJDYXJkaW5hbENsb3NlZCIsIl9jYXJkaW5hbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX3g1IiwiX3k1IiwiQ2FyZGluYWxPcGVuIiwiX2NhcmRpbmFsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfbWF0aF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2wwMV9hIiwiX2wwMV8yYSIsIl9sMTJfYSIsIl9sMTJfMmEiLCJfbDIzX2EiLCJfbDIzXzJhIiwiQ2F0bXVsbFJvbSIsIl9hbHBoYSIsIngyMyIsInkyMyIsImNhdG11bGxSb20iLCJfY2FyZGluYWxDbG9zZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9ub29wX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfY2F0bXVsbFJvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiQ2F0bXVsbFJvbUNsb3NlZCIsIl9jYXJkaW5hbE9wZW5fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9jYXRtdWxsUm9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJDYXRtdWxsUm9tT3BlbiIsIkxpbmVhciIsIkxpbmVhckNsb3NlZCIsInNpZ24iLCJzbG9wZTMiLCJoMCIsImgxIiwiczAiLCJzMSIsInNsb3BlMiIsIk1vbm90b25lWCIsIk1vbm90b25lWSIsIlJlZmxlY3RDb250ZXh0IiwibW9ub3RvbmVYIiwibW9ub3RvbmVZIiwiX3QwIiwiTmF0dXJhbCIsImNvbnRyb2xQb2ludHMiLCJweCIsInB5IiwiY3VydmVSYWRpYWxMaW5lYXIiLCJjdXJ2ZVJhZGlhbCIsIlJhZGlhbCIsInJhZGlhbCIsIlN0ZXAiLCJfdCIsInN0ZXBCZWZvcmUiLCJzdGVwQWZ0ZXIiLCJfYXJjX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfbGluZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX3BpZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwiX2FyZWFSYWRpYWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9saW5lUmFkaWFsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfcG9pbnRSYWRpYWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyIsIl9saW5rX2luZGV4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18iLCJfc3ltYm9sX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18iLCJfc3ltYm9sX2NpcmNsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fIiwiX3N5bWJvbF9jcm9zc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl9zeW1ib2xfZGlhbW9uZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfXyIsIl9zeW1ib2xfc3F1YXJlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fIiwiX3N5bWJvbF9zdGFyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xM19fIiwiX3N5bWJvbF90cmlhbmdsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTRfXyIsIl9zeW1ib2xfd3llX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNV9fIiwiX2N1cnZlX2Jhc2lzQ2xvc2VkX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9fIiwiX2N1cnZlX2Jhc2lzT3Blbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTdfXyIsIl9jdXJ2ZV9iYXNpc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMThfXyIsIl9jdXJ2ZV9idW5kbGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X18iLCJfY3VydmVfY2FyZGluYWxDbG9zZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIwX18iLCJfY3VydmVfY2FyZGluYWxPcGVuX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMV9fIiwiX2N1cnZlX2NhcmRpbmFsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMl9fIiwiX2N1cnZlX2NhdG11bGxSb21DbG9zZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIzX18iLCJfY3VydmVfY2F0bXVsbFJvbU9wZW5fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI0X18iLCJfY3VydmVfY2F0bXVsbFJvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjVfXyIsIl9jdXJ2ZV9saW5lYXJDbG9zZWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X18iLCJfY3VydmVfbGluZWFyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yN19fIiwiX2N1cnZlX21vbm90b25lX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOF9fIiwiX2N1cnZlX25hdHVyYWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI5X18iLCJfY3VydmVfc3RlcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzBfXyIsIl9zdGFja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfXyIsIl9vZmZzZXRfZXhwYW5kX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMl9fIiwiX29mZnNldF9kaXZlcmdpbmdfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMzX18iLCJfb2Zmc2V0X25vbmVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM0X18iLCJfb2Zmc2V0X3NpbGhvdWV0dGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM1X18iLCJfb2Zmc2V0X3dpZ2dsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzZfXyIsIl9vcmRlcl9hcHBlYXJhbmNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zN19fIiwiX29yZGVyX2FzY2VuZGluZ19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzhfXyIsIl9vcmRlcl9kZXNjZW5kaW5nX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zOV9fIiwiX29yZGVyX2luc2lkZU91dF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDBfXyIsIl9vcmRlcl9ub25lX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80MV9fIiwiX29yZGVyX3JldmVyc2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQyX18iLCJfcG9pbnRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsImxpbmUiLCJsaW5lUmFkaWFsIiwiX2xpbmVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImxpbmtIb3Jpem9udGFsIiwibGlua1ZlcnRpY2FsIiwibGlua1JhZGlhbCIsIl9wb2ludFJhZGlhbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwibGlua1NvdXJjZSIsImxpbmtUYXJnZXQiLCJsaW5rIiwiYXJndiIsImN1cnZlSG9yaXpvbnRhbCIsImN1cnZlVmVydGljYWwiLCJwMiIsInAzIiwiZXBzaWxvbiIsInNlcmllcyIsInlwIiwieW4iLCJfbm9uZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiczIiLCJzaSIsInNpajAiLCJzMyIsInBlYWsiLCJ2aSIsInZqIiwiSW5maW5pdHkiLCJwZWFrcyIsIl9hcHBlYXJhbmNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJ0b3BzIiwiYm90dG9tcyIsIl9kZXNjZW5kaW5nX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfaWRlbnRpdHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9tYXRoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJwaWUiLCJhcmNzIiwicGEiLCJfb2Zmc2V0X25vbmVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9vcmRlcl9ub25lX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJzdGFja1ZhbHVlIiwib2Zmc2V0Iiwic3RhY2siLCJveiIsImt6Iiwic3oiLCJzaWoiLCJraSIsInN5bWJvbHMiLCJfc3ltYm9sX2NpcmNsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX3N5bWJvbF9jcm9zc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX3N5bWJvbF9kaWFtb25kX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfc3ltYm9sX3N0YXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9zeW1ib2xfc3F1YXJlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfc3ltYm9sX3RyaWFuZ2xlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfc3ltYm9sX3d5ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fIiwiX2NvbnN0YW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18iLCJzeW1ib2wiLCJkcmF3IiwidGFuMzAiLCJ0YW4zMF8yIiwia3IiLCJzcXJ0MyIsIl90aW1lcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3RpbWVvdXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9pbnRlcnZhbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiZGVsYXkiLCJ0aW1lIiwidG90YWwiLCJyZXN0YXJ0IiwidGljayIsImVsYXBzZWQiLCJub3ciLCJUaW1lciIsInRpbWVyIiwidGltZXJGbHVzaCIsInRhc2tIZWFkIiwidGFza1RhaWwiLCJmcmFtZSIsInRpbWVvdXQiLCJpbnRlcnZhbCIsInBva2VEZWxheSIsImNsb2NrTGFzdCIsImNsb2NrTm93IiwiY2xvY2tTa2V3IiwiY2xvY2siLCJwZXJmb3JtYW5jZSIsInNldEZyYW1lIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2xlYXJOb3ciLCJfY2FsbCIsIl90aW1lIiwid2FrZSIsInNsZWVwIiwibmFwIiwicG9rZSIsImNsZWFySW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsIlR5cGVFcnJvciIsIl90cmFuc2l0aW9uX2luZGV4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfdHJhbnNpdGlvbl9zY2hlZHVsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwic2NoZWR1bGUiLCJzY2hlZHVsZXMiLCJfX3RyYW5zaXRpb24iLCJzdGF0ZSIsIl90cmFuc2l0aW9uX2luZGV4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfYWN0aXZlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfaW50ZXJydXB0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJfdHJhbnNpdGlvbl9zY2hlZHVsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2ludGVycnVwdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX3RyYW5zaXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsImludGVycnVwdCIsInRyYW5zaXRpb24iLCJfaW50ZXJydXB0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJkM19lYXNlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJkM190aW1lcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwiZGVmYXVsdFRpbWluZyIsImVhc2UiLCJpbmhlcml0IiwidGltaW5nIiwiX2lkIiwiX25hbWUiLCJkM19pbnRlcnBvbGF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3R3ZWVuX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfaW50ZXJwb2xhdGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsImF0dHJUd2VlbiIsInZhbHVlMDAiLCJ2YWx1ZTEwIiwiaW50ZXJwb2xhdGUwIiwidmFsdWUxIiwidHdlZW4iLCJfdmFsdWUiLCJfc2NoZWR1bGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsImVhc2VDb25zdGFudCIsIlRyYW5zaXRpb24iLCJuZXdJZCIsIl9hdHRyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJfYXR0clR3ZWVuX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJfZGVsYXlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9kdXJhdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwiX2Vhc2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyIsIl9maWx0ZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyIsIl9vbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fIiwiX3JlbW92ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fIiwiX3NlbGVjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl9zZWxlY3RBbGxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX18iLCJfc2VsZWN0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fIiwiX3N0eWxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xM19fIiwiX3N0eWxlVHdlZW5fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X18iLCJfdGV4dF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXyIsIl90cmFuc2l0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9fIiwiX3R3ZWVuX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fIiwic2VsZWN0aW9uX3Byb3RvdHlwZSIsInN0eWxlVHdlZW4iLCJkM19pbnRlcnBvbGF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwib24wIiwib24xIiwic2l0IiwiZXZlcnkiLCJvbkZ1bmN0aW9uIiwiQ1JFQVRFRCIsIlNDSEVEVUxFRCIsIlNUQVJUSU5HIiwiU1RBUlRFRCIsIlJVTk5JTkciLCJFTkRJTkciLCJFTkRFRCIsImluaXQiLCJkM190aW1lcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiZW1wdHlPbiIsImVtcHR5VHdlZW4iLCJzZWxmIiwiX3NjaGVkdWxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJzdHlsZVJlbW92ZSIsInN0eWxlUmVtb3ZlRW5kIiwic3R5bGVGdW5jdGlvbiIsInN0eWxlQ29uc3RhbnQiLCJfdHdlZW5fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsInRleHRGdW5jdGlvbiIsInRleHRDb25zdGFudCIsIl9zY2hlZHVsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiaWQwIiwiaWQxIiwidHdlZW5WYWx1ZSIsInR3ZWVuMCIsInR3ZWVuMSIsIlpvb21FdmVudCIsIl96b29tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfdHJhbnNmb3JtX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJUcmFuc2Zvcm0iLCJhcHBseVgiLCJhcHBseVkiLCJpbnZlcnQiLCJsb2NhdGlvbiIsImludmVydFgiLCJpbnZlcnRZIiwicmVzY2FsZVgiLCJyZXNjYWxlWSIsIl9fem9vbSIsImQzX2RyYWdfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImQzX2ludGVycG9sYXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJkM19zZWxlY3Rpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsImQzX3RyYW5zaXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9jb25zdGFudF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwiX2V2ZW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfdHJhbnNmb3JtX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18iLCJfbm9ldmVudF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fIiwiZGVmYXVsdEV4dGVudCIsIlNWR0VsZW1lbnQiLCJ3aWR0aCIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0IiwiZGVmYXVsdFRyYW5zZm9ybSIsImRlZmF1bHRXaGVlbERlbHRhIiwiZGVsdGFZIiwiZGVsdGFNb2RlIiwiZGVmYXVsdENvbnN0cmFpbiIsImV4dGVudCIsInRyYW5zbGF0ZUV4dGVudCIsInRvdWNoc3RhcnRpbmciLCJjb25zdHJhaW4iLCJ3aGVlbERlbHRhIiwic2NhbGVFeHRlbnQiLCJ0b3VjaERlbGF5Iiwid2hlZWxEZWxheSIsInpvb20iLCJ3aGVlbGVkIiwiZGJsY2xpY2tlZCIsImNlbnRlciIsIkdlc3R1cmUiLCJ3aGVlbCIsIm1vdmVkIiwiazEiLCJzaGlmdEtleSIsInN0YXJ0ZWQiLCJ0b3VjaDAiLCJ0b3VjaDEiLCJsMCIsImwxIiwiZHAiLCJkbCIsImNvbGxlY3Rpb24iLCJzY2FsZUJ5Iiwic2NhbGVUbyIsInRyYW5zbGF0ZUJ5IiwidHJhbnNsYXRlVG8iLCJlbWl0IiwiX3NyY19hY2Nlc3Nvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3NyY19hc3NpZ25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9zcmNfYXR0cml6ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiX3NyY19CYXNlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9zcmNfY2xvc2VzdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwiX3NyY19jb25maWdQcmVwX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18iLCJfc3JjX2NvbnN0YW50X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfc3JjX2VsZW1fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyIsIl9zcmNfaXNPYmplY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyIsIl9zcmNfbWVyZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXyIsIl9zcmNfcGFyc2VTaWRlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIl9zcmNfcHJlZml4X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fIiwiX3NyY19SRVNFVF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfXyIsIl9zcmNfc3R5bGl6ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTNfXyIsIl9zcmNfdXVpZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTRfXyIsIl9hc3NpZ25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9pc09iamVjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX3V1aWRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9SRVNFVF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwibmVzdGVkUmVzZXQiLCJvYmoiLCJkZWZhdWx0cyIsIm5lc3RlZEtleSIsInN0YXJ0c1dpdGgiLCJkZWZhdWx0VmFsdWUiLCJ1bmRlZmluZWQiLCJCYXNlQ2xhc3MiLCJfb24iLCJfdXVpZCIsImNvbmZpZyIsIl9jb25maWdEZWZhdWx0IiwiX19wcm90b19fIiwiaW5jbHVkZXMiLCJrJDEiLCJ2JDEiLCJjb25maWckMSIsImskMiIsImFzc2lnbiIsImRlZiIsIl9pc09iamVjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwib2JqZWN0cyIsImxlbiIsImxvb3AiLCJmb3JFYWNoIiwicHJvcCIsImFyciIsInByZXYiLCJjdXJyIiwiY29uZmlnUHJlcCIsInRoaXMkMSIsIl9zaGFwZUNvbmZpZyIsIm5ld0NvbmZpZyIsIl9kdXJhdGlvbiIsIndyYXBGdW5jdGlvbiIsImZ1bmMiLCJfX2QzcGx1c19fIiwiZmVhdHVyZSIsInBhcnNlRXZlbnRzIiwibmV3T2JqIiwia2V5RXZhbCIsImQzX3RyYW5zaXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9hdHRyaXplX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJjb25kaXRpb24iLCJjbGFzc05hbWUiLCJ0YWciLCJlbGVtIiwiaXRlbSIsIkVsZW1lbnQiLCJkM19hcnJheV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiZDNfY29sbGVjdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwib2JqZWN0TWVyZ2UiLCJhZ2dzIiwiYXZhaWxhYmxlS2V5cyIsIm5ld09iamVjdCIsImZyb20iLCJTdHJpbmciLCJOdW1iZXIiLCJzaWRlcyIsImFjYyIsImRpcmVjdGlvbiIsInBhcnNlRmxvYXQiLCJib2R5Iiwic3Vic3RyaW5nIiwiX3NyY19mb250RXhpc3RzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfc3JjX3J0bF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiX3NyY19zdHJpbmdpZnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl9zcmNfc3RyaXBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsIl9zcmNfVGV4dEJveF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fIiwiX3NyY190ZXh0U3BsaXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyIsIl9zcmNfdGV4dFdpZHRoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJfc3JjX3RleHRXcmFwX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18iLCJfc3JjX3RpdGxlQ2FzZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fIiwiX3NyY190cmltX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X18iLCJkM19hcnJheV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fIiwiZDNwbHVzX2NvbW1vbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwiX2ZvbnRFeGlzdHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyIsIl9ydGxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyIsIl9zdHJpcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fIiwiX3RleHRTcGxpdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fIiwiX3RleHRXaWR0aF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fIiwiX3RleHRXcmFwX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X18iLCJfdHJpbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyIsIlRleHRCb3giLCJfYXJpYUhpZGRlbiIsIl9kZWxheSIsIl9lbGxpcHNpcyIsInJlcGxhY2UiLCJfZm9udENvbG9yIiwiX2ZvbnRGYW1pbHkiLCJfZm9udE1heCIsIl9mb250TWluIiwiX2ZvbnRPcGFjaXR5IiwiX2ZvbnRSZXNpemUiLCJfZm9udFNpemUiLCJfZm9udFdlaWdodCIsIl9oZWlnaHQiLCJfbGluZUhlaWdodCIsIl9tYXhMaW5lcyIsIl9vdmVyZmxvdyIsIl9wYWRkaW5nIiwiX3BvaW50ZXJFdmVudHMiLCJfcm90YXRlIiwiX3JvdGF0ZUFuY2hvciIsIl9zcGxpdCIsIl90ZXh0IiwiX3RleHRBbmNob3IiLCJfdmVydGljYWxBbGlnbiIsIl93aWR0aCIsInJlbmRlciIsIl9zZWxlY3QiLCJib3hlcyIsIl9kYXRhIiwic2l6ZXMiLCJ3cmFwUmVzdWx0cyIsInJlc2l6ZSIsImxIUmF0aW8iLCJmUyIsImxIIiwibGluZURhdGEiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtd2VpZ2h0IiwibGluZS1oZWlnaHQiLCJ3cmFwcGVyIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJtYXhMaW5lcyIsIm92ZXJmbG93IiwiZk1heCIsImZNaW4iLCJ2QSIsIndvcmRzIiwiYXJlYU1vZCIsImJveEFyZWEiLCJtYXhXaWR0aCIsInRleHRBcmVhIiwiYXJlYVJhdGlvIiwid2lkdGhSYXRpbyIsInNpemVSYXRpbyIsImhlaWdodE1heCIsImNoZWNrU2l6ZSIsInRydW5jYXRlIiwibGluZXMiLCJ0cnVuY2F0ZWQiLCJ0SCIsInlQIiwiYUgiLCJmQyIsImZGIiwiZk8iLCJmVyIsInRBIiwid2lkdGhzIiwicm90YXRlQW5jaG9yIiwicnRsIiwidGV4dFN0eWxlIiwidGV4dHMiLCJldmVudHMiLCJhcmlhSGlkZGVuIiwiZWxsaXBzaXMiLCJmb250Q29sb3IiLCJmb250TWF4IiwiZm9udE1pbiIsImZvbnRPcGFjaXR5IiwiZm9udFJlc2l6ZSIsInBvaW50ZXJFdmVudHMiLCJ0ZXh0QW5jaG9yIiwidmVydGljYWxBbGlnbiIsImRlamF2dSIsIm1hY29zIiwibW9ub3NwYWNlIiwicHJvcG9ydGlvbmFsIiwiX3RleHRXaWR0aF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3RyaW1fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImNoZWNrZWQiLCJmb250IiwiZmFtIiwiSlNPTiIsInN0cmluZ2lmeSIsImRpYWNyaXRpY3MiLCJjaGFyIiwicmV0IiwidGVzdCIsInByZWZpeENoYXJzIiwic3BsaXRDaGFycyIsInNwbGl0V29yZHMiLCJzdWZmaXhDaGFycyIsIl9zdHJpbmdpZnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9jb21iaW5pbmdNYXJrc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwibm9TcGFjZVJhbmdlIiwiYnVybWVzZVJhbmdlIiwibm9TcGFjZUxhbmd1YWdlIiwic3BsaXRBbGxDaGFycyIsInNlbnRlbmNlIiwiZm9udC1zdHlsZSIsImZvbnQtdmFyaWFudCIsImdldENvbnRleHQiLCJtZWFzdXJlVGV4dCIsIl90ZXh0U3BsaXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsIl9zdHJpbmdpZnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsIl90cmltX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18iLCJ0ZXh0V3JhcCIsInRleHRQcm9nIiwid2lkdGhQcm9nIiwid29yZCIsIndvcmRXaWR0aCIsIl90ZXh0U3BsaXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsInN0ciIsInNtYWxscyIsImJpZ3MiLCJiaWdsb3ciLCJzdHJpcHBlZCIsImNoYXJBdCIsImJpZ2luZGV4IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJ0cmltTGVmdCIsInRyaW1SaWdodCIsIkV2ZW50RW1pdHRlciIsIl9ldmVudHMiLCJfbWF4TGlzdGVuZXJzIiwiaXNGdW5jdGlvbiIsImFyZyIsImlzT2JqZWN0IiwiaXNVbmRlZmluZWQiLCJkZWZhdWx0TWF4TGlzdGVuZXJzIiwic2V0TWF4TGlzdGVuZXJzIiwiZXIiLCJoYW5kbGVyIiwiZXJyIiwiYWRkTGlzdGVuZXIiLCJuZXdMaXN0ZW5lciIsIndhcm5lZCIsImNvbnNvbGUiLCJ0cmFjZSIsIm9uY2UiLCJmaXJlZCIsInJlbW92ZUxpc3RlbmVyIiwicG9zaXRpb24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJsaXN0ZW5lckNvdW50IiwiZXZsaXN0ZW5lciIsImVtaXR0ZXIiLCJfanNfQm94ZWRUcmVlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfanNfQ2lyY2xlVHJlZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiYm94ZWRUcmVlIiwiQm94ZWRUcmVlIiwiY2lyY2xlVHJlZSIsIkNpcmNsZVRyZWUiLCJCYXNlVHJlZSIsIm9wdGlvbnMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9nZXRQcm90b3R5cGVPZiIsIm1lcmdlZE9wdGlvbnMiLCJfb2JqZWN0U3ByZWFkIiwiX3Jvb3QiLCJfc3ZnIiwiX3Bhbm5pbmdDb250YWluZXIiLCJfdmlldyIsIl90cmVlR2VuZXJhdG9yIiwiX2xpbmtQYXRoR2VuZXJhdG9yIiwiX3Zpc2libGVOb2RlcyIsIl9saW5rcyIsIl96b29tTGlzdGVuZXIiLCJzZXRUaGVtZSIsInRoZW1lIiwic2V0T3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsInNldERhdGEiLCJzZXRFbGVtZW50IiwiZWxlbWVudCIsInNldFdpZHRoV2l0aG91dE1hcmdpbnMiLCJ3aWR0aFdpdGhvdXRNYXJnaW5zIiwic2V0SGVpZ2h0V2l0aG91dE1hcmdpbnMiLCJoZWlnaHRXaXRob3V0TWFyZ2lucyIsInNldE1hcmdpbnMiLCJtYXJnaW5zIiwic2V0RHVyYXRpb24iLCJzZXRBbGxvd1BhbiIsImFsbG93UGFuIiwic2V0QWxsb3dab29tIiwiYWxsb3dab29tIiwic2V0QWxsb3dGb2N1cyIsImFsbG93Rm9jdXMiLCJzZXRBbGxvd05vZGVDZW50ZXJpbmciLCJhbGxvd05vZGVDZW50ZXJpbmciLCJzZXRNaW5TY2FsZSIsIm1pblNjYWxlIiwic2V0TWF4U2NhbGUiLCJtYXhTY2FsZSIsInNldElzRmxhdERhdGEiLCJpc0ZsYXREYXRhIiwic2V0Tm9kZURlcHRoTXVsdGlwbGllciIsIm5vZGVEZXB0aE11bHRpcGxpZXIiLCJsb2FkT25EZW1hbmRTZXR0aW5ncyIsIkxvYWRPbkRlbWFuZFNldHRpbmdzIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIm5vZGVTZXR0aW5ncyIsIk5vZGVTZXR0aW5ncyIsIl9nZXRJZCIsImdldElkIiwiX2dldENoaWxkcmVuIiwiZ2V0Q2hpbGRyZW4iLCJfZ2V0UGFyZW50SWQiLCJnZXRQYXJlbnRJZCIsIm5vZGVFbnRlciIsIm5vZGVVcGRhdGUiLCJub2RlVXBkYXRlVHJhbnNpdGlvbiIsIm5vZGVFeGl0Iiwibm9kZUV4aXRUcmFuc2l0aW9uIiwibGlua0VudGVyIiwibGlua1BhdGhHZW5lcmF0b3IiLCJsaW5rVXBkYXRlIiwibGlua1VwZGF0ZVRyYW5zaXRpb24iLCJsaW5rRXhpdCIsImxpbmtFeGl0VHJhbnNpdGlvbiIsImlkT3JOb2RlRGF0YUl0ZW0iLCJyZW1vdmVTZWxlY3Rpb24iLCJnZXRSb290Iiwibm9kZURhdGFJdGVtIiwiX3R5cGVvZiIsImdldE5vZGUiLCJfY2hpbGRyZW4iLCJleHBhbmQiLCJnZXRBbGxvd0ZvY3VzIiwiaGlkZVNpYmxpbmdzIiwidXBkYXRlVHJlZVdpdGhGb2N1c09uTm9kZSIsInNlbGVjdGVkIiwiY2VudGVyTm9kZSIsIl9pc0ZsYXREYXRhIiwibmV3SXNGbGF0RGF0YSIsIl90aGlzMiIsImdldElzRmxhdERhdGEiLCJzdHJhdGlmaWVyIiwiZ2V0RGF0YSIsIl90aGVtZSIsIl9vcmllbnRhdGlvbiIsIm5ld0RhdGEiLCJfbm9kZURlcHRoTXVsdGlwbGllciIsIm5ld05vZGVEZXB0aE11bHRpcGxpZXIiLCJuZXdEdXJhdGlvbiIsIl9hbGxvd1BhbiIsIm5ld0FsbG93UGFuIiwiX2FsbG93Wm9vbSIsIm5ld0FsbG93Wm9vbSIsIl9hbGxvd0ZvY3VzIiwibmV3QWxsb3dGb2N1cyIsIl9hbGxvd05vZGVDZW50ZXJpbmciLCJuZXdBbGxvd05vZGVDZW50ZXJpbmciLCJfbWluU2NhbGUiLCJuZXdNaW5TY2FsZSIsIl9tYXhTY2FsZSIsIm5ld01heFNjYWxlIiwiX2VsZW1lbnQiLCJuZXdFbGVtZW50IiwiaWRPckRhdGFJdGVtIiwiX3RoaXMzIiwicmVjdXJzaXZlRmluZCIsImhpZXJhcmNoaWNhbE9iamVjdCIsImZpbmRDb25kaXRpb24iLCJmb3VuZE5vZGUiLCJmaW5kIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiIsIl9kaWRJdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yRXJyb3IiLCJfc3RlcCIsIl9pdGVyYXRvciIsIml0ZXJhdG9yIiwiZG9uZSIsInJldHVybiIsIl9ub2RlcyIsImRhdGFJdGVtIiwibmV3SWRBY2Nlc3NvciIsIm5ld0NoaWxkcmVuQWNjZXNzb3IiLCJuZXdQYXJlbnRJZEFjY2Vzc29yIiwiZ2V0V2lkdGhXaXRob3V0TWFyZ2lucyIsImdldE1hcmdpbnMiLCJnZXRIZWlnaHRXaXRob3V0TWFyZ2lucyIsIm5ld01hcmdpbnMiLCJfbWFyZ2lucyIsIm5ld1dpZHRoV2l0aG91dE1hcmdpbiIsIl93aWR0aFdpdGhvdXRNYXJnaW4iLCJuZXdIZWlnaHRXaXRob3V0TWFyZ2luIiwiX2hlaWdodFdpdGhvdXRNYXJnaW4iLCJnZXRTdmciLCJuZWVkVG9DZW50ZXJWaWV3Iiwic2l6aW5nTW9kZSIsImdldFNpemluZ01vZGUiLCJnZXRUcmVlR2VuZXJhdG9yIiwiX2dldE5vZGVTaXplIiwiZ2V0SGVpZ2h0IiwiZ2V0V2lkdGgiLCJnZXRWaWV3IiwiZ2V0T3JpZW50YXRpb24iLCJnZXRab29tTGlzdGVuZXIiLCJnZXRFbGVtZW50IiwidmFsaWRhdGVTZXR0aW5ncyIsIl90aGlzNCIsInJlZ2VuZXJhdGVOb2RlRGF0YSIsImdldFRoZW1lIiwiZ2V0TWluU2NhbGUiLCJnZXRNYXhTY2FsZSIsImdldFBhbm5pbmdDb250YWluZXIiLCJnZXRBbGxvd1BhbiIsImdldEFsbG93Wm9vbSIsInVwZGF0ZURpbWVuc2lvbnMiLCJfcG9wdWxhdGVVbmRlcmx5aW5nQ2hpbGRyZW4iLCJjb2xsYXBzZVJlY3Vyc2l2ZWx5IiwicmVjdXJzaXZlIiwiZGlyZWN0Tm9kZURhdGFJdGVtIiwicmVjIiwiem9vbVRyYW5zZm9ybSIsImdldER1cmF0aW9uIiwiem9vbUlkZW50aXR5IiwiY29udGludWUiLCJub2RlRGF0YUl0ZW1JbmRleCIsIm5vZGVEYXRhSXRlbXMiLCJub2RlRm9jdXMiLCJub2RlVG9nZ2xlIiwicGFyZW50Tm9kZURhdGFJdGVtIiwibmV3Tm9kZSIsIl9jcmVhdGVOb2RlIiwiX3RoaXM1IiwiY3VycmVudEl0ZW0iLCJfYWRkVW5kZXJseWluZ0NoaWxkTm9kZSIsIndhc1NlbGVjdGVkIiwiZ2V0QWxsb3dOb2RlQ2VudGVyaW5nIiwiX3RoaXM2IiwiaXNFbmFibGVkIiwiaGFzQ2hpbGRyZW4iLCJsb2FkQ2hpbGRyZW4iLCJfcHJvY2Vzc0xvYWRlZERhdGFGb3JOb2RlRm9jdXMiLCJfdGhpczciLCJfdGhpczgiLCJfcHJvY2Vzc0xvYWRlZERhdGFGb3JOb2RlVG9nZ2xlIiwiY29sbGFwc2UiLCJfdGhpczkiLCJzb21lIiwiX3RoaXMxMCIsImdldE5vZGVEZXB0aE11bHRpcGxpZXIiLCJfb25Ob2RlQ2xpY2siLCJfbm9kZUVudGVyIiwiX25vZGVVcGRhdGUiLCJfbm9kZUV4aXQiLCJfdGhpczExIiwiX2dldExpbmtQYXRoR2VuZXJhdG9yIiwiX2xpbmtFbnRlciIsIl9saW5rVXBkYXRlIiwiX2xpbmtFeGl0IiwiZ2V0VmlzaWJsZU5vZGVzIiwidHJlZURhdGEiLCJ0cmVlR2VuZXJhdG9yIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwicmVjdXJzaXZlR2V0IiwiYWxsSXRlbXMiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiIsIl9kaWRJdGVyYXRvckVycm9yMiIsIl9pdGVyYXRvckVycm9yMiIsIl9zdGVwMiIsIl9pdGVyYXRvcjIiLCJfdXBkYXRlTm9kZXMiLCJfdXBkYXRlTGlua3MiLCJnZXRMaW5rcyIsIkJveGVkTm9kZVNldHRpbmdzIiwib3duZXJPYmplY3QiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9ib2R5Qm94V2lkdGgiLCJib2R5Qm94V2lkdGgiLCJfYm9keUJveEhlaWdodCIsImJvZHlCb3hIZWlnaHQiLCJfYm9keUJveFBhZGRpbmciLCJib2R5Qm94UGFkZGluZyIsIl90aXRsZUJveFdpZHRoIiwidGl0bGVCb3hXaWR0aCIsIl90aXRsZUJveEhlaWdodCIsInRpdGxlQm94SGVpZ2h0IiwiX3RpdGxlQm94UGFkZGluZyIsInRpdGxlQm94UGFkZGluZyIsIm5ld1BhZGRpbmciLCJnZXRCb2R5Qm94V2lkdGgiLCJfZ2V0Qm9keURpc3BsYXlUZXh0IiwiZ2V0Qm9keURpc3BsYXlUZXh0IiwiX2dldFRpdGxlRGlzcGxheVRleHQiLCJnZXRUaXRsZURpc3BsYXlUZXh0IiwiX2dldCIsIm5vZGVCb2R5Qm94V2lkdGgiLCJub2RlQm9keUJveEhlaWdodCIsImdldEJvZHlCb3hIZWlnaHQiLCJub2RlQm9keUJveFBhZGRpbmciLCJnZXRCb2R5Qm94UGFkZGluZyIsIm5vZGVUaXRsZUJveFdpZHRoIiwiZ2V0VGl0bGVCb3hXaWR0aCIsIm5vZGVUaXRsZUJveEhlaWdodCIsImdldFRpdGxlQm94SGVpZ2h0Iiwibm9kZVRpdGxlQm94UGFkZGluZyIsImdldFRpdGxlQm94UGFkZGluZyIsImJvZHlHcm91cHMiLCJzaW5nbGVkT3V0RGF0YSIsInJlY2FsY3VsYXRlZFBhZGRpbmdUb3AiLCJkM1BsdXNUZXh0Qm94IiwiaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQiLCJnZXRIb3Jpem9udGFsU3BhY2luZyIsImdldFZlcnRpY2FsU3BhY2luZyIsInNvdXJjZUNvb3JkaW5hdGUiLCJ0YXJnZXRDb29yZGluYXRlIiwibmV3Qm9keURpc3BsYXlUZXh0QWNjZXNzb3IiLCJuZXdUaXRsZURpc3BsYXlUZXh0QWNjZXNzb3IiLCJDaXJjbGVOb2RlU2V0dGluZ3MiLCJfZ2V0RGlzcGxheVRleHQiLCJnZXREaXNwbGF5VGV4dCIsImlzTWlkZGxlQ2hpbGQiLCJuZXdEaXNwbGF5VGV4dEFjY2Vzc29yIiwiX293bmVyT2JqZWN0IiwiX2hhc0NoaWxkcmVuIiwiX2xvYWRDaGlsZHJlbiIsInByb2Nlc3NEYXRhIiwibmV3TG9hZENoaWxkcmVuTWV0aG9kIiwibmV3SGFzQ2hpbGRyZW5NZXRob2QiLCJfc2l6aW5nTW9kZSIsIl9ob3Jpem9udGFsU3BhY2luZyIsImhvcml6b250YWxTcGFjaW5nIiwiX3ZlcnRpY2FsU3BhY2luZyIsInZlcnRpY2FsU3BhY2luZyIsIm5ld0hvcml6b250YWxTcGFjaW5nIiwibmV3VmVydGljYWxTcGFjaW5nIiwibmV3U2l6aW5nTW9kZSJdLCJtYXBwaW5ncyI6IkNBQUEsU0FBQUEsRUFBQUMsR0FDQSxpQkFBQUMsU0FBQSxpQkFBQUMsT0FDQUEsT0FBQUQsUUFBQUQsSUFDQSxtQkFBQUcsZUFBQUMsSUFDQUQsT0FBQSxlQUFBSCxHQUNBLGlCQUFBQyxRQUNBQSxRQUFBLFVBQUFELEtBRUFELEVBQUEsR0FBQUEsRUFBQSxPQUErQkEsRUFBQSxhQUFBQyxLQVIvQixDQVNDSyxLQUFBLFdBQ0QsbUJDVEEsSUFBQUMsRUFBQSxHQUdBLFNBQUFDLEVBQUFDLEdBR0EsR0FBQUYsRUFBQUUsR0FDQSxPQUFBRixFQUFBRSxHQUFBUCxRQUdBLElBQUFDLEVBQUFJLEVBQUFFLEdBQUEsQ0FDQUMsRUFBQUQsRUFDQUUsR0FBQSxFQUNBVCxRQUFBLElBVUEsT0FOQVUsRUFBQUgsR0FBQUksS0FBQVYsRUFBQUQsUUFBQUMsSUFBQUQsUUFBQU0s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QUFBLFFBQ0FDLFNBQUEsU0FDQUMsUUFBQSxTQUNBQyxLQUFBLE1BQ0FDLFNBQUEsSUFDQUMsU0FBQSxNQUNBQyxjQUFBLFNBQ0FDLFNBQUEsU0FDQUMsVUFBQSxNQUNBQyxTQUFBLFNBQ0FDLFVBQUEsU0FDQUMsWUFBQSxRQUNBQyxlQUFBLFFBQ0FDLFdBQUEsU0FDQUMsV0FBQSxTQUNBQyxRQUFBLFFBQ0FDLFdBQUEsU0FDQUMsYUFBQSxRQUNBQyxjQUFBLFFBQ0FDLGNBQUEsUUFDQUMsY0FBQSxRQUNBQyxjQUFBLE1BQ0FDLFdBQUEsUUFDQUMsU0FBQSxTQUNBQyxZQUFBLE1BQ0FDLFFBQUEsUUFDQUMsUUFBQSxRQUNBQyxXQUFBLFFBQ0FDLFVBQUEsU0FDQUMsWUFBQSxTQUNBQyxZQUFBLFFBQ0FDLFFBQUEsU0FDQUMsVUFBQSxTQUNBQyxXQUFBLFNBQ0FDLEtBQUEsU0FDQUMsVUFBQSxTQUNBQyxLQUFBLFFBQ0FDLE1BQUEsTUFDQUMsWUFBQSxTQUNBQyxLQUFBLFFBQ0FDLFNBQUEsU0FDQUMsUUFBQSxTQUNBQyxVQUFBLFNBQ0FDLE9BQUEsUUFDQUMsTUFBQSxTQUNBQyxNQUFBLFNBQ0FDLFNBQUEsU0FDQUMsY0FBQSxTQUNBQyxVQUFBLFFBQ0FDLGFBQUEsU0FDQUMsVUFBQSxTQUNBQyxXQUFBLFNBQ0FDLFVBQUEsU0FDQUMscUJBQUEsU0FDQUMsVUFBQSxTQUNBQyxXQUFBLFFBQ0FDLFVBQUEsU0FDQUMsVUFBQSxTQUNBQyxZQUFBLFNBQ0FDLGNBQUEsUUFDQUMsYUFBQSxRQUNBQyxlQUFBLFFBQ0FDLGVBQUEsUUFDQUMsZUFBQSxTQUNBQyxZQUFBLFNBQ0FDLEtBQUEsTUFDQUMsVUFBQSxRQUNBQyxNQUFBLFNBQ0FDLFFBQUEsU0FDQUMsT0FBQSxRQUNBQyxpQkFBQSxRQUNBQyxXQUFBLElBQ0FDLGFBQUEsU0FDQUMsYUFBQSxRQUNBQyxlQUFBLFFBQ0FDLGdCQUFBLFFBQ0FDLGtCQUFBLE1BQ0FDLGdCQUFBLFFBQ0FDLGdCQUFBLFNBQ0FDLGFBQUEsUUFDQUMsVUFBQSxTQUNBQyxVQUFB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OUIsSUFBSTdDLG9VQUFhQyxDQUFBLEdBQ1Y0QyxFQUFhOVMsU0FDYjZQLEdBR1A1MkQsS0FBS21uRSxhQUFlaEQsRUFDcEJua0UsS0FBS3luRSxZQUFjelEsRUFBY3FJLFdBQ2pDci9ELEtBQUswbkUsbUJBQXFCMVEsRUFBYzJRLGtCQUN4QzNuRSxLQUFLNG5FLGlCQUFtQjVRLEVBQWM2USxzRUFTdEMsT0FBTzduRSxLQUFLbW5FLDREQVNaLE9BQU9ubkUsS0FBSzBuRSxnRUFTS0ksR0FFakIsT0FEQTluRSxLQUFLMG5FLG1CQUFxQkksRUFDbkI5bkUsa0RBU1AsT0FBT0EsS0FBSzRuRSw0REFTR0csR0FFZixPQURBL25FLEtBQUs0bkUsaUJBQW1CRyxFQUNqQi9uRSw2Q0FTUCxPQUFPQSxLQUFLeW5FLGtEQVNGTyxHQUVWLE9BREFob0UsS0FBS3luRSxZQUFjTyxFQUNaaG9FLDBDQUlmNjVELEVBQWE5UyxTQUFXLENBQ3BCc1ksV0FBWSxPQUNac0ksa0JBQW1CLEdBQ25CRSxnQkFBaUIsSUFHTmhPIiwiZmlsZSI6ImQzLW1pdGNoLXRyZWUubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJtaXRjaFRyZWVcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibWl0Y2hUcmVlXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImQzXCJdID0gcm9vdFtcImQzXCJdIHx8IHt9LCByb290W1wiZDNcIl1bXCJtaXRjaFRyZWVcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi4vZGlzdFwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC5qc1wiKTtcbiIsInZhciBhcnJheSA9IEFycmF5LnByb3RvdHlwZTtcblxuZXhwb3J0IHZhciBzbGljZSA9IGFycmF5LnNsaWNlO1xuZXhwb3J0IHZhciBtYXAgPSBhcnJheS5tYXA7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogYSA+PSBiID8gMCA6IE5hTjtcbn1cbiIsImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nXCI7XG5pbXBvcnQgYmlzZWN0b3IgZnJvbSBcIi4vYmlzZWN0b3JcIjtcblxudmFyIGFzY2VuZGluZ0Jpc2VjdCA9IGJpc2VjdG9yKGFzY2VuZGluZyk7XG5leHBvcnQgdmFyIGJpc2VjdFJpZ2h0ID0gYXNjZW5kaW5nQmlzZWN0LnJpZ2h0O1xuZXhwb3J0IHZhciBiaXNlY3RMZWZ0ID0gYXNjZW5kaW5nQmlzZWN0LmxlZnQ7XG5leHBvcnQgZGVmYXVsdCBiaXNlY3RSaWdodDtcbiIsImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgaWYgKGNvbXBhcmUubGVuZ3RoID09PSAxKSBjb21wYXJlID0gYXNjZW5kaW5nQ29tcGFyYXRvcihjb21wYXJlKTtcbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiBmdW5jdGlvbihhLCB4LCBsbywgaGkpIHtcbiAgICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgICBpZiAoaGkgPT0gbnVsbCkgaGkgPSBhLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsbyA8IGhpKSB7XG4gICAgICAgIHZhciBtaWQgPSBsbyArIGhpID4+PiAxO1xuICAgICAgICBpZiAoY29tcGFyZShhW21pZF0sIHgpIDwgMCkgbG8gPSBtaWQgKyAxO1xuICAgICAgICBlbHNlIGhpID0gbWlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxvO1xuICAgIH0sXG4gICAgcmlnaHQ6IGZ1bmN0aW9uKGEsIHgsIGxvLCBoaSkge1xuICAgICAgaWYgKGxvID09IG51bGwpIGxvID0gMDtcbiAgICAgIGlmIChoaSA9PSBudWxsKSBoaSA9IGEubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgICAgdmFyIG1pZCA9IGxvICsgaGkgPj4+IDE7XG4gICAgICAgIGlmIChjb21wYXJlKGFbbWlkXSwgeCkgPiAwKSBoaSA9IG1pZDtcbiAgICAgICAgZWxzZSBsbyA9IG1pZCArIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gbG87XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmdDb21wYXJhdG9yKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGQsIHgpIHtcbiAgICByZXR1cm4gYXNjZW5kaW5nKGYoZCksIHgpO1xuICB9O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJpbXBvcnQge3BhaXJ9IGZyb20gXCIuL3BhaXJzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlczAsIHZhbHVlczEsIHJlZHVjZSkge1xuICB2YXIgbjAgPSB2YWx1ZXMwLmxlbmd0aCxcbiAgICAgIG4xID0gdmFsdWVzMS5sZW5ndGgsXG4gICAgICB2YWx1ZXMgPSBuZXcgQXJyYXkobjAgKiBuMSksXG4gICAgICBpMCxcbiAgICAgIGkxLFxuICAgICAgaSxcbiAgICAgIHZhbHVlMDtcblxuICBpZiAocmVkdWNlID09IG51bGwpIHJlZHVjZSA9IHBhaXI7XG5cbiAgZm9yIChpMCA9IGkgPSAwOyBpMCA8IG4wOyArK2kwKSB7XG4gICAgZm9yICh2YWx1ZTAgPSB2YWx1ZXMwW2kwXSwgaTEgPSAwOyBpMSA8IG4xOyArK2kxLCArK2kpIHtcbiAgICAgIHZhbHVlc1tpXSA9IHJlZHVjZSh2YWx1ZTAsIHZhbHVlczFbaTFdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWVzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYiA8IGEgPyAtMSA6IGIgPiBhID8gMSA6IGIgPj0gYSA/IDAgOiBOYU47XG59XG4iLCJpbXBvcnQgdmFyaWFuY2UgZnJvbSBcIi4vdmFyaWFuY2VcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgdmFyIHYgPSB2YXJpYW5jZShhcnJheSwgZik7XG4gIHJldHVybiB2ID8gTWF0aC5zcXJ0KHYpIDogdjtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgdmFsdWVvZikge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBpID0gLTEsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1pbixcbiAgICAgIG1heDtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWluID0gbWF4ID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlc1tpXSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKG1pbiA+IHZhbHVlKSBtaW4gPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChtYXggPCB2YWx1ZSkgbWF4ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkgIT0gbnVsbCAmJiB2YWx1ZSA+PSB2YWx1ZSkge1xuICAgICAgICBtaW4gPSBtYXggPSB2YWx1ZTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gQ29tcGFyZSB0aGUgcmVtYWluaW5nIHZhbHVlcy5cbiAgICAgICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChtaW4gPiB2YWx1ZSkgbWluID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAobWF4IDwgdmFsdWUpIG1heCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbbWluLCBtYXhdO1xufVxuIiwiaW1wb3J0IHtzbGljZX0gZnJvbSBcIi4vYXJyYXlcIjtcbmltcG9ydCBiaXNlY3QgZnJvbSBcIi4vYmlzZWN0XCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCBleHRlbnQgZnJvbSBcIi4vZXh0ZW50XCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHlcIjtcbmltcG9ydCByYW5nZSBmcm9tIFwiLi9yYW5nZVwiO1xuaW1wb3J0IHt0aWNrU3RlcH0gZnJvbSBcIi4vdGlja3NcIjtcbmltcG9ydCBzdHVyZ2VzIGZyb20gXCIuL3RocmVzaG9sZC9zdHVyZ2VzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgdmFsdWUgPSBpZGVudGl0eSxcbiAgICAgIGRvbWFpbiA9IGV4dGVudCxcbiAgICAgIHRocmVzaG9sZCA9IHN0dXJnZXM7XG5cbiAgZnVuY3Rpb24gaGlzdG9ncmFtKGRhdGEpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IGRhdGEubGVuZ3RoLFxuICAgICAgICB4LFxuICAgICAgICB2YWx1ZXMgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YWx1ZXNbaV0gPSB2YWx1ZShkYXRhW2ldLCBpLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YXIgeHogPSBkb21haW4odmFsdWVzKSxcbiAgICAgICAgeDAgPSB4elswXSxcbiAgICAgICAgeDEgPSB4elsxXSxcbiAgICAgICAgdHogPSB0aHJlc2hvbGQodmFsdWVzLCB4MCwgeDEpO1xuXG4gICAgLy8gQ29udmVydCBudW1iZXIgb2YgdGhyZXNob2xkcyBpbnRvIHVuaWZvcm0gdGhyZXNob2xkcy5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHopKSB7XG4gICAgICB0eiA9IHRpY2tTdGVwKHgwLCB4MSwgdHopO1xuICAgICAgdHogPSByYW5nZShNYXRoLmNlaWwoeDAgLyB0eikgKiB0eiwgeDEsIHR6KTsgLy8gZXhjbHVzaXZlXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGFueSB0aHJlc2hvbGRzIG91dHNpZGUgdGhlIGRvbWFpbi5cbiAgICB2YXIgbSA9IHR6Lmxlbmd0aDtcbiAgICB3aGlsZSAodHpbMF0gPD0geDApIHR6LnNoaWZ0KCksIC0tbTtcbiAgICB3aGlsZSAodHpbbSAtIDFdID4geDEpIHR6LnBvcCgpLCAtLW07XG5cbiAgICB2YXIgYmlucyA9IG5ldyBBcnJheShtICsgMSksXG4gICAgICAgIGJpbjtcblxuICAgIC8vIEluaXRpYWxpemUgYmlucy5cbiAgICBmb3IgKGkgPSAwOyBpIDw9IG07ICsraSkge1xuICAgICAgYmluID0gYmluc1tpXSA9IFtdO1xuICAgICAgYmluLngwID0gaSA+IDAgPyB0eltpIC0gMV0gOiB4MDtcbiAgICAgIGJpbi54MSA9IGkgPCBtID8gdHpbaV0gOiB4MTtcbiAgICB9XG5cbiAgICAvLyBBc3NpZ24gZGF0YSB0byBiaW5zIGJ5IHZhbHVlLCBpZ25vcmluZyBhbnkgb3V0c2lkZSB0aGUgZG9tYWluLlxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHggPSB2YWx1ZXNbaV07XG4gICAgICBpZiAoeDAgPD0geCAmJiB4IDw9IHgxKSB7XG4gICAgICAgIGJpbnNbYmlzZWN0KHR6LCB4LCAwLCBtKV0ucHVzaChkYXRhW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmlucztcbiAgfVxuXG4gIGhpc3RvZ3JhbS52YWx1ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh2YWx1ZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIGhpc3RvZ3JhbSkgOiB2YWx1ZTtcbiAgfTtcblxuICBoaXN0b2dyYW0uZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRvbWFpbiA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoW19bMF0sIF9bMV1dKSwgaGlzdG9ncmFtKSA6IGRvbWFpbjtcbiAgfTtcblxuICBoaXN0b2dyYW0udGhyZXNob2xkcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aHJlc2hvbGQgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IEFycmF5LmlzQXJyYXkoXykgPyBjb25zdGFudChzbGljZS5jYWxsKF8pKSA6IGNvbnN0YW50KF8pLCBoaXN0b2dyYW0pIDogdGhyZXNob2xkO1xuICB9O1xuXG4gIHJldHVybiBoaXN0b2dyYW07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4O1xufVxuIiwiZXhwb3J0IHtkZWZhdWx0IGFzIGJpc2VjdCwgYmlzZWN0UmlnaHQsIGJpc2VjdExlZnR9IGZyb20gXCIuL2Jpc2VjdFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGFzY2VuZGluZ30gZnJvbSBcIi4vYXNjZW5kaW5nXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYmlzZWN0b3J9IGZyb20gXCIuL2Jpc2VjdG9yXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3Jvc3N9IGZyb20gXCIuL2Nyb3NzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZGVzY2VuZGluZ30gZnJvbSBcIi4vZGVzY2VuZGluZ1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGRldmlhdGlvbn0gZnJvbSBcIi4vZGV2aWF0aW9uXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXh0ZW50fSBmcm9tIFwiLi9leHRlbnRcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBoaXN0b2dyYW19IGZyb20gXCIuL2hpc3RvZ3JhbVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXN9IGZyb20gXCIuL3RocmVzaG9sZC9mcmVlZG1hbkRpYWNvbmlzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGhyZXNob2xkU2NvdHR9IGZyb20gXCIuL3RocmVzaG9sZC9zY290dFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRocmVzaG9sZFN0dXJnZXN9IGZyb20gXCIuL3RocmVzaG9sZC9zdHVyZ2VzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbWF4fSBmcm9tIFwiLi9tYXhcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtZWFufSBmcm9tIFwiLi9tZWFuXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbWVkaWFufSBmcm9tIFwiLi9tZWRpYW5cIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtZXJnZX0gZnJvbSBcIi4vbWVyZ2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtaW59IGZyb20gXCIuL21pblwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBhaXJzfSBmcm9tIFwiLi9wYWlyc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBlcm11dGV9IGZyb20gXCIuL3Blcm11dGVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBxdWFudGlsZX0gZnJvbSBcIi4vcXVhbnRpbGVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5nZX0gZnJvbSBcIi4vcmFuZ2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzY2FufSBmcm9tIFwiLi9zY2FuXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2h1ZmZsZX0gZnJvbSBcIi4vc2h1ZmZsZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN1bX0gZnJvbSBcIi4vc3VtXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGlja3MsIHRpY2tJbmNyZW1lbnQsIHRpY2tTdGVwfSBmcm9tIFwiLi90aWNrc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyYW5zcG9zZX0gZnJvbSBcIi4vdHJhbnNwb3NlXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmFyaWFuY2V9IGZyb20gXCIuL3ZhcmlhbmNlXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgemlwfSBmcm9tIFwiLi96aXBcIjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgdmFsdWVvZikge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBpID0gLTEsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1heDtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlc1tpXSkgIT0gbnVsbCAmJiB2YWx1ZSA+IG1heCkge1xuICAgICAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkgIT0gbnVsbCAmJiB2YWx1ZSA+PSB2YWx1ZSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gQ29tcGFyZSB0aGUgcmVtYWluaW5nIHZhbHVlcy5cbiAgICAgICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwgJiYgdmFsdWUgPiBtYXgpIHtcbiAgICAgICAgICAgIG1heCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXg7XG59XG4iLCJpbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgbSA9IG4sXG4gICAgICBpID0gLTEsXG4gICAgICB2YWx1ZSxcbiAgICAgIHN1bSA9IDA7XG5cbiAgaWYgKHZhbHVlb2YgPT0gbnVsbCkge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAoIWlzTmFOKHZhbHVlID0gbnVtYmVyKHZhbHVlc1tpXSkpKSBzdW0gKz0gdmFsdWU7XG4gICAgICBlbHNlIC0tbTtcbiAgICB9XG4gIH1cblxuICBlbHNlIHtcbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKCFpc05hTih2YWx1ZSA9IG51bWJlcih2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkpKSBzdW0gKz0gdmFsdWU7XG4gICAgICBlbHNlIC0tbTtcbiAgICB9XG4gIH1cblxuICBpZiAobSkgcmV0dXJuIHN1bSAvIG07XG59XG4iLCJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZ1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXJcIjtcbmltcG9ydCBxdWFudGlsZSBmcm9tIFwiLi9xdWFudGlsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgaSA9IC0xLFxuICAgICAgdmFsdWUsXG4gICAgICBudW1iZXJzID0gW107XG5cbiAgaWYgKHZhbHVlb2YgPT0gbnVsbCkge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAoIWlzTmFOKHZhbHVlID0gbnVtYmVyKHZhbHVlc1tpXSkpKSB7XG4gICAgICAgIG51bWJlcnMucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICghaXNOYU4odmFsdWUgPSBudW1iZXIodmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpKSkge1xuICAgICAgICBudW1iZXJzLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFudGlsZShudW1iZXJzLnNvcnQoYXNjZW5kaW5nKSwgMC41KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGFycmF5cykge1xuICB2YXIgbiA9IGFycmF5cy5sZW5ndGgsXG4gICAgICBtLFxuICAgICAgaSA9IC0xLFxuICAgICAgaiA9IDAsXG4gICAgICBtZXJnZWQsXG4gICAgICBhcnJheTtcblxuICB3aGlsZSAoKytpIDwgbikgaiArPSBhcnJheXNbaV0ubGVuZ3RoO1xuICBtZXJnZWQgPSBuZXcgQXJyYXkoaik7XG5cbiAgd2hpbGUgKC0tbiA+PSAwKSB7XG4gICAgYXJyYXkgPSBhcnJheXNbbl07XG4gICAgbSA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoLS1tID49IDApIHtcbiAgICAgIG1lcmdlZFstLWpdID0gYXJyYXlbbV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgdmFsdWVvZikge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBpID0gLTEsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1pbjtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWluID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlc1tpXSkgIT0gbnVsbCAmJiBtaW4gPiB2YWx1ZSkge1xuICAgICAgICAgICAgbWluID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkgIT0gbnVsbCAmJiB2YWx1ZSA+PSB2YWx1ZSkge1xuICAgICAgICBtaW4gPSB2YWx1ZTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gQ29tcGFyZSB0aGUgcmVtYWluaW5nIHZhbHVlcy5cbiAgICAgICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwgJiYgbWluID4gdmFsdWUpIHtcbiAgICAgICAgICAgIG1pbiA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW47XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID09PSBudWxsID8gTmFOIDogK3g7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhcnJheSwgZikge1xuICBpZiAoZiA9PSBudWxsKSBmID0gcGFpcjtcbiAgdmFyIGkgPSAwLCBuID0gYXJyYXkubGVuZ3RoIC0gMSwgcCA9IGFycmF5WzBdLCBwYWlycyA9IG5ldyBBcnJheShuIDwgMCA/IDAgOiBuKTtcbiAgd2hpbGUgKGkgPCBuKSBwYWlyc1tpXSA9IGYocCwgcCA9IGFycmF5WysraV0pO1xuICByZXR1cm4gcGFpcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWlyKGEsIGIpIHtcbiAgcmV0dXJuIFthLCBiXTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGFycmF5LCBpbmRleGVzKSB7XG4gIHZhciBpID0gaW5kZXhlcy5sZW5ndGgsIHBlcm11dGVzID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSBwZXJtdXRlc1tpXSA9IGFycmF5W2luZGV4ZXNbaV1dO1xuICByZXR1cm4gcGVybXV0ZXM7XG59XG4iLCJpbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMsIHAsIHZhbHVlb2YpIHtcbiAgaWYgKHZhbHVlb2YgPT0gbnVsbCkgdmFsdWVvZiA9IG51bWJlcjtcbiAgaWYgKCEobiA9IHZhbHVlcy5sZW5ndGgpKSByZXR1cm47XG4gIGlmICgocCA9ICtwKSA8PSAwIHx8IG4gPCAyKSByZXR1cm4gK3ZhbHVlb2YodmFsdWVzWzBdLCAwLCB2YWx1ZXMpO1xuICBpZiAocCA+PSAxKSByZXR1cm4gK3ZhbHVlb2YodmFsdWVzW24gLSAxXSwgbiAtIDEsIHZhbHVlcyk7XG4gIHZhciBuLFxuICAgICAgaSA9IChuIC0gMSkgKiBwLFxuICAgICAgaTAgPSBNYXRoLmZsb29yKGkpLFxuICAgICAgdmFsdWUwID0gK3ZhbHVlb2YodmFsdWVzW2kwXSwgaTAsIHZhbHVlcyksXG4gICAgICB2YWx1ZTEgPSArdmFsdWVvZih2YWx1ZXNbaTAgKyAxXSwgaTAgKyAxLCB2YWx1ZXMpO1xuICByZXR1cm4gdmFsdWUwICsgKHZhbHVlMSAtIHZhbHVlMCkgKiAoaSAtIGkwKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gIHN0YXJ0ID0gK3N0YXJ0LCBzdG9wID0gK3N0b3AsIHN0ZXAgPSAobiA9IGFyZ3VtZW50cy5sZW5ndGgpIDwgMiA/IChzdG9wID0gc3RhcnQsIHN0YXJ0ID0gMCwgMSkgOiBuIDwgMyA/IDEgOiArc3RlcDtcblxuICB2YXIgaSA9IC0xLFxuICAgICAgbiA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApKSB8IDAsXG4gICAgICByYW5nZSA9IG5ldyBBcnJheShuKTtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIHJhbmdlW2ldID0gc3RhcnQgKyBpICogc3RlcDtcbiAgfVxuXG4gIHJldHVybiByYW5nZTtcbn1cbiIsImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgY29tcGFyZSkge1xuICBpZiAoIShuID0gdmFsdWVzLmxlbmd0aCkpIHJldHVybjtcbiAgdmFyIG4sXG4gICAgICBpID0gMCxcbiAgICAgIGogPSAwLFxuICAgICAgeGksXG4gICAgICB4aiA9IHZhbHVlc1tqXTtcblxuICBpZiAoY29tcGFyZSA9PSBudWxsKSBjb21wYXJlID0gYXNjZW5kaW5nO1xuXG4gIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgaWYgKGNvbXBhcmUoeGkgPSB2YWx1ZXNbaV0sIHhqKSA8IDAgfHwgY29tcGFyZSh4aiwgeGopICE9PSAwKSB7XG4gICAgICB4aiA9IHhpLCBqID0gaTtcbiAgICB9XG4gIH1cblxuICBpZiAoY29tcGFyZSh4aiwgeGopID09PSAwKSByZXR1cm4gajtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGFycmF5LCBpMCwgaTEpIHtcbiAgdmFyIG0gPSAoaTEgPT0gbnVsbCA/IGFycmF5Lmxlbmd0aCA6IGkxKSAtIChpMCA9IGkwID09IG51bGwgPyAwIDogK2kwKSxcbiAgICAgIHQsXG4gICAgICBpO1xuXG4gIHdoaWxlIChtKSB7XG4gICAgaSA9IE1hdGgucmFuZG9tKCkgKiBtLS0gfCAwO1xuICAgIHQgPSBhcnJheVttICsgaTBdO1xuICAgIGFycmF5W20gKyBpMF0gPSBhcnJheVtpICsgaTBdO1xuICAgIGFycmF5W2kgKyBpMF0gPSB0O1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzLCB2YWx1ZW9mKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIGkgPSAtMSxcbiAgICAgIHZhbHVlLFxuICAgICAgc3VtID0gMDtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh2YWx1ZSA9ICt2YWx1ZXNbaV0pIHN1bSArPSB2YWx1ZTsgLy8gTm90ZTogemVybyBhbmQgbnVsbCBhcmUgZXF1aXZhbGVudC5cbiAgICB9XG4gIH1cblxuICBlbHNlIHtcbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKHZhbHVlID0gK3ZhbHVlb2YodmFsdWVzW2ldLCBpLCB2YWx1ZXMpKSBzdW0gKz0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1bTtcbn1cbiIsImltcG9ydCB7bWFwfSBmcm9tIFwiLi4vYXJyYXlcIjtcbmltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4uL2FzY2VuZGluZ1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyXCI7XG5pbXBvcnQgcXVhbnRpbGUgZnJvbSBcIi4uL3F1YW50aWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgbWluLCBtYXgpIHtcbiAgdmFsdWVzID0gbWFwLmNhbGwodmFsdWVzLCBudW1iZXIpLnNvcnQoYXNjZW5kaW5nKTtcbiAgcmV0dXJuIE1hdGguY2VpbCgobWF4IC0gbWluKSAvICgyICogKHF1YW50aWxlKHZhbHVlcywgMC43NSkgLSBxdWFudGlsZSh2YWx1ZXMsIDAuMjUpKSAqIE1hdGgucG93KHZhbHVlcy5sZW5ndGgsIC0xIC8gMykpKTtcbn1cbiIsImltcG9ydCBkZXZpYXRpb24gZnJvbSBcIi4uL2RldmlhdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMsIG1pbiwgbWF4KSB7XG4gIHJldHVybiBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyAoMy41ICogZGV2aWF0aW9uKHZhbHVlcykgKiBNYXRoLnBvdyh2YWx1ZXMubGVuZ3RoLCAtMSAvIDMpKSk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh2YWx1ZXMubGVuZ3RoKSAvIE1hdGguTE4yKSArIDE7XG59XG4iLCJ2YXIgZTEwID0gTWF0aC5zcXJ0KDUwKSxcbiAgICBlNSA9IE1hdGguc3FydCgxMCksXG4gICAgZTIgPSBNYXRoLnNxcnQoMik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBjb3VudCkge1xuICB2YXIgcmV2ZXJzZSxcbiAgICAgIGkgPSAtMSxcbiAgICAgIG4sXG4gICAgICB0aWNrcyxcbiAgICAgIHN0ZXA7XG5cbiAgc3RvcCA9ICtzdG9wLCBzdGFydCA9ICtzdGFydCwgY291bnQgPSArY291bnQ7XG4gIGlmIChzdGFydCA9PT0gc3RvcCAmJiBjb3VudCA+IDApIHJldHVybiBbc3RhcnRdO1xuICBpZiAocmV2ZXJzZSA9IHN0b3AgPCBzdGFydCkgbiA9IHN0YXJ0LCBzdGFydCA9IHN0b3AsIHN0b3AgPSBuO1xuICBpZiAoKHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCkpID09PSAwIHx8ICFpc0Zpbml0ZShzdGVwKSkgcmV0dXJuIFtdO1xuXG4gIGlmIChzdGVwID4gMCkge1xuICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0IC8gc3RlcCk7XG4gICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAvIHN0ZXApO1xuICAgIHRpY2tzID0gbmV3IEFycmF5KG4gPSBNYXRoLmNlaWwoc3RvcCAtIHN0YXJ0ICsgMSkpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aWNrc1tpXSA9IChzdGFydCArIGkpICogc3RlcDtcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IE1hdGguZmxvb3Ioc3RhcnQgKiBzdGVwKTtcbiAgICBzdG9wID0gTWF0aC5jZWlsKHN0b3AgKiBzdGVwKTtcbiAgICB0aWNrcyA9IG5ldyBBcnJheShuID0gTWF0aC5jZWlsKHN0YXJ0IC0gc3RvcCArIDEpKTtcbiAgICB3aGlsZSAoKytpIDwgbikgdGlja3NbaV0gPSAoc3RhcnQgLSBpKSAvIHN0ZXA7XG4gIH1cblxuICBpZiAocmV2ZXJzZSkgdGlja3MucmV2ZXJzZSgpO1xuXG4gIHJldHVybiB0aWNrcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gIHZhciBzdGVwID0gKHN0b3AgLSBzdGFydCkgLyBNYXRoLm1heCgwLCBjb3VudCksXG4gICAgICBwb3dlciA9IE1hdGguZmxvb3IoTWF0aC5sb2coc3RlcCkgLyBNYXRoLkxOMTApLFxuICAgICAgZXJyb3IgPSBzdGVwIC8gTWF0aC5wb3coMTAsIHBvd2VyKTtcbiAgcmV0dXJuIHBvd2VyID49IDBcbiAgICAgID8gKGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMSkgKiBNYXRoLnBvdygxMCwgcG93ZXIpXG4gICAgICA6IC1NYXRoLnBvdygxMCwgLXBvd2VyKSAvIChlcnJvciA+PSBlMTAgPyAxMCA6IGVycm9yID49IGU1ID8gNSA6IGVycm9yID49IGUyID8gMiA6IDEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGlja1N0ZXAoc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gIHZhciBzdGVwMCA9IE1hdGguYWJzKHN0b3AgLSBzdGFydCkgLyBNYXRoLm1heCgwLCBjb3VudCksXG4gICAgICBzdGVwMSA9IE1hdGgucG93KDEwLCBNYXRoLmZsb29yKE1hdGgubG9nKHN0ZXAwKSAvIE1hdGguTE4xMCkpLFxuICAgICAgZXJyb3IgPSBzdGVwMCAvIHN0ZXAxO1xuICBpZiAoZXJyb3IgPj0gZTEwKSBzdGVwMSAqPSAxMDtcbiAgZWxzZSBpZiAoZXJyb3IgPj0gZTUpIHN0ZXAxICo9IDU7XG4gIGVsc2UgaWYgKGVycm9yID49IGUyKSBzdGVwMSAqPSAyO1xuICByZXR1cm4gc3RvcCA8IHN0YXJ0ID8gLXN0ZXAxIDogc3RlcDE7XG59XG4iLCJpbXBvcnQgbWluIGZyb20gXCIuL21pblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtYXRyaXgpIHtcbiAgaWYgKCEobiA9IG1hdHJpeC5sZW5ndGgpKSByZXR1cm4gW107XG4gIGZvciAodmFyIGkgPSAtMSwgbSA9IG1pbihtYXRyaXgsIGxlbmd0aCksIHRyYW5zcG9zZSA9IG5ldyBBcnJheShtKTsgKytpIDwgbTspIHtcbiAgICBmb3IgKHZhciBqID0gLTEsIG4sIHJvdyA9IHRyYW5zcG9zZVtpXSA9IG5ldyBBcnJheShuKTsgKytqIDwgbjspIHtcbiAgICAgIHJvd1tqXSA9IG1hdHJpeFtqXVtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyYW5zcG9zZTtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoKGQpIHtcbiAgcmV0dXJuIGQubGVuZ3RoO1xufVxuIiwiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzLCB2YWx1ZW9mKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG0gPSAwLFxuICAgICAgaSA9IC0xLFxuICAgICAgbWVhbiA9IDAsXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlbHRhLFxuICAgICAgc3VtID0gMDtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICghaXNOYU4odmFsdWUgPSBudW1iZXIodmFsdWVzW2ldKSkpIHtcbiAgICAgICAgZGVsdGEgPSB2YWx1ZSAtIG1lYW47XG4gICAgICAgIG1lYW4gKz0gZGVsdGEgLyArK207XG4gICAgICAgIHN1bSArPSBkZWx0YSAqICh2YWx1ZSAtIG1lYW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVsc2Uge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAoIWlzTmFOKHZhbHVlID0gbnVtYmVyKHZhbHVlb2YodmFsdWVzW2ldLCBpLCB2YWx1ZXMpKSkpIHtcbiAgICAgICAgZGVsdGEgPSB2YWx1ZSAtIG1lYW47XG4gICAgICAgIG1lYW4gKz0gZGVsdGEgLyArK207XG4gICAgICAgIHN1bSArPSBkZWx0YSAqICh2YWx1ZSAtIG1lYW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChtID4gMSkgcmV0dXJuIHN1bSAvIChtIC0gMSk7XG59XG4iLCJpbXBvcnQgdHJhbnNwb3NlIGZyb20gXCIuL3RyYW5zcG9zZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRyYW5zcG9zZShhcmd1bWVudHMpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWFwKSB7XG4gIHZhciBlbnRyaWVzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBtYXApIGVudHJpZXMucHVzaCh7a2V5OiBrZXksIHZhbHVlOiBtYXBba2V5XX0pO1xuICByZXR1cm4gZW50cmllcztcbn1cbiIsImV4cG9ydCB7ZGVmYXVsdCBhcyBuZXN0fSBmcm9tIFwiLi9uZXN0XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2V0fSBmcm9tIFwiLi9zZXRcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtYXB9IGZyb20gXCIuL21hcFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGtleXN9IGZyb20gXCIuL2tleXNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2YWx1ZXN9IGZyb20gXCIuL3ZhbHVlc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGVudHJpZXN9IGZyb20gXCIuL2VudHJpZXNcIjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hcCkge1xuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gbWFwKSBrZXlzLnB1c2goa2V5KTtcbiAgcmV0dXJuIGtleXM7XG59XG4iLCJleHBvcnQgdmFyIHByZWZpeCA9IFwiJFwiO1xuXG5mdW5jdGlvbiBNYXAoKSB7fVxuXG5NYXAucHJvdG90eXBlID0gbWFwLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IE1hcCxcbiAgaGFzOiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gKHByZWZpeCArIGtleSkgaW4gdGhpcztcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gdGhpc1twcmVmaXggKyBrZXldO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzW3ByZWZpeCArIGtleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgcHJvcGVydHkgPSBwcmVmaXggKyBrZXk7XG4gICAgcmV0dXJuIHByb3BlcnR5IGluIHRoaXMgJiYgZGVsZXRlIHRoaXNbcHJvcGVydHldO1xuICB9LFxuICBjbGVhcjogZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpIGRlbGV0ZSB0aGlzW3Byb3BlcnR5XTtcbiAgfSxcbiAga2V5czogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzKSBpZiAocHJvcGVydHlbMF0gPT09IHByZWZpeCkga2V5cy5wdXNoKHByb3BlcnR5LnNsaWNlKDEpKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfSxcbiAgdmFsdWVzOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpIHZhbHVlcy5wdXNoKHRoaXNbcHJvcGVydHldKTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LFxuICBlbnRyaWVzOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMpIGlmIChwcm9wZXJ0eVswXSA9PT0gcHJlZml4KSBlbnRyaWVzLnB1c2goe2tleTogcHJvcGVydHkuc2xpY2UoMSksIHZhbHVlOiB0aGlzW3Byb3BlcnR5XX0pO1xuICAgIHJldHVybiBlbnRyaWVzO1xuICB9LFxuICBzaXplOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2l6ZSA9IDA7XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpICsrc2l6ZTtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfSxcbiAgZW1wdHk6IGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMpIGlmIChwcm9wZXJ0eVswXSA9PT0gcHJlZml4KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGVhY2g6IGZ1bmN0aW9uKGYpIHtcbiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzKSBpZiAocHJvcGVydHlbMF0gPT09IHByZWZpeCkgZih0aGlzW3Byb3BlcnR5XSwgcHJvcGVydHkuc2xpY2UoMSksIHRoaXMpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBtYXAob2JqZWN0LCBmKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwO1xuXG4gIC8vIENvcHkgY29uc3RydWN0b3IuXG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNYXApIG9iamVjdC5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHsgbWFwLnNldChrZXksIHZhbHVlKTsgfSk7XG5cbiAgLy8gSW5kZXggYXJyYXkgYnkgbnVtZXJpYyBpbmRleCBvciBzcGVjaWZpZWQga2V5IGZ1bmN0aW9uLlxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICB2YXIgaSA9IC0xLFxuICAgICAgICBuID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgICAgbztcblxuICAgIGlmIChmID09IG51bGwpIHdoaWxlICgrK2kgPCBuKSBtYXAuc2V0KGksIG9iamVjdFtpXSk7XG4gICAgZWxzZSB3aGlsZSAoKytpIDwgbikgbWFwLnNldChmKG8gPSBvYmplY3RbaV0sIGksIG9iamVjdCksIG8pO1xuICB9XG5cbiAgLy8gQ29udmVydCBvYmplY3QgdG8gbWFwLlxuICBlbHNlIGlmIChvYmplY3QpIGZvciAodmFyIGtleSBpbiBvYmplY3QpIG1hcC5zZXQoa2V5LCBvYmplY3Rba2V5XSk7XG5cbiAgcmV0dXJuIG1hcDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwO1xuIiwiaW1wb3J0IG1hcCBmcm9tIFwiLi9tYXBcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBrZXlzID0gW10sXG4gICAgICBzb3J0S2V5cyA9IFtdLFxuICAgICAgc29ydFZhbHVlcyxcbiAgICAgIHJvbGx1cCxcbiAgICAgIG5lc3Q7XG5cbiAgZnVuY3Rpb24gYXBwbHkoYXJyYXksIGRlcHRoLCBjcmVhdGVSZXN1bHQsIHNldFJlc3VsdCkge1xuICAgIGlmIChkZXB0aCA+PSBrZXlzLmxlbmd0aCkge1xuICAgICAgaWYgKHNvcnRWYWx1ZXMgIT0gbnVsbCkgYXJyYXkuc29ydChzb3J0VmFsdWVzKTtcbiAgICAgIHJldHVybiByb2xsdXAgIT0gbnVsbCA/IHJvbGx1cChhcnJheSkgOiBhcnJheTtcbiAgICB9XG5cbiAgICB2YXIgaSA9IC0xLFxuICAgICAgICBuID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBrZXkgPSBrZXlzW2RlcHRoKytdLFxuICAgICAgICBrZXlWYWx1ZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHZhbHVlc0J5S2V5ID0gbWFwKCksXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlUmVzdWx0KCk7XG5cbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKHZhbHVlcyA9IHZhbHVlc0J5S2V5LmdldChrZXlWYWx1ZSA9IGtleSh2YWx1ZSA9IGFycmF5W2ldKSArIFwiXCIpKSB7XG4gICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlc0J5S2V5LnNldChrZXlWYWx1ZSwgW3ZhbHVlXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsdWVzQnlLZXkuZWFjaChmdW5jdGlvbih2YWx1ZXMsIGtleSkge1xuICAgICAgc2V0UmVzdWx0KHJlc3VsdCwga2V5LCBhcHBseSh2YWx1ZXMsIGRlcHRoLCBjcmVhdGVSZXN1bHQsIHNldFJlc3VsdCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVudHJpZXMobWFwLCBkZXB0aCkge1xuICAgIGlmICgrK2RlcHRoID4ga2V5cy5sZW5ndGgpIHJldHVybiBtYXA7XG4gICAgdmFyIGFycmF5LCBzb3J0S2V5ID0gc29ydEtleXNbZGVwdGggLSAxXTtcbiAgICBpZiAocm9sbHVwICE9IG51bGwgJiYgZGVwdGggPj0ga2V5cy5sZW5ndGgpIGFycmF5ID0gbWFwLmVudHJpZXMoKTtcbiAgICBlbHNlIGFycmF5ID0gW10sIG1hcC5lYWNoKGZ1bmN0aW9uKHYsIGspIHsgYXJyYXkucHVzaCh7a2V5OiBrLCB2YWx1ZXM6IGVudHJpZXModiwgZGVwdGgpfSk7IH0pO1xuICAgIHJldHVybiBzb3J0S2V5ICE9IG51bGwgPyBhcnJheS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIHNvcnRLZXkoYS5rZXksIGIua2V5KTsgfSkgOiBhcnJheTtcbiAgfVxuXG4gIHJldHVybiBuZXN0ID0ge1xuICAgIG9iamVjdDogZnVuY3Rpb24oYXJyYXkpIHsgcmV0dXJuIGFwcGx5KGFycmF5LCAwLCBjcmVhdGVPYmplY3QsIHNldE9iamVjdCk7IH0sXG4gICAgbWFwOiBmdW5jdGlvbihhcnJheSkgeyByZXR1cm4gYXBwbHkoYXJyYXksIDAsIGNyZWF0ZU1hcCwgc2V0TWFwKTsgfSxcbiAgICBlbnRyaWVzOiBmdW5jdGlvbihhcnJheSkgeyByZXR1cm4gZW50cmllcyhhcHBseShhcnJheSwgMCwgY3JlYXRlTWFwLCBzZXRNYXApLCAwKTsgfSxcbiAgICBrZXk6IGZ1bmN0aW9uKGQpIHsga2V5cy5wdXNoKGQpOyByZXR1cm4gbmVzdDsgfSxcbiAgICBzb3J0S2V5czogZnVuY3Rpb24ob3JkZXIpIHsgc29ydEtleXNba2V5cy5sZW5ndGggLSAxXSA9IG9yZGVyOyByZXR1cm4gbmVzdDsgfSxcbiAgICBzb3J0VmFsdWVzOiBmdW5jdGlvbihvcmRlcikgeyBzb3J0VmFsdWVzID0gb3JkZXI7IHJldHVybiBuZXN0OyB9LFxuICAgIHJvbGx1cDogZnVuY3Rpb24oZikgeyByb2xsdXAgPSBmOyByZXR1cm4gbmVzdDsgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPYmplY3QoKSB7XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gc2V0T2JqZWN0KG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXAoKSB7XG4gIHJldHVybiBtYXAoKTtcbn1cblxuZnVuY3Rpb24gc2V0TWFwKG1hcCwga2V5LCB2YWx1ZSkge1xuICBtYXAuc2V0KGtleSwgdmFsdWUpO1xufVxuIiwiaW1wb3J0IHtkZWZhdWx0IGFzIG1hcCwgcHJlZml4fSBmcm9tIFwiLi9tYXBcIjtcblxuZnVuY3Rpb24gU2V0KCkge31cblxudmFyIHByb3RvID0gbWFwLnByb3RvdHlwZTtcblxuU2V0LnByb3RvdHlwZSA9IHNldC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZXQsXG4gIGhhczogcHJvdG8uaGFzLFxuICBhZGQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFsdWUgKz0gXCJcIjtcbiAgICB0aGlzW3ByZWZpeCArIHZhbHVlXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW1vdmU6IHByb3RvLnJlbW92ZSxcbiAgY2xlYXI6IHByb3RvLmNsZWFyLFxuICB2YWx1ZXM6IHByb3RvLmtleXMsXG4gIHNpemU6IHByb3RvLnNpemUsXG4gIGVtcHR5OiBwcm90by5lbXB0eSxcbiAgZWFjaDogcHJvdG8uZWFjaFxufTtcblxuZnVuY3Rpb24gc2V0KG9iamVjdCwgZikge1xuICB2YXIgc2V0ID0gbmV3IFNldDtcblxuICAvLyBDb3B5IGNvbnN0cnVjdG9yLlxuICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2V0KSBvYmplY3QuZWFjaChmdW5jdGlvbih2YWx1ZSkgeyBzZXQuYWRkKHZhbHVlKTsgfSk7XG5cbiAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgaXTigJlzIGFuIGFycmF5LlxuICBlbHNlIGlmIChvYmplY3QpIHtcbiAgICB2YXIgaSA9IC0xLCBuID0gb2JqZWN0Lmxlbmd0aDtcbiAgICBpZiAoZiA9PSBudWxsKSB3aGlsZSAoKytpIDwgbikgc2V0LmFkZChvYmplY3RbaV0pO1xuICAgIGVsc2Ugd2hpbGUgKCsraSA8IG4pIHNldC5hZGQoZihvYmplY3RbaV0sIGksIG9iamVjdCkpO1xuICB9XG5cbiAgcmV0dXJuIHNldDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWFwKSB7XG4gIHZhciB2YWx1ZXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG1hcCkgdmFsdWVzLnB1c2gobWFwW2tleV0pO1xuICByZXR1cm4gdmFsdWVzO1xufVxuIiwiaW1wb3J0IGRlZmluZSwge2V4dGVuZH0gZnJvbSBcIi4vZGVmaW5lXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb2xvcigpIHt9XG5cbmV4cG9ydCB2YXIgZGFya2VyID0gMC43O1xuZXhwb3J0IHZhciBicmlnaHRlciA9IDEgLyBkYXJrZXI7XG5cbnZhciByZUkgPSBcIlxcXFxzKihbKy1dP1xcXFxkKylcXFxccypcIixcbiAgICByZU4gPSBcIlxcXFxzKihbKy1dP1xcXFxkKlxcXFwuP1xcXFxkKyg/OltlRV1bKy1dP1xcXFxkKyk/KVxcXFxzKlwiLFxuICAgIHJlUCA9IFwiXFxcXHMqKFsrLV0/XFxcXGQqXFxcXC4/XFxcXGQrKD86W2VFXVsrLV0/XFxcXGQrKT8pJVxcXFxzKlwiLFxuICAgIHJlSGV4MyA9IC9eIyhbMC05YS1mXXszfSkkLyxcbiAgICByZUhleDYgPSAvXiMoWzAtOWEtZl17Nn0pJC8sXG4gICAgcmVSZ2JJbnRlZ2VyID0gbmV3IFJlZ0V4cChcIl5yZ2JcXFxcKFwiICsgW3JlSSwgcmVJLCByZUldICsgXCJcXFxcKSRcIiksXG4gICAgcmVSZ2JQZXJjZW50ID0gbmV3IFJlZ0V4cChcIl5yZ2JcXFxcKFwiICsgW3JlUCwgcmVQLCByZVBdICsgXCJcXFxcKSRcIiksXG4gICAgcmVSZ2JhSW50ZWdlciA9IG5ldyBSZWdFeHAoXCJecmdiYVxcXFwoXCIgKyBbcmVJLCByZUksIHJlSSwgcmVOXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlUmdiYVBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXnJnYmFcXFxcKFwiICsgW3JlUCwgcmVQLCByZVAsIHJlTl0gKyBcIlxcXFwpJFwiKSxcbiAgICByZUhzbFBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXmhzbFxcXFwoXCIgKyBbcmVOLCByZVAsIHJlUF0gKyBcIlxcXFwpJFwiKSxcbiAgICByZUhzbGFQZXJjZW50ID0gbmV3IFJlZ0V4cChcIl5oc2xhXFxcXChcIiArIFtyZU4sIHJlUCwgcmVQLCByZU5dICsgXCJcXFxcKSRcIik7XG5cbnZhciBuYW1lZCA9IHtcbiAgYWxpY2VibHVlOiAweGYwZjhmZixcbiAgYW50aXF1ZXdoaXRlOiAweGZhZWJkNyxcbiAgYXF1YTogMHgwMGZmZmYsXG4gIGFxdWFtYXJpbmU6IDB4N2ZmZmQ0LFxuICBhenVyZTogMHhmMGZmZmYsXG4gIGJlaWdlOiAweGY1ZjVkYyxcbiAgYmlzcXVlOiAweGZmZTRjNCxcbiAgYmxhY2s6IDB4MDAwMDAwLFxuICBibGFuY2hlZGFsbW9uZDogMHhmZmViY2QsXG4gIGJsdWU6IDB4MDAwMGZmLFxuICBibHVldmlvbGV0OiAweDhhMmJlMixcbiAgYnJvd246IDB4YTUyYTJhLFxuICBidXJseXdvb2Q6IDB4ZGViODg3LFxuICBjYWRldGJsdWU6IDB4NWY5ZWEwLFxuICBjaGFydHJldXNlOiAweDdmZmYwMCxcbiAgY2hvY29sYXRlOiAweGQyNjkxZSxcbiAgY29yYWw6IDB4ZmY3ZjUwLFxuICBjb3JuZmxvd2VyYmx1ZTogMHg2NDk1ZWQsXG4gIGNvcm5zaWxrOiAweGZmZjhkYyxcbiAgY3JpbXNvbjogMHhkYzE0M2MsXG4gIGN5YW46IDB4MDBmZmZmLFxuICBkYXJrYmx1ZTogMHgwMDAwOGIsXG4gIGRhcmtjeWFuOiAweDAwOGI4YixcbiAgZGFya2dvbGRlbnJvZDogMHhiODg2MGIsXG4gIGRhcmtncmF5OiAweGE5YTlhOSxcbiAgZGFya2dyZWVuOiAweDAwNjQwMCxcbiAgZGFya2dyZXk6IDB4YTlhOWE5LFxuICBkYXJra2hha2k6IDB4YmRiNzZiLFxuICBkYXJrbWFnZW50YTogMHg4YjAwOGIsXG4gIGRhcmtvbGl2ZWdyZWVuOiAweDU1NmIyZixcbiAgZGFya29yYW5nZTogMHhmZjhjMDAsXG4gIGRhcmtvcmNoaWQ6IDB4OTkzMmNjLFxuICBkYXJrcmVkOiAweDhiMDAwMCxcbiAgZGFya3NhbG1vbjogMHhlOTk2N2EsXG4gIGRhcmtzZWFncmVlbjogMHg4ZmJjOGYsXG4gIGRhcmtzbGF0ZWJsdWU6IDB4NDgzZDhiLFxuICBkYXJrc2xhdGVncmF5OiAweDJmNGY0ZixcbiAgZGFya3NsYXRlZ3JleTogMHgyZjRmNGYsXG4gIGRhcmt0dXJxdW9pc2U6IDB4MDBjZWQxLFxuICBkYXJrdmlvbGV0OiAweDk0MDBkMyxcbiAgZGVlcHBpbms6IDB4ZmYxNDkzLFxuICBkZWVwc2t5Ymx1ZTogMHgwMGJmZmYsXG4gIGRpbWdyYXk6IDB4Njk2OTY5LFxuICBkaW1ncmV5OiAweDY5Njk2OSxcbiAgZG9kZ2VyYmx1ZTogMHgxZTkwZmYsXG4gIGZpcmVicmljazogMHhiMjIyMjIsXG4gIGZsb3JhbHdoaXRlOiAweGZmZmFmMCxcbiAgZm9yZXN0Z3JlZW46IDB4MjI4YjIyLFxuICBmdWNoc2lhOiAweGZmMDBmZixcbiAgZ2FpbnNib3JvOiAweGRjZGNkYyxcbiAgZ2hvc3R3aGl0ZTogMHhmOGY4ZmYsXG4gIGdvbGQ6IDB4ZmZkNzAwLFxuICBnb2xkZW5yb2Q6IDB4ZGFhNTIwLFxuICBncmF5OiAweDgwODA4MCxcbiAgZ3JlZW46IDB4MDA4MDAwLFxuICBncmVlbnllbGxvdzogMHhhZGZmMmYsXG4gIGdyZXk6IDB4ODA4MDgwLFxuICBob25leWRldzogMHhmMGZmZjAsXG4gIGhvdHBpbms6IDB4ZmY2OWI0LFxuICBpbmRpYW5yZWQ6IDB4Y2Q1YzVjLFxuICBpbmRpZ286IDB4NGIwMDgyLFxuICBpdm9yeTogMHhmZmZmZjAsXG4gIGtoYWtpOiAweGYwZTY4YyxcbiAgbGF2ZW5kZXI6IDB4ZTZlNmZhLFxuICBsYXZlbmRlcmJsdXNoOiAweGZmZjBmNSxcbiAgbGF3bmdyZWVuOiAweDdjZmMwMCxcbiAgbGVtb25jaGlmZm9uOiAweGZmZmFjZCxcbiAgbGlnaHRibHVlOiAweGFkZDhlNixcbiAgbGlnaHRjb3JhbDogMHhmMDgwODAsXG4gIGxpZ2h0Y3lhbjogMHhlMGZmZmYsXG4gIGxpZ2h0Z29sZGVucm9keWVsbG93OiAweGZhZmFkMixcbiAgbGlnaHRncmF5OiAweGQzZDNkMyxcbiAgbGlnaHRncmVlbjogMHg5MGVlOTAsXG4gIGxpZ2h0Z3JleTogMHhkM2QzZDMsXG4gIGxpZ2h0cGluazogMHhmZmI2YzEsXG4gIGxpZ2h0c2FsbW9uOiAweGZmYTA3YSxcbiAgbGlnaHRzZWFncmVlbjogMHgyMGIyYWEsXG4gIGxpZ2h0c2t5Ymx1ZTogMHg4N2NlZmEsXG4gIGxpZ2h0c2xhdGVncmF5OiAweDc3ODg5OSxcbiAgbGlnaHRzbGF0ZWdyZXk6IDB4Nzc4ODk5LFxuICBsaWdodHN0ZWVsYmx1ZTogMHhiMGM0ZGUsXG4gIGxpZ2h0eWVsbG93OiAweGZmZmZlMCxcbiAgbGltZTogMHgwMGZmMDAsXG4gIGxpbWVncmVlbjogMHgzMmNkMzIsXG4gIGxpbmVuOiAweGZhZjBlNixcbiAgbWFnZW50YTogMHhmZjAwZmYsXG4gIG1hcm9vbjogMHg4MDAwMDAsXG4gIG1lZGl1bWFxdWFtYXJpbmU6IDB4NjZjZGFhLFxuICBtZWRpdW1ibHVlOiAweDAwMDBjZCxcbiAgbWVkaXVtb3JjaGlkOiAweGJhNTVkMyxcbiAgbWVkaXVtcHVycGxlOiAweDkzNzBkYixcbiAgbWVkaXVtc2VhZ3JlZW46IDB4M2NiMzcxLFxuICBtZWRpdW1zbGF0ZWJsdWU6IDB4N2I2OGVlLFxuICBtZWRpdW1zcHJpbmdncmVlbjogMHgwMGZhOWEsXG4gIG1lZGl1bXR1cnF1b2lzZTogMHg0OGQxY2MsXG4gIG1lZGl1bXZpb2xldHJlZDogMHhjNzE1ODUsXG4gIG1pZG5pZ2h0Ymx1ZTogMHgxOTE5NzAsXG4gIG1pbnRjcmVhbTogMHhmNWZmZmEsXG4gIG1pc3R5cm9zZTogMHhmZmU0ZTEsXG4gIG1vY2Nhc2luOiAweGZmZTRiNSxcbiAgbmF2YWpvd2hpdGU6IDB4ZmZkZWFkLFxuICBuYXZ5OiAweDAwMDA4MCxcbiAgb2xkbGFjZTogMHhmZGY1ZTYsXG4gIG9saXZlOiAweDgwODAwMCxcbiAgb2xpdmVkcmFiOiAweDZiOGUyMyxcbiAgb3JhbmdlOiAweGZmYTUwMCxcbiAgb3JhbmdlcmVkOiAweGZmNDUwMCxcbiAgb3JjaGlkOiAweGRhNzBkNixcbiAgcGFsZWdvbGRlbnJvZDogMHhlZWU4YWEsXG4gIHBhbGVncmVlbjogMHg5OGZiOTgsXG4gIHBhbGV0dXJxdW9pc2U6IDB4YWZlZWVlLFxuICBwYWxldmlvbGV0cmVkOiAweGRiNzA5MyxcbiAgcGFwYXlhd2hpcDogMHhmZmVmZDUsXG4gIHBlYWNocHVmZjogMHhmZmRhYjksXG4gIHBlcnU6IDB4Y2Q4NTNmLFxuICBwaW5rOiAweGZmYzBjYixcbiAgcGx1bTogMHhkZGEwZGQsXG4gIHBvd2RlcmJsdWU6IDB4YjBlMGU2LFxuICBwdXJwbGU6IDB4ODAwMDgwLFxuICByZWJlY2NhcHVycGxlOiAweDY2MzM5OSxcbiAgcmVkOiAweGZmMDAwMCxcbiAgcm9zeWJyb3duOiAweGJjOGY4ZixcbiAgcm95YWxibHVlOiAweDQxNjllMSxcbiAgc2FkZGxlYnJvd246IDB4OGI0NTEzLFxuICBzYWxtb246IDB4ZmE4MDcyLFxuICBzYW5keWJyb3duOiAweGY0YTQ2MCxcbiAgc2VhZ3JlZW46IDB4MmU4YjU3LFxuICBzZWFzaGVsbDogMHhmZmY1ZWUsXG4gIHNpZW5uYTogMHhhMDUyMmQsXG4gIHNpbHZlcjogMHhjMGMwYzAsXG4gIHNreWJsdWU6IDB4ODdjZWViLFxuICBzbGF0ZWJsdWU6IDB4NmE1YWNkLFxuICBzbGF0ZWdyYXk6IDB4NzA4MDkwLFxuICBzbGF0ZWdyZXk6IDB4NzA4MDkwLFxuICBzbm93OiAweGZmZmFmYSxcbiAgc3ByaW5nZ3JlZW46IDB4MDBmZjdmLFxuICBzdGVlbGJsdWU6IDB4NDY4MmI0LFxuICB0YW46IDB4ZDJiNDhjLFxuICB0ZWFsOiAweDAwODA4MCxcbiAgdGhpc3RsZTogMHhkOGJmZDgsXG4gIHRvbWF0bzogMHhmZjYzNDcsXG4gIHR1cnF1b2lzZTogMHg0MGUwZDAsXG4gIHZpb2xldDogMHhlZTgyZWUsXG4gIHdoZWF0OiAweGY1ZGViMyxcbiAgd2hpdGU6IDB4ZmZmZmZmLFxuICB3aGl0ZXNtb2tlOiAweGY1ZjVmNSxcbiAgeWVsbG93OiAweGZmZmYwMCxcbiAgeWVsbG93Z3JlZW46IDB4OWFjZDMyXG59O1xuXG5kZWZpbmUoQ29sb3IsIGNvbG9yLCB7XG4gIGRpc3BsYXlhYmxlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpO1xuICB9LFxuICBoZXg6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnJnYigpLmhleCgpO1xuICB9LFxuICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucmdiKCkgKyBcIlwiO1xuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29sb3IoZm9ybWF0KSB7XG4gIHZhciBtO1xuICBmb3JtYXQgPSAoZm9ybWF0ICsgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiAobSA9IHJlSGV4My5leGVjKGZvcm1hdCkpID8gKG0gPSBwYXJzZUludChtWzFdLCAxNiksIG5ldyBSZ2IoKG0gPj4gOCAmIDB4ZikgfCAobSA+PiA0ICYgMHgwZjApLCAobSA+PiA0ICYgMHhmKSB8IChtICYgMHhmMCksICgobSAmIDB4ZikgPDwgNCkgfCAobSAmIDB4ZiksIDEpKSAvLyAjZjAwXG4gICAgICA6IChtID0gcmVIZXg2LmV4ZWMoZm9ybWF0KSkgPyByZ2JuKHBhcnNlSW50KG1bMV0sIDE2KSkgLy8gI2ZmMDAwMFxuICAgICAgOiAobSA9IHJlUmdiSW50ZWdlci5leGVjKGZvcm1hdCkpID8gbmV3IFJnYihtWzFdLCBtWzJdLCBtWzNdLCAxKSAvLyByZ2IoMjU1LCAwLCAwKVxuICAgICAgOiAobSA9IHJlUmdiUGVyY2VudC5leGVjKGZvcm1hdCkpID8gbmV3IFJnYihtWzFdICogMjU1IC8gMTAwLCBtWzJdICogMjU1IC8gMTAwLCBtWzNdICogMjU1IC8gMTAwLCAxKSAvLyByZ2IoMTAwJSwgMCUsIDAlKVxuICAgICAgOiAobSA9IHJlUmdiYUludGVnZXIuZXhlYyhmb3JtYXQpKSA/IHJnYmEobVsxXSwgbVsyXSwgbVszXSwgbVs0XSkgLy8gcmdiYSgyNTUsIDAsIDAsIDEpXG4gICAgICA6IChtID0gcmVSZ2JhUGVyY2VudC5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdICogMjU1IC8gMTAwLCBtWzJdICogMjU1IC8gMTAwLCBtWzNdICogMjU1IC8gMTAwLCBtWzRdKSAvLyByZ2IoMTAwJSwgMCUsIDAlLCAxKVxuICAgICAgOiAobSA9IHJlSHNsUGVyY2VudC5leGVjKGZvcm1hdCkpID8gaHNsYShtWzFdLCBtWzJdIC8gMTAwLCBtWzNdIC8gMTAwLCAxKSAvLyBoc2woMTIwLCA1MCUsIDUwJSlcbiAgICAgIDogKG0gPSByZUhzbGFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIG1bNF0pIC8vIGhzbGEoMTIwLCA1MCUsIDUwJSwgMSlcbiAgICAgIDogbmFtZWQuaGFzT3duUHJvcGVydHkoZm9ybWF0KSA/IHJnYm4obmFtZWRbZm9ybWF0XSlcbiAgICAgIDogZm9ybWF0ID09PSBcInRyYW5zcGFyZW50XCIgPyBuZXcgUmdiKE5hTiwgTmFOLCBOYU4sIDApXG4gICAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJnYm4obikge1xuICByZXR1cm4gbmV3IFJnYihuID4+IDE2ICYgMHhmZiwgbiA+PiA4ICYgMHhmZiwgbiAmIDB4ZmYsIDEpO1xufVxuXG5mdW5jdGlvbiByZ2JhKHIsIGcsIGIsIGEpIHtcbiAgaWYgKGEgPD0gMCkgciA9IGcgPSBiID0gTmFOO1xuICByZXR1cm4gbmV3IFJnYihyLCBnLCBiLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYkNvbnZlcnQobykge1xuICBpZiAoIShvIGluc3RhbmNlb2YgQ29sb3IpKSBvID0gY29sb3Iobyk7XG4gIGlmICghbykgcmV0dXJuIG5ldyBSZ2I7XG4gIG8gPSBvLnJnYigpO1xuICByZXR1cm4gbmV3IFJnYihvLnIsIG8uZywgby5iLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiKHIsIGcsIGIsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyByZ2JDb252ZXJ0KHIpIDogbmV3IFJnYihyLCBnLCBiLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICB0aGlzLnIgPSArcjtcbiAgdGhpcy5nID0gK2c7XG4gIHRoaXMuYiA9ICtiO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKFJnYiwgcmdiLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gYnJpZ2h0ZXIgOiBNYXRoLnBvdyhicmlnaHRlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZGlzcGxheWFibGU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAoMCA8PSB0aGlzLnIgJiYgdGhpcy5yIDw9IDI1NSlcbiAgICAgICAgJiYgKDAgPD0gdGhpcy5nICYmIHRoaXMuZyA8PSAyNTUpXG4gICAgICAgICYmICgwIDw9IHRoaXMuYiAmJiB0aGlzLmIgPD0gMjU1KVxuICAgICAgICAmJiAoMCA8PSB0aGlzLm9wYWNpdHkgJiYgdGhpcy5vcGFjaXR5IDw9IDEpO1xuICB9LFxuICBoZXg6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIiNcIiArIGhleCh0aGlzLnIpICsgaGV4KHRoaXMuZykgKyBoZXgodGhpcy5iKTtcbiAgfSxcbiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhID0gdGhpcy5vcGFjaXR5OyBhID0gaXNOYU4oYSkgPyAxIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgYSkpO1xuICAgIHJldHVybiAoYSA9PT0gMSA/IFwicmdiKFwiIDogXCJyZ2JhKFwiKVxuICAgICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLnIpIHx8IDApKSArIFwiLCBcIlxuICAgICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLmcpIHx8IDApKSArIFwiLCBcIlxuICAgICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLmIpIHx8IDApKVxuICAgICAgICArIChhID09PSAxID8gXCIpXCIgOiBcIiwgXCIgKyBhICsgXCIpXCIpO1xuICB9XG59KSk7XG5cbmZ1bmN0aW9uIGhleCh2YWx1ZSkge1xuICB2YWx1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh2YWx1ZSkgfHwgMCkpO1xuICByZXR1cm4gKHZhbHVlIDwgMTYgPyBcIjBcIiA6IFwiXCIpICsgdmFsdWUudG9TdHJpbmcoMTYpO1xufVxuXG5mdW5jdGlvbiBoc2xhKGgsIHMsIGwsIGEpIHtcbiAgaWYgKGEgPD0gMCkgaCA9IHMgPSBsID0gTmFOO1xuICBlbHNlIGlmIChsIDw9IDAgfHwgbCA+PSAxKSBoID0gcyA9IE5hTjtcbiAgZWxzZSBpZiAocyA8PSAwKSBoID0gTmFOO1xuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzbENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG5ldyBIc2woby5oLCBvLnMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIENvbG9yKSkgbyA9IGNvbG9yKG8pO1xuICBpZiAoIW8pIHJldHVybiBuZXcgSHNsO1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG87XG4gIG8gPSBvLnJnYigpO1xuICB2YXIgciA9IG8uciAvIDI1NSxcbiAgICAgIGcgPSBvLmcgLyAyNTUsXG4gICAgICBiID0gby5iIC8gMjU1LFxuICAgICAgbWluID0gTWF0aC5taW4ociwgZywgYiksXG4gICAgICBtYXggPSBNYXRoLm1heChyLCBnLCBiKSxcbiAgICAgIGggPSBOYU4sXG4gICAgICBzID0gbWF4IC0gbWluLFxuICAgICAgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKHMpIHtcbiAgICBpZiAociA9PT0gbWF4KSBoID0gKGcgLSBiKSAvIHMgKyAoZyA8IGIpICogNjtcbiAgICBlbHNlIGlmIChnID09PSBtYXgpIGggPSAoYiAtIHIpIC8gcyArIDI7XG4gICAgZWxzZSBoID0gKHIgLSBnKSAvIHMgKyA0O1xuICAgIHMgLz0gbCA8IDAuNSA/IG1heCArIG1pbiA6IDIgLSBtYXggLSBtaW47XG4gICAgaCAqPSA2MDtcbiAgfSBlbHNlIHtcbiAgICBzID0gbCA+IDAgJiYgbCA8IDEgPyAwIDogaDtcbiAgfVxuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoc2xDb252ZXJ0KGgpIDogbmV3IEhzbChoLCBzLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmZ1bmN0aW9uIEhzbChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoSHNsLCBoc2wsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBIc2wodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSB0aGlzLmggJSAzNjAgKyAodGhpcy5oIDwgMCkgKiAzNjAsXG4gICAgICAgIHMgPSBpc05hTihoKSB8fCBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyxcbiAgICAgICAgbCA9IHRoaXMubCxcbiAgICAgICAgbTIgPSBsICsgKGwgPCAwLjUgPyBsIDogMSAtIGwpICogcyxcbiAgICAgICAgbTEgPSAyICogbCAtIG0yO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgaHNsMnJnYihoID49IDI0MCA/IGggLSAyNDAgOiBoICsgMTIwLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoIDwgMTIwID8gaCArIDI0MCA6IGggLSAxMjAsIG0xLCBtMiksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMucyAmJiB0aGlzLnMgPD0gMSB8fCBpc05hTih0aGlzLnMpKVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmwgJiYgdGhpcy5sIDw9IDEpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH1cbn0pKTtcblxuLyogRnJvbSBGdkQgMTMuMzcsIENTUyBDb2xvciBNb2R1bGUgTGV2ZWwgMyAqL1xuZnVuY3Rpb24gaHNsMnJnYihoLCBtMSwgbTIpIHtcbiAgcmV0dXJuIChoIDwgNjAgPyBtMSArIChtMiAtIG0xKSAqIGggLyA2MFxuICAgICAgOiBoIDwgMTgwID8gbTJcbiAgICAgIDogaCA8IDI0MCA/IG0xICsgKG0yIC0gbTEpICogKDI0MCAtIGgpIC8gNjBcbiAgICAgIDogbTEpICogMjU1O1xufVxuIiwiaW1wb3J0IGRlZmluZSwge2V4dGVuZH0gZnJvbSBcIi4vZGVmaW5lXCI7XG5pbXBvcnQge0NvbG9yLCByZ2JDb252ZXJ0LCBSZ2IsIGRhcmtlciwgYnJpZ2h0ZXJ9IGZyb20gXCIuL2NvbG9yXCI7XG5pbXBvcnQge2RlZzJyYWQsIHJhZDJkZWd9IGZyb20gXCIuL21hdGhcIjtcblxudmFyIEEgPSAtMC4xNDg2MSxcbiAgICBCID0gKzEuNzgyNzcsXG4gICAgQyA9IC0wLjI5MjI3LFxuICAgIEQgPSAtMC45MDY0OSxcbiAgICBFID0gKzEuOTcyOTQsXG4gICAgRUQgPSBFICogRCxcbiAgICBFQiA9IEUgKiBCLFxuICAgIEJDX0RBID0gQiAqIEMgLSBEICogQTtcblxuZnVuY3Rpb24gY3ViZWhlbGl4Q29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgQ3ViZWhlbGl4KSByZXR1cm4gbmV3IEN1YmVoZWxpeChvLmgsIG8ucywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgUmdiKSkgbyA9IHJnYkNvbnZlcnQobyk7XG4gIHZhciByID0gby5yIC8gMjU1LFxuICAgICAgZyA9IG8uZyAvIDI1NSxcbiAgICAgIGIgPSBvLmIgLyAyNTUsXG4gICAgICBsID0gKEJDX0RBICogYiArIEVEICogciAtIEVCICogZykgLyAoQkNfREEgKyBFRCAtIEVCKSxcbiAgICAgIGJsID0gYiAtIGwsXG4gICAgICBrID0gKEUgKiAoZyAtIGwpIC0gQyAqIGJsKSAvIEQsXG4gICAgICBzID0gTWF0aC5zcXJ0KGsgKiBrICsgYmwgKiBibCkgLyAoRSAqIGwgKiAoMSAtIGwpKSwgLy8gTmFOIGlmIGw9MCBvciBsPTFcbiAgICAgIGggPSBzID8gTWF0aC5hdGFuMihrLCBibCkgKiByYWQyZGVnIC0gMTIwIDogTmFOO1xuICByZXR1cm4gbmV3IEN1YmVoZWxpeChoIDwgMCA/IGggKyAzNjAgOiBoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGN1YmVoZWxpeENvbnZlcnQoaCkgOiBuZXcgQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoQ3ViZWhlbGl4LCBjdWJlaGVsaXgsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBDdWJlaGVsaXgodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSBpc05hTih0aGlzLmgpID8gMCA6ICh0aGlzLmggKyAxMjApICogZGVnMnJhZCxcbiAgICAgICAgbCA9ICt0aGlzLmwsXG4gICAgICAgIGEgPSBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyAqIGwgKiAoMSAtIGwpLFxuICAgICAgICBjb3NoID0gTWF0aC5jb3MoaCksXG4gICAgICAgIHNpbmggPSBNYXRoLnNpbihoKTtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIDI1NSAqIChsICsgYSAqIChBICogY29zaCArIEIgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoQyAqIGNvc2ggKyBEICogc2luaCkpLFxuICAgICAgMjU1ICogKGwgKyBhICogKEUgKiBjb3NoKSksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9XG59KSk7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb25zdHJ1Y3RvciwgZmFjdG9yeSwgcHJvdG90eXBlKSB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGZhY3RvcnkucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBwcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChwYXJlbnQsIGRlZmluaXRpb24pIHtcbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7XG4gIGZvciAodmFyIGtleSBpbiBkZWZpbml0aW9uKSBwcm90b3R5cGVba2V5XSA9IGRlZmluaXRpb25ba2V5XTtcbiAgcmV0dXJuIHByb3RvdHlwZTtcbn1cbiIsImV4cG9ydCB7ZGVmYXVsdCBhcyBjb2xvciwgcmdiLCBoc2x9IGZyb20gXCIuL2NvbG9yXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbGFiLCBoY2wsIGxjaCwgZ3JheX0gZnJvbSBcIi4vbGFiXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3ViZWhlbGl4fSBmcm9tIFwiLi9jdWJlaGVsaXhcIjtcbiIsImltcG9ydCBkZWZpbmUsIHtleHRlbmR9IGZyb20gXCIuL2RlZmluZVwiO1xuaW1wb3J0IHtDb2xvciwgcmdiQ29udmVydCwgUmdifSBmcm9tIFwiLi9jb2xvclwiO1xuaW1wb3J0IHtkZWcycmFkLCByYWQyZGVnfSBmcm9tIFwiLi9tYXRoXCI7XG5cbi8vIGh0dHBzOi8vYmV0YS5vYnNlcnZhYmxlaHEuY29tL0BtYm9zdG9jay9sYWItYW5kLXJnYlxudmFyIEsgPSAxOCxcbiAgICBYbiA9IDAuOTY0MjIsXG4gICAgWW4gPSAxLFxuICAgIFpuID0gMC44MjUyMSxcbiAgICB0MCA9IDQgLyAyOSxcbiAgICB0MSA9IDYgLyAyOSxcbiAgICB0MiA9IDMgKiB0MSAqIHQxLFxuICAgIHQzID0gdDEgKiB0MSAqIHQxO1xuXG5mdW5jdGlvbiBsYWJDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBMYWIpIHJldHVybiBuZXcgTGFiKG8ubCwgby5hLCBvLmIsIG8ub3BhY2l0eSk7XG4gIGlmIChvIGluc3RhbmNlb2YgSGNsKSB7XG4gICAgaWYgKGlzTmFOKG8uaCkpIHJldHVybiBuZXcgTGFiKG8ubCwgMCwgMCwgby5vcGFjaXR5KTtcbiAgICB2YXIgaCA9IG8uaCAqIGRlZzJyYWQ7XG4gICAgcmV0dXJuIG5ldyBMYWIoby5sLCBNYXRoLmNvcyhoKSAqIG8uYywgTWF0aC5zaW4oaCkgKiBvLmMsIG8ub3BhY2l0eSk7XG4gIH1cbiAgaWYgKCEobyBpbnN0YW5jZW9mIFJnYikpIG8gPSByZ2JDb252ZXJ0KG8pO1xuICB2YXIgciA9IHJnYjJscmdiKG8uciksXG4gICAgICBnID0gcmdiMmxyZ2Ioby5nKSxcbiAgICAgIGIgPSByZ2IybHJnYihvLmIpLFxuICAgICAgeSA9IHh5ejJsYWIoKDAuMjIyNTA0NSAqIHIgKyAwLjcxNjg3ODYgKiBnICsgMC4wNjA2MTY5ICogYikgLyBZbiksIHgsIHo7XG4gIGlmIChyID09PSBnICYmIGcgPT09IGIpIHggPSB6ID0geTsgZWxzZSB7XG4gICAgeCA9IHh5ejJsYWIoKDAuNDM2MDc0NyAqIHIgKyAwLjM4NTA2NDkgKiBnICsgMC4xNDMwODA0ICogYikgLyBYbik7XG4gICAgeiA9IHh5ejJsYWIoKDAuMDEzOTMyMiAqIHIgKyAwLjA5NzEwNDUgKiBnICsgMC43MTQxNzMzICogYikgLyBabik7XG4gIH1cbiAgcmV0dXJuIG5ldyBMYWIoMTE2ICogeSAtIDE2LCA1MDAgKiAoeCAtIHkpLCAyMDAgKiAoeSAtIHopLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JheShsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBuZXcgTGFiKGwsIDAsIDAsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFiKGwsIGEsIGIsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBsYWJDb252ZXJ0KGwpIDogbmV3IExhYihsLCBhLCBiLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBMYWIobCwgYSwgYiwgb3BhY2l0eSkge1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5hID0gK2E7XG4gIHRoaXMuYiA9ICtiO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKExhYiwgbGFiLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IExhYih0aGlzLmwgKyBLICogKGsgPT0gbnVsbCA/IDEgOiBrKSwgdGhpcy5hLCB0aGlzLmIsIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIGRhcmtlcjogZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBuZXcgTGFiKHRoaXMubCAtIEsgKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgeSA9ICh0aGlzLmwgKyAxNikgLyAxMTYsXG4gICAgICAgIHggPSBpc05hTih0aGlzLmEpID8geSA6IHkgKyB0aGlzLmEgLyA1MDAsXG4gICAgICAgIHogPSBpc05hTih0aGlzLmIpID8geSA6IHkgLSB0aGlzLmIgLyAyMDA7XG4gICAgeCA9IFhuICogbGFiMnh5eih4KTtcbiAgICB5ID0gWW4gKiBsYWIyeHl6KHkpO1xuICAgIHogPSBabiAqIGxhYjJ4eXooeik7XG4gICAgcmV0dXJuIG5ldyBSZ2IoXG4gICAgICBscmdiMnJnYiggMy4xMzM4NTYxICogeCAtIDEuNjE2ODY2NyAqIHkgLSAwLjQ5MDYxNDYgKiB6KSxcbiAgICAgIGxyZ2IycmdiKC0wLjk3ODc2ODQgKiB4ICsgMS45MTYxNDE1ICogeSArIDAuMDMzNDU0MCAqIHopLFxuICAgICAgbHJnYjJyZ2IoIDAuMDcxOTQ1MyAqIHggLSAwLjIyODk5MTQgKiB5ICsgMS40MDUyNDI3ICogeiksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9XG59KSk7XG5cbmZ1bmN0aW9uIHh5ejJsYWIodCkge1xuICByZXR1cm4gdCA+IHQzID8gTWF0aC5wb3codCwgMSAvIDMpIDogdCAvIHQyICsgdDA7XG59XG5cbmZ1bmN0aW9uIGxhYjJ4eXoodCkge1xuICByZXR1cm4gdCA+IHQxID8gdCAqIHQgKiB0IDogdDIgKiAodCAtIHQwKTtcbn1cblxuZnVuY3Rpb24gbHJnYjJyZ2IoeCkge1xuICByZXR1cm4gMjU1ICogKHggPD0gMC4wMDMxMzA4ID8gMTIuOTIgKiB4IDogMS4wNTUgKiBNYXRoLnBvdyh4LCAxIC8gMi40KSAtIDAuMDU1KTtcbn1cblxuZnVuY3Rpb24gcmdiMmxyZ2IoeCkge1xuICByZXR1cm4gKHggLz0gMjU1KSA8PSAwLjA0MDQ1ID8geCAvIDEyLjkyIDogTWF0aC5wb3coKHggKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbn1cblxuZnVuY3Rpb24gaGNsQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgSGNsKSByZXR1cm4gbmV3IEhjbChvLmgsIG8uYywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgTGFiKSkgbyA9IGxhYkNvbnZlcnQobyk7XG4gIGlmIChvLmEgPT09IDAgJiYgby5iID09PSAwKSByZXR1cm4gbmV3IEhjbChOYU4sIDAsIG8ubCwgby5vcGFjaXR5KTtcbiAgdmFyIGggPSBNYXRoLmF0YW4yKG8uYiwgby5hKSAqIHJhZDJkZWc7XG4gIHJldHVybiBuZXcgSGNsKGggPCAwID8gaCArIDM2MCA6IGgsIE1hdGguc3FydChvLmEgKiBvLmEgKyBvLmIgKiBvLmIpLCBvLmwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsY2gobCwgYywgaCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGhjbENvbnZlcnQobCkgOiBuZXcgSGNsKGgsIGMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhjbChoLCBjLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gaGNsQ29udmVydChoKSA6IG5ldyBIY2woaCwgYywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSGNsKGgsIGMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMuYyA9ICtjO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShIY2wsIGhjbCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgcmV0dXJuIG5ldyBIY2wodGhpcy5oLCB0aGlzLmMsIHRoaXMubCArIEsgKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sIC0gSyAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGxhYkNvbnZlcnQodGhpcykucmdiKCk7XG4gIH1cbn0pKTtcbiIsImV4cG9ydCB2YXIgZGVnMnJhZCA9IE1hdGguUEkgLyAxODA7XG5leHBvcnQgdmFyIHJhZDJkZWcgPSAxODAgLyBNYXRoLlBJO1xuIiwidmFyIG5vb3AgPSB7dmFsdWU6IGZ1bmN0aW9uKCkge319O1xuXG5mdW5jdGlvbiBkaXNwYXRjaCgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBfID0ge30sIHQ7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoISh0ID0gYXJndW1lbnRzW2ldICsgXCJcIikgfHwgKHQgaW4gXykpIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgdHlwZTogXCIgKyB0KTtcbiAgICBfW3RdID0gW107XG4gIH1cbiAgcmV0dXJuIG5ldyBEaXNwYXRjaChfKTtcbn1cblxuZnVuY3Rpb24gRGlzcGF0Y2goXykge1xuICB0aGlzLl8gPSBfO1xufVxuXG5mdW5jdGlvbiBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZXMsIHR5cGVzKSB7XG4gIHJldHVybiB0eXBlbmFtZXMudHJpbSgpLnNwbGl0KC9efFxccysvKS5tYXAoZnVuY3Rpb24odCkge1xuICAgIHZhciBuYW1lID0gXCJcIiwgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgbmFtZSA9IHQuc2xpY2UoaSArIDEpLCB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICBpZiAodCAmJiAhdHlwZXMuaGFzT3duUHJvcGVydHkodCkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0KTtcbiAgICByZXR1cm4ge3R5cGU6IHQsIG5hbWU6IG5hbWV9O1xuICB9KTtcbn1cblxuRGlzcGF0Y2gucHJvdG90eXBlID0gZGlzcGF0Y2gucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRGlzcGF0Y2gsXG4gIG9uOiBmdW5jdGlvbih0eXBlbmFtZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgXyA9IHRoaXMuXyxcbiAgICAgICAgVCA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiwgXyksXG4gICAgICAgIHQsXG4gICAgICAgIGkgPSAtMSxcbiAgICAgICAgbiA9IFQubGVuZ3RoO1xuXG4gICAgLy8gSWYgbm8gY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmV0dXJuIHRoZSBjYWxsYmFjayBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSAmJiAodCA9IGdldChfW3RdLCB0eXBlbmFtZS5uYW1lKSkpIHJldHVybiB0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIGEgdHlwZSB3YXMgc3BlY2lmaWVkLCBzZXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICAvLyBPdGhlcndpc2UsIGlmIGEgbnVsbCBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZW1vdmUgY2FsbGJhY2tzIG9mIHRoZSBnaXZlbiBuYW1lLlxuICAgIGlmIChjYWxsYmFjayAhPSBudWxsICYmIHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrOiBcIiArIGNhbGxiYWNrKTtcbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIGVsc2UgaWYgKGNhbGxiYWNrID09IG51bGwpIGZvciAodCBpbiBfKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBjb3B5OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY29weSA9IHt9LCBfID0gdGhpcy5fO1xuICAgIGZvciAodmFyIHQgaW4gXykgY29weVt0XSA9IF9bdF0uc2xpY2UoKTtcbiAgICByZXR1cm4gbmV3IERpc3BhdGNoKGNvcHkpO1xuICB9LFxuICBjYWxsOiBmdW5jdGlvbih0eXBlLCB0aGF0KSB7XG4gICAgaWYgKChuID0gYXJndW1lbnRzLmxlbmd0aCAtIDIpID4gMCkgZm9yICh2YXIgYXJncyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIG4sIHQ7IGkgPCBuOyArK2kpIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9LFxuICBhcHBseTogZnVuY3Rpb24odHlwZSwgdGhhdCwgYXJncykge1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh2YXIgdCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0KHR5cGUsIG5hbWUpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aCwgYzsgaSA8IG47ICsraSkge1xuICAgIGlmICgoYyA9IHR5cGVbaV0pLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBjLnZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXQodHlwZSwgbmFtZSwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIGlmICh0eXBlW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHR5cGVbaV0gPSBub29wLCB0eXBlID0gdHlwZS5zbGljZSgwLCBpKS5jb25jYXQodHlwZS5zbGljZShpICsgMSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChjYWxsYmFjayAhPSBudWxsKSB0eXBlLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiBjYWxsYmFja30pO1xuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGlzcGF0Y2g7XG4iLCJleHBvcnQge2RlZmF1bHQgYXMgZGlzcGF0Y2h9IGZyb20gXCIuL2Rpc3BhdGNoXCI7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiIsImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHtldmVudCwgY3VzdG9tRXZlbnQsIHNlbGVjdCwgbW91c2UsIHRvdWNofSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgbm9kcmFnLCB7eWVzZHJhZ30gZnJvbSBcIi4vbm9kcmFnXCI7XG5pbXBvcnQgbm9ldmVudCwge25vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnRcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuaW1wb3J0IERyYWdFdmVudCBmcm9tIFwiLi9ldmVudFwiO1xuXG4vLyBJZ25vcmUgcmlnaHQtY2xpY2ssIHNpbmNlIHRoYXQgc2hvdWxkIG9wZW4gdGhlIGNvbnRleHQgbWVudS5cbmZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXIoKSB7XG4gIHJldHVybiAhZXZlbnQuYnV0dG9uO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29udGFpbmVyKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0U3ViamVjdChkKSB7XG4gIHJldHVybiBkID09IG51bGwgPyB7eDogZXZlbnQueCwgeTogZXZlbnQueX0gOiBkO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG91Y2hhYmxlKCkge1xuICByZXR1cm4gXCJvbnRvdWNoc3RhcnRcIiBpbiB0aGlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGZpbHRlciA9IGRlZmF1bHRGaWx0ZXIsXG4gICAgICBjb250YWluZXIgPSBkZWZhdWx0Q29udGFpbmVyLFxuICAgICAgc3ViamVjdCA9IGRlZmF1bHRTdWJqZWN0LFxuICAgICAgdG91Y2hhYmxlID0gZGVmYXVsdFRvdWNoYWJsZSxcbiAgICAgIGdlc3R1cmVzID0ge30sXG4gICAgICBsaXN0ZW5lcnMgPSBkaXNwYXRjaChcInN0YXJ0XCIsIFwiZHJhZ1wiLCBcImVuZFwiKSxcbiAgICAgIGFjdGl2ZSA9IDAsXG4gICAgICBtb3VzZWRvd254LFxuICAgICAgbW91c2Vkb3dueSxcbiAgICAgIG1vdXNlbW92aW5nLFxuICAgICAgdG91Y2hlbmRpbmcsXG4gICAgICBjbGlja0Rpc3RhbmNlMiA9IDA7XG5cbiAgZnVuY3Rpb24gZHJhZyhzZWxlY3Rpb24pIHtcbiAgICBzZWxlY3Rpb25cbiAgICAgICAgLm9uKFwibW91c2Vkb3duLmRyYWdcIiwgbW91c2Vkb3duZWQpXG4gICAgICAuZmlsdGVyKHRvdWNoYWJsZSlcbiAgICAgICAgLm9uKFwidG91Y2hzdGFydC5kcmFnXCIsIHRvdWNoc3RhcnRlZClcbiAgICAgICAgLm9uKFwidG91Y2htb3ZlLmRyYWdcIiwgdG91Y2htb3ZlZClcbiAgICAgICAgLm9uKFwidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnXCIsIHRvdWNoZW5kZWQpXG4gICAgICAgIC5zdHlsZShcInRvdWNoLWFjdGlvblwiLCBcIm5vbmVcIilcbiAgICAgICAgLnN0eWxlKFwiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yXCIsIFwicmdiYSgwLDAsMCwwKVwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdXNlZG93bmVkKCkge1xuICAgIGlmICh0b3VjaGVuZGluZyB8fCAhZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgZ2VzdHVyZSA9IGJlZm9yZXN0YXJ0KFwibW91c2VcIiwgY29udGFpbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIG1vdXNlLCB0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICghZ2VzdHVyZSkgcmV0dXJuO1xuICAgIHNlbGVjdChldmVudC52aWV3KS5vbihcIm1vdXNlbW92ZS5kcmFnXCIsIG1vdXNlbW92ZWQsIHRydWUpLm9uKFwibW91c2V1cC5kcmFnXCIsIG1vdXNldXBwZWQsIHRydWUpO1xuICAgIG5vZHJhZyhldmVudC52aWV3KTtcbiAgICBub3Byb3BhZ2F0aW9uKCk7XG4gICAgbW91c2Vtb3ZpbmcgPSBmYWxzZTtcbiAgICBtb3VzZWRvd254ID0gZXZlbnQuY2xpZW50WDtcbiAgICBtb3VzZWRvd255ID0gZXZlbnQuY2xpZW50WTtcbiAgICBnZXN0dXJlKFwic3RhcnRcIik7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZW1vdmVkKCkge1xuICAgIG5vZXZlbnQoKTtcbiAgICBpZiAoIW1vdXNlbW92aW5nKSB7XG4gICAgICB2YXIgZHggPSBldmVudC5jbGllbnRYIC0gbW91c2Vkb3dueCwgZHkgPSBldmVudC5jbGllbnRZIC0gbW91c2Vkb3dueTtcbiAgICAgIG1vdXNlbW92aW5nID0gZHggKiBkeCArIGR5ICogZHkgPiBjbGlja0Rpc3RhbmNlMjtcbiAgICB9XG4gICAgZ2VzdHVyZXMubW91c2UoXCJkcmFnXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW91c2V1cHBlZCgpIHtcbiAgICBzZWxlY3QoZXZlbnQudmlldykub24oXCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWdcIiwgbnVsbCk7XG4gICAgeWVzZHJhZyhldmVudC52aWV3LCBtb3VzZW1vdmluZyk7XG4gICAgbm9ldmVudCgpO1xuICAgIGdlc3R1cmVzLm1vdXNlKFwiZW5kXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hzdGFydGVkKCkge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgdG91Y2hlcyA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLFxuICAgICAgICBjID0gY29udGFpbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgZ2VzdHVyZTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChnZXN0dXJlID0gYmVmb3Jlc3RhcnQodG91Y2hlc1tpXS5pZGVudGlmaWVyLCBjLCB0b3VjaCwgdGhpcywgYXJndW1lbnRzKSkge1xuICAgICAgICBub3Byb3BhZ2F0aW9uKCk7XG4gICAgICAgIGdlc3R1cmUoXCJzdGFydFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaG1vdmVkKCkge1xuICAgIHZhciB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgZ2VzdHVyZTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChnZXN0dXJlID0gZ2VzdHVyZXNbdG91Y2hlc1tpXS5pZGVudGlmaWVyXSkge1xuICAgICAgICBub2V2ZW50KCk7XG4gICAgICAgIGdlc3R1cmUoXCJkcmFnXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoZW5kZWQoKSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCBnZXN0dXJlO1xuXG4gICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgIHRvdWNoZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hlbmRpbmcgPSBudWxsOyB9LCA1MDApOyAvLyBHaG9zdCBjbGlja3MgYXJlIGRlbGF5ZWQhXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKGdlc3R1cmUgPSBnZXN0dXJlc1t0b3VjaGVzW2ldLmlkZW50aWZpZXJdKSB7XG4gICAgICAgIG5vcHJvcGFnYXRpb24oKTtcbiAgICAgICAgZ2VzdHVyZShcImVuZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBiZWZvcmVzdGFydChpZCwgY29udGFpbmVyLCBwb2ludCwgdGhhdCwgYXJncykge1xuICAgIHZhciBwID0gcG9pbnQoY29udGFpbmVyLCBpZCksIHMsIGR4LCBkeSxcbiAgICAgICAgc3VibGlzdGVuZXJzID0gbGlzdGVuZXJzLmNvcHkoKTtcblxuICAgIGlmICghY3VzdG9tRXZlbnQobmV3IERyYWdFdmVudChkcmFnLCBcImJlZm9yZXN0YXJ0XCIsIHMsIGlkLCBhY3RpdmUsIHBbMF0sIHBbMV0sIDAsIDAsIHN1Ymxpc3RlbmVycyksIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKChldmVudC5zdWJqZWN0ID0gcyA9IHN1YmplY3QuYXBwbHkodGhhdCwgYXJncykpID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgIGR4ID0gcy54IC0gcFswXSB8fCAwO1xuICAgICAgZHkgPSBzLnkgLSBwWzFdIHx8IDA7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGdlc3R1cmUodHlwZSkge1xuICAgICAgdmFyIHAwID0gcCwgbjtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwic3RhcnRcIjogZ2VzdHVyZXNbaWRdID0gZ2VzdHVyZSwgbiA9IGFjdGl2ZSsrOyBicmVhaztcbiAgICAgICAgY2FzZSBcImVuZFwiOiBkZWxldGUgZ2VzdHVyZXNbaWRdLCAtLWFjdGl2ZTsgLy8gbm9icmVha1xuICAgICAgICBjYXNlIFwiZHJhZ1wiOiBwID0gcG9pbnQoY29udGFpbmVyLCBpZCksIG4gPSBhY3RpdmU7IGJyZWFrO1xuICAgICAgfVxuICAgICAgY3VzdG9tRXZlbnQobmV3IERyYWdFdmVudChkcmFnLCB0eXBlLCBzLCBpZCwgbiwgcFswXSArIGR4LCBwWzFdICsgZHksIHBbMF0gLSBwMFswXSwgcFsxXSAtIHAwWzFdLCBzdWJsaXN0ZW5lcnMpLCBzdWJsaXN0ZW5lcnMuYXBwbHksIHN1Ymxpc3RlbmVycywgW3R5cGUsIHRoYXQsIGFyZ3NdKTtcbiAgICB9O1xuICB9XG5cbiAgZHJhZy5maWx0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZmlsdGVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBkcmFnKSA6IGZpbHRlcjtcbiAgfTtcblxuICBkcmFnLmNvbnRhaW5lciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjb250YWluZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBkcmFnKSA6IGNvbnRhaW5lcjtcbiAgfTtcblxuICBkcmFnLnN1YmplY3QgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3ViamVjdCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIGRyYWcpIDogc3ViamVjdDtcbiAgfTtcblxuICBkcmFnLnRvdWNoYWJsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0b3VjaGFibGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGRyYWcpIDogdG91Y2hhYmxlO1xuICB9O1xuXG4gIGRyYWcub24gPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUgPSBsaXN0ZW5lcnMub24uYXBwbHkobGlzdGVuZXJzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbGlzdGVuZXJzID8gZHJhZyA6IHZhbHVlO1xuICB9O1xuXG4gIGRyYWcuY2xpY2tEaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGlja0Rpc3RhbmNlMiA9IChfID0gK18pICogXywgZHJhZykgOiBNYXRoLnNxcnQoY2xpY2tEaXN0YW5jZTIpO1xuICB9O1xuXG4gIHJldHVybiBkcmFnO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHJhZ0V2ZW50KHRhcmdldCwgdHlwZSwgc3ViamVjdCwgaWQsIGFjdGl2ZSwgeCwgeSwgZHgsIGR5LCBkaXNwYXRjaCkge1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5zdWJqZWN0ID0gc3ViamVjdDtcbiAgdGhpcy5pZGVudGlmaWVyID0gaWQ7XG4gIHRoaXMuYWN0aXZlID0gYWN0aXZlO1xuICB0aGlzLnggPSB4O1xuICB0aGlzLnkgPSB5O1xuICB0aGlzLmR4ID0gZHg7XG4gIHRoaXMuZHkgPSBkeTtcbiAgdGhpcy5fID0gZGlzcGF0Y2g7XG59XG5cbkRyYWdFdmVudC5wcm90b3R5cGUub24gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHZhbHVlID0gdGhpcy5fLm9uLmFwcGx5KHRoaXMuXywgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHZhbHVlID09PSB0aGlzLl8gPyB0aGlzIDogdmFsdWU7XG59O1xuIiwiZXhwb3J0IHtkZWZhdWx0IGFzIGRyYWd9IGZyb20gXCIuL2RyYWdcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkcmFnRGlzYWJsZSwgeWVzZHJhZyBhcyBkcmFnRW5hYmxlfSBmcm9tIFwiLi9ub2RyYWdcIjtcbiIsImltcG9ydCB7c2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgbm9ldmVudCBmcm9tIFwiLi9ub2V2ZW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZpZXcpIHtcbiAgdmFyIHJvb3QgPSB2aWV3LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdCh2aWV3KS5vbihcImRyYWdzdGFydC5kcmFnXCIsIG5vZXZlbnQsIHRydWUpO1xuICBpZiAoXCJvbnNlbGVjdHN0YXJ0XCIgaW4gcm9vdCkge1xuICAgIHNlbGVjdGlvbi5vbihcInNlbGVjdHN0YXJ0LmRyYWdcIiwgbm9ldmVudCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5fX25vc2VsZWN0ID0gcm9vdC5zdHlsZS5Nb3pVc2VyU2VsZWN0O1xuICAgIHJvb3Quc3R5bGUuTW96VXNlclNlbGVjdCA9IFwibm9uZVwiO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5ZXNkcmFnKHZpZXcsIG5vY2xpY2spIHtcbiAgdmFyIHJvb3QgPSB2aWV3LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdCh2aWV3KS5vbihcImRyYWdzdGFydC5kcmFnXCIsIG51bGwpO1xuICBpZiAobm9jbGljaykge1xuICAgIHNlbGVjdGlvbi5vbihcImNsaWNrLmRyYWdcIiwgbm9ldmVudCwgdHJ1ZSk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2VsZWN0aW9uLm9uKFwiY2xpY2suZHJhZ1wiLCBudWxsKTsgfSwgMCk7XG4gIH1cbiAgaWYgKFwib25zZWxlY3RzdGFydFwiIGluIHJvb3QpIHtcbiAgICBzZWxlY3Rpb24ub24oXCJzZWxlY3RzdGFydC5kcmFnXCIsIG51bGwpO1xuICB9IGVsc2Uge1xuICAgIHJvb3Quc3R5bGUuTW96VXNlclNlbGVjdCA9IHJvb3QuX19ub3NlbGVjdDtcbiAgICBkZWxldGUgcm9vdC5fX25vc2VsZWN0O1xuICB9XG59XG4iLCJpbXBvcnQge2V2ZW50fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3Byb3BhZ2F0aW9uKCkge1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xufVxuIiwidmFyIG92ZXJzaG9vdCA9IDEuNzAxNTg7XG5cbmV4cG9ydCB2YXIgYmFja0luID0gKGZ1bmN0aW9uIGN1c3RvbShzKSB7XG4gIHMgPSArcztcblxuICBmdW5jdGlvbiBiYWNrSW4odCkge1xuICAgIHJldHVybiB0ICogdCAqICgocyArIDEpICogdCAtIHMpO1xuICB9XG5cbiAgYmFja0luLm92ZXJzaG9vdCA9IGN1c3RvbTtcblxuICByZXR1cm4gYmFja0luO1xufSkob3ZlcnNob290KTtcblxuZXhwb3J0IHZhciBiYWNrT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShzKSB7XG4gIHMgPSArcztcblxuICBmdW5jdGlvbiBiYWNrT3V0KHQpIHtcbiAgICByZXR1cm4gLS10ICogdCAqICgocyArIDEpICogdCArIHMpICsgMTtcbiAgfVxuXG4gIGJhY2tPdXQub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrT3V0O1xufSkob3ZlcnNob290KTtcblxuZXhwb3J0IHZhciBiYWNrSW5PdXQgPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCAqPSAyKSA8IDEgPyB0ICogdCAqICgocyArIDEpICogdCAtIHMpIDogKHQgLT0gMikgKiB0ICogKChzICsgMSkgKiB0ICsgcykgKyAyKSAvIDI7XG4gIH1cblxuICBiYWNrSW5PdXQub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrSW5PdXQ7XG59KShvdmVyc2hvb3QpO1xuIiwidmFyIGIxID0gNCAvIDExLFxuICAgIGIyID0gNiAvIDExLFxuICAgIGIzID0gOCAvIDExLFxuICAgIGI0ID0gMyAvIDQsXG4gICAgYjUgPSA5IC8gMTEsXG4gICAgYjYgPSAxMCAvIDExLFxuICAgIGI3ID0gMTUgLyAxNixcbiAgICBiOCA9IDIxIC8gMjIsXG4gICAgYjkgPSA2MyAvIDY0LFxuICAgIGIwID0gMSAvIGIxIC8gYjE7XG5cbmV4cG9ydCBmdW5jdGlvbiBib3VuY2VJbih0KSB7XG4gIHJldHVybiAxIC0gYm91bmNlT3V0KDEgLSB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZU91dCh0KSB7XG4gIHJldHVybiAodCA9ICt0KSA8IGIxID8gYjAgKiB0ICogdCA6IHQgPCBiMyA/IGIwICogKHQgLT0gYjIpICogdCArIGI0IDogdCA8IGI2ID8gYjAgKiAodCAtPSBiNSkgKiB0ICsgYjcgOiBiMCAqICh0IC09IGI4KSAqIHQgKyBiOTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZUluT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gMSAtIGJvdW5jZU91dCgxIC0gdCkgOiBib3VuY2VPdXQodCAtIDEpICsgMSkgLyAyO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNpcmNsZUluKHQpIHtcbiAgcmV0dXJuIDEgLSBNYXRoLnNxcnQoMSAtIHQgKiB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNpcmNsZU91dCh0KSB7XG4gIHJldHVybiBNYXRoLnNxcnQoMSAtIC0tdCAqIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2lyY2xlSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyAxIC0gTWF0aC5zcXJ0KDEgLSB0ICogdCkgOiBNYXRoLnNxcnQoMSAtICh0IC09IDIpICogdCkgKyAxKSAvIDI7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY3ViaWNJbih0KSB7XG4gIHJldHVybiB0ICogdCAqIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWJpY091dCh0KSB7XG4gIHJldHVybiAtLXQgKiB0ICogdCArIDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWJpY0luT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gdCAqIHQgKiB0IDogKHQgLT0gMikgKiB0ICogdCArIDIpIC8gMjtcbn1cbiIsInZhciB0YXUgPSAyICogTWF0aC5QSSxcbiAgICBhbXBsaXR1ZGUgPSAxLFxuICAgIHBlcmlvZCA9IDAuMztcblxuZXhwb3J0IHZhciBlbGFzdGljSW4gPSAoZnVuY3Rpb24gY3VzdG9tKGEsIHApIHtcbiAgdmFyIHMgPSBNYXRoLmFzaW4oMSAvIChhID0gTWF0aC5tYXgoMSwgYSkpKSAqIChwIC89IHRhdSk7XG5cbiAgZnVuY3Rpb24gZWxhc3RpY0luKHQpIHtcbiAgICByZXR1cm4gYSAqIE1hdGgucG93KDIsIDEwICogLS10KSAqIE1hdGguc2luKChzIC0gdCkgLyBwKTtcbiAgfVxuXG4gIGVsYXN0aWNJbi5hbXBsaXR1ZGUgPSBmdW5jdGlvbihhKSB7IHJldHVybiBjdXN0b20oYSwgcCAqIHRhdSk7IH07XG4gIGVsYXN0aWNJbi5wZXJpb2QgPSBmdW5jdGlvbihwKSB7IHJldHVybiBjdXN0b20oYSwgcCk7IH07XG5cbiAgcmV0dXJuIGVsYXN0aWNJbjtcbn0pKGFtcGxpdHVkZSwgcGVyaW9kKTtcblxuZXhwb3J0IHZhciBlbGFzdGljT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShhLCBwKSB7XG4gIHZhciBzID0gTWF0aC5hc2luKDEgLyAoYSA9IE1hdGgubWF4KDEsIGEpKSkgKiAocCAvPSB0YXUpO1xuXG4gIGZ1bmN0aW9uIGVsYXN0aWNPdXQodCkge1xuICAgIHJldHVybiAxIC0gYSAqIE1hdGgucG93KDIsIC0xMCAqICh0ID0gK3QpKSAqIE1hdGguc2luKCh0ICsgcykgLyBwKTtcbiAgfVxuXG4gIGVsYXN0aWNPdXQuYW1wbGl0dWRlID0gZnVuY3Rpb24oYSkgeyByZXR1cm4gY3VzdG9tKGEsIHAgKiB0YXUpOyB9O1xuICBlbGFzdGljT3V0LnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY091dDtcbn0pKGFtcGxpdHVkZSwgcGVyaW9kKTtcblxuZXhwb3J0IHZhciBlbGFzdGljSW5PdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGEsIHApIHtcbiAgdmFyIHMgPSBNYXRoLmFzaW4oMSAvIChhID0gTWF0aC5tYXgoMSwgYSkpKSAqIChwIC89IHRhdSk7XG5cbiAgZnVuY3Rpb24gZWxhc3RpY0luT3V0KHQpIHtcbiAgICByZXR1cm4gKCh0ID0gdCAqIDIgLSAxKSA8IDBcbiAgICAgICAgPyBhICogTWF0aC5wb3coMiwgMTAgKiB0KSAqIE1hdGguc2luKChzIC0gdCkgLyBwKVxuICAgICAgICA6IDIgLSBhICogTWF0aC5wb3coMiwgLTEwICogdCkgKiBNYXRoLnNpbigocyArIHQpIC8gcCkpIC8gMjtcbiAgfVxuXG4gIGVsYXN0aWNJbk91dC5hbXBsaXR1ZGUgPSBmdW5jdGlvbihhKSB7IHJldHVybiBjdXN0b20oYSwgcCAqIHRhdSk7IH07XG4gIGVsYXN0aWNJbk91dC5wZXJpb2QgPSBmdW5jdGlvbihwKSB7IHJldHVybiBjdXN0b20oYSwgcCk7IH07XG5cbiAgcmV0dXJuIGVsYXN0aWNJbk91dDtcbn0pKGFtcGxpdHVkZSwgcGVyaW9kKTtcbiIsImV4cG9ydCBmdW5jdGlvbiBleHBJbih0KSB7XG4gIHJldHVybiBNYXRoLnBvdygyLCAxMCAqIHQgLSAxMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBPdXQodCkge1xuICByZXR1cm4gMSAtIE1hdGgucG93KDIsIC0xMCAqIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyBNYXRoLnBvdygyLCAxMCAqIHQgLSAxMCkgOiAyIC0gTWF0aC5wb3coMiwgMTAgLSAxMCAqIHQpKSAvIDI7XG59XG4iLCJleHBvcnQge1xuICBsaW5lYXIgYXMgZWFzZUxpbmVhclxufSBmcm9tIFwiLi9saW5lYXJcIjtcblxuZXhwb3J0IHtcbiAgcXVhZEluT3V0IGFzIGVhc2VRdWFkLFxuICBxdWFkSW4gYXMgZWFzZVF1YWRJbixcbiAgcXVhZE91dCBhcyBlYXNlUXVhZE91dCxcbiAgcXVhZEluT3V0IGFzIGVhc2VRdWFkSW5PdXRcbn0gZnJvbSBcIi4vcXVhZFwiO1xuXG5leHBvcnQge1xuICBjdWJpY0luT3V0IGFzIGVhc2VDdWJpYyxcbiAgY3ViaWNJbiBhcyBlYXNlQ3ViaWNJbixcbiAgY3ViaWNPdXQgYXMgZWFzZUN1YmljT3V0LFxuICBjdWJpY0luT3V0IGFzIGVhc2VDdWJpY0luT3V0XG59IGZyb20gXCIuL2N1YmljXCI7XG5cbmV4cG9ydCB7XG4gIHBvbHlJbk91dCBhcyBlYXNlUG9seSxcbiAgcG9seUluIGFzIGVhc2VQb2x5SW4sXG4gIHBvbHlPdXQgYXMgZWFzZVBvbHlPdXQsXG4gIHBvbHlJbk91dCBhcyBlYXNlUG9seUluT3V0XG59IGZyb20gXCIuL3BvbHlcIjtcblxuZXhwb3J0IHtcbiAgc2luSW5PdXQgYXMgZWFzZVNpbixcbiAgc2luSW4gYXMgZWFzZVNpbkluLFxuICBzaW5PdXQgYXMgZWFzZVNpbk91dCxcbiAgc2luSW5PdXQgYXMgZWFzZVNpbkluT3V0XG59IGZyb20gXCIuL3NpblwiO1xuXG5leHBvcnQge1xuICBleHBJbk91dCBhcyBlYXNlRXhwLFxuICBleHBJbiBhcyBlYXNlRXhwSW4sXG4gIGV4cE91dCBhcyBlYXNlRXhwT3V0LFxuICBleHBJbk91dCBhcyBlYXNlRXhwSW5PdXRcbn0gZnJvbSBcIi4vZXhwXCI7XG5cbmV4cG9ydCB7XG4gIGNpcmNsZUluT3V0IGFzIGVhc2VDaXJjbGUsXG4gIGNpcmNsZUluIGFzIGVhc2VDaXJjbGVJbixcbiAgY2lyY2xlT3V0IGFzIGVhc2VDaXJjbGVPdXQsXG4gIGNpcmNsZUluT3V0IGFzIGVhc2VDaXJjbGVJbk91dFxufSBmcm9tIFwiLi9jaXJjbGVcIjtcblxuZXhwb3J0IHtcbiAgYm91bmNlT3V0IGFzIGVhc2VCb3VuY2UsXG4gIGJvdW5jZUluIGFzIGVhc2VCb3VuY2VJbixcbiAgYm91bmNlT3V0IGFzIGVhc2VCb3VuY2VPdXQsXG4gIGJvdW5jZUluT3V0IGFzIGVhc2VCb3VuY2VJbk91dFxufSBmcm9tIFwiLi9ib3VuY2VcIjtcblxuZXhwb3J0IHtcbiAgYmFja0luT3V0IGFzIGVhc2VCYWNrLFxuICBiYWNrSW4gYXMgZWFzZUJhY2tJbixcbiAgYmFja091dCBhcyBlYXNlQmFja091dCxcbiAgYmFja0luT3V0IGFzIGVhc2VCYWNrSW5PdXRcbn0gZnJvbSBcIi4vYmFja1wiO1xuXG5leHBvcnQge1xuICBlbGFzdGljT3V0IGFzIGVhc2VFbGFzdGljLFxuICBlbGFzdGljSW4gYXMgZWFzZUVsYXN0aWNJbixcbiAgZWxhc3RpY091dCBhcyBlYXNlRWxhc3RpY091dCxcbiAgZWxhc3RpY0luT3V0IGFzIGVhc2VFbGFzdGljSW5PdXRcbn0gZnJvbSBcIi4vZWxhc3RpY1wiO1xuIiwiZXhwb3J0IGZ1bmN0aW9uIGxpbmVhcih0KSB7XG4gIHJldHVybiArdDtcbn1cbiIsInZhciBleHBvbmVudCA9IDM7XG5cbmV4cG9ydCB2YXIgcG9seUluID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5SW4odCkge1xuICAgIHJldHVybiBNYXRoLnBvdyh0LCBlKTtcbiAgfVxuXG4gIHBvbHlJbi5leHBvbmVudCA9IGN1c3RvbTtcblxuICByZXR1cm4gcG9seUluO1xufSkoZXhwb25lbnQpO1xuXG5leHBvcnQgdmFyIHBvbHlPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGUpIHtcbiAgZSA9ICtlO1xuXG4gIGZ1bmN0aW9uIHBvbHlPdXQodCkge1xuICAgIHJldHVybiAxIC0gTWF0aC5wb3coMSAtIHQsIGUpO1xuICB9XG5cbiAgcG9seU91dC5leHBvbmVudCA9IGN1c3RvbTtcblxuICByZXR1cm4gcG9seU91dDtcbn0pKGV4cG9uZW50KTtcblxuZXhwb3J0IHZhciBwb2x5SW5PdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGUpIHtcbiAgZSA9ICtlO1xuXG4gIGZ1bmN0aW9uIHBvbHlJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gTWF0aC5wb3codCwgZSkgOiAyIC0gTWF0aC5wb3coMiAtIHQsIGUpKSAvIDI7XG4gIH1cblxuICBwb2x5SW5PdXQuZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlJbk91dDtcbn0pKGV4cG9uZW50KTtcbiIsImV4cG9ydCBmdW5jdGlvbiBxdWFkSW4odCkge1xuICByZXR1cm4gdCAqIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWFkT3V0KHQpIHtcbiAgcmV0dXJuIHQgKiAoMiAtIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVhZEluT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gdCAqIHQgOiAtLXQgKiAoMiAtIHQpICsgMSkgLyAyO1xufVxuIiwidmFyIHBpID0gTWF0aC5QSSxcbiAgICBoYWxmUGkgPSBwaSAvIDI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5Jbih0KSB7XG4gIHJldHVybiAxIC0gTWF0aC5jb3ModCAqIGhhbGZQaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5PdXQodCkge1xuICByZXR1cm4gTWF0aC5zaW4odCAqIGhhbGZQaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5Jbk91dCh0KSB7XG4gIHJldHVybiAoMSAtIE1hdGguY29zKHBpICogdCkpIC8gMjtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbChmKSB7XG4gIHJldHVybiBmID09IG51bGwgPyBudWxsIDogcmVxdWlyZWQoZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChmKSB7XG4gIGlmICh0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiBmO1xufVxuIiwiZXhwb3J0IHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNodWZmbGUoYXJyYXkpIHtcbiAgdmFyIG0gPSBhcnJheS5sZW5ndGgsXG4gICAgICB0LFxuICAgICAgaTtcblxuICB3aGlsZSAobSkge1xuICAgIGkgPSBNYXRoLnJhbmRvbSgpICogbS0tIHwgMDtcbiAgICB0ID0gYXJyYXlbbV07XG4gICAgYXJyYXlbbV0gPSBhcnJheVtpXTtcbiAgICBhcnJheVtpXSA9IHQ7XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59XG4iLCJmdW5jdGlvbiBkZWZhdWx0U2VwYXJhdGlvbihhLCBiKSB7XG4gIHJldHVybiBhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMjtcbn1cblxuZnVuY3Rpb24gbWVhblgoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGNoaWxkcmVuLnJlZHVjZShtZWFuWFJlZHVjZSwgMCkgLyBjaGlsZHJlbi5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIG1lYW5YUmVkdWNlKHgsIGMpIHtcbiAgcmV0dXJuIHggKyBjLng7XG59XG5cbmZ1bmN0aW9uIG1heFkoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIDEgKyBjaGlsZHJlbi5yZWR1Y2UobWF4WVJlZHVjZSwgMCk7XG59XG5cbmZ1bmN0aW9uIG1heFlSZWR1Y2UoeSwgYykge1xuICByZXR1cm4gTWF0aC5tYXgoeSwgYy55KTtcbn1cblxuZnVuY3Rpb24gbGVhZkxlZnQobm9kZSkge1xuICB2YXIgY2hpbGRyZW47XG4gIHdoaWxlIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIG5vZGUgPSBjaGlsZHJlblswXTtcbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIGxlYWZSaWdodChub2RlKSB7XG4gIHZhciBjaGlsZHJlbjtcbiAgd2hpbGUgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikgbm9kZSA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzZXBhcmF0aW9uID0gZGVmYXVsdFNlcGFyYXRpb24sXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBub2RlU2l6ZSA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGNsdXN0ZXIocm9vdCkge1xuICAgIHZhciBwcmV2aW91c05vZGUsXG4gICAgICAgIHggPSAwO1xuXG4gICAgLy8gRmlyc3Qgd2FsaywgY29tcHV0aW5nIHRoZSBpbml0aWFsIHggJiB5IHZhbHVlcy5cbiAgICByb290LmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIG5vZGUueCA9IG1lYW5YKGNoaWxkcmVuKTtcbiAgICAgICAgbm9kZS55ID0gbWF4WShjaGlsZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnggPSBwcmV2aW91c05vZGUgPyB4ICs9IHNlcGFyYXRpb24obm9kZSwgcHJldmlvdXNOb2RlKSA6IDA7XG4gICAgICAgIG5vZGUueSA9IDA7XG4gICAgICAgIHByZXZpb3VzTm9kZSA9IG5vZGU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgbGVmdCA9IGxlYWZMZWZ0KHJvb3QpLFxuICAgICAgICByaWdodCA9IGxlYWZSaWdodChyb290KSxcbiAgICAgICAgeDAgPSBsZWZ0LnggLSBzZXBhcmF0aW9uKGxlZnQsIHJpZ2h0KSAvIDIsXG4gICAgICAgIHgxID0gcmlnaHQueCArIHNlcGFyYXRpb24ocmlnaHQsIGxlZnQpIC8gMjtcblxuICAgIC8vIFNlY29uZCB3YWxrLCBub3JtYWxpemluZyB4ICYgeSB0byB0aGUgZGVzaXJlZCBzaXplLlxuICAgIHJldHVybiByb290LmVhY2hBZnRlcihub2RlU2l6ZSA/IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIG5vZGUueCA9IChub2RlLnggLSByb290LngpICogZHg7XG4gICAgICBub2RlLnkgPSAocm9vdC55IC0gbm9kZS55KSAqIGR5O1xuICAgIH0gOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnggPSAobm9kZS54IC0geDApIC8gKHgxIC0geDApICogZHg7XG4gICAgICBub2RlLnkgPSAoMSAtIChyb290LnkgPyBub2RlLnkgLyByb290LnkgOiAxKSkgKiBkeTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsdXN0ZXIuc2VwYXJhdGlvbiA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzZXBhcmF0aW9uID0geCwgY2x1c3RlcikgOiBzZXBhcmF0aW9uO1xuICB9O1xuXG4gIGNsdXN0ZXIuc2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IGZhbHNlLCBkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCBjbHVzdGVyKSA6IChub2RlU2l6ZSA/IG51bGwgOiBbZHgsIGR5XSk7XG4gIH07XG5cbiAgY2x1c3Rlci5ub2RlU2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IHRydWUsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIGNsdXN0ZXIpIDogKG5vZGVTaXplID8gW2R4LCBkeV0gOiBudWxsKTtcbiAgfTtcblxuICByZXR1cm4gY2x1c3Rlcjtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBjb25zdGFudFplcm8oKSB7XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZSA9IHRoaXMsIG5vZGVzID0gW25vZGVdO1xuICB3aGlsZSAobm9kZSA9IG5vZGUucGFyZW50KSB7XG4gICAgbm9kZXMucHVzaChub2RlKTtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG4iLCJmdW5jdGlvbiBjb3VudChub2RlKSB7XG4gIHZhciBzdW0gPSAwLFxuICAgICAgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLFxuICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKCFpKSBzdW0gPSAxO1xuICBlbHNlIHdoaWxlICgtLWkgPj0gMCkgc3VtICs9IGNoaWxkcmVuW2ldLnZhbHVlO1xuICBub2RlLnZhbHVlID0gc3VtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEFmdGVyKGNvdW50KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZXMgPSBbXTtcbiAgdGhpcy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBjdXJyZW50LCBuZXh0ID0gW25vZGVdLCBjaGlsZHJlbiwgaSwgbjtcbiAgZG8ge1xuICAgIGN1cnJlbnQgPSBuZXh0LnJldmVyc2UoKSwgbmV4dCA9IFtdO1xuICAgIHdoaWxlIChub2RlID0gY3VycmVudC5wb3AoKSkge1xuICAgICAgY2FsbGJhY2sobm9kZSksIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICAgIGlmIChjaGlsZHJlbikgZm9yIChpID0gMCwgbiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBuZXh0LnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAobmV4dC5sZW5ndGgpO1xuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIG5leHQgPSBbXSwgY2hpbGRyZW4sIGksIG47XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBuZXh0LnB1c2gobm9kZSksIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4pIGZvciAoaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuICB3aGlsZSAobm9kZSA9IG5leHQucG9wKCkpIHtcbiAgICBjYWxsYmFjayhub2RlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIGNoaWxkcmVuLCBpO1xuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgY2FsbGJhY2sobm9kZSksIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4pIGZvciAoaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBub2Rlcy5wdXNoKGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJpbXBvcnQgbm9kZV9jb3VudCBmcm9tIFwiLi9jb3VudFwiO1xuaW1wb3J0IG5vZGVfZWFjaCBmcm9tIFwiLi9lYWNoXCI7XG5pbXBvcnQgbm9kZV9lYWNoQmVmb3JlIGZyb20gXCIuL2VhY2hCZWZvcmVcIjtcbmltcG9ydCBub2RlX2VhY2hBZnRlciBmcm9tIFwiLi9lYWNoQWZ0ZXJcIjtcbmltcG9ydCBub2RlX3N1bSBmcm9tIFwiLi9zdW1cIjtcbmltcG9ydCBub2RlX3NvcnQgZnJvbSBcIi4vc29ydFwiO1xuaW1wb3J0IG5vZGVfcGF0aCBmcm9tIFwiLi9wYXRoXCI7XG5pbXBvcnQgbm9kZV9hbmNlc3RvcnMgZnJvbSBcIi4vYW5jZXN0b3JzXCI7XG5pbXBvcnQgbm9kZV9kZXNjZW5kYW50cyBmcm9tIFwiLi9kZXNjZW5kYW50c1wiO1xuaW1wb3J0IG5vZGVfbGVhdmVzIGZyb20gXCIuL2xlYXZlc1wiO1xuaW1wb3J0IG5vZGVfbGlua3MgZnJvbSBcIi4vbGlua3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGllcmFyY2h5KGRhdGEsIGNoaWxkcmVuKSB7XG4gIHZhciByb290ID0gbmV3IE5vZGUoZGF0YSksXG4gICAgICB2YWx1ZWQgPSArZGF0YS52YWx1ZSAmJiAocm9vdC52YWx1ZSA9IGRhdGEudmFsdWUpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVzID0gW3Jvb3RdLFxuICAgICAgY2hpbGQsXG4gICAgICBjaGlsZHMsXG4gICAgICBpLFxuICAgICAgbjtcblxuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgY2hpbGRyZW4gPSBkZWZhdWx0Q2hpbGRyZW47XG5cbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGlmICh2YWx1ZWQpIG5vZGUudmFsdWUgPSArbm9kZS5kYXRhLnZhbHVlO1xuICAgIGlmICgoY2hpbGRzID0gY2hpbGRyZW4obm9kZS5kYXRhKSkgJiYgKG4gPSBjaGlsZHMubGVuZ3RoKSkge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IG5ldyBBcnJheShuKTtcbiAgICAgIGZvciAoaSA9IG4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXSA9IG5ldyBOb2RlKGNoaWxkc1tpXSkpO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICBjaGlsZC5kZXB0aCA9IG5vZGUuZGVwdGggKyAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByb290LmVhY2hCZWZvcmUoY29tcHV0ZUhlaWdodCk7XG59XG5cbmZ1bmN0aW9uIG5vZGVfY29weSgpIHtcbiAgcmV0dXJuIGhpZXJhcmNoeSh0aGlzKS5lYWNoQmVmb3JlKGNvcHlEYXRhKTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENoaWxkcmVuKGQpIHtcbiAgcmV0dXJuIGQuY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIGNvcHlEYXRhKG5vZGUpIHtcbiAgbm9kZS5kYXRhID0gbm9kZS5kYXRhLmRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlSGVpZ2h0KG5vZGUpIHtcbiAgdmFyIGhlaWdodCA9IDA7XG4gIGRvIG5vZGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICB3aGlsZSAoKG5vZGUgPSBub2RlLnBhcmVudCkgJiYgKG5vZGUuaGVpZ2h0IDwgKytoZWlnaHQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE5vZGUoZGF0YSkge1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmRlcHRoID1cbiAgdGhpcy5oZWlnaHQgPSAwO1xuICB0aGlzLnBhcmVudCA9IG51bGw7XG59XG5cbk5vZGUucHJvdG90eXBlID0gaGllcmFyY2h5LnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IE5vZGUsXG4gIGNvdW50OiBub2RlX2NvdW50LFxuICBlYWNoOiBub2RlX2VhY2gsXG4gIGVhY2hBZnRlcjogbm9kZV9lYWNoQWZ0ZXIsXG4gIGVhY2hCZWZvcmU6IG5vZGVfZWFjaEJlZm9yZSxcbiAgc3VtOiBub2RlX3N1bSxcbiAgc29ydDogbm9kZV9zb3J0LFxuICBwYXRoOiBub2RlX3BhdGgsXG4gIGFuY2VzdG9yczogbm9kZV9hbmNlc3RvcnMsXG4gIGRlc2NlbmRhbnRzOiBub2RlX2Rlc2NlbmRhbnRzLFxuICBsZWF2ZXM6IG5vZGVfbGVhdmVzLFxuICBsaW5rczogbm9kZV9saW5rcyxcbiAgY29weTogbm9kZV9jb3B5XG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBsZWF2ZXMgPSBbXTtcbiAgdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGxlYXZlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsZWF2ZXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJvb3QgPSB0aGlzLCBsaW5rcyA9IFtdO1xuICByb290LmVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSByb290KSB7IC8vIERvbuKAmXQgaW5jbHVkZSB0aGUgcm9vdOKAmXMgcGFyZW50LCBpZiBhbnkuXG4gICAgICBsaW5rcy5wdXNoKHtzb3VyY2U6IG5vZGUucGFyZW50LCB0YXJnZXQ6IG5vZGV9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGlua3M7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihlbmQpIHtcbiAgdmFyIHN0YXJ0ID0gdGhpcyxcbiAgICAgIGFuY2VzdG9yID0gbGVhc3RDb21tb25BbmNlc3RvcihzdGFydCwgZW5kKSxcbiAgICAgIG5vZGVzID0gW3N0YXJ0XTtcbiAgd2hpbGUgKHN0YXJ0ICE9PSBhbmNlc3Rvcikge1xuICAgIHN0YXJ0ID0gc3RhcnQucGFyZW50O1xuICAgIG5vZGVzLnB1c2goc3RhcnQpO1xuICB9XG4gIHZhciBrID0gbm9kZXMubGVuZ3RoO1xuICB3aGlsZSAoZW5kICE9PSBhbmNlc3Rvcikge1xuICAgIG5vZGVzLnNwbGljZShrLCAwLCBlbmQpO1xuICAgIGVuZCA9IGVuZC5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5mdW5jdGlvbiBsZWFzdENvbW1vbkFuY2VzdG9yKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiBhO1xuICB2YXIgYU5vZGVzID0gYS5hbmNlc3RvcnMoKSxcbiAgICAgIGJOb2RlcyA9IGIuYW5jZXN0b3JzKCksXG4gICAgICBjID0gbnVsbDtcbiAgYSA9IGFOb2Rlcy5wb3AoKTtcbiAgYiA9IGJOb2Rlcy5wb3AoKTtcbiAgd2hpbGUgKGEgPT09IGIpIHtcbiAgICBjID0gYTtcbiAgICBhID0gYU5vZGVzLnBvcCgpO1xuICAgIGIgPSBiTm9kZXMucG9wKCk7XG4gIH1cbiAgcmV0dXJuIGM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuLnNvcnQoY29tcGFyZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgdmFyIHN1bSA9ICt2YWx1ZShub2RlLmRhdGEpIHx8IDAsXG4gICAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgICBub2RlLnZhbHVlID0gc3VtO1xuICB9KTtcbn1cbiIsImV4cG9ydCB7ZGVmYXVsdCBhcyBjbHVzdGVyfSBmcm9tIFwiLi9jbHVzdGVyXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaGllcmFyY2h5fSBmcm9tIFwiLi9oaWVyYXJjaHkvaW5kZXhcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwYWNrfSBmcm9tIFwiLi9wYWNrL2luZGV4XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGFja1NpYmxpbmdzfSBmcm9tIFwiLi9wYWNrL3NpYmxpbmdzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGFja0VuY2xvc2V9IGZyb20gXCIuL3BhY2svZW5jbG9zZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBhcnRpdGlvbn0gZnJvbSBcIi4vcGFydGl0aW9uXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RyYXRpZnl9IGZyb20gXCIuL3N0cmF0aWZ5XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJlZX0gZnJvbSBcIi4vdHJlZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXB9IGZyb20gXCIuL3RyZWVtYXAvaW5kZXhcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlbWFwQmluYXJ5fSBmcm9tIFwiLi90cmVlbWFwL2JpbmFyeVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBEaWNlfSBmcm9tIFwiLi90cmVlbWFwL2RpY2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlbWFwU2xpY2V9IGZyb20gXCIuL3RyZWVtYXAvc2xpY2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlbWFwU2xpY2VEaWNlfSBmcm9tIFwiLi90cmVlbWFwL3NsaWNlRGljZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBTcXVhcmlmeX0gZnJvbSBcIi4vdHJlZW1hcC9zcXVhcmlmeVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBSZXNxdWFyaWZ5fSBmcm9tIFwiLi90cmVlbWFwL3Jlc3F1YXJpZnlcIjtcbiIsImltcG9ydCB7c2h1ZmZsZSwgc2xpY2V9IGZyb20gXCIuLi9hcnJheVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjaXJjbGVzKSB7XG4gIHZhciBpID0gMCwgbiA9IChjaXJjbGVzID0gc2h1ZmZsZShzbGljZS5jYWxsKGNpcmNsZXMpKSkubGVuZ3RoLCBCID0gW10sIHAsIGU7XG5cbiAgd2hpbGUgKGkgPCBuKSB7XG4gICAgcCA9IGNpcmNsZXNbaV07XG4gICAgaWYgKGUgJiYgZW5jbG9zZXNXZWFrKGUsIHApKSArK2k7XG4gICAgZWxzZSBlID0gZW5jbG9zZUJhc2lzKEIgPSBleHRlbmRCYXNpcyhCLCBwKSksIGkgPSAwO1xuICB9XG5cbiAgcmV0dXJuIGU7XG59XG5cbmZ1bmN0aW9uIGV4dGVuZEJhc2lzKEIsIHApIHtcbiAgdmFyIGksIGo7XG5cbiAgaWYgKGVuY2xvc2VzV2Vha0FsbChwLCBCKSkgcmV0dXJuIFtwXTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIEIgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50LlxuICBmb3IgKGkgPSAwOyBpIDwgQi5sZW5ndGg7ICsraSkge1xuICAgIGlmIChlbmNsb3Nlc05vdChwLCBCW2ldKVxuICAgICAgICAmJiBlbmNsb3Nlc1dlYWtBbGwoZW5jbG9zZUJhc2lzMihCW2ldLCBwKSwgQikpIHtcbiAgICAgIHJldHVybiBbQltpXSwgcF07XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBCIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuXG4gIGZvciAoaSA9IDA7IGkgPCBCLmxlbmd0aCAtIDE7ICsraSkge1xuICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgQi5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKGVuY2xvc2VzTm90KGVuY2xvc2VCYXNpczIoQltpXSwgQltqXSksIHApXG4gICAgICAgICAgJiYgZW5jbG9zZXNOb3QoZW5jbG9zZUJhc2lzMihCW2ldLCBwKSwgQltqXSlcbiAgICAgICAgICAmJiBlbmNsb3Nlc05vdChlbmNsb3NlQmFzaXMyKEJbal0sIHApLCBCW2ldKVxuICAgICAgICAgICYmIGVuY2xvc2VzV2Vha0FsbChlbmNsb3NlQmFzaXMzKEJbaV0sIEJbal0sIHApLCBCKSkge1xuICAgICAgICByZXR1cm4gW0JbaV0sIEJbal0sIHBdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlIGdldCBoZXJlIHRoZW4gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmcuXG4gIHRocm93IG5ldyBFcnJvcjtcbn1cblxuZnVuY3Rpb24gZW5jbG9zZXNOb3QoYSwgYikge1xuICB2YXIgZHIgPSBhLnIgLSBiLnIsIGR4ID0gYi54IC0gYS54LCBkeSA9IGIueSAtIGEueTtcbiAgcmV0dXJuIGRyIDwgMCB8fCBkciAqIGRyIDwgZHggKiBkeCArIGR5ICogZHk7XG59XG5cbmZ1bmN0aW9uIGVuY2xvc2VzV2VhayhhLCBiKSB7XG4gIHZhciBkciA9IGEuciAtIGIuciArIDFlLTYsIGR4ID0gYi54IC0gYS54LCBkeSA9IGIueSAtIGEueTtcbiAgcmV0dXJuIGRyID4gMCAmJiBkciAqIGRyID4gZHggKiBkeCArIGR5ICogZHk7XG59XG5cbmZ1bmN0aW9uIGVuY2xvc2VzV2Vha0FsbChhLCBCKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgQi5sZW5ndGg7ICsraSkge1xuICAgIGlmICghZW5jbG9zZXNXZWFrKGEsIEJbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBlbmNsb3NlQmFzaXMoQikge1xuICBzd2l0Y2ggKEIubGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZW5jbG9zZUJhc2lzMShCWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBlbmNsb3NlQmFzaXMyKEJbMF0sIEJbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGVuY2xvc2VCYXNpczMoQlswXSwgQlsxXSwgQlsyXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5jbG9zZUJhc2lzMShhKSB7XG4gIHJldHVybiB7XG4gICAgeDogYS54LFxuICAgIHk6IGEueSxcbiAgICByOiBhLnJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5jbG9zZUJhc2lzMihhLCBiKSB7XG4gIHZhciB4MSA9IGEueCwgeTEgPSBhLnksIHIxID0gYS5yLFxuICAgICAgeDIgPSBiLngsIHkyID0gYi55LCByMiA9IGIucixcbiAgICAgIHgyMSA9IHgyIC0geDEsIHkyMSA9IHkyIC0geTEsIHIyMSA9IHIyIC0gcjEsXG4gICAgICBsID0gTWF0aC5zcXJ0KHgyMSAqIHgyMSArIHkyMSAqIHkyMSk7XG4gIHJldHVybiB7XG4gICAgeDogKHgxICsgeDIgKyB4MjEgLyBsICogcjIxKSAvIDIsXG4gICAgeTogKHkxICsgeTIgKyB5MjEgLyBsICogcjIxKSAvIDIsXG4gICAgcjogKGwgKyByMSArIHIyKSAvIDJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5jbG9zZUJhc2lzMyhhLCBiLCBjKSB7XG4gIHZhciB4MSA9IGEueCwgeTEgPSBhLnksIHIxID0gYS5yLFxuICAgICAgeDIgPSBiLngsIHkyID0gYi55LCByMiA9IGIucixcbiAgICAgIHgzID0gYy54LCB5MyA9IGMueSwgcjMgPSBjLnIsXG4gICAgICBhMiA9IHgxIC0geDIsXG4gICAgICBhMyA9IHgxIC0geDMsXG4gICAgICBiMiA9IHkxIC0geTIsXG4gICAgICBiMyA9IHkxIC0geTMsXG4gICAgICBjMiA9IHIyIC0gcjEsXG4gICAgICBjMyA9IHIzIC0gcjEsXG4gICAgICBkMSA9IHgxICogeDEgKyB5MSAqIHkxIC0gcjEgKiByMSxcbiAgICAgIGQyID0gZDEgLSB4MiAqIHgyIC0geTIgKiB5MiArIHIyICogcjIsXG4gICAgICBkMyA9IGQxIC0geDMgKiB4MyAtIHkzICogeTMgKyByMyAqIHIzLFxuICAgICAgYWIgPSBhMyAqIGIyIC0gYTIgKiBiMyxcbiAgICAgIHhhID0gKGIyICogZDMgLSBiMyAqIGQyKSAvIChhYiAqIDIpIC0geDEsXG4gICAgICB4YiA9IChiMyAqIGMyIC0gYjIgKiBjMykgLyBhYixcbiAgICAgIHlhID0gKGEzICogZDIgLSBhMiAqIGQzKSAvIChhYiAqIDIpIC0geTEsXG4gICAgICB5YiA9IChhMiAqIGMzIC0gYTMgKiBjMikgLyBhYixcbiAgICAgIEEgPSB4YiAqIHhiICsgeWIgKiB5YiAtIDEsXG4gICAgICBCID0gMiAqIChyMSArIHhhICogeGIgKyB5YSAqIHliKSxcbiAgICAgIEMgPSB4YSAqIHhhICsgeWEgKiB5YSAtIHIxICogcjEsXG4gICAgICByID0gLShBID8gKEIgKyBNYXRoLnNxcnQoQiAqIEIgLSA0ICogQSAqIEMpKSAvICgyICogQSkgOiBDIC8gQik7XG4gIHJldHVybiB7XG4gICAgeDogeDEgKyB4YSArIHhiICogcixcbiAgICB5OiB5MSArIHlhICsgeWIgKiByLFxuICAgIHI6IHJcbiAgfTtcbn1cbiIsImltcG9ydCB7cGFja0VuY2xvc2V9IGZyb20gXCIuL3NpYmxpbmdzXCI7XG5pbXBvcnQge29wdGlvbmFsfSBmcm9tIFwiLi4vYWNjZXNzb3JzXCI7XG5pbXBvcnQgY29uc3RhbnQsIHtjb25zdGFudFplcm99IGZyb20gXCIuLi9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBkZWZhdWx0UmFkaXVzKGQpIHtcbiAgcmV0dXJuIE1hdGguc3FydChkLnZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciByYWRpdXMgPSBudWxsLFxuICAgICAgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgcGFkZGluZyA9IGNvbnN0YW50WmVybztcblxuICBmdW5jdGlvbiBwYWNrKHJvb3QpIHtcbiAgICByb290LnggPSBkeCAvIDIsIHJvb3QueSA9IGR5IC8gMjtcbiAgICBpZiAocmFkaXVzKSB7XG4gICAgICByb290LmVhY2hCZWZvcmUocmFkaXVzTGVhZihyYWRpdXMpKVxuICAgICAgICAgIC5lYWNoQWZ0ZXIocGFja0NoaWxkcmVuKHBhZGRpbmcsIDAuNSkpXG4gICAgICAgICAgLmVhY2hCZWZvcmUodHJhbnNsYXRlQ2hpbGQoMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290LmVhY2hCZWZvcmUocmFkaXVzTGVhZihkZWZhdWx0UmFkaXVzKSlcbiAgICAgICAgICAuZWFjaEFmdGVyKHBhY2tDaGlsZHJlbihjb25zdGFudFplcm8sIDEpKVxuICAgICAgICAgIC5lYWNoQWZ0ZXIocGFja0NoaWxkcmVuKHBhZGRpbmcsIHJvb3QuciAvIE1hdGgubWluKGR4LCBkeSkpKVxuICAgICAgICAgIC5lYWNoQmVmb3JlKHRyYW5zbGF0ZUNoaWxkKE1hdGgubWluKGR4LCBkeSkgLyAoMiAqIHJvb3QucikpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBwYWNrLnJhZGl1cyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSBvcHRpb25hbCh4KSwgcGFjaykgOiByYWRpdXM7XG4gIH07XG5cbiAgcGFjay5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHBhY2spIDogW2R4LCBkeV07XG4gIH07XG5cbiAgcGFjay5wYWRkaW5nID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmcgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgcGFjaykgOiBwYWRkaW5nO1xuICB9O1xuXG4gIHJldHVybiBwYWNrO1xufVxuXG5mdW5jdGlvbiByYWRpdXNMZWFmKHJhZGl1cykge1xuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5jaGlsZHJlbikge1xuICAgICAgbm9kZS5yID0gTWF0aC5tYXgoMCwgK3JhZGl1cyhub2RlKSB8fCAwKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhY2tDaGlsZHJlbihwYWRkaW5nLCBrKSB7XG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgdmFyIGNoaWxkcmVuLFxuICAgICAgICAgIGksXG4gICAgICAgICAgbiA9IGNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICByID0gcGFkZGluZyhub2RlKSAqIGsgfHwgMCxcbiAgICAgICAgICBlO1xuXG4gICAgICBpZiAocikgZm9yIChpID0gMDsgaSA8IG47ICsraSkgY2hpbGRyZW5baV0uciArPSByO1xuICAgICAgZSA9IHBhY2tFbmNsb3NlKGNoaWxkcmVuKTtcbiAgICAgIGlmIChyKSBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBjaGlsZHJlbltpXS5yIC09IHI7XG4gICAgICBub2RlLnIgPSBlICsgcjtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUNoaWxkKGspIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICB2YXIgcGFyZW50ID0gbm9kZS5wYXJlbnQ7XG4gICAgbm9kZS5yICo9IGs7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgbm9kZS54ID0gcGFyZW50LnggKyBrICogbm9kZS54O1xuICAgICAgbm9kZS55ID0gcGFyZW50LnkgKyBrICogbm9kZS55O1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCBlbmNsb3NlIGZyb20gXCIuL2VuY2xvc2VcIjtcblxuZnVuY3Rpb24gcGxhY2UoYiwgYSwgYykge1xuICB2YXIgZHggPSBiLnggLSBhLngsIHgsIGEyLFxuICAgICAgZHkgPSBiLnkgLSBhLnksIHksIGIyLFxuICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgaWYgKGQyKSB7XG4gICAgYTIgPSBhLnIgKyBjLnIsIGEyICo9IGEyO1xuICAgIGIyID0gYi5yICsgYy5yLCBiMiAqPSBiMjtcbiAgICBpZiAoYTIgPiBiMikge1xuICAgICAgeCA9IChkMiArIGIyIC0gYTIpIC8gKDIgKiBkMik7XG4gICAgICB5ID0gTWF0aC5zcXJ0KE1hdGgubWF4KDAsIGIyIC8gZDIgLSB4ICogeCkpO1xuICAgICAgYy54ID0gYi54IC0geCAqIGR4IC0geSAqIGR5O1xuICAgICAgYy55ID0gYi55IC0geCAqIGR5ICsgeSAqIGR4O1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0gKGQyICsgYTIgLSBiMikgLyAoMiAqIGQyKTtcbiAgICAgIHkgPSBNYXRoLnNxcnQoTWF0aC5tYXgoMCwgYTIgLyBkMiAtIHggKiB4KSk7XG4gICAgICBjLnggPSBhLnggKyB4ICogZHggLSB5ICogZHk7XG4gICAgICBjLnkgPSBhLnkgKyB4ICogZHkgKyB5ICogZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGMueCA9IGEueCArIGMucjtcbiAgICBjLnkgPSBhLnk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW50ZXJzZWN0cyhhLCBiKSB7XG4gIHZhciBkciA9IGEuciArIGIuciAtIDFlLTYsIGR4ID0gYi54IC0gYS54LCBkeSA9IGIueSAtIGEueTtcbiAgcmV0dXJuIGRyID4gMCAmJiBkciAqIGRyID4gZHggKiBkeCArIGR5ICogZHk7XG59XG5cbmZ1bmN0aW9uIHNjb3JlKG5vZGUpIHtcbiAgdmFyIGEgPSBub2RlLl8sXG4gICAgICBiID0gbm9kZS5uZXh0Ll8sXG4gICAgICBhYiA9IGEuciArIGIucixcbiAgICAgIGR4ID0gKGEueCAqIGIuciArIGIueCAqIGEucikgLyBhYixcbiAgICAgIGR5ID0gKGEueSAqIGIuciArIGIueSAqIGEucikgLyBhYjtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufVxuXG5mdW5jdGlvbiBOb2RlKGNpcmNsZSkge1xuICB0aGlzLl8gPSBjaXJjbGU7XG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMucHJldmlvdXMgPSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja0VuY2xvc2UoY2lyY2xlcykge1xuICBpZiAoIShuID0gY2lyY2xlcy5sZW5ndGgpKSByZXR1cm4gMDtcblxuICB2YXIgYSwgYiwgYywgbiwgYWEsIGNhLCBpLCBqLCBrLCBzaiwgc2s7XG5cbiAgLy8gUGxhY2UgdGhlIGZpcnN0IGNpcmNsZS5cbiAgYSA9IGNpcmNsZXNbMF0sIGEueCA9IDAsIGEueSA9IDA7XG4gIGlmICghKG4gPiAxKSkgcmV0dXJuIGEucjtcblxuICAvLyBQbGFjZSB0aGUgc2Vjb25kIGNpcmNsZS5cbiAgYiA9IGNpcmNsZXNbMV0sIGEueCA9IC1iLnIsIGIueCA9IGEuciwgYi55ID0gMDtcbiAgaWYgKCEobiA+IDIpKSByZXR1cm4gYS5yICsgYi5yO1xuXG4gIC8vIFBsYWNlIHRoZSB0aGlyZCBjaXJjbGUuXG4gIHBsYWNlKGIsIGEsIGMgPSBjaXJjbGVzWzJdKTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBmcm9udC1jaGFpbiB1c2luZyB0aGUgZmlyc3QgdGhyZWUgY2lyY2xlcyBhLCBiIGFuZCBjLlxuICBhID0gbmV3IE5vZGUoYSksIGIgPSBuZXcgTm9kZShiKSwgYyA9IG5ldyBOb2RlKGMpO1xuICBhLm5leHQgPSBjLnByZXZpb3VzID0gYjtcbiAgYi5uZXh0ID0gYS5wcmV2aW91cyA9IGM7XG4gIGMubmV4dCA9IGIucHJldmlvdXMgPSBhO1xuXG4gIC8vIEF0dGVtcHQgdG8gcGxhY2UgZWFjaCByZW1haW5pbmcgY2lyY2xl4oCmXG4gIHBhY2s6IGZvciAoaSA9IDM7IGkgPCBuOyArK2kpIHtcbiAgICBwbGFjZShhLl8sIGIuXywgYyA9IGNpcmNsZXNbaV0pLCBjID0gbmV3IE5vZGUoYyk7XG5cbiAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IGludGVyc2VjdGluZyBjaXJjbGUgb24gdGhlIGZyb250LWNoYWluLCBpZiBhbnkuXG4gICAgLy8g4oCcQ2xvc2VuZXNz4oCdIGlzIGRldGVybWluZWQgYnkgbGluZWFyIGRpc3RhbmNlIGFsb25nIHRoZSBmcm9udC1jaGFpbi5cbiAgICAvLyDigJxBaGVhZOKAnSBvciDigJxiZWhpbmTigJ0gaXMgbGlrZXdpc2UgZGV0ZXJtaW5lZCBieSBsaW5lYXIgZGlzdGFuY2UuXG4gICAgaiA9IGIubmV4dCwgayA9IGEucHJldmlvdXMsIHNqID0gYi5fLnIsIHNrID0gYS5fLnI7XG4gICAgZG8ge1xuICAgICAgaWYgKHNqIDw9IHNrKSB7XG4gICAgICAgIGlmIChpbnRlcnNlY3RzKGouXywgYy5fKSkge1xuICAgICAgICAgIGIgPSBqLCBhLm5leHQgPSBiLCBiLnByZXZpb3VzID0gYSwgLS1pO1xuICAgICAgICAgIGNvbnRpbnVlIHBhY2s7XG4gICAgICAgIH1cbiAgICAgICAgc2ogKz0gai5fLnIsIGogPSBqLm5leHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaW50ZXJzZWN0cyhrLl8sIGMuXykpIHtcbiAgICAgICAgICBhID0gaywgYS5uZXh0ID0gYiwgYi5wcmV2aW91cyA9IGEsIC0taTtcbiAgICAgICAgICBjb250aW51ZSBwYWNrO1xuICAgICAgICB9XG4gICAgICAgIHNrICs9IGsuXy5yLCBrID0gay5wcmV2aW91cztcbiAgICAgIH1cbiAgICB9IHdoaWxlIChqICE9PSBrLm5leHQpO1xuXG4gICAgLy8gU3VjY2VzcyEgSW5zZXJ0IHRoZSBuZXcgY2lyY2xlIGMgYmV0d2VlbiBhIGFuZCBiLlxuICAgIGMucHJldmlvdXMgPSBhLCBjLm5leHQgPSBiLCBhLm5leHQgPSBiLnByZXZpb3VzID0gYiA9IGM7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBuZXcgY2xvc2VzdCBjaXJjbGUgcGFpciB0byB0aGUgY2VudHJvaWQuXG4gICAgYWEgPSBzY29yZShhKTtcbiAgICB3aGlsZSAoKGMgPSBjLm5leHQpICE9PSBiKSB7XG4gICAgICBpZiAoKGNhID0gc2NvcmUoYykpIDwgYWEpIHtcbiAgICAgICAgYSA9IGMsIGFhID0gY2E7XG4gICAgICB9XG4gICAgfVxuICAgIGIgPSBhLm5leHQ7XG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBlbmNsb3NpbmcgY2lyY2xlIG9mIHRoZSBmcm9udCBjaGFpbi5cbiAgYSA9IFtiLl9dLCBjID0gYjsgd2hpbGUgKChjID0gYy5uZXh0KSAhPT0gYikgYS5wdXNoKGMuXyk7IGMgPSBlbmNsb3NlKGEpO1xuXG4gIC8vIFRyYW5zbGF0ZSB0aGUgY2lyY2xlcyB0byBwdXQgdGhlIGVuY2xvc2luZyBjaXJjbGUgYXJvdW5kIHRoZSBvcmlnaW4uXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGEgPSBjaXJjbGVzW2ldLCBhLnggLT0gYy54LCBhLnkgLT0gYy55O1xuXG4gIHJldHVybiBjLnI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNpcmNsZXMpIHtcbiAgcGFja0VuY2xvc2UoY2lyY2xlcyk7XG4gIHJldHVybiBjaXJjbGVzO1xufVxuIiwiaW1wb3J0IHJvdW5kTm9kZSBmcm9tIFwiLi90cmVlbWFwL3JvdW5kXCI7XG5pbXBvcnQgdHJlZW1hcERpY2UgZnJvbSBcIi4vdHJlZW1hcC9kaWNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgcGFkZGluZyA9IDAsXG4gICAgICByb3VuZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHBhcnRpdGlvbihyb290KSB7XG4gICAgdmFyIG4gPSByb290LmhlaWdodCArIDE7XG4gICAgcm9vdC54MCA9XG4gICAgcm9vdC55MCA9IHBhZGRpbmc7XG4gICAgcm9vdC54MSA9IGR4O1xuICAgIHJvb3QueTEgPSBkeSAvIG47XG4gICAgcm9vdC5lYWNoQmVmb3JlKHBvc2l0aW9uTm9kZShkeSwgbikpO1xuICAgIGlmIChyb3VuZCkgcm9vdC5lYWNoQmVmb3JlKHJvdW5kTm9kZSk7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBmdW5jdGlvbiBwb3NpdGlvbk5vZGUoZHksIG4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgdHJlZW1hcERpY2Uobm9kZSwgbm9kZS54MCwgZHkgKiAobm9kZS5kZXB0aCArIDEpIC8gbiwgbm9kZS54MSwgZHkgKiAobm9kZS5kZXB0aCArIDIpIC8gbik7XG4gICAgICB9XG4gICAgICB2YXIgeDAgPSBub2RlLngwLFxuICAgICAgICAgIHkwID0gbm9kZS55MCxcbiAgICAgICAgICB4MSA9IG5vZGUueDEgLSBwYWRkaW5nLFxuICAgICAgICAgIHkxID0gbm9kZS55MSAtIHBhZGRpbmc7XG4gICAgICBpZiAoeDEgPCB4MCkgeDAgPSB4MSA9ICh4MCArIHgxKSAvIDI7XG4gICAgICBpZiAoeTEgPCB5MCkgeTAgPSB5MSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBub2RlLngwID0geDA7XG4gICAgICBub2RlLnkwID0geTA7XG4gICAgICBub2RlLngxID0geDE7XG4gICAgICBub2RlLnkxID0geTE7XG4gICAgfTtcbiAgfVxuXG4gIHBhcnRpdGlvbi5yb3VuZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyb3VuZCA9ICEheCwgcGFydGl0aW9uKSA6IHJvdW5kO1xuICB9O1xuXG4gIHBhcnRpdGlvbi5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHBhcnRpdGlvbikgOiBbZHgsIGR5XTtcbiAgfTtcblxuICBwYXJ0aXRpb24ucGFkZGluZyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nID0gK3gsIHBhcnRpdGlvbikgOiBwYWRkaW5nO1xuICB9O1xuXG4gIHJldHVybiBwYXJ0aXRpb247XG59XG4iLCJpbXBvcnQge3JlcXVpcmVkfSBmcm9tIFwiLi9hY2Nlc3NvcnNcIjtcbmltcG9ydCB7Tm9kZSwgY29tcHV0ZUhlaWdodH0gZnJvbSBcIi4vaGllcmFyY2h5L2luZGV4XCI7XG5cbnZhciBrZXlQcmVmaXggPSBcIiRcIiwgLy8gUHJvdGVjdCBhZ2FpbnN0IGtleXMgbGlrZSDigJxfX3Byb3RvX1/igJ0uXG4gICAgcHJlcm9vdCA9IHtkZXB0aDogLTF9LFxuICAgIGFtYmlndW91cyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZhdWx0SWQoZCkge1xuICByZXR1cm4gZC5pZDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFBhcmVudElkKGQpIHtcbiAgcmV0dXJuIGQucGFyZW50SWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgaWQgPSBkZWZhdWx0SWQsXG4gICAgICBwYXJlbnRJZCA9IGRlZmF1bHRQYXJlbnRJZDtcblxuICBmdW5jdGlvbiBzdHJhdGlmeShkYXRhKSB7XG4gICAgdmFyIGQsXG4gICAgICAgIGksXG4gICAgICAgIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBub2RlLFxuICAgICAgICBub2RlcyA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgbm9kZUlkLFxuICAgICAgICBub2RlS2V5LFxuICAgICAgICBub2RlQnlLZXkgPSB7fTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGQgPSBkYXRhW2ldLCBub2RlID0gbm9kZXNbaV0gPSBuZXcgTm9kZShkKTtcbiAgICAgIGlmICgobm9kZUlkID0gaWQoZCwgaSwgZGF0YSkpICE9IG51bGwgJiYgKG5vZGVJZCArPSBcIlwiKSkge1xuICAgICAgICBub2RlS2V5ID0ga2V5UHJlZml4ICsgKG5vZGUuaWQgPSBub2RlSWQpO1xuICAgICAgICBub2RlQnlLZXlbbm9kZUtleV0gPSBub2RlS2V5IGluIG5vZGVCeUtleSA/IGFtYmlndW91cyA6IG5vZGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlSWQgPSBwYXJlbnRJZChkYXRhW2ldLCBpLCBkYXRhKTtcbiAgICAgIGlmIChub2RlSWQgPT0gbnVsbCB8fCAhKG5vZGVJZCArPSBcIlwiKSkge1xuICAgICAgICBpZiAocm9vdCkgdGhyb3cgbmV3IEVycm9yKFwibXVsdGlwbGUgcm9vdHNcIik7XG4gICAgICAgIHJvb3QgPSBub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50ID0gbm9kZUJ5S2V5W2tleVByZWZpeCArIG5vZGVJZF07XG4gICAgICAgIGlmICghcGFyZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJtaXNzaW5nOiBcIiArIG5vZGVJZCk7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IGFtYmlndW91cykgdGhyb3cgbmV3IEVycm9yKFwiYW1iaWd1b3VzOiBcIiArIG5vZGVJZCk7XG4gICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICBlbHNlIHBhcmVudC5jaGlsZHJlbiA9IFtub2RlXTtcbiAgICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyb290KSB0aHJvdyBuZXcgRXJyb3IoXCJubyByb290XCIpO1xuICAgIHJvb3QucGFyZW50ID0gcHJlcm9vdDtcbiAgICByb290LmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkgeyBub2RlLmRlcHRoID0gbm9kZS5wYXJlbnQuZGVwdGggKyAxOyAtLW47IH0pLmVhY2hCZWZvcmUoY29tcHV0ZUhlaWdodCk7XG4gICAgcm9vdC5wYXJlbnQgPSBudWxsO1xuICAgIGlmIChuID4gMCkgdGhyb3cgbmV3IEVycm9yKFwiY3ljbGVcIik7XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIHN0cmF0aWZ5LmlkID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGlkID0gcmVxdWlyZWQoeCksIHN0cmF0aWZ5KSA6IGlkO1xuICB9O1xuXG4gIHN0cmF0aWZ5LnBhcmVudElkID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhcmVudElkID0gcmVxdWlyZWQoeCksIHN0cmF0aWZ5KSA6IHBhcmVudElkO1xuICB9O1xuXG4gIHJldHVybiBzdHJhdGlmeTtcbn1cbiIsImltcG9ydCB7Tm9kZX0gZnJvbSBcIi4vaGllcmFyY2h5L2luZGV4XCI7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXBhcmF0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEucGFyZW50ID09PSBiLnBhcmVudCA/IDEgOiAyO1xufVxuXG4vLyBmdW5jdGlvbiByYWRpYWxTZXBhcmF0aW9uKGEsIGIpIHtcbi8vICAgcmV0dXJuIChhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMikgLyBhLmRlcHRoO1xuLy8gfVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdHJhdmVyc2UgdGhlIGxlZnQgY29udG91ciBvZiBhIHN1YnRyZWUgKG9yXG4vLyBzdWJmb3Jlc3QpLiBJdCByZXR1cm5zIHRoZSBzdWNjZXNzb3Igb2YgdiBvbiB0aGlzIGNvbnRvdXIuIFRoaXMgc3VjY2Vzc29yIGlzXG4vLyBlaXRoZXIgZ2l2ZW4gYnkgdGhlIGxlZnRtb3N0IGNoaWxkIG9mIHYgb3IgYnkgdGhlIHRocmVhZCBvZiB2LiBUaGUgZnVuY3Rpb25cbi8vIHJldHVybnMgbnVsbCBpZiBhbmQgb25seSBpZiB2IGlzIG9uIHRoZSBoaWdoZXN0IGxldmVsIG9mIGl0cyBzdWJ0cmVlLlxuZnVuY3Rpb24gbmV4dExlZnQodikge1xuICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuO1xuICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlblswXSA6IHYudDtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiB3b3JrcyBhbmFsb2dvdXNseSB0byBuZXh0TGVmdC5cbmZ1bmN0aW9uIG5leHRSaWdodCh2KSB7XG4gIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW47XG4gIHJldHVybiBjaGlsZHJlbiA/IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdIDogdi50O1xufVxuXG4vLyBTaGlmdHMgdGhlIGN1cnJlbnQgc3VidHJlZSByb290ZWQgYXQgdysuIFRoaXMgaXMgZG9uZSBieSBpbmNyZWFzaW5nXG4vLyBwcmVsaW0odyspIGFuZCBtb2QodyspIGJ5IHNoaWZ0LlxuZnVuY3Rpb24gbW92ZVN1YnRyZWUod20sIHdwLCBzaGlmdCkge1xuICB2YXIgY2hhbmdlID0gc2hpZnQgLyAod3AuaSAtIHdtLmkpO1xuICB3cC5jIC09IGNoYW5nZTtcbiAgd3AucyArPSBzaGlmdDtcbiAgd20uYyArPSBjaGFuZ2U7XG4gIHdwLnogKz0gc2hpZnQ7XG4gIHdwLm0gKz0gc2hpZnQ7XG59XG5cbi8vIEFsbCBvdGhlciBzaGlmdHMsIGFwcGxpZWQgdG8gdGhlIHNtYWxsZXIgc3VidHJlZXMgYmV0d2VlbiB3LSBhbmQgdyssIGFyZVxuLy8gcGVyZm9ybWVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIHByZXBhcmUgdGhlIHNoaWZ0cywgd2UgaGF2ZSB0byBhZGp1c3Rcbi8vIGNoYW5nZSh3KyksIHNoaWZ0KHcrKSwgYW5kIGNoYW5nZSh3LSkuXG5mdW5jdGlvbiBleGVjdXRlU2hpZnRzKHYpIHtcbiAgdmFyIHNoaWZ0ID0gMCxcbiAgICAgIGNoYW5nZSA9IDAsXG4gICAgICBjaGlsZHJlbiA9IHYuY2hpbGRyZW4sXG4gICAgICBpID0gY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgdztcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgdyA9IGNoaWxkcmVuW2ldO1xuICAgIHcueiArPSBzaGlmdDtcbiAgICB3Lm0gKz0gc2hpZnQ7XG4gICAgc2hpZnQgKz0gdy5zICsgKGNoYW5nZSArPSB3LmMpO1xuICB9XG59XG5cbi8vIElmIHZpLeKAmXMgYW5jZXN0b3IgaXMgYSBzaWJsaW5nIG9mIHYsIHJldHVybnMgdmkt4oCZcyBhbmNlc3Rvci4gT3RoZXJ3aXNlLFxuLy8gcmV0dXJucyB0aGUgc3BlY2lmaWVkIChkZWZhdWx0KSBhbmNlc3Rvci5cbmZ1bmN0aW9uIG5leHRBbmNlc3Rvcih2aW0sIHYsIGFuY2VzdG9yKSB7XG4gIHJldHVybiB2aW0uYS5wYXJlbnQgPT09IHYucGFyZW50ID8gdmltLmEgOiBhbmNlc3Rvcjtcbn1cblxuZnVuY3Rpb24gVHJlZU5vZGUobm9kZSwgaSkge1xuICB0aGlzLl8gPSBub2RlO1xuICB0aGlzLnBhcmVudCA9IG51bGw7XG4gIHRoaXMuY2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLkEgPSBudWxsOyAvLyBkZWZhdWx0IGFuY2VzdG9yXG4gIHRoaXMuYSA9IHRoaXM7IC8vIGFuY2VzdG9yXG4gIHRoaXMueiA9IDA7IC8vIHByZWxpbVxuICB0aGlzLm0gPSAwOyAvLyBtb2RcbiAgdGhpcy5jID0gMDsgLy8gY2hhbmdlXG4gIHRoaXMucyA9IDA7IC8vIHNoaWZ0XG4gIHRoaXMudCA9IG51bGw7IC8vIHRocmVhZFxuICB0aGlzLmkgPSBpOyAvLyBudW1iZXJcbn1cblxuVHJlZU5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShOb2RlLnByb3RvdHlwZSk7XG5cbmZ1bmN0aW9uIHRyZWVSb290KHJvb3QpIHtcbiAgdmFyIHRyZWUgPSBuZXcgVHJlZU5vZGUocm9vdCwgMCksXG4gICAgICBub2RlLFxuICAgICAgbm9kZXMgPSBbdHJlZV0sXG4gICAgICBjaGlsZCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaSxcbiAgICAgIG47XG5cbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuXy5jaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IG5ldyBBcnJheShuID0gY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9IG4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXSA9IG5ldyBUcmVlTm9kZShjaGlsZHJlbltpXSwgaSkpO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICh0cmVlLnBhcmVudCA9IG5ldyBUcmVlTm9kZShudWxsLCAwKSkuY2hpbGRyZW4gPSBbdHJlZV07XG4gIHJldHVybiB0cmVlO1xufVxuXG4vLyBOb2RlLWxpbmsgdHJlZSBkaWFncmFtIHVzaW5nIHRoZSBSZWluZ29sZC1UaWxmb3JkIFwidGlkeVwiIGFsZ29yaXRobVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzZXBhcmF0aW9uID0gZGVmYXVsdFNlcGFyYXRpb24sXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBub2RlU2l6ZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gdHJlZShyb290KSB7XG4gICAgdmFyIHQgPSB0cmVlUm9vdChyb290KTtcblxuICAgIC8vIENvbXB1dGUgdGhlIGxheW91dCB1c2luZyBCdWNoaGVpbSBldCBhbC7igJlzIGFsZ29yaXRobS5cbiAgICB0LmVhY2hBZnRlcihmaXJzdFdhbGspLCB0LnBhcmVudC5tID0gLXQuejtcbiAgICB0LmVhY2hCZWZvcmUoc2Vjb25kV2Fsayk7XG5cbiAgICAvLyBJZiBhIGZpeGVkIG5vZGUgc2l6ZSBpcyBzcGVjaWZpZWQsIHNjYWxlIHggYW5kIHkuXG4gICAgaWYgKG5vZGVTaXplKSByb290LmVhY2hCZWZvcmUoc2l6ZU5vZGUpO1xuXG4gICAgLy8gSWYgYSBmaXhlZCB0cmVlIHNpemUgaXMgc3BlY2lmaWVkLCBzY2FsZSB4IGFuZCB5IGJhc2VkIG9uIHRoZSBleHRlbnQuXG4gICAgLy8gQ29tcHV0ZSB0aGUgbGVmdC1tb3N0LCByaWdodC1tb3N0LCBhbmQgZGVwdGgtbW9zdCBub2RlcyBmb3IgZXh0ZW50cy5cbiAgICBlbHNlIHtcbiAgICAgIHZhciBsZWZ0ID0gcm9vdCxcbiAgICAgICAgICByaWdodCA9IHJvb3QsXG4gICAgICAgICAgYm90dG9tID0gcm9vdDtcbiAgICAgIHJvb3QuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnggPCBsZWZ0LngpIGxlZnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZS54ID4gcmlnaHQueCkgcmlnaHQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZS5kZXB0aCA+IGJvdHRvbS5kZXB0aCkgYm90dG9tID0gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHMgPSBsZWZ0ID09PSByaWdodCA/IDEgOiBzZXBhcmF0aW9uKGxlZnQsIHJpZ2h0KSAvIDIsXG4gICAgICAgICAgdHggPSBzIC0gbGVmdC54LFxuICAgICAgICAgIGt4ID0gZHggLyAocmlnaHQueCArIHMgKyB0eCksXG4gICAgICAgICAga3kgPSBkeSAvIChib3R0b20uZGVwdGggfHwgMSk7XG4gICAgICByb290LmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBub2RlLnggPSAobm9kZS54ICsgdHgpICoga3g7XG4gICAgICAgIG5vZGUueSA9IG5vZGUuZGVwdGggKiBreTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgLy8gQ29tcHV0ZXMgYSBwcmVsaW1pbmFyeSB4LWNvb3JkaW5hdGUgZm9yIHYuIEJlZm9yZSB0aGF0LCBGSVJTVCBXQUxLIGlzXG4gIC8vIGFwcGxpZWQgcmVjdXJzaXZlbHkgdG8gdGhlIGNoaWxkcmVuIG9mIHYsIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9uXG4gIC8vIEFQUE9SVElPTi4gQWZ0ZXIgc3BhY2luZyBvdXQgdGhlIGNoaWxkcmVuIGJ5IGNhbGxpbmcgRVhFQ1VURSBTSElGVFMsIHRoZVxuICAvLyBub2RlIHYgaXMgcGxhY2VkIHRvIHRoZSBtaWRwb2ludCBvZiBpdHMgb3V0ZXJtb3N0IGNoaWxkcmVuLlxuICBmdW5jdGlvbiBmaXJzdFdhbGsodikge1xuICAgIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW4sXG4gICAgICAgIHNpYmxpbmdzID0gdi5wYXJlbnQuY2hpbGRyZW4sXG4gICAgICAgIHcgPSB2LmkgPyBzaWJsaW5nc1t2LmkgLSAxXSA6IG51bGw7XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICBleGVjdXRlU2hpZnRzKHYpO1xuICAgICAgdmFyIG1pZHBvaW50ID0gKGNoaWxkcmVuWzBdLnogKyBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS56KSAvIDI7XG4gICAgICBpZiAodykge1xuICAgICAgICB2LnogPSB3LnogKyBzZXBhcmF0aW9uKHYuXywgdy5fKTtcbiAgICAgICAgdi5tID0gdi56IC0gbWlkcG9pbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2LnogPSBtaWRwb2ludDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHcpIHtcbiAgICAgIHYueiA9IHcueiArIHNlcGFyYXRpb24odi5fLCB3Ll8pO1xuICAgIH1cbiAgICB2LnBhcmVudC5BID0gYXBwb3J0aW9uKHYsIHcsIHYucGFyZW50LkEgfHwgc2libGluZ3NbMF0pO1xuICB9XG5cbiAgLy8gQ29tcHV0ZXMgYWxsIHJlYWwgeC1jb29yZGluYXRlcyBieSBzdW1taW5nIHVwIHRoZSBtb2RpZmllcnMgcmVjdXJzaXZlbHkuXG4gIGZ1bmN0aW9uIHNlY29uZFdhbGsodikge1xuICAgIHYuXy54ID0gdi56ICsgdi5wYXJlbnQubTtcbiAgICB2Lm0gKz0gdi5wYXJlbnQubTtcbiAgfVxuXG4gIC8vIFRoZSBjb3JlIG9mIHRoZSBhbGdvcml0aG0uIEhlcmUsIGEgbmV3IHN1YnRyZWUgaXMgY29tYmluZWQgd2l0aCB0aGVcbiAgLy8gcHJldmlvdXMgc3VidHJlZXMuIFRocmVhZHMgYXJlIHVzZWQgdG8gdHJhdmVyc2UgdGhlIGluc2lkZSBhbmQgb3V0c2lkZVxuICAvLyBjb250b3VycyBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZSB1cCB0byB0aGUgaGlnaGVzdCBjb21tb24gbGV2ZWwuIFRoZVxuICAvLyB2ZXJ0aWNlcyB1c2VkIGZvciB0aGUgdHJhdmVyc2FscyBhcmUgdmkrLCB2aS0sIHZvLSwgYW5kIHZvKywgd2hlcmUgdGhlXG4gIC8vIHN1cGVyc2NyaXB0IG8gbWVhbnMgb3V0c2lkZSBhbmQgaSBtZWFucyBpbnNpZGUsIHRoZSBzdWJzY3JpcHQgLSBtZWFucyBsZWZ0XG4gIC8vIHN1YnRyZWUgYW5kICsgbWVhbnMgcmlnaHQgc3VidHJlZS4gRm9yIHN1bW1pbmcgdXAgdGhlIG1vZGlmaWVycyBhbG9uZyB0aGVcbiAgLy8gY29udG91ciwgd2UgdXNlIHJlc3BlY3RpdmUgdmFyaWFibGVzIHNpKywgc2ktLCBzby0sIGFuZCBzbysuIFdoZW5ldmVyIHR3b1xuICAvLyBub2RlcyBvZiB0aGUgaW5zaWRlIGNvbnRvdXJzIGNvbmZsaWN0LCB3ZSBjb21wdXRlIHRoZSBsZWZ0IG9uZSBvZiB0aGVcbiAgLy8gZ3JlYXRlc3QgdW5jb21tb24gYW5jZXN0b3JzIHVzaW5nIHRoZSBmdW5jdGlvbiBBTkNFU1RPUiBhbmQgY2FsbCBNT1ZFXG4gIC8vIFNVQlRSRUUgdG8gc2hpZnQgdGhlIHN1YnRyZWUgYW5kIHByZXBhcmUgdGhlIHNoaWZ0cyBvZiBzbWFsbGVyIHN1YnRyZWVzLlxuICAvLyBGaW5hbGx5LCB3ZSBhZGQgYSBuZXcgdGhyZWFkIChpZiBuZWNlc3NhcnkpLlxuICBmdW5jdGlvbiBhcHBvcnRpb24odiwgdywgYW5jZXN0b3IpIHtcbiAgICBpZiAodykge1xuICAgICAgdmFyIHZpcCA9IHYsXG4gICAgICAgICAgdm9wID0gdixcbiAgICAgICAgICB2aW0gPSB3LFxuICAgICAgICAgIHZvbSA9IHZpcC5wYXJlbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgc2lwID0gdmlwLm0sXG4gICAgICAgICAgc29wID0gdm9wLm0sXG4gICAgICAgICAgc2ltID0gdmltLm0sXG4gICAgICAgICAgc29tID0gdm9tLm0sXG4gICAgICAgICAgc2hpZnQ7XG4gICAgICB3aGlsZSAodmltID0gbmV4dFJpZ2h0KHZpbSksIHZpcCA9IG5leHRMZWZ0KHZpcCksIHZpbSAmJiB2aXApIHtcbiAgICAgICAgdm9tID0gbmV4dExlZnQodm9tKTtcbiAgICAgICAgdm9wID0gbmV4dFJpZ2h0KHZvcCk7XG4gICAgICAgIHZvcC5hID0gdjtcbiAgICAgICAgc2hpZnQgPSB2aW0ueiArIHNpbSAtIHZpcC56IC0gc2lwICsgc2VwYXJhdGlvbih2aW0uXywgdmlwLl8pO1xuICAgICAgICBpZiAoc2hpZnQgPiAwKSB7XG4gICAgICAgICAgbW92ZVN1YnRyZWUobmV4dEFuY2VzdG9yKHZpbSwgdiwgYW5jZXN0b3IpLCB2LCBzaGlmdCk7XG4gICAgICAgICAgc2lwICs9IHNoaWZ0O1xuICAgICAgICAgIHNvcCArPSBzaGlmdDtcbiAgICAgICAgfVxuICAgICAgICBzaW0gKz0gdmltLm07XG4gICAgICAgIHNpcCArPSB2aXAubTtcbiAgICAgICAgc29tICs9IHZvbS5tO1xuICAgICAgICBzb3AgKz0gdm9wLm07XG4gICAgICB9XG4gICAgICBpZiAodmltICYmICFuZXh0UmlnaHQodm9wKSkge1xuICAgICAgICB2b3AudCA9IHZpbTtcbiAgICAgICAgdm9wLm0gKz0gc2ltIC0gc29wO1xuICAgICAgfVxuICAgICAgaWYgKHZpcCAmJiAhbmV4dExlZnQodm9tKSkge1xuICAgICAgICB2b20udCA9IHZpcDtcbiAgICAgICAgdm9tLm0gKz0gc2lwIC0gc29tO1xuICAgICAgICBhbmNlc3RvciA9IHY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbmNlc3RvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNpemVOb2RlKG5vZGUpIHtcbiAgICBub2RlLnggKj0gZHg7XG4gICAgbm9kZS55ID0gbm9kZS5kZXB0aCAqIGR5O1xuICB9XG5cbiAgdHJlZS5zZXBhcmF0aW9uID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNlcGFyYXRpb24gPSB4LCB0cmVlKSA6IHNlcGFyYXRpb247XG4gIH07XG5cbiAgdHJlZS5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gZmFsc2UsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWUpIDogKG5vZGVTaXplID8gbnVsbCA6IFtkeCwgZHldKTtcbiAgfTtcblxuICB0cmVlLm5vZGVTaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gdHJ1ZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgdHJlZSkgOiAobm9kZVNpemUgPyBbZHgsIGR5XSA6IG51bGwpO1xuICB9O1xuXG4gIHJldHVybiB0cmVlO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4sXG4gICAgICBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgc3VtLCBzdW1zID0gbmV3IEFycmF5KG4gKyAxKTtcblxuICBmb3IgKHN1bXNbMF0gPSBzdW0gPSBpID0gMDsgaSA8IG47ICsraSkge1xuICAgIHN1bXNbaSArIDFdID0gc3VtICs9IG5vZGVzW2ldLnZhbHVlO1xuICB9XG5cbiAgcGFydGl0aW9uKDAsIG4sIHBhcmVudC52YWx1ZSwgeDAsIHkwLCB4MSwgeTEpO1xuXG4gIGZ1bmN0aW9uIHBhcnRpdGlvbihpLCBqLCB2YWx1ZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICBpZiAoaSA+PSBqIC0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIG5vZGUueDAgPSB4MCwgbm9kZS55MCA9IHkwO1xuICAgICAgbm9kZS54MSA9IHgxLCBub2RlLnkxID0geTE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlT2Zmc2V0ID0gc3Vtc1tpXSxcbiAgICAgICAgdmFsdWVUYXJnZXQgPSAodmFsdWUgLyAyKSArIHZhbHVlT2Zmc2V0LFxuICAgICAgICBrID0gaSArIDEsXG4gICAgICAgIGhpID0gaiAtIDE7XG5cbiAgICB3aGlsZSAoayA8IGhpKSB7XG4gICAgICB2YXIgbWlkID0gayArIGhpID4+PiAxO1xuICAgICAgaWYgKHN1bXNbbWlkXSA8IHZhbHVlVGFyZ2V0KSBrID0gbWlkICsgMTtcbiAgICAgIGVsc2UgaGkgPSBtaWQ7XG4gICAgfVxuXG4gICAgaWYgKCh2YWx1ZVRhcmdldCAtIHN1bXNbayAtIDFdKSA8IChzdW1zW2tdIC0gdmFsdWVUYXJnZXQpICYmIGkgKyAxIDwgaykgLS1rO1xuXG4gICAgdmFyIHZhbHVlTGVmdCA9IHN1bXNba10gLSB2YWx1ZU9mZnNldCxcbiAgICAgICAgdmFsdWVSaWdodCA9IHZhbHVlIC0gdmFsdWVMZWZ0O1xuXG4gICAgaWYgKCh4MSAtIHgwKSA+ICh5MSAtIHkwKSkge1xuICAgICAgdmFyIHhrID0gKHgwICogdmFsdWVSaWdodCArIHgxICogdmFsdWVMZWZ0KSAvIHZhbHVlO1xuICAgICAgcGFydGl0aW9uKGksIGssIHZhbHVlTGVmdCwgeDAsIHkwLCB4aywgeTEpO1xuICAgICAgcGFydGl0aW9uKGssIGosIHZhbHVlUmlnaHQsIHhrLCB5MCwgeDEsIHkxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHlrID0gKHkwICogdmFsdWVSaWdodCArIHkxICogdmFsdWVMZWZ0KSAvIHZhbHVlO1xuICAgICAgcGFydGl0aW9uKGksIGssIHZhbHVlTGVmdCwgeDAsIHkwLCB4MSwgeWspO1xuICAgICAgcGFydGl0aW9uKGssIGosIHZhbHVlUmlnaHQsIHgwLCB5aywgeDEsIHkxKTtcbiAgICB9XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgbm9kZSxcbiAgICAgIGkgPSAtMSxcbiAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBrID0gcGFyZW50LnZhbHVlICYmICh4MSAtIHgwKSAvIHBhcmVudC52YWx1ZTtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS55MCA9IHkwLCBub2RlLnkxID0geTE7XG4gICAgbm9kZS54MCA9IHgwLCBub2RlLngxID0geDAgKz0gbm9kZS52YWx1ZSAqIGs7XG4gIH1cbn1cbiIsImltcG9ydCByb3VuZE5vZGUgZnJvbSBcIi4vcm91bmRcIjtcbmltcG9ydCBzcXVhcmlmeSBmcm9tIFwiLi9zcXVhcmlmeVwiO1xuaW1wb3J0IHtyZXF1aXJlZH0gZnJvbSBcIi4uL2FjY2Vzc29yc1wiO1xuaW1wb3J0IGNvbnN0YW50LCB7Y29uc3RhbnRaZXJvfSBmcm9tIFwiLi4vY29uc3RhbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB0aWxlID0gc3F1YXJpZnksXG4gICAgICByb3VuZCA9IGZhbHNlLFxuICAgICAgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgcGFkZGluZ1N0YWNrID0gWzBdLFxuICAgICAgcGFkZGluZ0lubmVyID0gY29uc3RhbnRaZXJvLFxuICAgICAgcGFkZGluZ1RvcCA9IGNvbnN0YW50WmVybyxcbiAgICAgIHBhZGRpbmdSaWdodCA9IGNvbnN0YW50WmVybyxcbiAgICAgIHBhZGRpbmdCb3R0b20gPSBjb25zdGFudFplcm8sXG4gICAgICBwYWRkaW5nTGVmdCA9IGNvbnN0YW50WmVybztcblxuICBmdW5jdGlvbiB0cmVlbWFwKHJvb3QpIHtcbiAgICByb290LngwID1cbiAgICByb290LnkwID0gMDtcbiAgICByb290LngxID0gZHg7XG4gICAgcm9vdC55MSA9IGR5O1xuICAgIHJvb3QuZWFjaEJlZm9yZShwb3NpdGlvbk5vZGUpO1xuICAgIHBhZGRpbmdTdGFjayA9IFswXTtcbiAgICBpZiAocm91bmQpIHJvb3QuZWFjaEJlZm9yZShyb3VuZE5vZGUpO1xuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgZnVuY3Rpb24gcG9zaXRpb25Ob2RlKG5vZGUpIHtcbiAgICB2YXIgcCA9IHBhZGRpbmdTdGFja1tub2RlLmRlcHRoXSxcbiAgICAgICAgeDAgPSBub2RlLngwICsgcCxcbiAgICAgICAgeTAgPSBub2RlLnkwICsgcCxcbiAgICAgICAgeDEgPSBub2RlLngxIC0gcCxcbiAgICAgICAgeTEgPSBub2RlLnkxIC0gcDtcbiAgICBpZiAoeDEgPCB4MCkgeDAgPSB4MSA9ICh4MCArIHgxKSAvIDI7XG4gICAgaWYgKHkxIDwgeTApIHkwID0geTEgPSAoeTAgKyB5MSkgLyAyO1xuICAgIG5vZGUueDAgPSB4MDtcbiAgICBub2RlLnkwID0geTA7XG4gICAgbm9kZS54MSA9IHgxO1xuICAgIG5vZGUueTEgPSB5MTtcbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgcCA9IHBhZGRpbmdTdGFja1tub2RlLmRlcHRoICsgMV0gPSBwYWRkaW5nSW5uZXIobm9kZSkgLyAyO1xuICAgICAgeDAgKz0gcGFkZGluZ0xlZnQobm9kZSkgLSBwO1xuICAgICAgeTAgKz0gcGFkZGluZ1RvcChub2RlKSAtIHA7XG4gICAgICB4MSAtPSBwYWRkaW5nUmlnaHQobm9kZSkgLSBwO1xuICAgICAgeTEgLT0gcGFkZGluZ0JvdHRvbShub2RlKSAtIHA7XG4gICAgICBpZiAoeDEgPCB4MCkgeDAgPSB4MSA9ICh4MCArIHgxKSAvIDI7XG4gICAgICBpZiAoeTEgPCB5MCkgeTAgPSB5MSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICB0aWxlKG5vZGUsIHgwLCB5MCwgeDEsIHkxKTtcbiAgICB9XG4gIH1cblxuICB0cmVlbWFwLnJvdW5kID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJvdW5kID0gISF4LCB0cmVlbWFwKSA6IHJvdW5kO1xuICB9O1xuXG4gIHRyZWVtYXAuc2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCB0cmVlbWFwKSA6IFtkeCwgZHldO1xuICB9O1xuXG4gIHRyZWVtYXAudGlsZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWxlID0gcmVxdWlyZWQoeCksIHRyZWVtYXApIDogdGlsZTtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmcgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyB0cmVlbWFwLnBhZGRpbmdJbm5lcih4KS5wYWRkaW5nT3V0ZXIoeCkgOiB0cmVlbWFwLnBhZGRpbmdJbm5lcigpO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ0lubmVyID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdJbm5lciA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdJbm5lcjtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdPdXRlciA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRyZWVtYXAucGFkZGluZ1RvcCh4KS5wYWRkaW5nUmlnaHQoeCkucGFkZGluZ0JvdHRvbSh4KS5wYWRkaW5nTGVmdCh4KSA6IHRyZWVtYXAucGFkZGluZ1RvcCgpO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ1RvcCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nVG9wID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiBjb25zdGFudCgreCksIHRyZWVtYXApIDogcGFkZGluZ1RvcDtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdSaWdodCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nUmlnaHQgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgdHJlZW1hcCkgOiBwYWRkaW5nUmlnaHQ7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nQm90dG9tID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdCb3R0b20gPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgdHJlZW1hcCkgOiBwYWRkaW5nQm90dG9tO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ0xlZnQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0xlZnQgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgdHJlZW1hcCkgOiBwYWRkaW5nTGVmdDtcbiAgfTtcblxuICByZXR1cm4gdHJlZW1hcDtcbn1cbiIsImltcG9ydCB0cmVlbWFwRGljZSBmcm9tIFwiLi9kaWNlXCI7XG5pbXBvcnQgdHJlZW1hcFNsaWNlIGZyb20gXCIuL3NsaWNlXCI7XG5pbXBvcnQge3BoaSwgc3F1YXJpZnlSYXRpb30gZnJvbSBcIi4vc3F1YXJpZnlcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShyYXRpbykge1xuXG4gIGZ1bmN0aW9uIHJlc3F1YXJpZnkocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICAgIGlmICgocm93cyA9IHBhcmVudC5fc3F1YXJpZnkpICYmIChyb3dzLnJhdGlvID09PSByYXRpbykpIHtcbiAgICAgIHZhciByb3dzLFxuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBub2RlcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGogPSAtMSxcbiAgICAgICAgICBuLFxuICAgICAgICAgIG0gPSByb3dzLmxlbmd0aCxcbiAgICAgICAgICB2YWx1ZSA9IHBhcmVudC52YWx1ZTtcblxuICAgICAgd2hpbGUgKCsraiA8IG0pIHtcbiAgICAgICAgcm93ID0gcm93c1tqXSwgbm9kZXMgPSByb3cuY2hpbGRyZW47XG4gICAgICAgIGZvciAoaSA9IHJvdy52YWx1ZSA9IDAsIG4gPSBub2Rlcy5sZW5ndGg7IGkgPCBuOyArK2kpIHJvdy52YWx1ZSArPSBub2Rlc1tpXS52YWx1ZTtcbiAgICAgICAgaWYgKHJvdy5kaWNlKSB0cmVlbWFwRGljZShyb3csIHgwLCB5MCwgeDEsIHkwICs9ICh5MSAtIHkwKSAqIHJvdy52YWx1ZSAvIHZhbHVlKTtcbiAgICAgICAgZWxzZSB0cmVlbWFwU2xpY2Uocm93LCB4MCwgeTAsIHgwICs9ICh4MSAtIHgwKSAqIHJvdy52YWx1ZSAvIHZhbHVlLCB5MSk7XG4gICAgICAgIHZhbHVlIC09IHJvdy52YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50Ll9zcXVhcmlmeSA9IHJvd3MgPSBzcXVhcmlmeVJhdGlvKHJhdGlvLCBwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKTtcbiAgICAgIHJvd3MucmF0aW8gPSByYXRpbztcbiAgICB9XG4gIH1cblxuICByZXNxdWFyaWZ5LnJhdGlvID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBjdXN0b20oKHggPSAreCkgPiAxID8geCA6IDEpO1xuICB9O1xuXG4gIHJldHVybiByZXNxdWFyaWZ5O1xufSkocGhpKTtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgbm9kZS54MCA9IE1hdGgucm91bmQobm9kZS54MCk7XG4gIG5vZGUueTAgPSBNYXRoLnJvdW5kKG5vZGUueTApO1xuICBub2RlLngxID0gTWF0aC5yb3VuZChub2RlLngxKTtcbiAgbm9kZS55MSA9IE1hdGgucm91bmQobm9kZS55MSk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIG5vZGUsXG4gICAgICBpID0gLTEsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgayA9IHBhcmVudC52YWx1ZSAmJiAoeTEgLSB5MCkgLyBwYXJlbnQudmFsdWU7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueDAgPSB4MCwgbm9kZS54MSA9IHgxO1xuICAgIG5vZGUueTAgPSB5MCwgbm9kZS55MSA9IHkwICs9IG5vZGUudmFsdWUgKiBrO1xuICB9XG59XG4iLCJpbXBvcnQgZGljZSBmcm9tIFwiLi9kaWNlXCI7XG5pbXBvcnQgc2xpY2UgZnJvbSBcIi4vc2xpY2VcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICAocGFyZW50LmRlcHRoICYgMSA/IHNsaWNlIDogZGljZSkocGFyZW50LCB4MCwgeTAsIHgxLCB5MSk7XG59XG4iLCJpbXBvcnQgdHJlZW1hcERpY2UgZnJvbSBcIi4vZGljZVwiO1xuaW1wb3J0IHRyZWVtYXBTbGljZSBmcm9tIFwiLi9zbGljZVwiO1xuXG5leHBvcnQgdmFyIHBoaSA9ICgxICsgTWF0aC5zcXJ0KDUpKSAvIDI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmlmeVJhdGlvKHJhdGlvLCBwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciByb3dzID0gW10sXG4gICAgICBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIHJvdyxcbiAgICAgIG5vZGVWYWx1ZSxcbiAgICAgIGkwID0gMCxcbiAgICAgIGkxID0gMCxcbiAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBkeCwgZHksXG4gICAgICB2YWx1ZSA9IHBhcmVudC52YWx1ZSxcbiAgICAgIHN1bVZhbHVlLFxuICAgICAgbWluVmFsdWUsXG4gICAgICBtYXhWYWx1ZSxcbiAgICAgIG5ld1JhdGlvLFxuICAgICAgbWluUmF0aW8sXG4gICAgICBhbHBoYSxcbiAgICAgIGJldGE7XG5cbiAgd2hpbGUgKGkwIDwgbikge1xuICAgIGR4ID0geDEgLSB4MCwgZHkgPSB5MSAtIHkwO1xuXG4gICAgLy8gRmluZCB0aGUgbmV4dCBub24tZW1wdHkgbm9kZS5cbiAgICBkbyBzdW1WYWx1ZSA9IG5vZGVzW2kxKytdLnZhbHVlOyB3aGlsZSAoIXN1bVZhbHVlICYmIGkxIDwgbik7XG4gICAgbWluVmFsdWUgPSBtYXhWYWx1ZSA9IHN1bVZhbHVlO1xuICAgIGFscGhhID0gTWF0aC5tYXgoZHkgLyBkeCwgZHggLyBkeSkgLyAodmFsdWUgKiByYXRpbyk7XG4gICAgYmV0YSA9IHN1bVZhbHVlICogc3VtVmFsdWUgKiBhbHBoYTtcbiAgICBtaW5SYXRpbyA9IE1hdGgubWF4KG1heFZhbHVlIC8gYmV0YSwgYmV0YSAvIG1pblZhbHVlKTtcblxuICAgIC8vIEtlZXAgYWRkaW5nIG5vZGVzIHdoaWxlIHRoZSBhc3BlY3QgcmF0aW8gbWFpbnRhaW5zIG9yIGltcHJvdmVzLlxuICAgIGZvciAoOyBpMSA8IG47ICsraTEpIHtcbiAgICAgIHN1bVZhbHVlICs9IG5vZGVWYWx1ZSA9IG5vZGVzW2kxXS52YWx1ZTtcbiAgICAgIGlmIChub2RlVmFsdWUgPCBtaW5WYWx1ZSkgbWluVmFsdWUgPSBub2RlVmFsdWU7XG4gICAgICBpZiAobm9kZVZhbHVlID4gbWF4VmFsdWUpIG1heFZhbHVlID0gbm9kZVZhbHVlO1xuICAgICAgYmV0YSA9IHN1bVZhbHVlICogc3VtVmFsdWUgKiBhbHBoYTtcbiAgICAgIG5ld1JhdGlvID0gTWF0aC5tYXgobWF4VmFsdWUgLyBiZXRhLCBiZXRhIC8gbWluVmFsdWUpO1xuICAgICAgaWYgKG5ld1JhdGlvID4gbWluUmF0aW8pIHsgc3VtVmFsdWUgLT0gbm9kZVZhbHVlOyBicmVhazsgfVxuICAgICAgbWluUmF0aW8gPSBuZXdSYXRpbztcbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbiBhbmQgcmVjb3JkIHRoZSByb3cgb3JpZW50YXRpb24uXG4gICAgcm93cy5wdXNoKHJvdyA9IHt2YWx1ZTogc3VtVmFsdWUsIGRpY2U6IGR4IDwgZHksIGNoaWxkcmVuOiBub2Rlcy5zbGljZShpMCwgaTEpfSk7XG4gICAgaWYgKHJvdy5kaWNlKSB0cmVlbWFwRGljZShyb3csIHgwLCB5MCwgeDEsIHZhbHVlID8geTAgKz0gZHkgKiBzdW1WYWx1ZSAvIHZhbHVlIDogeTEpO1xuICAgIGVsc2UgdHJlZW1hcFNsaWNlKHJvdywgeDAsIHkwLCB2YWx1ZSA/IHgwICs9IGR4ICogc3VtVmFsdWUgLyB2YWx1ZSA6IHgxLCB5MSk7XG4gICAgdmFsdWUgLT0gc3VtVmFsdWUsIGkwID0gaTE7XG4gIH1cblxuICByZXR1cm4gcm93cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShyYXRpbykge1xuXG4gIGZ1bmN0aW9uIHNxdWFyaWZ5KHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICBzcXVhcmlmeVJhdGlvKHJhdGlvLCBwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKTtcbiAgfVxuXG4gIHNxdWFyaWZ5LnJhdGlvID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBjdXN0b20oKHggPSAreCkgPiAxID8geCA6IDEpO1xuICB9O1xuXG4gIHJldHVybiBzcXVhcmlmeTtcbn0pKHBoaSk7XG4iLCJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgbmIgPSBiID8gYi5sZW5ndGggOiAwLFxuICAgICAgbmEgPSBhID8gTWF0aC5taW4obmIsIGEubGVuZ3RoKSA6IDAsXG4gICAgICB4ID0gbmV3IEFycmF5KG5hKSxcbiAgICAgIGMgPSBuZXcgQXJyYXkobmIpLFxuICAgICAgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgeFtpXSA9IHZhbHVlKGFbaV0sIGJbaV0pO1xuICBmb3IgKDsgaSA8IG5iOyArK2kpIGNbaV0gPSBiW2ldO1xuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIGNbaV0gPSB4W2ldKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGJhc2lzKHQxLCB2MCwgdjEsIHYyLCB2Mykge1xuICB2YXIgdDIgPSB0MSAqIHQxLCB0MyA9IHQyICogdDE7XG4gIHJldHVybiAoKDEgLSAzICogdDEgKyAzICogdDIgLSB0MykgKiB2MFxuICAgICAgKyAoNCAtIDYgKiB0MiArIDMgKiB0MykgKiB2MVxuICAgICAgKyAoMSArIDMgKiB0MSArIDMgKiB0MiAtIDMgKiB0MykgKiB2MlxuICAgICAgKyB0MyAqIHYzKSAvIDY7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGggLSAxO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gdCA8PSAwID8gKHQgPSAwKSA6IHQgPj0gMSA/ICh0ID0gMSwgbiAtIDEpIDogTWF0aC5mbG9vcih0ICogbiksXG4gICAgICAgIHYxID0gdmFsdWVzW2ldLFxuICAgICAgICB2MiA9IHZhbHVlc1tpICsgMV0sXG4gICAgICAgIHYwID0gaSA+IDAgPyB2YWx1ZXNbaSAtIDFdIDogMiAqIHYxIC0gdjIsXG4gICAgICAgIHYzID0gaSA8IG4gLSAxID8gdmFsdWVzW2kgKyAyXSA6IDIgKiB2MiAtIHYxO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7YmFzaXN9IGZyb20gXCIuL2Jhc2lzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKCgodCAlPSAxKSA8IDAgPyArK3QgOiB0KSAqIG4pLFxuICAgICAgICB2MCA9IHZhbHVlc1soaSArIG4gLSAxKSAlIG5dLFxuICAgICAgICB2MSA9IHZhbHVlc1tpICUgbl0sXG4gICAgICAgIHYyID0gdmFsdWVzWyhpICsgMSkgJSBuXSxcbiAgICAgICAgdjMgPSB2YWx1ZXNbKGkgKyAyKSAlIG5dO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiIsImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBsaW5lYXIoYSwgZCkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICsgdCAqIGQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4cG9uZW50aWFsKGEsIGIsIHkpIHtcbiAgcmV0dXJuIGEgPSBNYXRoLnBvdyhhLCB5KSwgYiA9IE1hdGgucG93KGIsIHkpIC0gYSwgeSA9IDEgLyB5LCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KGEgKyB0ICogYiwgeSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodWUoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkID4gMTgwIHx8IGQgPCAtMTgwID8gZCAtIDM2MCAqIE1hdGgucm91bmQoZCAvIDM2MCkgOiBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2FtbWEoeSkge1xuICByZXR1cm4gKHkgPSAreSkgPT09IDEgPyBub2dhbW1hIDogZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBiIC0gYSA/IGV4cG9uZW50aWFsKGEsIGIsIHkpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vZ2FtbWEoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJpbXBvcnQge2N1YmVoZWxpeCBhcyBjb2xvckN1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yXCI7XG5cbmZ1bmN0aW9uIGN1YmVoZWxpeChodWUpIHtcbiAgcmV0dXJuIChmdW5jdGlvbiBjdWJlaGVsaXhHYW1tYSh5KSB7XG4gICAgeSA9ICt5O1xuXG4gICAgZnVuY3Rpb24gY3ViZWhlbGl4KHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBoID0gaHVlKChzdGFydCA9IGNvbG9yQ3ViZWhlbGl4KHN0YXJ0KSkuaCwgKGVuZCA9IGNvbG9yQ3ViZWhlbGl4KGVuZCkpLmgpLFxuICAgICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICAgIHN0YXJ0LnMgPSBzKHQpO1xuICAgICAgICBzdGFydC5sID0gbChNYXRoLnBvdyh0LCB5KSk7XG4gICAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjdWJlaGVsaXguZ2FtbWEgPSBjdWJlaGVsaXhHYW1tYTtcblxuICAgIHJldHVybiBjdWJlaGVsaXg7XG4gIH0pKDEpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdWJlaGVsaXgoaHVlKTtcbmV4cG9ydCB2YXIgY3ViZWhlbGl4TG9uZyA9IGN1YmVoZWxpeChjb2xvcik7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgLT0gYSwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSArIGIgKiB0KSwgZDtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBuID0gcmFuZ2UubGVuZ3RoO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiByYW5nZVtNYXRoLm1heCgwLCBNYXRoLm1pbihuIC0gMSwgTWF0aC5mbG9vcih0ICogbikpKV07XG4gIH07XG59XG4iLCJpbXBvcnQge2hjbCBhcyBjb2xvckhjbH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yXCI7XG5cbmZ1bmN0aW9uIGhjbChodWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckhjbChzdGFydCkpLmgsIChlbmQgPSBjb2xvckhjbChlbmQpKS5oKSxcbiAgICAgICAgYyA9IGNvbG9yKHN0YXJ0LmMsIGVuZC5jKSxcbiAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICBzdGFydC5jID0gYyh0KTtcbiAgICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgaGNsKGh1ZSk7XG5leHBvcnQgdmFyIGhjbExvbmcgPSBoY2woY29sb3IpO1xuIiwiaW1wb3J0IHtoc2wgYXMgY29sb3JIc2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvclwiO1xuXG5mdW5jdGlvbiBoc2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIc2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIc2woZW5kKSkuaCksXG4gICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQucyA9IHModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhzbChodWUpO1xuZXhwb3J0IHZhciBoc2xMb25nID0gaHNsKGNvbG9yKTtcbiIsImltcG9ydCB7aHVlfSBmcm9tIFwiLi9jb2xvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBpID0gaHVlKCthLCArYik7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHggPSBpKHQpO1xuICAgIHJldHVybiB4IC0gMzYwICogTWF0aC5mbG9vcih4IC8gMzYwKTtcbiAgfTtcbn1cbiIsImV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZX0gZnJvbSBcIi4vdmFsdWVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUFycmF5fSBmcm9tIFwiLi9hcnJheVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQmFzaXN9IGZyb20gXCIuL2Jhc2lzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCYXNpc0Nsb3NlZH0gZnJvbSBcIi4vYmFzaXNDbG9zZWRcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURhdGV9IGZyb20gXCIuL2RhdGVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURpc2NyZXRlfSBmcm9tIFwiLi9kaXNjcmV0ZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHVlfSBmcm9tIFwiLi9odWVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU51bWJlcn0gZnJvbSBcIi4vbnVtYmVyXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVPYmplY3R9IGZyb20gXCIuL29iamVjdFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUm91bmR9IGZyb20gXCIuL3JvdW5kXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVTdHJpbmd9IGZyb20gXCIuL3N0cmluZ1wiO1xuZXhwb3J0IHtpbnRlcnBvbGF0ZVRyYW5zZm9ybUNzcywgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmd9IGZyb20gXCIuL3RyYW5zZm9ybS9pbmRleFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlWm9vbX0gZnJvbSBcIi4vem9vbVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUmdiLCByZ2JCYXNpcyBhcyBpbnRlcnBvbGF0ZVJnYkJhc2lzLCByZ2JCYXNpc0Nsb3NlZCBhcyBpbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkfSBmcm9tIFwiLi9yZ2JcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUhzbCwgaHNsTG9uZyBhcyBpbnRlcnBvbGF0ZUhzbExvbmd9IGZyb20gXCIuL2hzbFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlTGFifSBmcm9tIFwiLi9sYWJcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUhjbCwgaGNsTG9uZyBhcyBpbnRlcnBvbGF0ZUhjbExvbmd9IGZyb20gXCIuL2hjbFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQ3ViZWhlbGl4LCBjdWJlaGVsaXhMb25nIGFzIGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZ30gZnJvbSBcIi4vY3ViZWhlbGl4XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGllY2V3aXNlfSBmcm9tIFwiLi9waWVjZXdpc2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBxdWFudGl6ZX0gZnJvbSBcIi4vcXVhbnRpemVcIjtcbiIsImltcG9ydCB7bGFiIGFzIGNvbG9yTGFifSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBjb2xvciBmcm9tIFwiLi9jb2xvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYWIoc3RhcnQsIGVuZCkge1xuICB2YXIgbCA9IGNvbG9yKChzdGFydCA9IGNvbG9yTGFiKHN0YXJ0KSkubCwgKGVuZCA9IGNvbG9yTGFiKGVuZCkpLmwpLFxuICAgICAgYSA9IGNvbG9yKHN0YXJ0LmEsIGVuZC5hKSxcbiAgICAgIGIgPSBjb2xvcihzdGFydC5iLCBlbmQuYiksXG4gICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgIHN0YXJ0LmEgPSBhKHQpO1xuICAgIHN0YXJ0LmIgPSBiKHQpO1xuICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gIH07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhID0gK2EsIGIgLT0gYSwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICsgYiAqIHQ7XG4gIH07XG59XG4iLCJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IHt9LFxuICAgICAgYyA9IHt9LFxuICAgICAgaztcblxuICBpZiAoYSA9PT0gbnVsbCB8fCB0eXBlb2YgYSAhPT0gXCJvYmplY3RcIikgYSA9IHt9O1xuICBpZiAoYiA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gXCJvYmplY3RcIikgYiA9IHt9O1xuXG4gIGZvciAoayBpbiBiKSB7XG4gICAgaWYgKGsgaW4gYSkge1xuICAgICAgaVtrXSA9IHZhbHVlKGFba10sIGJba10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjW2tdID0gYltrXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoayBpbiBpKSBjW2tdID0gaVtrXSh0KTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpZWNld2lzZShpbnRlcnBvbGF0ZSwgdmFsdWVzKSB7XG4gIHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGggLSAxLCB2ID0gdmFsdWVzWzBdLCBJID0gbmV3IEFycmF5KG4gPCAwID8gMCA6IG4pO1xuICB3aGlsZSAoaSA8IG4pIElbaV0gPSBpbnRlcnBvbGF0ZSh2LCB2ID0gdmFsdWVzWysraV0pO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDEsIE1hdGguZmxvb3IodCAqPSBuKSkpO1xuICAgIHJldHVybiBJW2ldKHQgLSBpKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGludGVycG9sYXRvciwgbikge1xuICB2YXIgc2FtcGxlcyA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHNhbXBsZXNbaV0gPSBpbnRlcnBvbGF0b3IoaSAvIChuIC0gMSkpO1xuICByZXR1cm4gc2FtcGxlcztcbn1cbiIsImltcG9ydCB7cmdiIGFzIGNvbG9yUmdifSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBiYXNpcyBmcm9tIFwiLi9iYXNpc1wiO1xuaW1wb3J0IGJhc2lzQ2xvc2VkIGZyb20gXCIuL2Jhc2lzQ2xvc2VkXCI7XG5pbXBvcnQgbm9nYW1tYSwge2dhbW1hfSBmcm9tIFwiLi9jb2xvclwiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gcmdiR2FtbWEoeSkge1xuICB2YXIgY29sb3IgPSBnYW1tYSh5KTtcblxuICBmdW5jdGlvbiByZ2Ioc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gY29sb3IoKHN0YXJ0ID0gY29sb3JSZ2Ioc3RhcnQpKS5yLCAoZW5kID0gY29sb3JSZ2IoZW5kKSkuciksXG4gICAgICAgIGcgPSBjb2xvcihzdGFydC5nLCBlbmQuZyksXG4gICAgICAgIGIgPSBjb2xvcihzdGFydC5iLCBlbmQuYiksXG4gICAgICAgIG9wYWNpdHkgPSBub2dhbW1hKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuciA9IHIodCk7XG4gICAgICBzdGFydC5nID0gZyh0KTtcbiAgICAgIHN0YXJ0LmIgPSBiKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cblxuICByZ2IuZ2FtbWEgPSByZ2JHYW1tYTtcblxuICByZXR1cm4gcmdiO1xufSkoMSk7XG5cbmZ1bmN0aW9uIHJnYlNwbGluZShzcGxpbmUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbG9ycykge1xuICAgIHZhciBuID0gY29sb3JzLmxlbmd0aCxcbiAgICAgICAgciA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgZyA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgYiA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgaSwgY29sb3I7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgY29sb3IgPSBjb2xvclJnYihjb2xvcnNbaV0pO1xuICAgICAgcltpXSA9IGNvbG9yLnIgfHwgMDtcbiAgICAgIGdbaV0gPSBjb2xvci5nIHx8IDA7XG4gICAgICBiW2ldID0gY29sb3IuYiB8fCAwO1xuICAgIH1cbiAgICByID0gc3BsaW5lKHIpO1xuICAgIGcgPSBzcGxpbmUoZyk7XG4gICAgYiA9IHNwbGluZShiKTtcbiAgICBjb2xvci5vcGFjaXR5ID0gMTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgY29sb3IuciA9IHIodCk7XG4gICAgICBjb2xvci5nID0gZyh0KTtcbiAgICAgIGNvbG9yLmIgPSBiKHQpO1xuICAgICAgcmV0dXJuIGNvbG9yICsgXCJcIjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIHJnYkJhc2lzID0gcmdiU3BsaW5lKGJhc2lzKTtcbmV4cG9ydCB2YXIgcmdiQmFzaXNDbG9zZWQgPSByZ2JTcGxpbmUoYmFzaXNDbG9zZWQpO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiIC09IGEsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChhICsgYiAqIHQpO1xuICB9O1xufVxuIiwiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXJcIjtcblxudmFyIHJlQSA9IC9bLStdPyg/OlxcZCtcXC4/XFxkKnxcXC4/XFxkKykoPzpbZUVdWy0rXT9cXGQrKT8vZyxcbiAgICByZUIgPSBuZXcgUmVnRXhwKHJlQS5zb3VyY2UsIFwiZ1wiKTtcblxuZnVuY3Rpb24gemVybyhiKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25lKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYih0KSArIFwiXCI7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGJpID0gcmVBLmxhc3RJbmRleCA9IHJlQi5sYXN0SW5kZXggPSAwLCAvLyBzY2FuIGluZGV4IGZvciBuZXh0IG51bWJlciBpbiBiXG4gICAgICBhbSwgLy8gY3VycmVudCBtYXRjaCBpbiBhXG4gICAgICBibSwgLy8gY3VycmVudCBtYXRjaCBpbiBiXG4gICAgICBicywgLy8gc3RyaW5nIHByZWNlZGluZyBjdXJyZW50IG51bWJlciBpbiBiLCBpZiBhbnlcbiAgICAgIGkgPSAtMSwgLy8gaW5kZXggaW4gc1xuICAgICAgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcblxuICAvLyBDb2VyY2UgaW5wdXRzIHRvIHN0cmluZ3MuXG4gIGEgPSBhICsgXCJcIiwgYiA9IGIgKyBcIlwiO1xuXG4gIC8vIEludGVycG9sYXRlIHBhaXJzIG9mIG51bWJlcnMgaW4gYSAmIGIuXG4gIHdoaWxlICgoYW0gPSByZUEuZXhlYyhhKSlcbiAgICAgICYmIChibSA9IHJlQi5leGVjKGIpKSkge1xuICAgIGlmICgoYnMgPSBibS5pbmRleCkgPiBiaSkgeyAvLyBhIHN0cmluZyBwcmVjZWRlcyB0aGUgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYnMgPSBiLnNsaWNlKGJpLCBicyk7XG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gICAgfVxuICAgIGlmICgoYW0gPSBhbVswXSkgPT09IChibSA9IGJtWzBdKSkgeyAvLyBudW1iZXJzIGluIGEgJiBiIG1hdGNoXG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBibTsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYm07XG4gICAgfSBlbHNlIHsgLy8gaW50ZXJwb2xhdGUgbm9uLW1hdGNoaW5nIG51bWJlcnNcbiAgICAgIHNbKytpXSA9IG51bGw7XG4gICAgICBxLnB1c2goe2k6IGksIHg6IG51bWJlcihhbSwgYm0pfSk7XG4gICAgfVxuICAgIGJpID0gcmVCLmxhc3RJbmRleDtcbiAgfVxuXG4gIC8vIEFkZCByZW1haW5zIG9mIGIuXG4gIGlmIChiaSA8IGIubGVuZ3RoKSB7XG4gICAgYnMgPSBiLnNsaWNlKGJpKTtcbiAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICBlbHNlIHNbKytpXSA9IGJzO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBvcHRpbWl6YXRpb24gZm9yIG9ubHkgYSBzaW5nbGUgbWF0Y2guXG4gIC8vIE90aGVyd2lzZSwgaW50ZXJwb2xhdGUgZWFjaCBvZiB0aGUgbnVtYmVycyBhbmQgcmVqb2luIHRoZSBzdHJpbmcuXG4gIHJldHVybiBzLmxlbmd0aCA8IDIgPyAocVswXVxuICAgICAgPyBvbmUocVswXS54KVxuICAgICAgOiB6ZXJvKGIpKVxuICAgICAgOiAoYiA9IHEubGVuZ3RoLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG87IGkgPCBiOyArK2kpIHNbKG8gPSBxW2ldKS5pXSA9IG8ueCh0KTtcbiAgICAgICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgICAgICB9KTtcbn1cbiIsInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIiwiaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyXCI7XG5pbXBvcnQge3BhcnNlQ3NzLCBwYXJzZVN2Z30gZnJvbSBcIi4vcGFyc2VcIjtcblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2UsIHB4Q29tbWEsIHB4UGFyZW4sIGRlZ1BhcmVuKSB7XG5cbiAgZnVuY3Rpb24gcG9wKHMpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPyBzLnBvcCgpICsgXCIgXCIgOiBcIlwiO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHhhLCB5YSwgeGIsIHliLCBzLCBxKSB7XG4gICAgaWYgKHhhICE9PSB4YiB8fCB5YSAhPT0geWIpIHtcbiAgICAgIHZhciBpID0gcy5wdXNoKFwidHJhbnNsYXRlKFwiLCBudWxsLCBweENvbW1hLCBudWxsLCBweFBhcmVuKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgfHwgeWIpIHtcbiAgICAgIHMucHVzaChcInRyYW5zbGF0ZShcIiArIHhiICsgcHhDb21tYSArIHliICsgcHhQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm90YXRlKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgaWYgKGEgLSBiID4gMTgwKSBiICs9IDM2MDsgZWxzZSBpZiAoYiAtIGEgPiAxODApIGEgKz0gMzYwOyAvLyBzaG9ydGVzdCBwYXRoXG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJyb3RhdGUoXCIgKyBiICsgZGVnUGFyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNrZXdYKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgcS5wdXNoKHtpOiBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2gocG9wKHMpICsgXCJzY2FsZShcIiwgbnVsbCwgXCIsXCIsIG51bGwsIFwiKVwiKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgIT09IDEgfHwgeWIgIT09IDEpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiICsgeGIgKyBcIixcIiArIHliICsgXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcbiAgICBhID0gcGFyc2UoYSksIGIgPSBwYXJzZShiKTtcbiAgICB0cmFuc2xhdGUoYS50cmFuc2xhdGVYLCBhLnRyYW5zbGF0ZVksIGIudHJhbnNsYXRlWCwgYi50cmFuc2xhdGVZLCBzLCBxKTtcbiAgICByb3RhdGUoYS5yb3RhdGUsIGIucm90YXRlLCBzLCBxKTtcbiAgICBza2V3WChhLnNrZXdYLCBiLnNrZXdYLCBzLCBxKTtcbiAgICBzY2FsZShhLnNjYWxlWCwgYS5zY2FsZVksIGIuc2NhbGVYLCBiLnNjYWxlWSwgcywgcSk7XG4gICAgYSA9IGIgPSBudWxsOyAvLyBnY1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgaSA9IC0xLCBuID0gcS5sZW5ndGgsIG87XG4gICAgICB3aGlsZSAoKytpIDwgbikgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtQ3NzID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VDc3MsIFwicHgsIFwiLCBcInB4KVwiLCBcImRlZylcIik7XG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VTdmcsIFwiLCBcIiwgXCIpXCIsIFwiKVwiKTtcbiIsImltcG9ydCBkZWNvbXBvc2UsIHtpZGVudGl0eX0gZnJvbSBcIi4vZGVjb21wb3NlXCI7XG5cbnZhciBjc3NOb2RlLFxuICAgIGNzc1Jvb3QsXG4gICAgY3NzVmlldyxcbiAgICBzdmdOb2RlO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDc3ModmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBcIm5vbmVcIikgcmV0dXJuIGlkZW50aXR5O1xuICBpZiAoIWNzc05vZGUpIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiRElWXCIpLCBjc3NSb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBjc3NWaWV3ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIGNzc05vZGUuc3R5bGUudHJhbnNmb3JtID0gdmFsdWU7XG4gIHZhbHVlID0gY3NzVmlldy5nZXRDb21wdXRlZFN0eWxlKGNzc1Jvb3QuYXBwZW5kQ2hpbGQoY3NzTm9kZSksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJ0cmFuc2Zvcm1cIik7XG4gIGNzc1Jvb3QucmVtb3ZlQ2hpbGQoY3NzTm9kZSk7XG4gIHZhbHVlID0gdmFsdWUuc2xpY2UoNywgLTEpLnNwbGl0KFwiLFwiKTtcbiAgcmV0dXJuIGRlY29tcG9zZSgrdmFsdWVbMF0sICt2YWx1ZVsxXSwgK3ZhbHVlWzJdLCArdmFsdWVbM10sICt2YWx1ZVs0XSwgK3ZhbHVlWzVdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3ZnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7XG4gIGlmICghc3ZnTm9kZSkgc3ZnTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwiZ1wiKTtcbiAgc3ZnTm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgdmFsdWUpO1xuICBpZiAoISh2YWx1ZSA9IHN2Z05vZGUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSkpIHJldHVybiBpZGVudGl0eTtcbiAgdmFsdWUgPSB2YWx1ZS5tYXRyaXg7XG4gIHJldHVybiBkZWNvbXBvc2UodmFsdWUuYSwgdmFsdWUuYiwgdmFsdWUuYywgdmFsdWUuZCwgdmFsdWUuZSwgdmFsdWUuZik7XG59XG4iLCJpbXBvcnQge2NvbG9yfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCByZ2IgZnJvbSBcIi4vcmdiXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4vYXJyYXlcIjtcbmltcG9ydCBkYXRlIGZyb20gXCIuL2RhdGVcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyXCI7XG5pbXBvcnQgb2JqZWN0IGZyb20gXCIuL29iamVjdFwiO1xuaW1wb3J0IHN0cmluZyBmcm9tIFwiLi9zdHJpbmdcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciB0ID0gdHlwZW9mIGIsIGM7XG4gIHJldHVybiBiID09IG51bGwgfHwgdCA9PT0gXCJib29sZWFuXCIgPyBjb25zdGFudChiKVxuICAgICAgOiAodCA9PT0gXCJudW1iZXJcIiA/IG51bWJlclxuICAgICAgOiB0ID09PSBcInN0cmluZ1wiID8gKChjID0gY29sb3IoYikpID8gKGIgPSBjLCByZ2IpIDogc3RyaW5nKVxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyByZ2JcbiAgICAgIDogYiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlXG4gICAgICA6IEFycmF5LmlzQXJyYXkoYikgPyBhcnJheVxuICAgICAgOiB0eXBlb2YgYi52YWx1ZU9mICE9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGIudG9TdHJpbmcgIT09IFwiZnVuY3Rpb25cIiB8fCBpc05hTihiKSA/IG9iamVjdFxuICAgICAgOiBudW1iZXIpKGEsIGIpO1xufVxuIiwidmFyIHJobyA9IE1hdGguU1FSVDIsXG4gICAgcmhvMiA9IDIsXG4gICAgcmhvNCA9IDQsXG4gICAgZXBzaWxvbjIgPSAxZS0xMjtcblxuZnVuY3Rpb24gY29zaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCh4KSkgKyAxIC8geCkgLyAyO1xufVxuXG5mdW5jdGlvbiBzaW5oKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSAtIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHRhbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoMiAqIHgpKSAtIDEpIC8gKHggKyAxKTtcbn1cblxuLy8gcDAgPSBbdXgwLCB1eTAsIHcwXVxuLy8gcDEgPSBbdXgxLCB1eTEsIHcxXVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocDAsIHAxKSB7XG4gIHZhciB1eDAgPSBwMFswXSwgdXkwID0gcDBbMV0sIHcwID0gcDBbMl0sXG4gICAgICB1eDEgPSBwMVswXSwgdXkxID0gcDFbMV0sIHcxID0gcDFbMl0sXG4gICAgICBkeCA9IHV4MSAtIHV4MCxcbiAgICAgIGR5ID0gdXkxIC0gdXkwLFxuICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeSxcbiAgICAgIGksXG4gICAgICBTO1xuXG4gIC8vIFNwZWNpYWwgY2FzZSBmb3IgdTAg4omFIHUxLlxuICBpZiAoZDIgPCBlcHNpbG9uMikge1xuICAgIFMgPSBNYXRoLmxvZyh3MSAvIHcwKSAvIHJobztcbiAgICBpID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdXgwICsgdCAqIGR4LFxuICAgICAgICB1eTAgKyB0ICogZHksXG4gICAgICAgIHcwICogTWF0aC5leHAocmhvICogdCAqIFMpXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYWwgY2FzZS5cbiAgZWxzZSB7XG4gICAgdmFyIGQxID0gTWF0aC5zcXJ0KGQyKSxcbiAgICAgICAgYjAgPSAodzEgKiB3MSAtIHcwICogdzAgKyByaG80ICogZDIpIC8gKDIgKiB3MCAqIHJobzIgKiBkMSksXG4gICAgICAgIGIxID0gKHcxICogdzEgLSB3MCAqIHcwIC0gcmhvNCAqIGQyKSAvICgyICogdzEgKiByaG8yICogZDEpLFxuICAgICAgICByMCA9IE1hdGgubG9nKE1hdGguc3FydChiMCAqIGIwICsgMSkgLSBiMCksXG4gICAgICAgIHIxID0gTWF0aC5sb2coTWF0aC5zcXJ0KGIxICogYjEgKyAxKSAtIGIxKTtcbiAgICBTID0gKHIxIC0gcjApIC8gcmhvO1xuICAgIGkgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgcyA9IHQgKiBTLFxuICAgICAgICAgIGNvc2hyMCA9IGNvc2gocjApLFxuICAgICAgICAgIHUgPSB3MCAvIChyaG8yICogZDEpICogKGNvc2hyMCAqIHRhbmgocmhvICogcyArIHIwKSAtIHNpbmgocjApKTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHV4MCArIHUgKiBkeCxcbiAgICAgICAgdXkwICsgdSAqIGR5LFxuICAgICAgICB3MCAqIGNvc2hyMCAvIGNvc2gocmhvICogcyArIHIwKVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBpLmR1cmF0aW9uID0gUyAqIDEwMDA7XG5cbiAgcmV0dXJuIGk7XG59XG4iLCJleHBvcnQge2RlZmF1bHQgYXMgcGF0aH0gZnJvbSBcIi4vcGF0aFwiO1xuIiwidmFyIHBpID0gTWF0aC5QSSxcbiAgICB0YXUgPSAyICogcGksXG4gICAgZXBzaWxvbiA9IDFlLTYsXG4gICAgdGF1RXBzaWxvbiA9IHRhdSAtIGVwc2lsb247XG5cbmZ1bmN0aW9uIFBhdGgoKSB7XG4gIHRoaXMuX3gwID0gdGhpcy5feTAgPSAvLyBzdGFydCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5feDEgPSB0aGlzLl95MSA9IG51bGw7IC8vIGVuZCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5fID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIG5ldyBQYXRoO1xufVxuXG5QYXRoLnByb3RvdHlwZSA9IHBhdGgucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogUGF0aCxcbiAgbW92ZVRvOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gwID0gdGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MCA9IHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl94MSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5feDEgPSB0aGlzLl94MCwgdGhpcy5feTEgPSB0aGlzLl95MDtcbiAgICAgIHRoaXMuXyArPSBcIlpcIjtcbiAgICB9XG4gIH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkxcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBxdWFkcmF0aWNDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gXCJRXCIgKyAoK3gxKSArIFwiLFwiICsgKCt5MSkgKyBcIixcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBiZXppZXJDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkNcIiArICgreDEpICsgXCIsXCIgKyAoK3kxKSArIFwiLFwiICsgKCt4MikgKyBcIixcIiArICgreTIpICsgXCIsXCIgKyAodGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MSA9ICt5KTtcbiAgfSxcbiAgYXJjVG86IGZ1bmN0aW9uKHgxLCB5MSwgeDIsIHkyLCByKSB7XG4gICAgeDEgPSAreDEsIHkxID0gK3kxLCB4MiA9ICt4MiwgeTIgPSAreTIsIHIgPSArcjtcbiAgICB2YXIgeDAgPSB0aGlzLl94MSxcbiAgICAgICAgeTAgPSB0aGlzLl95MSxcbiAgICAgICAgeDIxID0geDIgLSB4MSxcbiAgICAgICAgeTIxID0geTIgLSB5MSxcbiAgICAgICAgeDAxID0geDAgLSB4MSxcbiAgICAgICAgeTAxID0geTAgLSB5MSxcbiAgICAgICAgbDAxXzIgPSB4MDEgKiB4MDEgKyB5MDEgKiB5MDE7XG5cbiAgICAvLyBJcyB0aGUgcmFkaXVzIG5lZ2F0aXZlPyBFcnJvci5cbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1czogXCIgKyByKTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDEseTEpLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gxID0geDEpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MSk7XG4gICAgfVxuXG4gICAgLy8gT3IsIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4MCx5MCk/IERvIG5vdGhpbmcuXG4gICAgZWxzZSBpZiAoIShsMDFfMiA+IGVwc2lsb24pKTtcblxuICAgIC8vIE9yLCBhcmUgKHgwLHkwKSwgKHgxLHkxKSBhbmQgKHgyLHkyKSBjb2xsaW5lYXI/XG4gICAgLy8gRXF1aXZhbGVudGx5LCBpcyAoeDEseTEpIGNvaW5jaWRlbnQgd2l0aCAoeDIseTIpP1xuICAgIC8vIE9yLCBpcyB0aGUgcmFkaXVzIHplcm8/IExpbmUgdG8gKHgxLHkxKS5cbiAgICBlbHNlIGlmICghKE1hdGguYWJzKHkwMSAqIHgyMSAtIHkyMSAqIHgwMSkgPiBlcHNpbG9uKSB8fCAhcikge1xuICAgICAgdGhpcy5fICs9IFwiTFwiICsgKHRoaXMuX3gxID0geDEpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MSk7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCBkcmF3IGFuIGFyYyFcbiAgICBlbHNlIHtcbiAgICAgIHZhciB4MjAgPSB4MiAtIHgwLFxuICAgICAgICAgIHkyMCA9IHkyIC0geTAsXG4gICAgICAgICAgbDIxXzIgPSB4MjEgKiB4MjEgKyB5MjEgKiB5MjEsXG4gICAgICAgICAgbDIwXzIgPSB4MjAgKiB4MjAgKyB5MjAgKiB5MjAsXG4gICAgICAgICAgbDIxID0gTWF0aC5zcXJ0KGwyMV8yKSxcbiAgICAgICAgICBsMDEgPSBNYXRoLnNxcnQobDAxXzIpLFxuICAgICAgICAgIGwgPSByICogTWF0aC50YW4oKHBpIC0gTWF0aC5hY29zKChsMjFfMiArIGwwMV8yIC0gbDIwXzIpIC8gKDIgKiBsMjEgKiBsMDEpKSkgLyAyKSxcbiAgICAgICAgICB0MDEgPSBsIC8gbDAxLFxuICAgICAgICAgIHQyMSA9IGwgLyBsMjE7XG5cbiAgICAgIC8vIElmIHRoZSBzdGFydCB0YW5nZW50IGlzIG5vdCBjb2luY2lkZW50IHdpdGggKHgwLHkwKSwgbGluZSB0by5cbiAgICAgIGlmIChNYXRoLmFicyh0MDEgLSAxKSA+IGVwc2lsb24pIHtcbiAgICAgICAgdGhpcy5fICs9IFwiTFwiICsgKHgxICsgdDAxICogeDAxKSArIFwiLFwiICsgKHkxICsgdDAxICogeTAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fICs9IFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsMCxcIiArICgrKHkwMSAqIHgyMCA+IHgwMSAqIHkyMCkpICsgXCIsXCIgKyAodGhpcy5feDEgPSB4MSArIHQyMSAqIHgyMSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkxICsgdDIxICogeTIxKTtcbiAgICB9XG4gIH0sXG4gIGFyYzogZnVuY3Rpb24oeCwgeSwgciwgYTAsIGExLCBjY3cpIHtcbiAgICB4ID0gK3gsIHkgPSAreSwgciA9ICtyO1xuICAgIHZhciBkeCA9IHIgKiBNYXRoLmNvcyhhMCksXG4gICAgICAgIGR5ID0gciAqIE1hdGguc2luKGEwKSxcbiAgICAgICAgeDAgPSB4ICsgZHgsXG4gICAgICAgIHkwID0geSArIGR5LFxuICAgICAgICBjdyA9IDEgXiBjY3csXG4gICAgICAgIGRhID0gY2N3ID8gYTAgLSBhMSA6IGExIC0gYTA7XG5cbiAgICAvLyBJcyB0aGUgcmFkaXVzIG5lZ2F0aXZlPyBFcnJvci5cbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1czogXCIgKyByKTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDAseTApLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fICs9IFwiTVwiICsgeDAgKyBcIixcIiArIHkwO1xuICAgIH1cblxuICAgIC8vIE9yLCBpcyAoeDAseTApIG5vdCBjb2luY2lkZW50IHdpdGggdGhlIHByZXZpb3VzIHBvaW50PyBMaW5lIHRvICh4MCx5MCkuXG4gICAgZWxzZSBpZiAoTWF0aC5hYnModGhpcy5feDEgLSB4MCkgPiBlcHNpbG9uIHx8IE1hdGguYWJzKHRoaXMuX3kxIC0geTApID4gZXBzaWxvbikge1xuICAgICAgdGhpcy5fICs9IFwiTFwiICsgeDAgKyBcIixcIiArIHkwO1xuICAgIH1cblxuICAgIC8vIElzIHRoaXMgYXJjIGVtcHR5PyBXZeKAmXJlIGRvbmUuXG4gICAgaWYgKCFyKSByZXR1cm47XG5cbiAgICAvLyBEb2VzIHRoZSBhbmdsZSBnbyB0aGUgd3Jvbmcgd2F5PyBGbGlwIHRoZSBkaXJlY3Rpb24uXG4gICAgaWYgKGRhIDwgMCkgZGEgPSBkYSAlIHRhdSArIHRhdTtcblxuICAgIC8vIElzIHRoaXMgYSBjb21wbGV0ZSBjaXJjbGU/IERyYXcgdHdvIGFyY3MgdG8gY29tcGxldGUgdGhlIGNpcmNsZS5cbiAgICBpZiAoZGEgPiB0YXVFcHNpbG9uKSB7XG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwxLFwiICsgY3cgKyBcIixcIiArICh4IC0gZHgpICsgXCIsXCIgKyAoeSAtIGR5KSArIFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsMSxcIiArIGN3ICsgXCIsXCIgKyAodGhpcy5feDEgPSB4MCkgKyBcIixcIiArICh0aGlzLl95MSA9IHkwKTtcbiAgICB9XG5cbiAgICAvLyBJcyB0aGlzIGFyYyBub24tZW1wdHk/IERyYXcgYW4gYXJjIVxuICAgIGVsc2UgaWYgKGRhID4gZXBzaWxvbikge1xuICAgICAgdGhpcy5fICs9IFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsXCIgKyAoKyhkYSA+PSBwaSkpICsgXCIsXCIgKyBjdyArIFwiLFwiICsgKHRoaXMuX3gxID0geCArIHIgKiBNYXRoLmNvcyhhMSkpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5ICsgciAqIE1hdGguc2luKGExKSk7XG4gICAgfVxuICB9LFxuICByZWN0OiBmdW5jdGlvbih4LCB5LCB3LCBoKSB7XG4gICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gwID0gdGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MCA9IHRoaXMuX3kxID0gK3kpICsgXCJoXCIgKyAoK3cpICsgXCJ2XCIgKyAoK2gpICsgXCJoXCIgKyAoLXcpICsgXCJaXCI7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBwYXRoO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi9jcmVhdG9yXCI7XG5pbXBvcnQgc2VsZWN0IGZyb20gXCIuL3NlbGVjdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiBzZWxlY3QoY3JlYXRvcihuYW1lKS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpO1xufVxuIiwiaW1wb3J0IG5hbWVzcGFjZSBmcm9tIFwiLi9uYW1lc3BhY2VcIjtcbmltcG9ydCB7eGh0bWx9IGZyb20gXCIuL25hbWVzcGFjZXNcIjtcblxuZnVuY3Rpb24gY3JlYXRvckluaGVyaXQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGRvY3VtZW50ID0gdGhpcy5vd25lckRvY3VtZW50LFxuICAgICAgICB1cmkgPSB0aGlzLm5hbWVzcGFjZVVSSTtcbiAgICByZXR1cm4gdXJpID09PSB4aHRtbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJID09PSB4aHRtbFxuICAgICAgICA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSlcbiAgICAgICAgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModXJpLCBuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRvckZpeGVkKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKTtcbiAgcmV0dXJuIChmdWxsbmFtZS5sb2NhbFxuICAgICAgPyBjcmVhdG9yRml4ZWRcbiAgICAgIDogY3JlYXRvckluaGVyaXQpKGZ1bGxuYW1lKTtcbn1cbiIsImV4cG9ydCB7ZGVmYXVsdCBhcyBjcmVhdGV9IGZyb20gXCIuL2NyZWF0ZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNyZWF0b3J9IGZyb20gXCIuL2NyZWF0b3JcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBsb2NhbH0gZnJvbSBcIi4vbG9jYWxcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtYXRjaGVyfSBmcm9tIFwiLi9tYXRjaGVyXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbW91c2V9IGZyb20gXCIuL21vdXNlXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbmFtZXNwYWNlfSBmcm9tIFwiLi9uYW1lc3BhY2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBuYW1lc3BhY2VzfSBmcm9tIFwiLi9uYW1lc3BhY2VzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY2xpZW50UG9pbnR9IGZyb20gXCIuL3BvaW50XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2VsZWN0fSBmcm9tIFwiLi9zZWxlY3RcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZWxlY3RBbGx9IGZyb20gXCIuL3NlbGVjdEFsbFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdGlvbn0gZnJvbSBcIi4vc2VsZWN0aW9uL2luZGV4XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2VsZWN0b3J9IGZyb20gXCIuL3NlbGVjdG9yXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2VsZWN0b3JBbGx9IGZyb20gXCIuL3NlbGVjdG9yQWxsXCI7XG5leHBvcnQge3N0eWxlVmFsdWUgYXMgc3R5bGV9IGZyb20gXCIuL3NlbGVjdGlvbi9zdHlsZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRvdWNofSBmcm9tIFwiLi90b3VjaFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRvdWNoZXN9IGZyb20gXCIuL3RvdWNoZXNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3aW5kb3d9IGZyb20gXCIuL3dpbmRvd1wiO1xuZXhwb3J0IHtldmVudCwgY3VzdG9tRXZlbnR9IGZyb20gXCIuL3NlbGVjdGlvbi9vblwiO1xuIiwidmFyIG5leHRJZCA9IDA7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvY2FsKCkge1xuICByZXR1cm4gbmV3IExvY2FsO1xufVxuXG5mdW5jdGlvbiBMb2NhbCgpIHtcbiAgdGhpcy5fID0gXCJAXCIgKyAoKytuZXh0SWQpLnRvU3RyaW5nKDM2KTtcbn1cblxuTG9jYWwucHJvdG90eXBlID0gbG9jYWwucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogTG9jYWwsXG4gIGdldDogZnVuY3Rpb24obm9kZSkge1xuICAgIHZhciBpZCA9IHRoaXMuXztcbiAgICB3aGlsZSAoIShpZCBpbiBub2RlKSkgaWYgKCEobm9kZSA9IG5vZGUucGFyZW50Tm9kZSkpIHJldHVybjtcbiAgICByZXR1cm4gbm9kZVtpZF07XG4gIH0sXG4gIHNldDogZnVuY3Rpb24obm9kZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gbm9kZVt0aGlzLl9dID0gdmFsdWU7XG4gIH0sXG4gIHJlbW92ZTogZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiB0aGlzLl8gaW4gbm9kZSAmJiBkZWxldGUgbm9kZVt0aGlzLl9dO1xuICB9LFxuICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuXztcbiAgfVxufTtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn1cbiIsImltcG9ydCBzb3VyY2VFdmVudCBmcm9tIFwiLi9zb3VyY2VFdmVudFwiO1xuaW1wb3J0IHBvaW50IGZyb20gXCIuL3BvaW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdmFyIGV2ZW50ID0gc291cmNlRXZlbnQoKTtcbiAgaWYgKGV2ZW50LmNoYW5nZWRUb3VjaGVzKSBldmVudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICByZXR1cm4gcG9pbnQobm9kZSwgZXZlbnQpO1xufVxuIiwiaW1wb3J0IG5hbWVzcGFjZXMgZnJvbSBcIi4vbmFtZXNwYWNlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBwcmVmaXggPSBuYW1lICs9IFwiXCIsIGkgPSBwcmVmaXguaW5kZXhPZihcIjpcIik7XG4gIGlmIChpID49IDAgJiYgKHByZWZpeCA9IG5hbWUuc2xpY2UoMCwgaSkpICE9PSBcInhtbG5zXCIpIG5hbWUgPSBuYW1lLnNsaWNlKGkgKyAxKTtcbiAgcmV0dXJuIG5hbWVzcGFjZXMuaGFzT3duUHJvcGVydHkocHJlZml4KSA/IHtzcGFjZTogbmFtZXNwYWNlc1twcmVmaXhdLCBsb2NhbDogbmFtZX0gOiBuYW1lO1xufVxuIiwiZXhwb3J0IHZhciB4aHRtbCA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHN2ZzogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICB4aHRtbDogeGh0bWwsXG4gIHhsaW5rOiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcbiAgeG1sOiBcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLFxuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiXG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgZXZlbnQpIHtcbiAgdmFyIHN2ZyA9IG5vZGUub3duZXJTVkdFbGVtZW50IHx8IG5vZGU7XG5cbiAgaWYgKHN2Zy5jcmVhdGVTVkdQb2ludCkge1xuICAgIHZhciBwb2ludCA9IHN2Zy5jcmVhdGVTVkdQb2ludCgpO1xuICAgIHBvaW50LnggPSBldmVudC5jbGllbnRYLCBwb2ludC55ID0gZXZlbnQuY2xpZW50WTtcbiAgICBwb2ludCA9IHBvaW50Lm1hdHJpeFRyYW5zZm9ybShub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSk7XG4gICAgcmV0dXJuIFtwb2ludC54LCBwb2ludC55XTtcbiAgfVxuXG4gIHZhciByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIFtldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0IC0gbm9kZS5jbGllbnRMZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3AgLSBub2RlLmNsaWVudFRvcF07XG59XG4iLCJpbXBvcnQge1NlbGVjdGlvbiwgcm9vdH0gZnJvbSBcIi4vc2VsZWN0aW9uL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgID8gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpXV0sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKVxuICAgICAgOiBuZXcgU2VsZWN0aW9uKFtbc2VsZWN0b3JdXSwgcm9vdCk7XG59XG4iLCJpbXBvcnQge1NlbGVjdGlvbiwgcm9vdH0gZnJvbSBcIi4vc2VsZWN0aW9uL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgID8gbmV3IFNlbGVjdGlvbihbZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcildLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSlcbiAgICAgIDogbmV3IFNlbGVjdGlvbihbc2VsZWN0b3IgPT0gbnVsbCA/IFtdIDogc2VsZWN0b3JdLCByb290KTtcbn1cbiIsImltcG9ydCBjcmVhdG9yIGZyb20gXCIuLi9jcmVhdG9yXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZENoaWxkKGNyZWF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuLi9uYW1lc3BhY2VcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnROUyhmdWxsbmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdik7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBlbHNlIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgcmV0dXJuIGZ1bGxuYW1lLmxvY2FsXG4gICAgICAgID8gbm9kZS5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpXG4gICAgICAgIDogbm9kZS5nZXRBdHRyaWJ1dGUoZnVsbG5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyRnVuY3Rpb25OUyA6IGF0dHJGdW5jdGlvbilcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKSkoZnVsbG5hbWUsIHZhbHVlKSk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzWzBdO1xuICBhcmd1bWVudHNbMF0gPSB0aGlzO1xuICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdGhpcztcbn1cbiIsImZ1bmN0aW9uIGNsYXNzQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcudHJpbSgpLnNwbGl0KC9efFxccysvKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NMaXN0KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuY2xhc3NMaXN0IHx8IG5ldyBDbGFzc0xpc3Qobm9kZSk7XG59XG5cbmZ1bmN0aW9uIENsYXNzTGlzdChub2RlKSB7XG4gIHRoaXMuX25vZGUgPSBub2RlO1xuICB0aGlzLl9uYW1lcyA9IGNsYXNzQXJyYXkobm9kZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiKTtcbn1cblxuQ2xhc3NMaXN0LnByb3RvdHlwZSA9IHtcbiAgYWRkOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpIDwgMCkge1xuICAgICAgdGhpcy5fbmFtZXMucHVzaChuYW1lKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpID49IDApIHtcbiAgICAgIHRoaXMuX25hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgY29udGFpbnM6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjbGFzc2VkQWRkKG5vZGUsIG5hbWVzKSB7XG4gIHZhciBsaXN0ID0gY2xhc3NMaXN0KG5vZGUpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBsaXN0LmFkZChuYW1lc1tpXSk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRSZW1vdmUobm9kZSwgbmFtZXMpIHtcbiAgdmFyIGxpc3QgPSBjbGFzc0xpc3Qobm9kZSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgd2hpbGUgKCsraSA8IG4pIGxpc3QucmVtb3ZlKG5hbWVzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZFRydWUobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRBZGQodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRmFsc2UobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRSZW1vdmUodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRnVuY3Rpb24obmFtZXMsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAodmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKSA/IGNsYXNzZWRBZGQgOiBjbGFzc2VkUmVtb3ZlKSh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBuYW1lcyA9IGNsYXNzQXJyYXkobmFtZSArIFwiXCIpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBsaXN0ID0gY2xhc3NMaXN0KHRoaXMubm9kZSgpKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoIWxpc3QuY29udGFpbnMobmFtZXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjbGFzc2VkRnVuY3Rpb24gOiB2YWx1ZVxuICAgICAgPyBjbGFzc2VkVHJ1ZVxuICAgICAgOiBjbGFzc2VkRmFsc2UpKG5hbWVzLCB2YWx1ZSkpO1xufVxuIiwiZnVuY3Rpb24gc2VsZWN0aW9uX2Nsb25lU2hhbGxvdygpIHtcbiAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5jbG9uZU5vZGUoZmFsc2UpLCB0aGlzLm5leHRTaWJsaW5nKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uX2Nsb25lRGVlcCgpIHtcbiAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5jbG9uZU5vZGUodHJ1ZSksIHRoaXMubmV4dFNpYmxpbmcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkZWVwKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdChkZWVwID8gc2VsZWN0aW9uX2Nsb25lRGVlcCA6IHNlbGVjdGlvbl9jbG9uZVNoYWxsb3cpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5pbXBvcnQge0VudGVyTm9kZX0gZnJvbSBcIi4vZW50ZXJcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi4vY29uc3RhbnRcIjtcblxudmFyIGtleVByZWZpeCA9IFwiJFwiOyAvLyBQcm90ZWN0IGFnYWluc3Qga2V5cyBsaWtlIOKAnF9fcHJvdG9fX+KAnS5cblxuZnVuY3Rpb24gYmluZEluZGV4KHBhcmVudCwgZ3JvdXAsIGVudGVyLCB1cGRhdGUsIGV4aXQsIGRhdGEpIHtcbiAgdmFyIGkgPSAwLFxuICAgICAgbm9kZSxcbiAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuXG4gIC8vIFB1dCBhbnkgbm9uLW51bGwgbm9kZXMgdGhhdCBmaXQgaW50byB1cGRhdGUuXG4gIC8vIFB1dCBhbnkgbnVsbCBub2RlcyBpbnRvIGVudGVyLlxuICAvLyBQdXQgYW55IHJlbWFpbmluZyBkYXRhIGludG8gZW50ZXIuXG4gIGZvciAoOyBpIDwgZGF0YUxlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgbm9kZS5fX2RhdGFfXyA9IGRhdGFbaV07XG4gICAgICB1cGRhdGVbaV0gPSBub2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnRlcltpXSA9IG5ldyBFbnRlck5vZGUocGFyZW50LCBkYXRhW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBQdXQgYW55IG5vbi1udWxsIG5vZGVzIHRoYXQgZG9u4oCZdCBmaXQgaW50byBleGl0LlxuICBmb3IgKDsgaSA8IGdyb3VwTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICBleGl0W2ldID0gbm9kZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYmluZEtleShwYXJlbnQsIGdyb3VwLCBlbnRlciwgdXBkYXRlLCBleGl0LCBkYXRhLCBrZXkpIHtcbiAgdmFyIGksXG4gICAgICBub2RlLFxuICAgICAgbm9kZUJ5S2V5VmFsdWUgPSB7fSxcbiAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoLFxuICAgICAga2V5VmFsdWVzID0gbmV3IEFycmF5KGdyb3VwTGVuZ3RoKSxcbiAgICAgIGtleVZhbHVlO1xuXG4gIC8vIENvbXB1dGUgdGhlIGtleSBmb3IgZWFjaCBub2RlLlxuICAvLyBJZiBtdWx0aXBsZSBub2RlcyBoYXZlIHRoZSBzYW1lIGtleSwgdGhlIGR1cGxpY2F0ZXMgYXJlIGFkZGVkIHRvIGV4aXQuXG4gIGZvciAoaSA9IDA7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAga2V5VmFsdWVzW2ldID0ga2V5VmFsdWUgPSBrZXlQcmVmaXggKyBrZXkuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCk7XG4gICAgICBpZiAoa2V5VmFsdWUgaW4gbm9kZUJ5S2V5VmFsdWUpIHtcbiAgICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlQnlLZXlWYWx1ZVtrZXlWYWx1ZV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbXB1dGUgdGhlIGtleSBmb3IgZWFjaCBkYXR1bS5cbiAgLy8gSWYgdGhlcmUgYSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleSwgam9pbiBhbmQgYWRkIGl0IHRvIHVwZGF0ZS5cbiAgLy8gSWYgdGhlcmUgaXMgbm90IChvciB0aGUga2V5IGlzIGEgZHVwbGljYXRlKSwgYWRkIGl0IHRvIGVudGVyLlxuICBmb3IgKGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKSB7XG4gICAga2V5VmFsdWUgPSBrZXlQcmVmaXggKyBrZXkuY2FsbChwYXJlbnQsIGRhdGFbaV0sIGksIGRhdGEpO1xuICAgIGlmIChub2RlID0gbm9kZUJ5S2V5VmFsdWVba2V5VmFsdWVdKSB7XG4gICAgICB1cGRhdGVbaV0gPSBub2RlO1xuICAgICAgbm9kZS5fX2RhdGFfXyA9IGRhdGFbaV07XG4gICAgICBub2RlQnlLZXlWYWx1ZVtrZXlWYWx1ZV0gPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnRlcltpXSA9IG5ldyBFbnRlck5vZGUocGFyZW50LCBkYXRhW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgYW55IHJlbWFpbmluZyBub2RlcyB0aGF0IHdlcmUgbm90IGJvdW5kIHRvIGRhdGEgdG8gZXhpdC5cbiAgZm9yIChpID0gMDsgaSA8IGdyb3VwTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKG5vZGVCeUtleVZhbHVlW2tleVZhbHVlc1tpXV0gPT09IG5vZGUpKSB7XG4gICAgICBleGl0W2ldID0gbm9kZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZGF0YSA9IG5ldyBBcnJheSh0aGlzLnNpemUoKSksIGogPSAtMTtcbiAgICB0aGlzLmVhY2goZnVuY3Rpb24oZCkgeyBkYXRhWysral0gPSBkOyB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHZhciBiaW5kID0ga2V5ID8gYmluZEtleSA6IGJpbmRJbmRleCxcbiAgICAgIHBhcmVudHMgPSB0aGlzLl9wYXJlbnRzLFxuICAgICAgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdmFsdWUgPSBjb25zdGFudCh2YWx1ZSk7XG5cbiAgZm9yICh2YXIgbSA9IGdyb3Vwcy5sZW5ndGgsIHVwZGF0ZSA9IG5ldyBBcnJheShtKSwgZW50ZXIgPSBuZXcgQXJyYXkobSksIGV4aXQgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgdmFyIHBhcmVudCA9IHBhcmVudHNbal0sXG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW2pdLFxuICAgICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgICAgZGF0YSA9IHZhbHVlLmNhbGwocGFyZW50LCBwYXJlbnQgJiYgcGFyZW50Ll9fZGF0YV9fLCBqLCBwYXJlbnRzKSxcbiAgICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoLFxuICAgICAgICBlbnRlckdyb3VwID0gZW50ZXJbal0gPSBuZXcgQXJyYXkoZGF0YUxlbmd0aCksXG4gICAgICAgIHVwZGF0ZUdyb3VwID0gdXBkYXRlW2pdID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLFxuICAgICAgICBleGl0R3JvdXAgPSBleGl0W2pdID0gbmV3IEFycmF5KGdyb3VwTGVuZ3RoKTtcblxuICAgIGJpbmQocGFyZW50LCBncm91cCwgZW50ZXJHcm91cCwgdXBkYXRlR3JvdXAsIGV4aXRHcm91cCwgZGF0YSwga2V5KTtcblxuICAgIC8vIE5vdyBjb25uZWN0IHRoZSBlbnRlciBub2RlcyB0byB0aGVpciBmb2xsb3dpbmcgdXBkYXRlIG5vZGUsIHN1Y2ggdGhhdFxuICAgIC8vIGFwcGVuZENoaWxkIGNhbiBpbnNlcnQgdGhlIG1hdGVyaWFsaXplZCBlbnRlciBub2RlIGJlZm9yZSB0aGlzIG5vZGUsXG4gICAgLy8gcmF0aGVyIHRoYW4gYXQgdGhlIGVuZCBvZiB0aGUgcGFyZW50IG5vZGUuXG4gICAgZm9yICh2YXIgaTAgPSAwLCBpMSA9IDAsIHByZXZpb3VzLCBuZXh0OyBpMCA8IGRhdGFMZW5ndGg7ICsraTApIHtcbiAgICAgIGlmIChwcmV2aW91cyA9IGVudGVyR3JvdXBbaTBdKSB7XG4gICAgICAgIGlmIChpMCA+PSBpMSkgaTEgPSBpMCArIDE7XG4gICAgICAgIHdoaWxlICghKG5leHQgPSB1cGRhdGVHcm91cFtpMV0pICYmICsraTEgPCBkYXRhTGVuZ3RoKTtcbiAgICAgICAgcHJldmlvdXMuX25leHQgPSBuZXh0IHx8IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlID0gbmV3IFNlbGVjdGlvbih1cGRhdGUsIHBhcmVudHMpO1xuICB1cGRhdGUuX2VudGVyID0gZW50ZXI7XG4gIHVwZGF0ZS5fZXhpdCA9IGV4aXQ7XG4gIHJldHVybiB1cGRhdGU7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLnByb3BlcnR5KFwiX19kYXRhX19cIiwgdmFsdWUpXG4gICAgICA6IHRoaXMubm9kZSgpLl9fZGF0YV9fO1xufVxuIiwiaW1wb3J0IGRlZmF1bHRWaWV3IGZyb20gXCIuLi93aW5kb3dcIjtcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChub2RlLCB0eXBlLCBwYXJhbXMpIHtcbiAgdmFyIHdpbmRvdyA9IGRlZmF1bHRWaWV3KG5vZGUpLFxuICAgICAgZXZlbnQgPSB3aW5kb3cuQ3VzdG9tRXZlbnQ7XG5cbiAgaWYgKHR5cGVvZiBldmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZXZlbnQgPSBuZXcgZXZlbnQodHlwZSwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICBldmVudCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xuICAgIGlmIChwYXJhbXMpIGV2ZW50LmluaXRFdmVudCh0eXBlLCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUpLCBldmVudC5kZXRhaWwgPSBwYXJhbXMuZGV0YWlsO1xuICAgIGVsc2UgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gIH1cblxuICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaENvbnN0YW50KHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hGdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KHRoaXMsIHR5cGUsIHBhcmFtcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiB0aGlzLmVhY2goKHR5cGVvZiBwYXJhbXMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBkaXNwYXRjaEZ1bmN0aW9uXG4gICAgICA6IGRpc3BhdGNoQ29uc3RhbnQpKHR5cGUsIHBhcmFtcykpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIGogPSAwLCBtID0gZ3JvdXBzLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gMCwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkgY2FsbGJhY2suY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuICF0aGlzLm5vZGUoKTtcbn1cbiIsImltcG9ydCBzcGFyc2UgZnJvbSBcIi4vc3BhcnNlXCI7XG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2VudGVyIHx8IHRoaXMuX2dyb3Vwcy5tYXAoc3BhcnNlKSwgdGhpcy5fcGFyZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnRlck5vZGUocGFyZW50LCBkYXR1bSkge1xuICB0aGlzLm93bmVyRG9jdW1lbnQgPSBwYXJlbnQub3duZXJEb2N1bWVudDtcbiAgdGhpcy5uYW1lc3BhY2VVUkkgPSBwYXJlbnQubmFtZXNwYWNlVVJJO1xuICB0aGlzLl9uZXh0ID0gbnVsbDtcbiAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICB0aGlzLl9fZGF0YV9fID0gZGF0dW07XG59XG5cbkVudGVyTm9kZS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBFbnRlck5vZGUsXG4gIGFwcGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkgeyByZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgdGhpcy5fbmV4dCk7IH0sXG4gIGluc2VydEJlZm9yZTogZnVuY3Rpb24oY2hpbGQsIG5leHQpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIG5leHQpOyB9LFxuICBxdWVyeVNlbGVjdG9yOiBmdW5jdGlvbihzZWxlY3RvcikgeyByZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOyB9LFxuICBxdWVyeVNlbGVjdG9yQWxsOiBmdW5jdGlvbihzZWxlY3RvcikgeyByZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOyB9XG59O1xuIiwiaW1wb3J0IHNwYXJzZSBmcm9tIFwiLi9zcGFyc2VcIjtcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZXhpdCB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5pbXBvcnQgbWF0Y2hlciBmcm9tIFwiLi4vbWF0Y2hlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtYXRjaCkge1xuICBpZiAodHlwZW9mIG1hdGNoICE9PSBcImZ1bmN0aW9uXCIpIG1hdGNoID0gbWF0Y2hlcihtYXRjaCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzdWJncm91cCA9IHN1Ymdyb3Vwc1tqXSA9IFtdLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIG1hdGNoLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSB7XG4gICAgICAgIHN1Ymdyb3VwLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImZ1bmN0aW9uIGh0bWxSZW1vdmUoKSB7XG4gIHRoaXMuaW5uZXJIVE1MID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gaHRtbENvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlubmVySFRNTCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBodG1sRnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0aGlzLmlubmVySFRNTCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gaHRtbFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gaHRtbEZ1bmN0aW9uXG4gICAgICAgICAgOiBodG1sQ29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkuaW5uZXJIVE1MO1xufVxuIiwiaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdEFsbCBmcm9tIFwiLi9zZWxlY3RBbGxcIjtcbmltcG9ydCBzZWxlY3Rpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlclwiO1xuaW1wb3J0IHNlbGVjdGlvbl9kYXRhIGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCBzZWxlY3Rpb25fZW50ZXIgZnJvbSBcIi4vZW50ZXJcIjtcbmltcG9ydCBzZWxlY3Rpb25fZXhpdCBmcm9tIFwiLi9leGl0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX2pvaW4gZnJvbSBcIi4vam9pblwiO1xuaW1wb3J0IHNlbGVjdGlvbl9tZXJnZSBmcm9tIFwiLi9tZXJnZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9vcmRlciBmcm9tIFwiLi9vcmRlclwiO1xuaW1wb3J0IHNlbGVjdGlvbl9zb3J0IGZyb20gXCIuL3NvcnRcIjtcbmltcG9ydCBzZWxlY3Rpb25fY2FsbCBmcm9tIFwiLi9jYWxsXCI7XG5pbXBvcnQgc2VsZWN0aW9uX25vZGVzIGZyb20gXCIuL25vZGVzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX25vZGUgZnJvbSBcIi4vbm9kZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9zaXplIGZyb20gXCIuL3NpemVcIjtcbmltcG9ydCBzZWxlY3Rpb25fZW1wdHkgZnJvbSBcIi4vZW1wdHlcIjtcbmltcG9ydCBzZWxlY3Rpb25fZWFjaCBmcm9tIFwiLi9lYWNoXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2F0dHIgZnJvbSBcIi4vYXR0clwiO1xuaW1wb3J0IHNlbGVjdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9wcm9wZXJ0eSBmcm9tIFwiLi9wcm9wZXJ0eVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9jbGFzc2VkIGZyb20gXCIuL2NsYXNzZWRcIjtcbmltcG9ydCBzZWxlY3Rpb25fdGV4dCBmcm9tIFwiLi90ZXh0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX2h0bWwgZnJvbSBcIi4vaHRtbFwiO1xuaW1wb3J0IHNlbGVjdGlvbl9yYWlzZSBmcm9tIFwiLi9yYWlzZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9sb3dlciBmcm9tIFwiLi9sb3dlclwiO1xuaW1wb3J0IHNlbGVjdGlvbl9hcHBlbmQgZnJvbSBcIi4vYXBwZW5kXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2luc2VydCBmcm9tIFwiLi9pbnNlcnRcIjtcbmltcG9ydCBzZWxlY3Rpb25fcmVtb3ZlIGZyb20gXCIuL3JlbW92ZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9jbG9uZSBmcm9tIFwiLi9jbG9uZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9kYXR1bSBmcm9tIFwiLi9kYXR1bVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9vbiBmcm9tIFwiLi9vblwiO1xuaW1wb3J0IHNlbGVjdGlvbl9kaXNwYXRjaCBmcm9tIFwiLi9kaXNwYXRjaFwiO1xuXG5leHBvcnQgdmFyIHJvb3QgPSBbbnVsbF07XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3Rpb24oZ3JvdXBzLCBwYXJlbnRzKSB7XG4gIHRoaXMuX2dyb3VwcyA9IGdyb3VwcztcbiAgdGhpcy5fcGFyZW50cyA9IHBhcmVudHM7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSwgcm9vdCk7XG59XG5cblNlbGVjdGlvbi5wcm90b3R5cGUgPSBzZWxlY3Rpb24ucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogU2VsZWN0aW9uLFxuICBzZWxlY3Q6IHNlbGVjdGlvbl9zZWxlY3QsXG4gIHNlbGVjdEFsbDogc2VsZWN0aW9uX3NlbGVjdEFsbCxcbiAgZmlsdGVyOiBzZWxlY3Rpb25fZmlsdGVyLFxuICBkYXRhOiBzZWxlY3Rpb25fZGF0YSxcbiAgZW50ZXI6IHNlbGVjdGlvbl9lbnRlcixcbiAgZXhpdDogc2VsZWN0aW9uX2V4aXQsXG4gIGpvaW46IHNlbGVjdGlvbl9qb2luLFxuICBtZXJnZTogc2VsZWN0aW9uX21lcmdlLFxuICBvcmRlcjogc2VsZWN0aW9uX29yZGVyLFxuICBzb3J0OiBzZWxlY3Rpb25fc29ydCxcbiAgY2FsbDogc2VsZWN0aW9uX2NhbGwsXG4gIG5vZGVzOiBzZWxlY3Rpb25fbm9kZXMsXG4gIG5vZGU6IHNlbGVjdGlvbl9ub2RlLFxuICBzaXplOiBzZWxlY3Rpb25fc2l6ZSxcbiAgZW1wdHk6IHNlbGVjdGlvbl9lbXB0eSxcbiAgZWFjaDogc2VsZWN0aW9uX2VhY2gsXG4gIGF0dHI6IHNlbGVjdGlvbl9hdHRyLFxuICBzdHlsZTogc2VsZWN0aW9uX3N0eWxlLFxuICBwcm9wZXJ0eTogc2VsZWN0aW9uX3Byb3BlcnR5LFxuICBjbGFzc2VkOiBzZWxlY3Rpb25fY2xhc3NlZCxcbiAgdGV4dDogc2VsZWN0aW9uX3RleHQsXG4gIGh0bWw6IHNlbGVjdGlvbl9odG1sLFxuICByYWlzZTogc2VsZWN0aW9uX3JhaXNlLFxuICBsb3dlcjogc2VsZWN0aW9uX2xvd2VyLFxuICBhcHBlbmQ6IHNlbGVjdGlvbl9hcHBlbmQsXG4gIGluc2VydDogc2VsZWN0aW9uX2luc2VydCxcbiAgcmVtb3ZlOiBzZWxlY3Rpb25fcmVtb3ZlLFxuICBjbG9uZTogc2VsZWN0aW9uX2Nsb25lLFxuICBkYXR1bTogc2VsZWN0aW9uX2RhdHVtLFxuICBvbjogc2VsZWN0aW9uX29uLFxuICBkaXNwYXRjaDogc2VsZWN0aW9uX2Rpc3BhdGNoXG59O1xuXG5leHBvcnQgZGVmYXVsdCBzZWxlY3Rpb247XG4iLCJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi4vY3JlYXRvclwiO1xuaW1wb3J0IHNlbGVjdG9yIGZyb20gXCIuLi9zZWxlY3RvclwiO1xuXG5mdW5jdGlvbiBjb25zdGFudE51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBiZWZvcmUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKSxcbiAgICAgIHNlbGVjdCA9IGJlZm9yZSA9PSBudWxsID8gY29uc3RhbnROdWxsIDogdHlwZW9mIGJlZm9yZSA9PT0gXCJmdW5jdGlvblwiID8gYmVmb3JlIDogc2VsZWN0b3IoYmVmb3JlKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmluc2VydEJlZm9yZShjcmVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgc2VsZWN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgbnVsbCk7XG4gIH0pO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob25lbnRlciwgb251cGRhdGUsIG9uZXhpdCkge1xuICB2YXIgZW50ZXIgPSB0aGlzLmVudGVyKCksIHVwZGF0ZSA9IHRoaXMsIGV4aXQgPSB0aGlzLmV4aXQoKTtcbiAgZW50ZXIgPSB0eXBlb2Ygb25lbnRlciA9PT0gXCJmdW5jdGlvblwiID8gb25lbnRlcihlbnRlcikgOiBlbnRlci5hcHBlbmQob25lbnRlciArIFwiXCIpO1xuICBpZiAob251cGRhdGUgIT0gbnVsbCkgdXBkYXRlID0gb251cGRhdGUodXBkYXRlKTtcbiAgaWYgKG9uZXhpdCA9PSBudWxsKSBleGl0LnJlbW92ZSgpOyBlbHNlIG9uZXhpdChleGl0KTtcbiAgcmV0dXJuIGVudGVyICYmIHVwZGF0ZSA/IGVudGVyLm1lcmdlKHVwZGF0ZSkub3JkZXIoKSA6IHVwZGF0ZTtcbn1cbiIsImZ1bmN0aW9uIGxvd2VyKCkge1xuICBpZiAodGhpcy5wcmV2aW91c1NpYmxpbmcpIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcywgdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChsb3dlcik7XG59XG4iLCJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0aW9uKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzMCA9IHRoaXMuX2dyb3VwcywgZ3JvdXBzMSA9IHNlbGVjdGlvbi5fZ3JvdXBzLCBtMCA9IGdyb3VwczAubGVuZ3RoLCBtMSA9IGdyb3VwczEubGVuZ3RoLCBtID0gTWF0aC5taW4obTAsIG0xKSwgbWVyZ2VzID0gbmV3IEFycmF5KG0wKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cDAgPSBncm91cHMwW2pdLCBncm91cDEgPSBncm91cHMxW2pdLCBuID0gZ3JvdXAwLmxlbmd0aCwgbWVyZ2UgPSBtZXJnZXNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwMFtpXSB8fCBncm91cDFbaV0pIHtcbiAgICAgICAgbWVyZ2VbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBqIDwgbTA7ICsraikge1xuICAgIG1lcmdlc1tqXSA9IGdyb3VwczBbal07XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAobm9kZSkgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5vZGVzID0gbmV3IEFycmF5KHRoaXMuc2l6ZSgpKSwgaSA9IC0xO1xuICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7IG5vZGVzWysraV0gPSB0aGlzOyB9KTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwidmFyIGZpbHRlckV2ZW50cyA9IHt9O1xuXG5leHBvcnQgdmFyIGV2ZW50ID0gbnVsbDtcblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgaWYgKCEoXCJvbm1vdXNlZW50ZXJcIiBpbiBlbGVtZW50KSkge1xuICAgIGZpbHRlckV2ZW50cyA9IHttb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLCBtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCJ9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbHRlckNvbnRleHRMaXN0ZW5lcihsaXN0ZW5lciwgaW5kZXgsIGdyb3VwKSB7XG4gIGxpc3RlbmVyID0gY29udGV4dExpc3RlbmVyKGxpc3RlbmVyLCBpbmRleCwgZ3JvdXApO1xuICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICB2YXIgcmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgaWYgKCFyZWxhdGVkIHx8IChyZWxhdGVkICE9PSB0aGlzICYmICEocmVsYXRlZC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSAmIDgpKSkge1xuICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb250ZXh0TGlzdGVuZXIobGlzdGVuZXIsIGluZGV4LCBncm91cCkge1xuICByZXR1cm4gZnVuY3Rpb24oZXZlbnQxKSB7XG4gICAgdmFyIGV2ZW50MCA9IGV2ZW50OyAvLyBFdmVudHMgY2FuIGJlIHJlZW50cmFudCAoZS5nLiwgZm9jdXMpLlxuICAgIGV2ZW50ID0gZXZlbnQxO1xuICAgIHRyeSB7XG4gICAgICBsaXN0ZW5lci5jYWxsKHRoaXMsIHRoaXMuX19kYXRhX18sIGluZGV4LCBncm91cCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGV2ZW50ID0gZXZlbnQwO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzKSB7XG4gIHJldHVybiB0eXBlbmFtZXMudHJpbSgpLnNwbGl0KC9efFxccysvKS5tYXAoZnVuY3Rpb24odCkge1xuICAgIHZhciBuYW1lID0gXCJcIiwgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgbmFtZSA9IHQuc2xpY2UoaSArIDEpLCB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICByZXR1cm4ge3R5cGU6IHQsIG5hbWU6IG5hbWV9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25SZW1vdmUodHlwZW5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbjtcbiAgICBpZiAoIW9uKSByZXR1cm47XG4gICAgZm9yICh2YXIgaiA9IDAsIGkgPSAtMSwgbSA9IG9uLmxlbmd0aCwgbzsgaiA8IG07ICsraikge1xuICAgICAgaWYgKG8gPSBvbltqXSwgKCF0eXBlbmFtZS50eXBlIHx8IG8udHlwZSA9PT0gdHlwZW5hbWUudHlwZSkgJiYgby5uYW1lID09PSB0eXBlbmFtZS5uYW1lKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIsIG8uY2FwdHVyZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblsrK2ldID0gbztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCsraSkgb24ubGVuZ3RoID0gaTtcbiAgICBlbHNlIGRlbGV0ZSB0aGlzLl9fb247XG4gIH07XG59XG5cbmZ1bmN0aW9uIG9uQWRkKHR5cGVuYW1lLCB2YWx1ZSwgY2FwdHVyZSkge1xuICB2YXIgd3JhcCA9IGZpbHRlckV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0eXBlbmFtZS50eXBlKSA/IGZpbHRlckNvbnRleHRMaXN0ZW5lciA6IGNvbnRleHRMaXN0ZW5lcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKGQsIGksIGdyb3VwKSB7XG4gICAgdmFyIG9uID0gdGhpcy5fX29uLCBvLCBsaXN0ZW5lciA9IHdyYXAodmFsdWUsIGksIGdyb3VwKTtcbiAgICBpZiAob24pIGZvciAodmFyIGogPSAwLCBtID0gb24ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgICBpZiAoKG8gPSBvbltqXSkudHlwZSA9PT0gdHlwZW5hbWUudHlwZSAmJiBvLm5hbWUgPT09IHR5cGVuYW1lLm5hbWUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8udHlwZSwgby5saXN0ZW5lciwgby5jYXB0dXJlKTtcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKG8udHlwZSwgby5saXN0ZW5lciA9IGxpc3RlbmVyLCBvLmNhcHR1cmUgPSBjYXB0dXJlKTtcbiAgICAgICAgby52YWx1ZSA9IHZhbHVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcih0eXBlbmFtZS50eXBlLCBsaXN0ZW5lciwgY2FwdHVyZSk7XG4gICAgbyA9IHt0eXBlOiB0eXBlbmFtZS50eXBlLCBuYW1lOiB0eXBlbmFtZS5uYW1lLCB2YWx1ZTogdmFsdWUsIGxpc3RlbmVyOiBsaXN0ZW5lciwgY2FwdHVyZTogY2FwdHVyZX07XG4gICAgaWYgKCFvbikgdGhpcy5fX29uID0gW29dO1xuICAgIGVsc2Ugb24ucHVzaChvKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZW5hbWUsIHZhbHVlLCBjYXB0dXJlKSB7XG4gIHZhciB0eXBlbmFtZXMgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIpLCBpLCBuID0gdHlwZW5hbWVzLmxlbmd0aCwgdDtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgb24gPSB0aGlzLm5vZGUoKS5fX29uO1xuICAgIGlmIChvbikgZm9yICh2YXIgaiA9IDAsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGZvciAoaSA9IDAsIG8gPSBvbltqXTsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAoKHQgPSB0eXBlbmFtZXNbaV0pLnR5cGUgPT09IG8udHlwZSAmJiB0Lm5hbWUgPT09IG8ubmFtZSkge1xuICAgICAgICAgIHJldHVybiBvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIG9uID0gdmFsdWUgPyBvbkFkZCA6IG9uUmVtb3ZlO1xuICBpZiAoY2FwdHVyZSA9PSBudWxsKSBjYXB0dXJlID0gZmFsc2U7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHRoaXMuZWFjaChvbih0eXBlbmFtZXNbaV0sIHZhbHVlLCBjYXB0dXJlKSk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tRXZlbnQoZXZlbnQxLCBsaXN0ZW5lciwgdGhhdCwgYXJncykge1xuICB2YXIgZXZlbnQwID0gZXZlbnQ7XG4gIGV2ZW50MS5zb3VyY2VFdmVudCA9IGV2ZW50O1xuICBldmVudCA9IGV2ZW50MTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbGlzdGVuZXIuYXBwbHkodGhhdCwgYXJncyk7XG4gIH0gZmluYWxseSB7XG4gICAgZXZlbnQgPSBldmVudDA7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IC0xLCBtID0gZ3JvdXBzLmxlbmd0aDsgKytqIDwgbTspIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IGdyb3VwLmxlbmd0aCAtIDEsIG5leHQgPSBncm91cFtpXSwgbm9kZTsgLS1pID49IDA7KSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGlmIChuZXh0ICYmIG5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obmV4dCkgXiA0KSBuZXh0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIG5leHQpO1xuICAgICAgICBuZXh0ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsImZ1bmN0aW9uIHByb3BlcnR5UmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGRlbGV0ZSB0aGlzW25hbWVdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUNvbnN0YW50KG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzW25hbWVdID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5RnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAodiA9PSBudWxsKSBkZWxldGUgdGhpc1tuYW1lXTtcbiAgICBlbHNlIHRoaXNbbmFtZV0gPSB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDFcbiAgICAgID8gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyBwcm9wZXJ0eVJlbW92ZSA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBwcm9wZXJ0eUZ1bmN0aW9uXG4gICAgICAgICAgOiBwcm9wZXJ0eUNvbnN0YW50KShuYW1lLCB2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpW25hbWVdO1xufVxuIiwiZnVuY3Rpb24gcmFpc2UoKSB7XG4gIGlmICh0aGlzLm5leHRTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoKHJhaXNlKTtcbn1cbiIsImZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyZW1vdmUpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5pbXBvcnQgc2VsZWN0b3IgZnJvbSBcIi4uL3NlbGVjdG9yXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvcihzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIHN1Ym5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKHN1Ym5vZGUgPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpKSB7XG4gICAgICAgIGlmIChcIl9fZGF0YV9fXCIgaW4gbm9kZSkgc3Vibm9kZS5fX2RhdGFfXyA9IG5vZGUuX19kYXRhX187XG4gICAgICAgIHN1Ymdyb3VwW2ldID0gc3Vibm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5pbXBvcnQgc2VsZWN0b3JBbGwgZnJvbSBcIi4uL3NlbGVjdG9yQWxsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvckFsbChzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IFtdLCBwYXJlbnRzID0gW10sIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIHN1Ymdyb3Vwcy5wdXNoKHNlbGVjdC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSk7XG4gICAgICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzdWJncm91cHMsIHBhcmVudHMpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgeyArK3NpemU7IH0pO1xuICByZXR1cm4gc2l6ZTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIGlmICghY29tcGFyZSkgY29tcGFyZSA9IGFzY2VuZGluZztcblxuICBmdW5jdGlvbiBjb21wYXJlTm9kZShhLCBiKSB7XG4gICAgcmV0dXJuIGEgJiYgYiA/IGNvbXBhcmUoYS5fX2RhdGFfXywgYi5fX2RhdGFfXykgOiAhYSAtICFiO1xuICB9XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc29ydGdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc29ydGdyb3VwID0gc29ydGdyb3Vwc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc29ydGdyb3VwW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc29ydGdyb3VwLnNvcnQoY29tcGFyZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc29ydGdyb3VwcywgdGhpcy5fcGFyZW50cykub3JkZXIoKTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiBhID49IGIgPyAwIDogTmFOO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odXBkYXRlKSB7XG4gIHJldHVybiBuZXcgQXJyYXkodXBkYXRlLmxlbmd0aCk7XG59XG4iLCJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvd1wiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUNvbnN0YW50KG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gICAgZWxzZSB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHYsIHByaW9yaXR5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICAgID8gc3R5bGVSZW1vdmUgOiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBzdHlsZUZ1bmN0aW9uXG4gICAgICAgICAgICA6IHN0eWxlQ29uc3RhbnQpKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSlcbiAgICAgIDogc3R5bGVWYWx1ZSh0aGlzLm5vZGUoKSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZVZhbHVlKG5vZGUsIG5hbWUpIHtcbiAgcmV0dXJuIG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKVxuICAgICAgfHwgZGVmYXVsdFZpZXcobm9kZSkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xufVxuIiwiZnVuY3Rpb24gdGV4dFJlbW92ZSgpIHtcbiAgdGhpcy50ZXh0Q29udGVudCA9IFwiXCI7XG59XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdiA9PSBudWxsID8gXCJcIiA6IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyB0ZXh0UmVtb3ZlIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyB0ZXh0RnVuY3Rpb25cbiAgICAgICAgICA6IHRleHRDb25zdGFudCkodmFsdWUpKVxuICAgICAgOiB0aGlzLm5vZGUoKS50ZXh0Q29udGVudDtcbn1cbiIsImZ1bmN0aW9uIG5vbmUoKSB7fVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPT0gbnVsbCA/IG5vbmUgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgfTtcbn1cbiIsImZ1bmN0aW9uIGVtcHR5KCkge1xuICByZXR1cm4gW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBzZWxlY3RvciA9PSBudWxsID8gZW1wdHkgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7ZXZlbnR9IGZyb20gXCIuL3NlbGVjdGlvbi9vblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGN1cnJlbnQgPSBldmVudCwgc291cmNlO1xuICB3aGlsZSAoc291cmNlID0gY3VycmVudC5zb3VyY2VFdmVudCkgY3VycmVudCA9IHNvdXJjZTtcbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG4iLCJpbXBvcnQgc291cmNlRXZlbnQgZnJvbSBcIi4vc291cmNlRXZlbnRcIjtcbmltcG9ydCBwb2ludCBmcm9tIFwiLi9wb2ludFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlLCB0b3VjaGVzLCBpZGVudGlmaWVyKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykgaWRlbnRpZmllciA9IHRvdWNoZXMsIHRvdWNoZXMgPSBzb3VyY2VFdmVudCgpLmNoYW5nZWRUb3VjaGVzO1xuXG4gIGZvciAodmFyIGkgPSAwLCBuID0gdG91Y2hlcyA/IHRvdWNoZXMubGVuZ3RoIDogMCwgdG91Y2g7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKHRvdWNoID0gdG91Y2hlc1tpXSkuaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmV0dXJuIHBvaW50KG5vZGUsIHRvdWNoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCBzb3VyY2VFdmVudCBmcm9tIFwiLi9zb3VyY2VFdmVudFwiO1xuaW1wb3J0IHBvaW50IGZyb20gXCIuL3BvaW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIHRvdWNoZXMpIHtcbiAgaWYgKHRvdWNoZXMgPT0gbnVsbCkgdG91Y2hlcyA9IHNvdXJjZUV2ZW50KCkudG91Y2hlcztcblxuICBmb3IgKHZhciBpID0gMCwgbiA9IHRvdWNoZXMgPyB0b3VjaGVzLmxlbmd0aCA6IDAsIHBvaW50cyA9IG5ldyBBcnJheShuKTsgaSA8IG47ICsraSkge1xuICAgIHBvaW50c1tpXSA9IHBvaW50KG5vZGUsIHRvdWNoZXNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIChub2RlLm93bmVyRG9jdW1lbnQgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSAvLyBub2RlIGlzIGEgTm9kZVxuICAgICAgfHwgKG5vZGUuZG9jdW1lbnQgJiYgbm9kZSkgLy8gbm9kZSBpcyBhIFdpbmRvd1xuICAgICAgfHwgbm9kZS5kZWZhdWx0VmlldzsgLy8gbm9kZSBpcyBhIERvY3VtZW50XG59XG4iLCJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCB7YWJzLCBhY29zLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBoYWxmUGksIG1heCwgbWluLCBwaSwgc2luLCBzcXJ0LCB0YXV9IGZyb20gXCIuL21hdGhcIjtcblxuZnVuY3Rpb24gYXJjSW5uZXJSYWRpdXMoZCkge1xuICByZXR1cm4gZC5pbm5lclJhZGl1cztcbn1cblxuZnVuY3Rpb24gYXJjT3V0ZXJSYWRpdXMoZCkge1xuICByZXR1cm4gZC5vdXRlclJhZGl1cztcbn1cblxuZnVuY3Rpb24gYXJjU3RhcnRBbmdsZShkKSB7XG4gIHJldHVybiBkLnN0YXJ0QW5nbGU7XG59XG5cbmZ1bmN0aW9uIGFyY0VuZEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQuZW5kQW5nbGU7XG59XG5cbmZ1bmN0aW9uIGFyY1BhZEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQgJiYgZC5wYWRBbmdsZTsgLy8gTm90ZTogb3B0aW9uYWwhXG59XG5cbmZ1bmN0aW9uIGludGVyc2VjdCh4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgdmFyIHgxMCA9IHgxIC0geDAsIHkxMCA9IHkxIC0geTAsXG4gICAgICB4MzIgPSB4MyAtIHgyLCB5MzIgPSB5MyAtIHkyLFxuICAgICAgdCA9IHkzMiAqIHgxMCAtIHgzMiAqIHkxMDtcbiAgaWYgKHQgKiB0IDwgZXBzaWxvbikgcmV0dXJuO1xuICB0ID0gKHgzMiAqICh5MCAtIHkyKSAtIHkzMiAqICh4MCAtIHgyKSkgLyB0O1xuICByZXR1cm4gW3gwICsgdCAqIHgxMCwgeTAgKyB0ICogeTEwXTtcbn1cblxuLy8gQ29tcHV0ZSBwZXJwZW5kaWN1bGFyIG9mZnNldCBsaW5lIG9mIGxlbmd0aCByYy5cbi8vIGh0dHA6Ly9tYXRod29ybGQud29sZnJhbS5jb20vQ2lyY2xlLUxpbmVJbnRlcnNlY3Rpb24uaHRtbFxuZnVuY3Rpb24gY29ybmVyVGFuZ2VudHMoeDAsIHkwLCB4MSwgeTEsIHIxLCByYywgY3cpIHtcbiAgdmFyIHgwMSA9IHgwIC0geDEsXG4gICAgICB5MDEgPSB5MCAtIHkxLFxuICAgICAgbG8gPSAoY3cgPyByYyA6IC1yYykgLyBzcXJ0KHgwMSAqIHgwMSArIHkwMSAqIHkwMSksXG4gICAgICBveCA9IGxvICogeTAxLFxuICAgICAgb3kgPSAtbG8gKiB4MDEsXG4gICAgICB4MTEgPSB4MCArIG94LFxuICAgICAgeTExID0geTAgKyBveSxcbiAgICAgIHgxMCA9IHgxICsgb3gsXG4gICAgICB5MTAgPSB5MSArIG95LFxuICAgICAgeDAwID0gKHgxMSArIHgxMCkgLyAyLFxuICAgICAgeTAwID0gKHkxMSArIHkxMCkgLyAyLFxuICAgICAgZHggPSB4MTAgLSB4MTEsXG4gICAgICBkeSA9IHkxMCAtIHkxMSxcbiAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHksXG4gICAgICByID0gcjEgLSByYyxcbiAgICAgIEQgPSB4MTEgKiB5MTAgLSB4MTAgKiB5MTEsXG4gICAgICBkID0gKGR5IDwgMCA/IC0xIDogMSkgKiBzcXJ0KG1heCgwLCByICogciAqIGQyIC0gRCAqIEQpKSxcbiAgICAgIGN4MCA9IChEICogZHkgLSBkeCAqIGQpIC8gZDIsXG4gICAgICBjeTAgPSAoLUQgKiBkeCAtIGR5ICogZCkgLyBkMixcbiAgICAgIGN4MSA9IChEICogZHkgKyBkeCAqIGQpIC8gZDIsXG4gICAgICBjeTEgPSAoLUQgKiBkeCArIGR5ICogZCkgLyBkMixcbiAgICAgIGR4MCA9IGN4MCAtIHgwMCxcbiAgICAgIGR5MCA9IGN5MCAtIHkwMCxcbiAgICAgIGR4MSA9IGN4MSAtIHgwMCxcbiAgICAgIGR5MSA9IGN5MSAtIHkwMDtcblxuICAvLyBQaWNrIHRoZSBjbG9zZXIgb2YgdGhlIHR3byBpbnRlcnNlY3Rpb24gcG9pbnRzLlxuICAvLyBUT0RPIElzIHRoZXJlIGEgZmFzdGVyIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggaW50ZXJzZWN0aW9uIHRvIHVzZT9cbiAgaWYgKGR4MCAqIGR4MCArIGR5MCAqIGR5MCA+IGR4MSAqIGR4MSArIGR5MSAqIGR5MSkgY3gwID0gY3gxLCBjeTAgPSBjeTE7XG5cbiAgcmV0dXJuIHtcbiAgICBjeDogY3gwLFxuICAgIGN5OiBjeTAsXG4gICAgeDAxOiAtb3gsXG4gICAgeTAxOiAtb3ksXG4gICAgeDExOiBjeDAgKiAocjEgLyByIC0gMSksXG4gICAgeTExOiBjeTAgKiAocjEgLyByIC0gMSlcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBpbm5lclJhZGl1cyA9IGFyY0lubmVyUmFkaXVzLFxuICAgICAgb3V0ZXJSYWRpdXMgPSBhcmNPdXRlclJhZGl1cyxcbiAgICAgIGNvcm5lclJhZGl1cyA9IGNvbnN0YW50KDApLFxuICAgICAgcGFkUmFkaXVzID0gbnVsbCxcbiAgICAgIHN0YXJ0QW5nbGUgPSBhcmNTdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGUgPSBhcmNFbmRBbmdsZSxcbiAgICAgIHBhZEFuZ2xlID0gYXJjUGFkQW5nbGUsXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICBmdW5jdGlvbiBhcmMoKSB7XG4gICAgdmFyIGJ1ZmZlcixcbiAgICAgICAgcixcbiAgICAgICAgcjAgPSAraW5uZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgcjEgPSArb3V0ZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgYTAgPSBzdGFydEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLSBoYWxmUGksXG4gICAgICAgIGExID0gZW5kQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSAtIGhhbGZQaSxcbiAgICAgICAgZGEgPSBhYnMoYTEgLSBhMCksXG4gICAgICAgIGN3ID0gYTEgPiBhMDtcblxuICAgIGlmICghY29udGV4dCkgY29udGV4dCA9IGJ1ZmZlciA9IHBhdGgoKTtcblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBvdXRlciByYWRpdXMgaXMgYWx3YXlzIGxhcmdlciB0aGFuIHRoZSBpbm5lciByYWRpdXMuXG4gICAgaWYgKHIxIDwgcjApIHIgPSByMSwgcjEgPSByMCwgcjAgPSByO1xuXG4gICAgLy8gSXMgaXQgYSBwb2ludD9cbiAgICBpZiAoIShyMSA+IGVwc2lsb24pKSBjb250ZXh0Lm1vdmVUbygwLCAwKTtcblxuICAgIC8vIE9yIGlzIGl0IGEgY2lyY2xlIG9yIGFubnVsdXM/XG4gICAgZWxzZSBpZiAoZGEgPiB0YXUgLSBlcHNpbG9uKSB7XG4gICAgICBjb250ZXh0Lm1vdmVUbyhyMSAqIGNvcyhhMCksIHIxICogc2luKGEwKSk7XG4gICAgICBjb250ZXh0LmFyYygwLCAwLCByMSwgYTAsIGExLCAhY3cpO1xuICAgICAgaWYgKHIwID4gZXBzaWxvbikge1xuICAgICAgICBjb250ZXh0Lm1vdmVUbyhyMCAqIGNvcyhhMSksIHIwICogc2luKGExKSk7XG4gICAgICAgIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhMSwgYTAsIGN3KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPciBpcyBpdCBhIGNpcmN1bGFyIG9yIGFubnVsYXIgc2VjdG9yP1xuICAgIGVsc2Uge1xuICAgICAgdmFyIGEwMSA9IGEwLFxuICAgICAgICAgIGExMSA9IGExLFxuICAgICAgICAgIGEwMCA9IGEwLFxuICAgICAgICAgIGExMCA9IGExLFxuICAgICAgICAgIGRhMCA9IGRhLFxuICAgICAgICAgIGRhMSA9IGRhLFxuICAgICAgICAgIGFwID0gcGFkQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSAvIDIsXG4gICAgICAgICAgcnAgPSAoYXAgPiBlcHNpbG9uKSAmJiAocGFkUmFkaXVzID8gK3BhZFJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogc3FydChyMCAqIHIwICsgcjEgKiByMSkpLFxuICAgICAgICAgIHJjID0gbWluKGFicyhyMSAtIHIwKSAvIDIsICtjb3JuZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSksXG4gICAgICAgICAgcmMwID0gcmMsXG4gICAgICAgICAgcmMxID0gcmMsXG4gICAgICAgICAgdDAsXG4gICAgICAgICAgdDE7XG5cbiAgICAgIC8vIEFwcGx5IHBhZGRpbmc/IE5vdGUgdGhhdCBzaW5jZSByMSDiiaUgcjAsIGRhMSDiiaUgZGEwLlxuICAgICAgaWYgKHJwID4gZXBzaWxvbikge1xuICAgICAgICB2YXIgcDAgPSBhc2luKHJwIC8gcjAgKiBzaW4oYXApKSxcbiAgICAgICAgICAgIHAxID0gYXNpbihycCAvIHIxICogc2luKGFwKSk7XG4gICAgICAgIGlmICgoZGEwIC09IHAwICogMikgPiBlcHNpbG9uKSBwMCAqPSAoY3cgPyAxIDogLTEpLCBhMDAgKz0gcDAsIGExMCAtPSBwMDtcbiAgICAgICAgZWxzZSBkYTAgPSAwLCBhMDAgPSBhMTAgPSAoYTAgKyBhMSkgLyAyO1xuICAgICAgICBpZiAoKGRhMSAtPSBwMSAqIDIpID4gZXBzaWxvbikgcDEgKj0gKGN3ID8gMSA6IC0xKSwgYTAxICs9IHAxLCBhMTEgLT0gcDE7XG4gICAgICAgIGVsc2UgZGExID0gMCwgYTAxID0gYTExID0gKGEwICsgYTEpIC8gMjtcbiAgICAgIH1cblxuICAgICAgdmFyIHgwMSA9IHIxICogY29zKGEwMSksXG4gICAgICAgICAgeTAxID0gcjEgKiBzaW4oYTAxKSxcbiAgICAgICAgICB4MTAgPSByMCAqIGNvcyhhMTApLFxuICAgICAgICAgIHkxMCA9IHIwICogc2luKGExMCk7XG5cbiAgICAgIC8vIEFwcGx5IHJvdW5kZWQgY29ybmVycz9cbiAgICAgIGlmIChyYyA+IGVwc2lsb24pIHtcbiAgICAgICAgdmFyIHgxMSA9IHIxICogY29zKGExMSksXG4gICAgICAgICAgICB5MTEgPSByMSAqIHNpbihhMTEpLFxuICAgICAgICAgICAgeDAwID0gcjAgKiBjb3MoYTAwKSxcbiAgICAgICAgICAgIHkwMCA9IHIwICogc2luKGEwMCksXG4gICAgICAgICAgICBvYztcblxuICAgICAgICAvLyBSZXN0cmljdCB0aGUgY29ybmVyIHJhZGl1cyBhY2NvcmRpbmcgdG8gdGhlIHNlY3RvciBhbmdsZS5cbiAgICAgICAgaWYgKGRhIDw9IHRhdSAtIGVwc2lsb24gJiYgKG9jID0gaW50ZXJzZWN0KHgwMSwgeTAxLCB4MDAsIHkwMCwgeDExLCB5MTEsIHgxMCwgeTEwKSkpIHtcbiAgICAgICAgICB2YXIgYXggPSB4MDEgLSBvY1swXSxcbiAgICAgICAgICAgICAgYXkgPSB5MDEgLSBvY1sxXSxcbiAgICAgICAgICAgICAgYnggPSB4MTEgLSBvY1swXSxcbiAgICAgICAgICAgICAgYnkgPSB5MTEgLSBvY1sxXSxcbiAgICAgICAgICAgICAga2MgPSAxIC8gc2luKGFjb3MoKGF4ICogYnggKyBheSAqIGJ5KSAvIChzcXJ0KGF4ICogYXggKyBheSAqIGF5KSAqIHNxcnQoYnggKiBieCArIGJ5ICogYnkpKSkgLyAyKSxcbiAgICAgICAgICAgICAgbGMgPSBzcXJ0KG9jWzBdICogb2NbMF0gKyBvY1sxXSAqIG9jWzFdKTtcbiAgICAgICAgICByYzAgPSBtaW4ocmMsIChyMCAtIGxjKSAvIChrYyAtIDEpKTtcbiAgICAgICAgICByYzEgPSBtaW4ocmMsIChyMSAtIGxjKSAvIChrYyArIDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJcyB0aGUgc2VjdG9yIGNvbGxhcHNlZCB0byBhIGxpbmU/XG4gICAgICBpZiAoIShkYTEgPiBlcHNpbG9uKSkgY29udGV4dC5tb3ZlVG8oeDAxLCB5MDEpO1xuXG4gICAgICAvLyBEb2VzIHRoZSBzZWN0b3LigJlzIG91dGVyIHJpbmcgaGF2ZSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBlbHNlIGlmIChyYzEgPiBlcHNpbG9uKSB7XG4gICAgICAgIHQwID0gY29ybmVyVGFuZ2VudHMoeDAwLCB5MDAsIHgwMSwgeTAxLCByMSwgcmMxLCBjdyk7XG4gICAgICAgIHQxID0gY29ybmVyVGFuZ2VudHMoeDExLCB5MTEsIHgxMCwgeTEwLCByMSwgcmMxLCBjdyk7XG5cbiAgICAgICAgY29udGV4dC5tb3ZlVG8odDAuY3ggKyB0MC54MDEsIHQwLmN5ICsgdDAueTAxKTtcblxuICAgICAgICAvLyBIYXZlIHRoZSBjb3JuZXJzIG1lcmdlZD9cbiAgICAgICAgaWYgKHJjMSA8IHJjKSBjb250ZXh0LmFyYyh0MC5jeCwgdDAuY3ksIHJjMSwgYXRhbjIodDAueTAxLCB0MC54MDEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBkcmF3IHRoZSB0d28gY29ybmVycyBhbmQgdGhlIHJpbmcuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMxLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQwLnkxMSwgdDAueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByMSwgYXRhbjIodDAuY3kgKyB0MC55MTEsIHQwLmN4ICsgdDAueDExKSwgYXRhbjIodDEuY3kgKyB0MS55MTEsIHQxLmN4ICsgdDEueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYyh0MS5jeCwgdDEuY3ksIHJjMSwgYXRhbjIodDEueTExLCB0MS54MTEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3IgaXMgdGhlIG91dGVyIHJpbmcganVzdCBhIGNpcmN1bGFyIGFyYz9cbiAgICAgIGVsc2UgY29udGV4dC5tb3ZlVG8oeDAxLCB5MDEpLCBjb250ZXh0LmFyYygwLCAwLCByMSwgYTAxLCBhMTEsICFjdyk7XG5cbiAgICAgIC8vIElzIHRoZXJlIG5vIGlubmVyIHJpbmcsIGFuZCBpdOKAmXMgYSBjaXJjdWxhciBzZWN0b3I/XG4gICAgICAvLyBPciBwZXJoYXBzIGl04oCZcyBhbiBhbm51bGFyIHNlY3RvciBjb2xsYXBzZWQgZHVlIHRvIHBhZGRpbmc/XG4gICAgICBpZiAoIShyMCA+IGVwc2lsb24pIHx8ICEoZGEwID4gZXBzaWxvbikpIGNvbnRleHQubGluZVRvKHgxMCwgeTEwKTtcblxuICAgICAgLy8gRG9lcyB0aGUgc2VjdG9y4oCZcyBpbm5lciByaW5nIChvciBwb2ludCkgaGF2ZSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBlbHNlIGlmIChyYzAgPiBlcHNpbG9uKSB7XG4gICAgICAgIHQwID0gY29ybmVyVGFuZ2VudHMoeDEwLCB5MTAsIHgxMSwgeTExLCByMCwgLXJjMCwgY3cpO1xuICAgICAgICB0MSA9IGNvcm5lclRhbmdlbnRzKHgwMSwgeTAxLCB4MDAsIHkwMCwgcjAsIC1yYzAsIGN3KTtcblxuICAgICAgICBjb250ZXh0LmxpbmVUbyh0MC5jeCArIHQwLngwMSwgdDAuY3kgKyB0MC55MDEpO1xuXG4gICAgICAgIC8vIEhhdmUgdGhlIGNvcm5lcnMgbWVyZ2VkP1xuICAgICAgICBpZiAocmMwIDwgcmMpIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMwLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQxLnkwMSwgdDEueDAxKSwgIWN3KTtcblxuICAgICAgICAvLyBPdGhlcndpc2UsIGRyYXcgdGhlIHR3byBjb3JuZXJzIGFuZCB0aGUgcmluZy5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29udGV4dC5hcmModDAuY3gsIHQwLmN5LCByYzAsIGF0YW4yKHQwLnkwMSwgdDAueDAxKSwgYXRhbjIodDAueTExLCB0MC54MTEpLCAhY3cpO1xuICAgICAgICAgIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhdGFuMih0MC5jeSArIHQwLnkxMSwgdDAuY3ggKyB0MC54MTEpLCBhdGFuMih0MS5jeSArIHQxLnkxMSwgdDEuY3ggKyB0MS54MTEpLCBjdyk7XG4gICAgICAgICAgY29udGV4dC5hcmModDEuY3gsIHQxLmN5LCByYzAsIGF0YW4yKHQxLnkxMSwgdDEueDExKSwgYXRhbjIodDEueTAxLCB0MS54MDEpLCAhY3cpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9yIGlzIHRoZSBpbm5lciByaW5nIGp1c3QgYSBjaXJjdWxhciBhcmM/XG4gICAgICBlbHNlIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhMTAsIGEwMCwgY3cpO1xuICAgIH1cblxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG5cbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gY29udGV4dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIGFyYy5jZW50cm9pZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByID0gKCtpbm5lclJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpICsgK291dGVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIC8gMixcbiAgICAgICAgYSA9ICgrc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpICsgK2VuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIC8gMiAtIHBpIC8gMjtcbiAgICByZXR1cm4gW2NvcyhhKSAqIHIsIHNpbihhKSAqIHJdO1xuICB9O1xuXG4gIGFyYy5pbm5lclJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbm5lclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogaW5uZXJSYWRpdXM7XG4gIH07XG5cbiAgYXJjLm91dGVyUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG91dGVyUmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBvdXRlclJhZGl1cztcbiAgfTtcblxuICBhcmMuY29ybmVyUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvcm5lclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogY29ybmVyUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5wYWRSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkUmFkaXVzID0gXyA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogcGFkUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5zdGFydEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0YXJ0QW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHN0YXJ0QW5nbGU7XG4gIH07XG5cbiAgYXJjLmVuZEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGVuZEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBlbmRBbmdsZTtcbiAgfTtcblxuICBhcmMucGFkQW5nbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkQW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHBhZEFuZ2xlO1xuICB9O1xuXG4gIGFyYy5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKChjb250ZXh0ID0gXyA9PSBudWxsID8gbnVsbCA6IF8pLCBhcmMpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gYXJjO1xufVxuIiwiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50XCI7XG5pbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vY3VydmUvbGluZWFyXCI7XG5pbXBvcnQgbGluZSBmcm9tIFwiLi9saW5lXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB4MCA9IHBvaW50WCxcbiAgICAgIHgxID0gbnVsbCxcbiAgICAgIHkwID0gY29uc3RhbnQoMCksXG4gICAgICB5MSA9IHBvaW50WSxcbiAgICAgIGRlZmluZWQgPSBjb25zdGFudCh0cnVlKSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgY3VydmUgPSBjdXJ2ZUxpbmVhcixcbiAgICAgIG91dHB1dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYXJlYShkYXRhKSB7XG4gICAgdmFyIGksXG4gICAgICAgIGosXG4gICAgICAgIGssXG4gICAgICAgIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgZGVmaW5lZDAgPSBmYWxzZSxcbiAgICAgICAgYnVmZmVyLFxuICAgICAgICB4MHogPSBuZXcgQXJyYXkobiksXG4gICAgICAgIHkweiA9IG5ldyBBcnJheShuKTtcblxuICAgIGlmIChjb250ZXh0ID09IG51bGwpIG91dHB1dCA9IGN1cnZlKGJ1ZmZlciA9IHBhdGgoKSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDw9IG47ICsraSkge1xuICAgICAgaWYgKCEoaSA8IG4gJiYgZGVmaW5lZChkID0gZGF0YVtpXSwgaSwgZGF0YSkpID09PSBkZWZpbmVkMCkge1xuICAgICAgICBpZiAoZGVmaW5lZDAgPSAhZGVmaW5lZDApIHtcbiAgICAgICAgICBqID0gaTtcbiAgICAgICAgICBvdXRwdXQuYXJlYVN0YXJ0KCk7XG4gICAgICAgICAgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICAgICAgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICAgIGZvciAoayA9IGkgLSAxOyBrID49IGo7IC0taykge1xuICAgICAgICAgICAgb3V0cHV0LnBvaW50KHgweltrXSwgeTB6W2tdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0cHV0LmxpbmVFbmQoKTtcbiAgICAgICAgICBvdXRwdXQuYXJlYUVuZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5lZDApIHtcbiAgICAgICAgeDB6W2ldID0gK3gwKGQsIGksIGRhdGEpLCB5MHpbaV0gPSAreTAoZCwgaSwgZGF0YSk7XG4gICAgICAgIG91dHB1dC5wb2ludCh4MSA/ICt4MShkLCBpLCBkYXRhKSA6IHgweltpXSwgeTEgPyAreTEoZCwgaSwgZGF0YSkgOiB5MHpbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChidWZmZXIpIHJldHVybiBvdXRwdXQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBhcmVhbGluZSgpIHtcbiAgICByZXR1cm4gbGluZSgpLmRlZmluZWQoZGVmaW5lZCkuY3VydmUoY3VydmUpLmNvbnRleHQoY29udGV4dCk7XG4gIH1cblxuICBhcmVhLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeDAgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgeDEgPSBudWxsLCBhcmVhKSA6IHgwO1xuICB9O1xuXG4gIGFyZWEueDAgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeDAgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJlYSkgOiB4MDtcbiAgfTtcblxuICBhcmVhLngxID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHgxID0gXyA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmVhKSA6IHgxO1xuICB9O1xuXG4gIGFyZWEueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5MCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCB5MSA9IG51bGwsIGFyZWEpIDogeTA7XG4gIH07XG5cbiAgYXJlYS55MCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5MCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmVhKSA6IHkwO1xuICB9O1xuXG4gIGFyZWEueTEgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeTEgPSBfID09IG51bGwgPyBudWxsIDogdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyZWEpIDogeTE7XG4gIH07XG5cbiAgYXJlYS5saW5lWDAgPVxuICBhcmVhLmxpbmVZMCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBhcmVhbGluZSgpLngoeDApLnkoeTApO1xuICB9O1xuXG4gIGFyZWEubGluZVkxID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGFyZWFsaW5lKCkueCh4MCkueSh5MSk7XG4gIH07XG5cbiAgYXJlYS5saW5lWDEgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYXJlYWxpbmUoKS54KHgxKS55KHkwKTtcbiAgfTtcblxuICBhcmVhLmRlZmluZWQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGVmaW5lZCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgYXJlYSkgOiBkZWZpbmVkO1xuICB9O1xuXG4gIGFyZWEuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY3VydmUgPSBfLCBjb250ZXh0ICE9IG51bGwgJiYgKG91dHB1dCA9IGN1cnZlKGNvbnRleHQpKSwgYXJlYSkgOiBjdXJ2ZTtcbiAgfTtcblxuICBhcmVhLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoXyA9PSBudWxsID8gY29udGV4dCA9IG91dHB1dCA9IG51bGwgOiBvdXRwdXQgPSBjdXJ2ZShjb250ZXh0ID0gXyksIGFyZWEpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gYXJlYTtcbn1cbiIsImltcG9ydCBjdXJ2ZVJhZGlhbCwge2N1cnZlUmFkaWFsTGluZWFyfSBmcm9tIFwiLi9jdXJ2ZS9yYWRpYWxcIjtcbmltcG9ydCBhcmVhIGZyb20gXCIuL2FyZWFcIjtcbmltcG9ydCB7bGluZVJhZGlhbH0gZnJvbSBcIi4vbGluZVJhZGlhbFwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgYSA9IGFyZWEoKS5jdXJ2ZShjdXJ2ZVJhZGlhbExpbmVhciksXG4gICAgICBjID0gYS5jdXJ2ZSxcbiAgICAgIHgwID0gYS5saW5lWDAsXG4gICAgICB4MSA9IGEubGluZVgxLFxuICAgICAgeTAgPSBhLmxpbmVZMCxcbiAgICAgIHkxID0gYS5saW5lWTE7XG5cbiAgYS5hbmdsZSA9IGEueCwgZGVsZXRlIGEueDtcbiAgYS5zdGFydEFuZ2xlID0gYS54MCwgZGVsZXRlIGEueDA7XG4gIGEuZW5kQW5nbGUgPSBhLngxLCBkZWxldGUgYS54MTtcbiAgYS5yYWRpdXMgPSBhLnksIGRlbGV0ZSBhLnk7XG4gIGEuaW5uZXJSYWRpdXMgPSBhLnkwLCBkZWxldGUgYS55MDtcbiAgYS5vdXRlclJhZGl1cyA9IGEueTEsIGRlbGV0ZSBhLnkxO1xuICBhLmxpbmVTdGFydEFuZ2xlID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHgwKCkpOyB9LCBkZWxldGUgYS5saW5lWDA7XG4gIGEubGluZUVuZEFuZ2xlID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHgxKCkpOyB9LCBkZWxldGUgYS5saW5lWDE7XG4gIGEubGluZUlubmVyUmFkaXVzID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHkwKCkpOyB9LCBkZWxldGUgYS5saW5lWTA7XG4gIGEubGluZU91dGVyUmFkaXVzID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHkxKCkpOyB9LCBkZWxldGUgYS5saW5lWTE7XG5cbiAgYS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGMoY3VydmVSYWRpYWwoXykpIDogYygpLl9jdXJ2ZTtcbiAgfTtcblxuICByZXR1cm4gYTtcbn1cbiIsImV4cG9ydCB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb25zdGFudCgpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICAoMiAqIHRoYXQuX3gwICsgdGhhdC5feDEpIC8gMyxcbiAgICAoMiAqIHRoYXQuX3kwICsgdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyAyICogdGhhdC5feDEpIC8gMyxcbiAgICAodGhhdC5feTAgKyAyICogdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyA0ICogdGhhdC5feDEgKyB4KSAvIDYsXG4gICAgKHRoYXQuX3kwICsgNCAqIHRoYXQuX3kxICsgeSkgLyA2XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNpcyhjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpcy5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMzogcG9pbnQodGhpcywgdGhpcy5feDEsIHRoaXMuX3kxKTsgLy8gcHJvY2VlZFxuICAgICAgY2FzZSAyOiB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSwgdGhpcy5feTEpOyBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2NvbnRleHQubGluZVRvKCg1ICogdGhpcy5feDAgKyB0aGlzLl94MSkgLyA2LCAoNSAqIHRoaXMuX3kwICsgdGhpcy5feTEpIC8gNik7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzKGNvbnRleHQpO1xufVxuIiwiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3BcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2Jhc2lzXCI7XG5cbmZ1bmN0aW9uIEJhc2lzQ2xvc2VkKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9IHRoaXMuX3gzID0gdGhpcy5feDQgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyICsgMiAqIHRoaXMuX3gzKSAvIDMsICh0aGlzLl95MiArIDIgKiB0aGlzLl95MykgLyAzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzICsgMiAqIHRoaXMuX3gyKSAvIDMsICh0aGlzLl95MyArIDIgKiB0aGlzLl95MikgLyAzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MiwgdGhpcy5feTIpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDQsIHRoaXMuX3k0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl94MiA9IHgsIHRoaXMuX3kyID0geTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5OyB0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDAgKyA0ICogdGhpcy5feDEgKyB4KSAvIDYsICh0aGlzLl95MCArIDQgKiB0aGlzLl95MSArIHkpIC8gNik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXNDbG9zZWQoY29udGV4dCk7XG59XG4iLCJpbXBvcnQge3BvaW50fSBmcm9tIFwiLi9iYXNpc1wiO1xuXG5mdW5jdGlvbiBCYXNpc09wZW4oY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuQmFzaXNPcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDMpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdmFyIHgwID0gKHRoaXMuX3gwICsgNCAqIHRoaXMuX3gxICsgeCkgLyA2LCB5MCA9ICh0aGlzLl95MCArIDQgKiB0aGlzLl95MSArIHkpIC8gNjsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgwLCB5MCkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4MCwgeTApOyBicmVhaztcbiAgICAgIGNhc2UgMzogdGhpcy5fcG9pbnQgPSA0OyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3gwID0gdGhpcy5feDEsIHRoaXMuX3gxID0geDtcbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxLCB0aGlzLl95MSA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCYXNpc09wZW4oY29udGV4dCk7XG59XG4iLCJpbXBvcnQge0Jhc2lzfSBmcm9tIFwiLi9iYXNpc1wiO1xuXG5mdW5jdGlvbiBCdW5kbGUoY29udGV4dCwgYmV0YSkge1xuICB0aGlzLl9iYXNpcyA9IG5ldyBCYXNpcyhjb250ZXh0KTtcbiAgdGhpcy5fYmV0YSA9IGJldGE7XG59XG5cbkJ1bmRsZS5wcm90b3R5cGUgPSB7XG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feCA9IFtdO1xuICAgIHRoaXMuX3kgPSBbXTtcbiAgICB0aGlzLl9iYXNpcy5saW5lU3RhcnQoKTtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHggPSB0aGlzLl94LFxuICAgICAgICB5ID0gdGhpcy5feSxcbiAgICAgICAgaiA9IHgubGVuZ3RoIC0gMTtcblxuICAgIGlmIChqID4gMCkge1xuICAgICAgdmFyIHgwID0geFswXSxcbiAgICAgICAgICB5MCA9IHlbMF0sXG4gICAgICAgICAgZHggPSB4W2pdIC0geDAsXG4gICAgICAgICAgZHkgPSB5W2pdIC0geTAsXG4gICAgICAgICAgaSA9IC0xLFxuICAgICAgICAgIHQ7XG5cbiAgICAgIHdoaWxlICgrK2kgPD0gaikge1xuICAgICAgICB0ID0gaSAvIGo7XG4gICAgICAgIHRoaXMuX2Jhc2lzLnBvaW50KFxuICAgICAgICAgIHRoaXMuX2JldGEgKiB4W2ldICsgKDEgLSB0aGlzLl9iZXRhKSAqICh4MCArIHQgKiBkeCksXG4gICAgICAgICAgdGhpcy5fYmV0YSAqIHlbaV0gKyAoMSAtIHRoaXMuX2JldGEpICogKHkwICsgdCAqIGR5KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3ggPSB0aGlzLl95ID0gbnVsbDtcbiAgICB0aGlzLl9iYXNpcy5saW5lRW5kKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5feC5wdXNoKCt4KTtcbiAgICB0aGlzLl95LnB1c2goK3kpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGJldGEpIHtcblxuICBmdW5jdGlvbiBidW5kbGUoY29udGV4dCkge1xuICAgIHJldHVybiBiZXRhID09PSAxID8gbmV3IEJhc2lzKGNvbnRleHQpIDogbmV3IEJ1bmRsZShjb250ZXh0LCBiZXRhKTtcbiAgfVxuXG4gIGJ1bmRsZS5iZXRhID0gZnVuY3Rpb24oYmV0YSkge1xuICAgIHJldHVybiBjdXN0b20oK2JldGEpO1xuICB9O1xuXG4gIHJldHVybiBidW5kbGU7XG59KSgwLjg1KTtcbiIsImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICB0aGF0Ll94MSArIHRoYXQuX2sgKiAodGhhdC5feDIgLSB0aGF0Ll94MCksXG4gICAgdGhhdC5feTEgKyB0aGF0Ll9rICogKHRoYXQuX3kyIC0gdGhhdC5feTApLFxuICAgIHRoYXQuX3gyICsgdGhhdC5fayAqICh0aGF0Ll94MSAtIHgpLFxuICAgIHRoYXQuX3kyICsgdGhhdC5fayAqICh0aGF0Ll95MSAtIHkpLFxuICAgIHRoYXQuX3gyLFxuICAgIHRoYXQuX3kyXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXJkaW5hbChjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDEgPSB4LCB0aGlzLl95MSA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWwoY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIiwiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3BcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhcmRpbmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXJkaW5hbENsb3NlZChjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9IHRoaXMuX3gzID0gdGhpcy5feDQgPSB0aGlzLl94NSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gdGhpcy5feTMgPSB0aGlzLl95NCA9IHRoaXMuX3k1ID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94NCwgdGhpcy5feTQpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g1LCB0aGlzLl95NSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5feDUgPSB4LCB0aGlzLl95NSA9IHk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHRlbnNpb24pIHtcblxuICBmdW5jdGlvbiBjYXJkaW5hbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBDYXJkaW5hbENsb3NlZChjb250ZXh0LCB0ZW5zaW9uKTtcbiAgfVxuXG4gIGNhcmRpbmFsLnRlbnNpb24gPSBmdW5jdGlvbih0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrdGVuc2lvbik7XG4gIH07XG5cbiAgcmV0dXJuIGNhcmRpbmFsO1xufSkoMCk7XG4iLCJpbXBvcnQge3BvaW50fSBmcm9tIFwiLi9jYXJkaW5hbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ2FyZGluYWxPcGVuKGNvbnRleHQsIHRlbnNpb24pIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2sgPSAoMSAtIHRlbnNpb24pIC8gNjtcbn1cblxuQ2FyZGluYWxPcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAzKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MiwgdGhpcy5feTIpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMuX3BvaW50ID0gNDsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHRlbnNpb24pIHtcblxuICBmdW5jdGlvbiBjYXJkaW5hbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBDYXJkaW5hbE9wZW4oY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIiwiaW1wb3J0IHtlcHNpbG9ufSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHtDYXJkaW5hbH0gZnJvbSBcIi4vY2FyZGluYWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBvaW50KHRoYXQsIHgsIHkpIHtcbiAgdmFyIHgxID0gdGhhdC5feDEsXG4gICAgICB5MSA9IHRoYXQuX3kxLFxuICAgICAgeDIgPSB0aGF0Ll94MixcbiAgICAgIHkyID0gdGhhdC5feTI7XG5cbiAgaWYgKHRoYXQuX2wwMV9hID4gZXBzaWxvbikge1xuICAgIHZhciBhID0gMiAqIHRoYXQuX2wwMV8yYSArIDMgKiB0aGF0Ll9sMDFfYSAqIHRoYXQuX2wxMl9hICsgdGhhdC5fbDEyXzJhLFxuICAgICAgICBuID0gMyAqIHRoYXQuX2wwMV9hICogKHRoYXQuX2wwMV9hICsgdGhhdC5fbDEyX2EpO1xuICAgIHgxID0gKHgxICogYSAtIHRoYXQuX3gwICogdGhhdC5fbDEyXzJhICsgdGhhdC5feDIgKiB0aGF0Ll9sMDFfMmEpIC8gbjtcbiAgICB5MSA9ICh5MSAqIGEgLSB0aGF0Ll95MCAqIHRoYXQuX2wxMl8yYSArIHRoYXQuX3kyICogdGhhdC5fbDAxXzJhKSAvIG47XG4gIH1cblxuICBpZiAodGhhdC5fbDIzX2EgPiBlcHNpbG9uKSB7XG4gICAgdmFyIGIgPSAyICogdGhhdC5fbDIzXzJhICsgMyAqIHRoYXQuX2wyM19hICogdGhhdC5fbDEyX2EgKyB0aGF0Ll9sMTJfMmEsXG4gICAgICAgIG0gPSAzICogdGhhdC5fbDIzX2EgKiAodGhhdC5fbDIzX2EgKyB0aGF0Ll9sMTJfYSk7XG4gICAgeDIgPSAoeDIgKiBiICsgdGhhdC5feDEgKiB0aGF0Ll9sMjNfMmEgLSB4ICogdGhhdC5fbDEyXzJhKSAvIG07XG4gICAgeTIgPSAoeTIgKiBiICsgdGhhdC5feTEgKiB0aGF0Ll9sMjNfMmEgLSB5ICogdGhhdC5fbDEyXzJhKSAvIG07XG4gIH1cblxuICB0aGF0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oeDEsIHkxLCB4MiwgeTIsIHRoYXQuX3gyLCB0aGF0Ll95Mik7XG59XG5cbmZ1bmN0aW9uIENhdG11bGxSb20oY29udGV4dCwgYWxwaGEpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2FscGhhID0gYWxwaGE7XG59XG5cbkNhdG11bGxSb20ucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gTmFOO1xuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYSA9XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhID0gdGhpcy5fbDIzXzJhID1cbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMucG9pbnQodGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG5cbiAgICBpZiAodGhpcy5fcG9pbnQpIHtcbiAgICAgIHZhciB4MjMgPSB0aGlzLl94MiAtIHgsXG4gICAgICAgICAgeTIzID0gdGhpcy5feTIgLSB5O1xuICAgICAgdGhpcy5fbDIzX2EgPSBNYXRoLnNxcnQodGhpcy5fbDIzXzJhID0gTWF0aC5wb3coeDIzICogeDIzICsgeTIzICogeTIzLCB0aGlzLl9hbHBoYSkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbChjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iLCJpbXBvcnQge0NhcmRpbmFsQ2xvc2VkfSBmcm9tIFwiLi9jYXJkaW5hbENsb3NlZFwiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3BcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb21cIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbUNsb3NlZChjb250ZXh0LCBhbHBoYSkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fYWxwaGEgPSBhbHBoYTtcbn1cblxuQ2F0bXVsbFJvbUNsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID0gdGhpcy5feDUgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSB0aGlzLl95NSA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDUsIHRoaXMuX3k1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5feDUgPSB4LCB0aGlzLl95NSA9IHk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tQ2xvc2VkKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbENsb3NlZChjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iLCJpbXBvcnQge0NhcmRpbmFsT3Blbn0gZnJvbSBcIi4vY2FyZGluYWxPcGVuXCI7XG5pbXBvcnQge3BvaW50fSBmcm9tIFwiLi9jYXRtdWxsUm9tXCI7XG5cbmZ1bmN0aW9uIENhdG11bGxSb21PcGVuKGNvbnRleHQsIGFscGhhKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9hbHBoYSA9IGFscGhhO1xufVxuXG5DYXRtdWxsUm9tT3Blbi5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9IHRoaXMuX3gyID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gdGhpcy5feTIgPSBOYU47XG4gICAgdGhpcy5fbDAxX2EgPSB0aGlzLl9sMTJfYSA9IHRoaXMuX2wyM19hID1cbiAgICB0aGlzLl9sMDFfMmEgPSB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmEgPVxuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDMpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcblxuICAgIGlmICh0aGlzLl9wb2ludCkge1xuICAgICAgdmFyIHgyMyA9IHRoaXMuX3gyIC0geCxcbiAgICAgICAgICB5MjMgPSB0aGlzLl95MiAtIHk7XG4gICAgICB0aGlzLl9sMjNfYSA9IE1hdGguc3FydCh0aGlzLl9sMjNfMmEgPSBNYXRoLnBvdyh4MjMgKiB4MjMgKyB5MjMgKiB5MjMsIHRoaXMuX2FscGhhKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MiwgdGhpcy5feTIpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMuX3BvaW50ID0gNDsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tT3Blbihjb250ZXh0LCBhbHBoYSkgOiBuZXcgQ2FyZGluYWxPcGVuKGNvbnRleHQsIDApO1xuICB9XG5cbiAgY2F0bXVsbFJvbS5hbHBoYSA9IGZ1bmN0aW9uKGFscGhhKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrYWxwaGEpO1xuICB9O1xuXG4gIHJldHVybiBjYXRtdWxsUm9tO1xufSkoMC41KTtcbiIsImZ1bmN0aW9uIExpbmVhcihjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5MaW5lYXIucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpOyBicmVhaztcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBMaW5lYXIoY29udGV4dCk7XG59XG4iLCJpbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcFwiO1xuXG5mdW5jdGlvbiBMaW5lYXJDbG9zZWQoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTGluZWFyQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX3BvaW50KSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIGlmICh0aGlzLl9wb2ludCkgdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgZWxzZSB0aGlzLl9wb2ludCA9IDEsIHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTGluZWFyQ2xvc2VkKGNvbnRleHQpO1xufVxuIiwiZnVuY3Rpb24gc2lnbih4KSB7XG4gIHJldHVybiB4IDwgMCA/IC0xIDogMTtcbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSBzbG9wZXMgb2YgdGhlIHRhbmdlbnRzIChIZXJtaXRlLXR5cGUgaW50ZXJwb2xhdGlvbikgYmFzZWQgb25cbi8vIHRoZSBmb2xsb3dpbmcgcGFwZXI6IFN0ZWZmZW4sIE0uIDE5OTAuIEEgU2ltcGxlIE1ldGhvZCBmb3IgTW9ub3RvbmljXG4vLyBJbnRlcnBvbGF0aW9uIGluIE9uZSBEaW1lbnNpb24uIEFzdHJvbm9teSBhbmQgQXN0cm9waHlzaWNzLCBWb2wuIDIzOSwgTk8uXG4vLyBOT1YoSUkpLCBQLiA0NDMsIDE5OTAuXG5mdW5jdGlvbiBzbG9wZTModGhhdCwgeDIsIHkyKSB7XG4gIHZhciBoMCA9IHRoYXQuX3gxIC0gdGhhdC5feDAsXG4gICAgICBoMSA9IHgyIC0gdGhhdC5feDEsXG4gICAgICBzMCA9ICh0aGF0Ll95MSAtIHRoYXQuX3kwKSAvIChoMCB8fCBoMSA8IDAgJiYgLTApLFxuICAgICAgczEgPSAoeTIgLSB0aGF0Ll95MSkgLyAoaDEgfHwgaDAgPCAwICYmIC0wKSxcbiAgICAgIHAgPSAoczAgKiBoMSArIHMxICogaDApIC8gKGgwICsgaDEpO1xuICByZXR1cm4gKHNpZ24oczApICsgc2lnbihzMSkpICogTWF0aC5taW4oTWF0aC5hYnMoczApLCBNYXRoLmFicyhzMSksIDAuNSAqIE1hdGguYWJzKHApKSB8fCAwO1xufVxuXG4vLyBDYWxjdWxhdGUgYSBvbmUtc2lkZWQgc2xvcGUuXG5mdW5jdGlvbiBzbG9wZTIodGhhdCwgdCkge1xuICB2YXIgaCA9IHRoYXQuX3gxIC0gdGhhdC5feDA7XG4gIHJldHVybiBoID8gKDMgKiAodGhhdC5feTEgLSB0aGF0Ll95MCkgLyBoIC0gdCkgLyAyIDogdDtcbn1cblxuLy8gQWNjb3JkaW5nIHRvIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N1YmljX0hlcm1pdGVfc3BsaW5lI1JlcHJlc2VudGF0aW9uc1xuLy8gXCJ5b3UgY2FuIGV4cHJlc3MgY3ViaWMgSGVybWl0ZSBpbnRlcnBvbGF0aW9uIGluIHRlcm1zIG9mIGN1YmljIELDqXppZXIgY3VydmVzXG4vLyB3aXRoIHJlc3BlY3QgdG8gdGhlIGZvdXIgdmFsdWVzIHAwLCBwMCArIG0wIC8gMywgcDEgLSBtMSAvIDMsIHAxXCIuXG5mdW5jdGlvbiBwb2ludCh0aGF0LCB0MCwgdDEpIHtcbiAgdmFyIHgwID0gdGhhdC5feDAsXG4gICAgICB5MCA9IHRoYXQuX3kwLFxuICAgICAgeDEgPSB0aGF0Ll94MSxcbiAgICAgIHkxID0gdGhhdC5feTEsXG4gICAgICBkeCA9ICh4MSAtIHgwKSAvIDM7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh4MCArIGR4LCB5MCArIGR4ICogdDAsIHgxIC0gZHgsIHkxIC0gZHggKiB0MSwgeDEsIHkxKTtcbn1cblxuZnVuY3Rpb24gTW9ub3RvbmVYKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbk1vbm90b25lWC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9XG4gICAgdGhpcy5fdDAgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDI6IHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgICAgY2FzZSAzOiBwb2ludCh0aGlzLCB0aGlzLl90MCwgc2xvcGUyKHRoaXMsIHRoaXMuX3QwKSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciB0MSA9IE5hTjtcblxuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIGlmICh4ID09PSB0aGlzLl94MSAmJiB5ID09PSB0aGlzLl95MSkgcmV0dXJuOyAvLyBJZ25vcmUgY29pbmNpZGVudCBwb2ludHMuXG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyBwb2ludCh0aGlzLCBzbG9wZTIodGhpcywgdDEgPSBzbG9wZTModGhpcywgeCwgeSkpLCB0MSk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgdGhpcy5fdDAsIHQxID0gc2xvcGUzKHRoaXMsIHgsIHkpKTsgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgICB0aGlzLl90MCA9IHQxO1xuICB9XG59XG5cbmZ1bmN0aW9uIE1vbm90b25lWShjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBuZXcgUmVmbGVjdENvbnRleHQoY29udGV4dCk7XG59XG5cbihNb25vdG9uZVkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShNb25vdG9uZVgucHJvdG90eXBlKSkucG9pbnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gIE1vbm90b25lWC5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLCB5LCB4KTtcbn07XG5cbmZ1bmN0aW9uIFJlZmxlY3RDb250ZXh0KGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cblJlZmxlY3RDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgbW92ZVRvOiBmdW5jdGlvbih4LCB5KSB7IHRoaXMuX2NvbnRleHQubW92ZVRvKHksIHgpOyB9LFxuICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkgeyB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOyB9LFxuICBsaW5lVG86IGZ1bmN0aW9uKHgsIHkpIHsgdGhpcy5fY29udGV4dC5saW5lVG8oeSwgeCk7IH0sXG4gIGJlemllckN1cnZlVG86IGZ1bmN0aW9uKHgxLCB5MSwgeDIsIHkyLCB4LCB5KSB7IHRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh5MSwgeDEsIHkyLCB4MiwgeSwgeCk7IH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb25vdG9uZVgoY29udGV4dCkge1xuICByZXR1cm4gbmV3IE1vbm90b25lWChjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vbm90b25lWShjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTW9ub3RvbmVZKGNvbnRleHQpO1xufVxuIiwiZnVuY3Rpb24gTmF0dXJhbChjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5OYXR1cmFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gW107XG4gICAgdGhpcy5feSA9IFtdO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgeCA9IHRoaXMuX3gsXG4gICAgICAgIHkgPSB0aGlzLl95LFxuICAgICAgICBuID0geC5sZW5ndGg7XG5cbiAgICBpZiAobikge1xuICAgICAgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHhbMF0sIHlbMF0pIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeFswXSwgeVswXSk7XG4gICAgICBpZiAobiA9PT0gMikge1xuICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4WzFdLCB5WzFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBweCA9IGNvbnRyb2xQb2ludHMoeCksXG4gICAgICAgICAgICBweSA9IGNvbnRyb2xQb2ludHMoeSk7XG4gICAgICAgIGZvciAodmFyIGkwID0gMCwgaTEgPSAxOyBpMSA8IG47ICsraTAsICsraTEpIHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8ocHhbMF1baTBdLCBweVswXVtpMF0sIHB4WzFdW2kwXSwgcHlbMV1baTBdLCB4W2kxXSwgeVtpMV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgbiA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICAgIHRoaXMuX3ggPSB0aGlzLl95ID0gbnVsbDtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB0aGlzLl94LnB1c2goK3gpO1xuICAgIHRoaXMuX3kucHVzaCgreSk7XG4gIH1cbn07XG5cbi8vIFNlZSBodHRwczovL3d3dy5wYXJ0aWNsZWluY2VsbC5jb20vMjAxMi9iZXppZXItc3BsaW5lcy8gZm9yIGRlcml2YXRpb24uXG5mdW5jdGlvbiBjb250cm9sUG9pbnRzKHgpIHtcbiAgdmFyIGksXG4gICAgICBuID0geC5sZW5ndGggLSAxLFxuICAgICAgbSxcbiAgICAgIGEgPSBuZXcgQXJyYXkobiksXG4gICAgICBiID0gbmV3IEFycmF5KG4pLFxuICAgICAgciA9IG5ldyBBcnJheShuKTtcbiAgYVswXSA9IDAsIGJbMF0gPSAyLCByWzBdID0geFswXSArIDIgKiB4WzFdO1xuICBmb3IgKGkgPSAxOyBpIDwgbiAtIDE7ICsraSkgYVtpXSA9IDEsIGJbaV0gPSA0LCByW2ldID0gNCAqIHhbaV0gKyAyICogeFtpICsgMV07XG4gIGFbbiAtIDFdID0gMiwgYltuIC0gMV0gPSA3LCByW24gLSAxXSA9IDggKiB4W24gLSAxXSArIHhbbl07XG4gIGZvciAoaSA9IDE7IGkgPCBuOyArK2kpIG0gPSBhW2ldIC8gYltpIC0gMV0sIGJbaV0gLT0gbSwgcltpXSAtPSBtICogcltpIC0gMV07XG4gIGFbbiAtIDFdID0gcltuIC0gMV0gLyBiW24gLSAxXTtcbiAgZm9yIChpID0gbiAtIDI7IGkgPj0gMDsgLS1pKSBhW2ldID0gKHJbaV0gLSBhW2kgKyAxXSkgLyBiW2ldO1xuICBiW24gLSAxXSA9ICh4W25dICsgYVtuIC0gMV0pIC8gMjtcbiAgZm9yIChpID0gMDsgaSA8IG4gLSAxOyArK2kpIGJbaV0gPSAyICogeFtpICsgMV0gLSBhW2kgKyAxXTtcbiAgcmV0dXJuIFthLCBiXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IE5hdHVyYWwoY29udGV4dCk7XG59XG4iLCJpbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vbGluZWFyXCI7XG5cbmV4cG9ydCB2YXIgY3VydmVSYWRpYWxMaW5lYXIgPSBjdXJ2ZVJhZGlhbChjdXJ2ZUxpbmVhcik7XG5cbmZ1bmN0aW9uIFJhZGlhbChjdXJ2ZSkge1xuICB0aGlzLl9jdXJ2ZSA9IGN1cnZlO1xufVxuXG5SYWRpYWwucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmFyZWFTdGFydCgpO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5hcmVhRW5kKCk7XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUubGluZVN0YXJ0KCk7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmxpbmVFbmQoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKGEsIHIpIHtcbiAgICB0aGlzLl9jdXJ2ZS5wb2ludChyICogTWF0aC5zaW4oYSksIHIgKiAtTWF0aC5jb3MoYSkpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdXJ2ZVJhZGlhbChjdXJ2ZSkge1xuXG4gIGZ1bmN0aW9uIHJhZGlhbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBSYWRpYWwoY3VydmUoY29udGV4dCkpO1xuICB9XG5cbiAgcmFkaWFsLl9jdXJ2ZSA9IGN1cnZlO1xuXG4gIHJldHVybiByYWRpYWw7XG59XG4iLCJmdW5jdGlvbiBTdGVwKGNvbnRleHQsIHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX3QgPSB0O1xufVxuXG5TdGVwLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gdGhpcy5feSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICgwIDwgdGhpcy5fdCAmJiB0aGlzLl90IDwgMSAmJiB0aGlzLl9wb2ludCA9PT0gMikgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCwgdGhpcy5feSk7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGlmICh0aGlzLl9saW5lID49IDApIHRoaXMuX3QgPSAxIC0gdGhpcy5fdCwgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5fdCA8PSAwKSB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCwgeSk7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHgxID0gdGhpcy5feCAqICgxIC0gdGhpcy5fdCkgKyB4ICogdGhpcy5fdDtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4MSwgdGhpcy5feSk7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeDEsIHkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl94ID0geCwgdGhpcy5feSA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDAuNSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGVwQmVmb3JlKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RlcEFmdGVyKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDEpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYiA8IGEgPyAtMSA6IGIgPiBhID8gMSA6IGIgPj0gYSA/IDAgOiBOYU47XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkKSB7XG4gIHJldHVybiBkO1xufVxuIiwiZXhwb3J0IHtkZWZhdWx0IGFzIGFyY30gZnJvbSBcIi4vYXJjXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYXJlYX0gZnJvbSBcIi4vYXJlYVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGxpbmV9IGZyb20gXCIuL2xpbmVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwaWV9IGZyb20gXCIuL3BpZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGFyZWFSYWRpYWwsIGRlZmF1bHQgYXMgcmFkaWFsQXJlYX0gZnJvbSBcIi4vYXJlYVJhZGlhbFwiOyAvLyBOb3RlOiByYWRpYWxBcmVhIGlzIGRlcHJlY2F0ZWQhXG5leHBvcnQge2RlZmF1bHQgYXMgbGluZVJhZGlhbCwgZGVmYXVsdCBhcyByYWRpYWxMaW5lfSBmcm9tIFwiLi9saW5lUmFkaWFsXCI7IC8vIE5vdGU6IHJhZGlhbExpbmUgaXMgZGVwcmVjYXRlZCFcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwb2ludFJhZGlhbH0gZnJvbSBcIi4vcG9pbnRSYWRpYWxcIjtcbmV4cG9ydCB7bGlua0hvcml6b250YWwsIGxpbmtWZXJ0aWNhbCwgbGlua1JhZGlhbH0gZnJvbSBcIi4vbGluay9pbmRleFwiO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sLCBzeW1ib2xzfSBmcm9tIFwiLi9zeW1ib2xcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xDaXJjbGV9IGZyb20gXCIuL3N5bWJvbC9jaXJjbGVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xDcm9zc30gZnJvbSBcIi4vc3ltYm9sL2Nyb3NzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sRGlhbW9uZH0gZnJvbSBcIi4vc3ltYm9sL2RpYW1vbmRcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xTcXVhcmV9IGZyb20gXCIuL3N5bWJvbC9zcXVhcmVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xTdGFyfSBmcm9tIFwiLi9zeW1ib2wvc3RhclwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN5bWJvbFRyaWFuZ2xlfSBmcm9tIFwiLi9zeW1ib2wvdHJpYW5nbGVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xXeWV9IGZyb20gXCIuL3N5bWJvbC93eWVcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQmFzaXNDbG9zZWR9IGZyb20gXCIuL2N1cnZlL2Jhc2lzQ2xvc2VkXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVCYXNpc09wZW59IGZyb20gXCIuL2N1cnZlL2Jhc2lzT3BlblwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQmFzaXN9IGZyb20gXCIuL2N1cnZlL2Jhc2lzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVCdW5kbGV9IGZyb20gXCIuL2N1cnZlL2J1bmRsZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQ2FyZGluYWxDbG9zZWR9IGZyb20gXCIuL2N1cnZlL2NhcmRpbmFsQ2xvc2VkXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVDYXJkaW5hbE9wZW59IGZyb20gXCIuL2N1cnZlL2NhcmRpbmFsT3BlblwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQ2FyZGluYWx9IGZyb20gXCIuL2N1cnZlL2NhcmRpbmFsXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVDYXRtdWxsUm9tQ2xvc2VkfSBmcm9tIFwiLi9jdXJ2ZS9jYXRtdWxsUm9tQ2xvc2VkXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVDYXRtdWxsUm9tT3Blbn0gZnJvbSBcIi4vY3VydmUvY2F0bXVsbFJvbU9wZW5cIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZUNhdG11bGxSb219IGZyb20gXCIuL2N1cnZlL2NhdG11bGxSb21cIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZUxpbmVhckNsb3NlZH0gZnJvbSBcIi4vY3VydmUvbGluZWFyQ2xvc2VkXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVMaW5lYXJ9IGZyb20gXCIuL2N1cnZlL2xpbmVhclwiO1xuZXhwb3J0IHttb25vdG9uZVggYXMgY3VydmVNb25vdG9uZVgsIG1vbm90b25lWSBhcyBjdXJ2ZU1vbm90b25lWX0gZnJvbSBcIi4vY3VydmUvbW9ub3RvbmVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZU5hdHVyYWx9IGZyb20gXCIuL2N1cnZlL25hdHVyYWxcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZVN0ZXAsIHN0ZXBBZnRlciBhcyBjdXJ2ZVN0ZXBBZnRlciwgc3RlcEJlZm9yZSBhcyBjdXJ2ZVN0ZXBCZWZvcmV9IGZyb20gXCIuL2N1cnZlL3N0ZXBcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrfSBmcm9tIFwiLi9zdGFja1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT2Zmc2V0RXhwYW5kfSBmcm9tIFwiLi9vZmZzZXQvZXhwYW5kXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPZmZzZXREaXZlcmdpbmd9IGZyb20gXCIuL29mZnNldC9kaXZlcmdpbmdcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGFja09mZnNldE5vbmV9IGZyb20gXCIuL29mZnNldC9ub25lXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPZmZzZXRTaWxob3VldHRlfSBmcm9tIFwiLi9vZmZzZXQvc2lsaG91ZXR0ZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT2Zmc2V0V2lnZ2xlfSBmcm9tIFwiLi9vZmZzZXQvd2lnZ2xlXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPcmRlckFwcGVhcmFuY2V9IGZyb20gXCIuL29yZGVyL2FwcGVhcmFuY2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGFja09yZGVyQXNjZW5kaW5nfSBmcm9tIFwiLi9vcmRlci9hc2NlbmRpbmdcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGFja09yZGVyRGVzY2VuZGluZ30gZnJvbSBcIi4vb3JkZXIvZGVzY2VuZGluZ1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT3JkZXJJbnNpZGVPdXR9IGZyb20gXCIuL29yZGVyL2luc2lkZU91dFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT3JkZXJOb25lfSBmcm9tIFwiLi9vcmRlci9ub25lXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPcmRlclJldmVyc2V9IGZyb20gXCIuL29yZGVyL3JldmVyc2VcIjtcbiIsImltcG9ydCB7cGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2N1cnZlL2xpbmVhclwiO1xuaW1wb3J0IHt4IGFzIHBvaW50WCwgeSBhcyBwb2ludFl9IGZyb20gXCIuL3BvaW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgeCA9IHBvaW50WCxcbiAgICAgIHkgPSBwb2ludFksXG4gICAgICBkZWZpbmVkID0gY29uc3RhbnQodHJ1ZSksXG4gICAgICBjb250ZXh0ID0gbnVsbCxcbiAgICAgIGN1cnZlID0gY3VydmVMaW5lYXIsXG4gICAgICBvdXRwdXQgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGxpbmUoZGF0YSkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gZGF0YS5sZW5ndGgsXG4gICAgICAgIGQsXG4gICAgICAgIGRlZmluZWQwID0gZmFsc2UsXG4gICAgICAgIGJ1ZmZlcjtcblxuICAgIGlmIChjb250ZXh0ID09IG51bGwpIG91dHB1dCA9IGN1cnZlKGJ1ZmZlciA9IHBhdGgoKSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDw9IG47ICsraSkge1xuICAgICAgaWYgKCEoaSA8IG4gJiYgZGVmaW5lZChkID0gZGF0YVtpXSwgaSwgZGF0YSkpID09PSBkZWZpbmVkMCkge1xuICAgICAgICBpZiAoZGVmaW5lZDAgPSAhZGVmaW5lZDApIG91dHB1dC5saW5lU3RhcnQoKTtcbiAgICAgICAgZWxzZSBvdXRwdXQubGluZUVuZCgpO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmluZWQwKSBvdXRwdXQucG9pbnQoK3goZCwgaSwgZGF0YSksICt5KGQsIGksIGRhdGEpKTtcbiAgICB9XG5cbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gb3V0cHV0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgbGluZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB4O1xuICB9O1xuXG4gIGxpbmUueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmUpIDogeTtcbiAgfTtcblxuICBsaW5lLmRlZmluZWQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGVmaW5lZCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgbGluZSkgOiBkZWZpbmVkO1xuICB9O1xuXG4gIGxpbmUuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY3VydmUgPSBfLCBjb250ZXh0ICE9IG51bGwgJiYgKG91dHB1dCA9IGN1cnZlKGNvbnRleHQpKSwgbGluZSkgOiBjdXJ2ZTtcbiAgfTtcblxuICBsaW5lLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoXyA9PSBudWxsID8gY29udGV4dCA9IG91dHB1dCA9IG51bGwgOiBvdXRwdXQgPSBjdXJ2ZShjb250ZXh0ID0gXyksIGxpbmUpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gbGluZTtcbn1cbiIsImltcG9ydCBjdXJ2ZVJhZGlhbCwge2N1cnZlUmFkaWFsTGluZWFyfSBmcm9tIFwiLi9jdXJ2ZS9yYWRpYWxcIjtcbmltcG9ydCBsaW5lIGZyb20gXCIuL2xpbmVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVSYWRpYWwobCkge1xuICB2YXIgYyA9IGwuY3VydmU7XG5cbiAgbC5hbmdsZSA9IGwueCwgZGVsZXRlIGwueDtcbiAgbC5yYWRpdXMgPSBsLnksIGRlbGV0ZSBsLnk7XG5cbiAgbC5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGMoY3VydmVSYWRpYWwoXykpIDogYygpLl9jdXJ2ZTtcbiAgfTtcblxuICByZXR1cm4gbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBsaW5lUmFkaWFsKGxpbmUoKS5jdXJ2ZShjdXJ2ZVJhZGlhbExpbmVhcikpO1xufVxuIiwiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IHtzbGljZX0gZnJvbSBcIi4uL2FycmF5XCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4uL2NvbnN0YW50XCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4uL3BvaW50XCI7XG5pbXBvcnQgcG9pbnRSYWRpYWwgZnJvbSBcIi4uL3BvaW50UmFkaWFsXCI7XG5cbmZ1bmN0aW9uIGxpbmtTb3VyY2UoZCkge1xuICByZXR1cm4gZC5zb3VyY2U7XG59XG5cbmZ1bmN0aW9uIGxpbmtUYXJnZXQoZCkge1xuICByZXR1cm4gZC50YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGxpbmsoY3VydmUpIHtcbiAgdmFyIHNvdXJjZSA9IGxpbmtTb3VyY2UsXG4gICAgICB0YXJnZXQgPSBsaW5rVGFyZ2V0LFxuICAgICAgeCA9IHBvaW50WCxcbiAgICAgIHkgPSBwb2ludFksXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICBmdW5jdGlvbiBsaW5rKCkge1xuICAgIHZhciBidWZmZXIsIGFyZ3YgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyksIHMgPSBzb3VyY2UuYXBwbHkodGhpcywgYXJndiksIHQgPSB0YXJnZXQuYXBwbHkodGhpcywgYXJndik7XG4gICAgaWYgKCFjb250ZXh0KSBjb250ZXh0ID0gYnVmZmVyID0gcGF0aCgpO1xuICAgIGN1cnZlKGNvbnRleHQsICt4LmFwcGx5KHRoaXMsIChhcmd2WzBdID0gcywgYXJndikpLCAreS5hcHBseSh0aGlzLCBhcmd2KSwgK3guYXBwbHkodGhpcywgKGFyZ3ZbMF0gPSB0LCBhcmd2KSksICt5LmFwcGx5KHRoaXMsIGFyZ3YpKTtcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gY29udGV4dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIGxpbmsuc291cmNlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNvdXJjZSA9IF8sIGxpbmspIDogc291cmNlO1xuICB9O1xuXG4gIGxpbmsudGFyZ2V0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRhcmdldCA9IF8sIGxpbmspIDogdGFyZ2V0O1xuICB9O1xuXG4gIGxpbmsueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmspIDogeDtcbiAgfTtcblxuICBsaW5rLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5rKSA6IHk7XG4gIH07XG5cbiAgbGluay5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKChjb250ZXh0ID0gXyA9PSBudWxsID8gbnVsbCA6IF8pLCBsaW5rKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIGxpbms7XG59XG5cbmZ1bmN0aW9uIGN1cnZlSG9yaXpvbnRhbChjb250ZXh0LCB4MCwgeTAsIHgxLCB5MSkge1xuICBjb250ZXh0Lm1vdmVUbyh4MCwgeTApO1xuICBjb250ZXh0LmJlemllckN1cnZlVG8oeDAgPSAoeDAgKyB4MSkgLyAyLCB5MCwgeDAsIHkxLCB4MSwgeTEpO1xufVxuXG5mdW5jdGlvbiBjdXJ2ZVZlcnRpY2FsKGNvbnRleHQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyh4MCwgeTAgPSAoeTAgKyB5MSkgLyAyLCB4MSwgeTAsIHgxLCB5MSk7XG59XG5cbmZ1bmN0aW9uIGN1cnZlUmFkaWFsKGNvbnRleHQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBwMCA9IHBvaW50UmFkaWFsKHgwLCB5MCksXG4gICAgICBwMSA9IHBvaW50UmFkaWFsKHgwLCB5MCA9ICh5MCArIHkxKSAvIDIpLFxuICAgICAgcDIgPSBwb2ludFJhZGlhbCh4MSwgeTApLFxuICAgICAgcDMgPSBwb2ludFJhZGlhbCh4MSwgeTEpO1xuICBjb250ZXh0Lm1vdmVUbyhwMFswXSwgcDBbMV0pO1xuICBjb250ZXh0LmJlemllckN1cnZlVG8ocDFbMF0sIHAxWzFdLCBwMlswXSwgcDJbMV0sIHAzWzBdLCBwM1sxXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rSG9yaXpvbnRhbCgpIHtcbiAgcmV0dXJuIGxpbmsoY3VydmVIb3Jpem9udGFsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtWZXJ0aWNhbCgpIHtcbiAgcmV0dXJuIGxpbmsoY3VydmVWZXJ0aWNhbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rUmFkaWFsKCkge1xuICB2YXIgbCA9IGxpbmsoY3VydmVSYWRpYWwpO1xuICBsLmFuZ2xlID0gbC54LCBkZWxldGUgbC54O1xuICBsLnJhZGl1cyA9IGwueSwgZGVsZXRlIGwueTtcbiAgcmV0dXJuIGw7XG59XG4iLCJleHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgdmFyIGNvcyA9IE1hdGguY29zO1xuZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuXG5leHBvcnQgdmFyIGVwc2lsb24gPSAxZS0xMjtcbmV4cG9ydCB2YXIgcGkgPSBNYXRoLlBJO1xuZXhwb3J0IHZhciBoYWxmUGkgPSBwaSAvIDI7XG5leHBvcnQgdmFyIHRhdSA9IDIgKiBwaTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPj0gMSA/IGhhbGZQaSA6IHggPD0gLTEgPyAtaGFsZlBpIDogTWF0aC5hc2luKHgpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7fVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMSkpIHJldHVybjtcbiAgZm9yICh2YXIgaSwgaiA9IDAsIGQsIGR5LCB5cCwgeW4sIG4sIG0gPSBzZXJpZXNbb3JkZXJbMF1dLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAoeXAgPSB5biA9IDAsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKGR5ID0gKGQgPSBzZXJpZXNbb3JkZXJbaV1dW2pdKVsxXSAtIGRbMF0pID49IDApIHtcbiAgICAgICAgZFswXSA9IHlwLCBkWzFdID0geXAgKz0gZHk7XG4gICAgICB9IGVsc2UgaWYgKGR5IDwgMCkge1xuICAgICAgICBkWzFdID0geW4sIGRbMF0gPSB5biArPSBkeTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRbMF0gPSB5cDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBub25lIGZyb20gXCIuL25vbmVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgaSwgbiwgaiA9IDAsIG0gPSBzZXJpZXNbMF0ubGVuZ3RoLCB5OyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh5ID0gaSA9IDA7IGkgPCBuOyArK2kpIHkgKz0gc2VyaWVzW2ldW2pdWzFdIHx8IDA7XG4gICAgaWYgKHkpIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHNlcmllc1tpXVtqXVsxXSAvPSB5O1xuICB9XG4gIG5vbmUoc2VyaWVzLCBvcmRlcik7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMsIG9yZGVyKSB7XG4gIGlmICghKChuID0gc2VyaWVzLmxlbmd0aCkgPiAxKSkgcmV0dXJuO1xuICBmb3IgKHZhciBpID0gMSwgaiwgczAsIHMxID0gc2VyaWVzW29yZGVyWzBdXSwgbiwgbSA9IHMxLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIHMwID0gczEsIHMxID0gc2VyaWVzW29yZGVyW2ldXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgICBzMVtqXVsxXSArPSBzMVtqXVswXSA9IGlzTmFOKHMwW2pdWzFdKSA/IHMwW2pdWzBdIDogczBbal1bMV07XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApKSByZXR1cm47XG4gIGZvciAodmFyIGogPSAwLCBzMCA9IHNlcmllc1tvcmRlclswXV0sIG4sIG0gPSBzMC5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBpID0gMCwgeSA9IDA7IGkgPCBuOyArK2kpIHkgKz0gc2VyaWVzW2ldW2pdWzFdIHx8IDA7XG4gICAgczBbal1bMV0gKz0gczBbal1bMF0gPSAteSAvIDI7XG4gIH1cbiAgbm9uZShzZXJpZXMsIG9yZGVyKTtcbn1cbiIsImltcG9ydCBub25lIGZyb20gXCIuL25vbmVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkgfHwgISgobSA9IChzMCA9IHNlcmllc1tvcmRlclswXV0pLmxlbmd0aCkgPiAwKSkgcmV0dXJuO1xuICBmb3IgKHZhciB5ID0gMCwgaiA9IDEsIHMwLCBtLCBuOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIHMxID0gMCwgczIgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgc2kgPSBzZXJpZXNbb3JkZXJbaV1dLFxuICAgICAgICAgIHNpajAgPSBzaVtqXVsxXSB8fCAwLFxuICAgICAgICAgIHNpajEgPSBzaVtqIC0gMV1bMV0gfHwgMCxcbiAgICAgICAgICBzMyA9IChzaWowIC0gc2lqMSkgLyAyO1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBpOyArK2spIHtcbiAgICAgICAgdmFyIHNrID0gc2VyaWVzW29yZGVyW2tdXSxcbiAgICAgICAgICAgIHNrajAgPSBza1tqXVsxXSB8fCAwLFxuICAgICAgICAgICAgc2tqMSA9IHNrW2ogLSAxXVsxXSB8fCAwO1xuICAgICAgICBzMyArPSBza2owIC0gc2tqMTtcbiAgICAgIH1cbiAgICAgIHMxICs9IHNpajAsIHMyICs9IHMzICogc2lqMDtcbiAgICB9XG4gICAgczBbaiAtIDFdWzFdICs9IHMwW2ogLSAxXVswXSA9IHk7XG4gICAgaWYgKHMxKSB5IC09IHMyIC8gczE7XG4gIH1cbiAgczBbaiAtIDFdWzFdICs9IHMwW2ogLSAxXVswXSA9IHk7XG4gIG5vbmUoc2VyaWVzLCBvcmRlcik7XG59XG4iLCJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgcGVha3MgPSBzZXJpZXMubWFwKHBlYWspO1xuICByZXR1cm4gbm9uZShzZXJpZXMpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGVha3NbYV0gLSBwZWFrc1tiXTsgfSk7XG59XG5cbmZ1bmN0aW9uIHBlYWsoc2VyaWVzKSB7XG4gIHZhciBpID0gLTEsIGogPSAwLCBuID0gc2VyaWVzLmxlbmd0aCwgdmksIHZqID0gLUluZmluaXR5O1xuICB3aGlsZSAoKytpIDwgbikgaWYgKCh2aSA9ICtzZXJpZXNbaV1bMV0pID4gdmopIHZqID0gdmksIGogPSBpO1xuICByZXR1cm4gajtcbn1cbiIsImltcG9ydCBub25lIGZyb20gXCIuL25vbmVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzKSB7XG4gIHZhciBzdW1zID0gc2VyaWVzLm1hcChzdW0pO1xuICByZXR1cm4gbm9uZShzZXJpZXMpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gc3Vtc1thXSAtIHN1bXNbYl07IH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtKHNlcmllcykge1xuICB2YXIgcyA9IDAsIGkgPSAtMSwgbiA9IHNlcmllcy5sZW5ndGgsIHY7XG4gIHdoaWxlICgrK2kgPCBuKSBpZiAodiA9ICtzZXJpZXNbaV1bMV0pIHMgKz0gdjtcbiAgcmV0dXJuIHM7XG59XG4iLCJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZ1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgcmV0dXJuIGFzY2VuZGluZyhzZXJpZXMpLnJldmVyc2UoKTtcbn1cbiIsImltcG9ydCBhcHBlYXJhbmNlIGZyb20gXCIuL2FwcGVhcmFuY2VcIjtcbmltcG9ydCB7c3VtfSBmcm9tIFwiLi9hc2NlbmRpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzKSB7XG4gIHZhciBuID0gc2VyaWVzLmxlbmd0aCxcbiAgICAgIGksXG4gICAgICBqLFxuICAgICAgc3VtcyA9IHNlcmllcy5tYXAoc3VtKSxcbiAgICAgIG9yZGVyID0gYXBwZWFyYW5jZShzZXJpZXMpLFxuICAgICAgdG9wID0gMCxcbiAgICAgIGJvdHRvbSA9IDAsXG4gICAgICB0b3BzID0gW10sXG4gICAgICBib3R0b21zID0gW107XG5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGogPSBvcmRlcltpXTtcbiAgICBpZiAodG9wIDwgYm90dG9tKSB7XG4gICAgICB0b3AgKz0gc3Vtc1tqXTtcbiAgICAgIHRvcHMucHVzaChqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm90dG9tICs9IHN1bXNbal07XG4gICAgICBib3R0b21zLnB1c2goaik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJvdHRvbXMucmV2ZXJzZSgpLmNvbmNhdCh0b3BzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgbiA9IHNlcmllcy5sZW5ndGgsIG8gPSBuZXcgQXJyYXkobik7XG4gIHdoaWxlICgtLW4gPj0gMCkgb1tuXSA9IG47XG4gIHJldHVybiBvO1xufVxuIiwiaW1wb3J0IG5vbmUgZnJvbSBcIi4vbm9uZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgcmV0dXJuIG5vbmUoc2VyaWVzKS5yZXZlcnNlKCk7XG59XG4iLCJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCBkZXNjZW5kaW5nIGZyb20gXCIuL2Rlc2NlbmRpbmdcIjtcbmltcG9ydCBpZGVudGl0eSBmcm9tIFwiLi9pZGVudGl0eVwiO1xuaW1wb3J0IHt0YXV9IGZyb20gXCIuL21hdGhcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB2YWx1ZSA9IGlkZW50aXR5LFxuICAgICAgc29ydFZhbHVlcyA9IGRlc2NlbmRpbmcsXG4gICAgICBzb3J0ID0gbnVsbCxcbiAgICAgIHN0YXJ0QW5nbGUgPSBjb25zdGFudCgwKSxcbiAgICAgIGVuZEFuZ2xlID0gY29uc3RhbnQodGF1KSxcbiAgICAgIHBhZEFuZ2xlID0gY29uc3RhbnQoMCk7XG5cbiAgZnVuY3Rpb24gcGllKGRhdGEpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IGRhdGEubGVuZ3RoLFxuICAgICAgICBqLFxuICAgICAgICBrLFxuICAgICAgICBzdW0gPSAwLFxuICAgICAgICBpbmRleCA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgYXJjcyA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgYTAgPSArc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICBkYSA9IE1hdGgubWluKHRhdSwgTWF0aC5tYXgoLXRhdSwgZW5kQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSAtIGEwKSksXG4gICAgICAgIGExLFxuICAgICAgICBwID0gTWF0aC5taW4oTWF0aC5hYnMoZGEpIC8gbiwgcGFkQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSksXG4gICAgICAgIHBhID0gcCAqIChkYSA8IDAgPyAtMSA6IDEpLFxuICAgICAgICB2O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKCh2ID0gYXJjc1tpbmRleFtpXSA9IGldID0gK3ZhbHVlKGRhdGFbaV0sIGksIGRhdGEpKSA+IDApIHtcbiAgICAgICAgc3VtICs9IHY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3B0aW9uYWxseSBzb3J0IHRoZSBhcmNzIGJ5IHByZXZpb3VzbHktY29tcHV0ZWQgdmFsdWVzIG9yIGJ5IGRhdGEuXG4gICAgaWYgKHNvcnRWYWx1ZXMgIT0gbnVsbCkgaW5kZXguc29ydChmdW5jdGlvbihpLCBqKSB7IHJldHVybiBzb3J0VmFsdWVzKGFyY3NbaV0sIGFyY3Nbal0pOyB9KTtcbiAgICBlbHNlIGlmIChzb3J0ICE9IG51bGwpIGluZGV4LnNvcnQoZnVuY3Rpb24oaSwgaikgeyByZXR1cm4gc29ydChkYXRhW2ldLCBkYXRhW2pdKTsgfSk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBhcmNzISBUaGV5IGFyZSBzdG9yZWQgaW4gdGhlIG9yaWdpbmFsIGRhdGEncyBvcmRlci5cbiAgICBmb3IgKGkgPSAwLCBrID0gc3VtID8gKGRhIC0gbiAqIHBhKSAvIHN1bSA6IDA7IGkgPCBuOyArK2ksIGEwID0gYTEpIHtcbiAgICAgIGogPSBpbmRleFtpXSwgdiA9IGFyY3Nbal0sIGExID0gYTAgKyAodiA+IDAgPyB2ICogayA6IDApICsgcGEsIGFyY3Nbal0gPSB7XG4gICAgICAgIGRhdGE6IGRhdGFbal0sXG4gICAgICAgIGluZGV4OiBpLFxuICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgc3RhcnRBbmdsZTogYTAsXG4gICAgICAgIGVuZEFuZ2xlOiBhMSxcbiAgICAgICAgcGFkQW5nbGU6IHBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyY3M7XG4gIH1cblxuICBwaWUudmFsdWUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmFsdWUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgcGllKSA6IHZhbHVlO1xuICB9O1xuXG4gIHBpZS5zb3J0VmFsdWVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNvcnRWYWx1ZXMgPSBfLCBzb3J0ID0gbnVsbCwgcGllKSA6IHNvcnRWYWx1ZXM7XG4gIH07XG5cbiAgcGllLnNvcnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc29ydCA9IF8sIHNvcnRWYWx1ZXMgPSBudWxsLCBwaWUpIDogc29ydDtcbiAgfTtcblxuICBwaWUuc3RhcnRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdGFydEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHBpZSkgOiBzdGFydEFuZ2xlO1xuICB9O1xuXG4gIHBpZS5lbmRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChlbmRBbmdsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBwaWUpIDogZW5kQW5nbGU7XG4gIH07XG5cbiAgcGllLnBhZEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHBpZSkgOiBwYWRBbmdsZTtcbiAgfTtcblxuICByZXR1cm4gcGllO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIHgocCkge1xuICByZXR1cm4gcFswXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHkocCkge1xuICByZXR1cm4gcFsxXTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgcmV0dXJuIFsoeSA9ICt5KSAqIE1hdGguY29zKHggLT0gTWF0aC5QSSAvIDIpLCB5ICogTWF0aC5zaW4oeCldO1xufVxuIiwiaW1wb3J0IHtzbGljZX0gZnJvbSBcIi4vYXJyYXlcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuaW1wb3J0IG9mZnNldE5vbmUgZnJvbSBcIi4vb2Zmc2V0L25vbmVcIjtcbmltcG9ydCBvcmRlck5vbmUgZnJvbSBcIi4vb3JkZXIvbm9uZVwiO1xuXG5mdW5jdGlvbiBzdGFja1ZhbHVlKGQsIGtleSkge1xuICByZXR1cm4gZFtrZXldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGtleXMgPSBjb25zdGFudChbXSksXG4gICAgICBvcmRlciA9IG9yZGVyTm9uZSxcbiAgICAgIG9mZnNldCA9IG9mZnNldE5vbmUsXG4gICAgICB2YWx1ZSA9IHN0YWNrVmFsdWU7XG5cbiAgZnVuY3Rpb24gc3RhY2soZGF0YSkge1xuICAgIHZhciBreiA9IGtleXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgaSxcbiAgICAgICAgbSA9IGRhdGEubGVuZ3RoLFxuICAgICAgICBuID0ga3oubGVuZ3RoLFxuICAgICAgICBzeiA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgb3o7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBmb3IgKHZhciBraSA9IGt6W2ldLCBzaSA9IHN6W2ldID0gbmV3IEFycmF5KG0pLCBqID0gMCwgc2lqOyBqIDwgbTsgKytqKSB7XG4gICAgICAgIHNpW2pdID0gc2lqID0gWzAsICt2YWx1ZShkYXRhW2pdLCBraSwgaiwgZGF0YSldO1xuICAgICAgICBzaWouZGF0YSA9IGRhdGFbal07XG4gICAgICB9XG4gICAgICBzaS5rZXkgPSBraTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBveiA9IG9yZGVyKHN6KTsgaSA8IG47ICsraSkge1xuICAgICAgc3pbb3pbaV1dLmluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBvZmZzZXQoc3osIG96KTtcbiAgICByZXR1cm4gc3o7XG4gIH1cblxuICBzdGFjay5rZXlzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGtleXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KHNsaWNlLmNhbGwoXykpLCBzdGFjaykgOiBrZXlzO1xuICB9O1xuXG4gIHN0YWNrLnZhbHVlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZhbHVlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHN0YWNrKSA6IHZhbHVlO1xuICB9O1xuXG4gIHN0YWNrLm9yZGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG9yZGVyID0gXyA9PSBudWxsID8gb3JkZXJOb25lIDogdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChzbGljZS5jYWxsKF8pKSwgc3RhY2spIDogb3JkZXI7XG4gIH07XG5cbiAgc3RhY2sub2Zmc2V0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG9mZnNldCA9IF8gPT0gbnVsbCA/IG9mZnNldE5vbmUgOiBfLCBzdGFjaykgOiBvZmZzZXQ7XG4gIH07XG5cbiAgcmV0dXJuIHN0YWNrO1xufVxuIiwiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNpcmNsZSBmcm9tIFwiLi9zeW1ib2wvY2lyY2xlXCI7XG5pbXBvcnQgY3Jvc3MgZnJvbSBcIi4vc3ltYm9sL2Nyb3NzXCI7XG5pbXBvcnQgZGlhbW9uZCBmcm9tIFwiLi9zeW1ib2wvZGlhbW9uZFwiO1xuaW1wb3J0IHN0YXIgZnJvbSBcIi4vc3ltYm9sL3N0YXJcIjtcbmltcG9ydCBzcXVhcmUgZnJvbSBcIi4vc3ltYm9sL3NxdWFyZVwiO1xuaW1wb3J0IHRyaWFuZ2xlIGZyb20gXCIuL3N5bWJvbC90cmlhbmdsZVwiO1xuaW1wb3J0IHd5ZSBmcm9tIFwiLi9zeW1ib2wvd3llXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcblxuZXhwb3J0IHZhciBzeW1ib2xzID0gW1xuICBjaXJjbGUsXG4gIGNyb3NzLFxuICBkaWFtb25kLFxuICBzcXVhcmUsXG4gIHN0YXIsXG4gIHRyaWFuZ2xlLFxuICB3eWVcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgdHlwZSA9IGNvbnN0YW50KGNpcmNsZSksXG4gICAgICBzaXplID0gY29uc3RhbnQoNjQpLFxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gc3ltYm9sKCkge1xuICAgIHZhciBidWZmZXI7XG4gICAgaWYgKCFjb250ZXh0KSBjb250ZXh0ID0gYnVmZmVyID0gcGF0aCgpO1xuICAgIHR5cGUuYXBwbHkodGhpcywgYXJndW1lbnRzKS5kcmF3KGNvbnRleHQsICtzaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgIGlmIChidWZmZXIpIHJldHVybiBjb250ZXh0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgc3ltYm9sLnR5cGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHlwZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHN5bWJvbCkgOiB0eXBlO1xuICB9O1xuXG4gIHN5bWJvbC5zaXplID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNpemUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgc3ltYm9sKSA6IHNpemU7XG4gIH07XG5cbiAgc3ltYm9sLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY29udGV4dCA9IF8gPT0gbnVsbCA/IG51bGwgOiBfLCBzeW1ib2wpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gc3ltYm9sO1xufVxuIiwiaW1wb3J0IHtwaSwgdGF1fSBmcm9tIFwiLi4vbWF0aFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgciA9IE1hdGguc3FydChzaXplIC8gcGkpO1xuICAgIGNvbnRleHQubW92ZVRvKHIsIDApO1xuICAgIGNvbnRleHQuYXJjKDAsIDAsIHIsIDAsIHRhdSk7XG4gIH1cbn07XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgciA9IE1hdGguc3FydChzaXplIC8gNSkgLyAyO1xuICAgIGNvbnRleHQubW92ZVRvKC0zICogciwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oLXIsIC0zICogcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgLTMgKiByKTtcbiAgICBjb250ZXh0LmxpbmVUbyhyLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oMyAqIHIsIC1yKTtcbiAgICBjb250ZXh0LmxpbmVUbygzICogciwgcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAzICogcik7XG4gICAgY29udGV4dC5saW5lVG8oLXIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC0zICogciwgcik7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiIsInZhciB0YW4zMCA9IE1hdGguc3FydCgxIC8gMyksXG4gICAgdGFuMzBfMiA9IHRhbjMwICogMjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHkgPSBNYXRoLnNxcnQoc2l6ZSAvIHRhbjMwXzIpLFxuICAgICAgICB4ID0geSAqIHRhbjMwO1xuICAgIGNvbnRleHQubW92ZVRvKDAsIC15KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4LCAwKTtcbiAgICBjb250ZXh0LmxpbmVUbygwLCB5KTtcbiAgICBjb250ZXh0LmxpbmVUbygteCwgMCk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciB3ID0gTWF0aC5zcXJ0KHNpemUpLFxuICAgICAgICB4ID0gLXcgLyAyO1xuICAgIGNvbnRleHQucmVjdCh4LCB4LCB3LCB3KTtcbiAgfVxufTtcbiIsImltcG9ydCB7cGksIHRhdX0gZnJvbSBcIi4uL21hdGhcIjtcblxudmFyIGthID0gMC44OTA4MTMwOTE1MjkyODUyMjgxMCxcbiAgICBrciA9IE1hdGguc2luKHBpIC8gMTApIC8gTWF0aC5zaW4oNyAqIHBpIC8gMTApLFxuICAgIGt4ID0gTWF0aC5zaW4odGF1IC8gMTApICoga3IsXG4gICAga3kgPSAtTWF0aC5jb3ModGF1IC8gMTApICoga3I7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgKiBrYSksXG4gICAgICAgIHggPSBreCAqIHIsXG4gICAgICAgIHkgPSBreSAqIHI7XG4gICAgY29udGV4dC5tb3ZlVG8oMCwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKHgsIHkpO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNTsgKytpKSB7XG4gICAgICB2YXIgYSA9IHRhdSAqIGkgLyA1LFxuICAgICAgICAgIGMgPSBNYXRoLmNvcyhhKSxcbiAgICAgICAgICBzID0gTWF0aC5zaW4oYSk7XG4gICAgICBjb250ZXh0LmxpbmVUbyhzICogciwgLWMgKiByKTtcbiAgICAgIGNvbnRleHQubGluZVRvKGMgKiB4IC0gcyAqIHksIHMgKiB4ICsgYyAqIHkpO1xuICAgIH1cbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59O1xuIiwidmFyIHNxcnQzID0gTWF0aC5zcXJ0KDMpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgeSA9IC1NYXRoLnNxcnQoc2l6ZSAvIChzcXJ0MyAqIDMpKTtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCB5ICogMik7XG4gICAgY29udGV4dC5saW5lVG8oLXNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQubGluZVRvKHNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iLCJ2YXIgYyA9IC0wLjUsXG4gICAgcyA9IE1hdGguc3FydCgzKSAvIDIsXG4gICAgayA9IDEgLyBNYXRoLnNxcnQoMTIpLFxuICAgIGEgPSAoayAvIDIgKyAxKSAqIDM7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgLyBhKSxcbiAgICAgICAgeDAgPSByIC8gMixcbiAgICAgICAgeTAgPSByICogayxcbiAgICAgICAgeDEgPSB4MCxcbiAgICAgICAgeTEgPSByICogayArIHIsXG4gICAgICAgIHgyID0gLXgxLFxuICAgICAgICB5MiA9IHkxO1xuICAgIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gICAgY29udGV4dC5saW5lVG8oeDEsIHkxKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4MiwgeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCAtIHMgKiB5MCwgcyAqIHgwICsgYyAqIHkwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgLSBzICogeTEsIHMgKiB4MSArIGMgKiB5MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyIC0gcyAqIHkyLCBzICogeDIgKyBjICogeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCArIHMgKiB5MCwgYyAqIHkwIC0gcyAqIHgwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgKyBzICogeTEsIGMgKiB5MSAtIHMgKiB4MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyICsgcyAqIHkyLCBjICogeTIgLSBzICogeDIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iLCJleHBvcnQge1xuICBub3csXG4gIHRpbWVyLFxuICB0aW1lckZsdXNoXG59IGZyb20gXCIuL3RpbWVyXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgdGltZW91dFxufSBmcm9tIFwiLi90aW1lb3V0XCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgaW50ZXJ2YWxcbn0gZnJvbSBcIi4vaW50ZXJ2YWxcIjtcbiIsImltcG9ydCB7VGltZXIsIG5vd30gZnJvbSBcIi4vdGltZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyLCB0b3RhbCA9IGRlbGF5O1xuICBpZiAoZGVsYXkgPT0gbnVsbCkgcmV0dXJuIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpLCB0O1xuICBkZWxheSA9ICtkZWxheSwgdGltZSA9IHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWU7XG4gIHQucmVzdGFydChmdW5jdGlvbiB0aWNrKGVsYXBzZWQpIHtcbiAgICBlbGFwc2VkICs9IHRvdGFsO1xuICAgIHQucmVzdGFydCh0aWNrLCB0b3RhbCArPSBkZWxheSwgdGltZSk7XG4gICAgY2FsbGJhY2soZWxhcHNlZCk7XG4gIH0sIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG4iLCJpbXBvcnQge1RpbWVyfSBmcm9tIFwiLi90aW1lclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIGRlbGF5ID0gZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXk7XG4gIHQucmVzdGFydChmdW5jdGlvbihlbGFwc2VkKSB7XG4gICAgdC5zdG9wKCk7XG4gICAgY2FsbGJhY2soZWxhcHNlZCArIGRlbGF5KTtcbiAgfSwgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cbiIsInZhciBmcmFtZSA9IDAsIC8vIGlzIGFuIGFuaW1hdGlvbiBmcmFtZSBwZW5kaW5nP1xuICAgIHRpbWVvdXQgPSAwLCAvLyBpcyBhIHRpbWVvdXQgcGVuZGluZz9cbiAgICBpbnRlcnZhbCA9IDAsIC8vIGFyZSBhbnkgdGltZXJzIGFjdGl2ZT9cbiAgICBwb2tlRGVsYXkgPSAxMDAwLCAvLyBob3cgZnJlcXVlbnRseSB3ZSBjaGVjayBmb3IgY2xvY2sgc2tld1xuICAgIHRhc2tIZWFkLFxuICAgIHRhc2tUYWlsLFxuICAgIGNsb2NrTGFzdCA9IDAsXG4gICAgY2xvY2tOb3cgPSAwLFxuICAgIGNsb2NrU2tldyA9IDAsXG4gICAgY2xvY2sgPSB0eXBlb2YgcGVyZm9ybWFuY2UgPT09IFwib2JqZWN0XCIgJiYgcGVyZm9ybWFuY2Uubm93ID8gcGVyZm9ybWFuY2UgOiBEYXRlLFxuICAgIHNldEZyYW1lID0gdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdykgOiBmdW5jdGlvbihmKSB7IHNldFRpbWVvdXQoZiwgMTcpOyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbm93KCkge1xuICByZXR1cm4gY2xvY2tOb3cgfHwgKHNldEZyYW1lKGNsZWFyTm93KSwgY2xvY2tOb3cgPSBjbG9jay5ub3coKSArIGNsb2NrU2tldyk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyTm93KCkge1xuICBjbG9ja05vdyA9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lcigpIHtcbiAgdGhpcy5fY2FsbCA9XG4gIHRoaXMuX3RpbWUgPVxuICB0aGlzLl9uZXh0ID0gbnVsbDtcbn1cblxuVGltZXIucHJvdG90eXBlID0gdGltZXIucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVGltZXIsXG4gIHJlc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIHRpbWUgPSAodGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZSkgKyAoZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXkpO1xuICAgIGlmICghdGhpcy5fbmV4dCAmJiB0YXNrVGFpbCAhPT0gdGhpcykge1xuICAgICAgaWYgKHRhc2tUYWlsKSB0YXNrVGFpbC5fbmV4dCA9IHRoaXM7XG4gICAgICBlbHNlIHRhc2tIZWFkID0gdGhpcztcbiAgICAgIHRhc2tUYWlsID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fY2FsbCA9IGNhbGxiYWNrO1xuICAgIHRoaXMuX3RpbWUgPSB0aW1lO1xuICAgIHNsZWVwKCk7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jYWxsKSB7XG4gICAgICB0aGlzLl9jYWxsID0gbnVsbDtcbiAgICAgIHRoaXMuX3RpbWUgPSBJbmZpbml0eTtcbiAgICAgIHNsZWVwKCk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGltZXIoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lckZsdXNoKCkge1xuICBub3coKTsgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWUsIGlmIG5vdCBhbHJlYWR5IHNldC5cbiAgKytmcmFtZTsgLy8gUHJldGVuZCB3ZeKAmXZlIHNldCBhbiBhbGFybSwgaWYgd2UgaGF2ZW7igJl0IGFscmVhZHkuXG4gIHZhciB0ID0gdGFza0hlYWQsIGU7XG4gIHdoaWxlICh0KSB7XG4gICAgaWYgKChlID0gY2xvY2tOb3cgLSB0Ll90aW1lKSA+PSAwKSB0Ll9jYWxsLmNhbGwobnVsbCwgZSk7XG4gICAgdCA9IHQuX25leHQ7XG4gIH1cbiAgLS1mcmFtZTtcbn1cblxuZnVuY3Rpb24gd2FrZSgpIHtcbiAgY2xvY2tOb3cgPSAoY2xvY2tMYXN0ID0gY2xvY2subm93KCkpICsgY2xvY2tTa2V3O1xuICBmcmFtZSA9IHRpbWVvdXQgPSAwO1xuICB0cnkge1xuICAgIHRpbWVyRmx1c2goKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcmFtZSA9IDA7XG4gICAgbmFwKCk7XG4gICAgY2xvY2tOb3cgPSAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBva2UoKSB7XG4gIHZhciBub3cgPSBjbG9jay5ub3coKSwgZGVsYXkgPSBub3cgLSBjbG9ja0xhc3Q7XG4gIGlmIChkZWxheSA+IHBva2VEZWxheSkgY2xvY2tTa2V3IC09IGRlbGF5LCBjbG9ja0xhc3QgPSBub3c7XG59XG5cbmZ1bmN0aW9uIG5hcCgpIHtcbiAgdmFyIHQwLCB0MSA9IHRhc2tIZWFkLCB0MiwgdGltZSA9IEluZmluaXR5O1xuICB3aGlsZSAodDEpIHtcbiAgICBpZiAodDEuX2NhbGwpIHtcbiAgICAgIGlmICh0aW1lID4gdDEuX3RpbWUpIHRpbWUgPSB0MS5fdGltZTtcbiAgICAgIHQwID0gdDEsIHQxID0gdDEuX25leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQyID0gdDEuX25leHQsIHQxLl9uZXh0ID0gbnVsbDtcbiAgICAgIHQxID0gdDAgPyB0MC5fbmV4dCA9IHQyIDogdGFza0hlYWQgPSB0MjtcbiAgICB9XG4gIH1cbiAgdGFza1RhaWwgPSB0MDtcbiAgc2xlZXAodGltZSk7XG59XG5cbmZ1bmN0aW9uIHNsZWVwKHRpbWUpIHtcbiAgaWYgKGZyYW1lKSByZXR1cm47IC8vIFNvb25lc3QgYWxhcm0gYWxyZWFkeSBzZXQsIG9yIHdpbGwgYmUuXG4gIGlmICh0aW1lb3V0KSB0aW1lb3V0ID0gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB2YXIgZGVsYXkgPSB0aW1lIC0gY2xvY2tOb3c7IC8vIFN0cmljdGx5IGxlc3MgdGhhbiBpZiB3ZSByZWNvbXB1dGVkIGNsb2NrTm93LlxuICBpZiAoZGVsYXkgPiAyNCkge1xuICAgIGlmICh0aW1lIDwgSW5maW5pdHkpIHRpbWVvdXQgPSBzZXRUaW1lb3V0KHdha2UsIHRpbWUgLSBjbG9jay5ub3coKSAtIGNsb2NrU2tldyk7XG4gICAgaWYgKGludGVydmFsKSBpbnRlcnZhbCA9IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9IGVsc2Uge1xuICAgIGlmICghaW50ZXJ2YWwpIGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpLCBpbnRlcnZhbCA9IHNldEludGVydmFsKHBva2UsIHBva2VEZWxheSk7XG4gICAgZnJhbWUgPSAxLCBzZXRGcmFtZSh3YWtlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi90cmFuc2l0aW9uL2luZGV4XCI7XG5pbXBvcnQge1NDSEVEVUxFRH0gZnJvbSBcIi4vdHJhbnNpdGlvbi9zY2hlZHVsZVwiO1xuXG52YXIgcm9vdCA9IFtudWxsXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgbmFtZSkge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb24sXG4gICAgICBzY2hlZHVsZSxcbiAgICAgIGk7XG5cbiAgaWYgKHNjaGVkdWxlcykge1xuICAgIG5hbWUgPSBuYW1lID09IG51bGwgPyBudWxsIDogbmFtZSArIFwiXCI7XG4gICAgZm9yIChpIGluIHNjaGVkdWxlcykge1xuICAgICAgaWYgKChzY2hlZHVsZSA9IHNjaGVkdWxlc1tpXSkuc3RhdGUgPiBTQ0hFRFVMRUQgJiYgc2NoZWR1bGUubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gbmV3IFRyYW5zaXRpb24oW1tub2RlXV0sIHJvb3QsIG5hbWUsICtpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCBcIi4vc2VsZWN0aW9uL2luZGV4XCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJhbnNpdGlvbn0gZnJvbSBcIi4vdHJhbnNpdGlvbi9pbmRleFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGFjdGl2ZX0gZnJvbSBcIi4vYWN0aXZlXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJydXB0fSBmcm9tIFwiLi9pbnRlcnJ1cHRcIjtcbiIsImltcG9ydCB7U1RBUlRJTkcsIEVORElORywgRU5ERUR9IGZyb20gXCIuL3RyYW5zaXRpb24vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgbmFtZSkge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb24sXG4gICAgICBzY2hlZHVsZSxcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGVtcHR5ID0gdHJ1ZSxcbiAgICAgIGk7XG5cbiAgaWYgKCFzY2hlZHVsZXMpIHJldHVybjtcblxuICBuYW1lID0gbmFtZSA9PSBudWxsID8gbnVsbCA6IG5hbWUgKyBcIlwiO1xuXG4gIGZvciAoaSBpbiBzY2hlZHVsZXMpIHtcbiAgICBpZiAoKHNjaGVkdWxlID0gc2NoZWR1bGVzW2ldKS5uYW1lICE9PSBuYW1lKSB7IGVtcHR5ID0gZmFsc2U7IGNvbnRpbnVlOyB9XG4gICAgYWN0aXZlID0gc2NoZWR1bGUuc3RhdGUgPiBTVEFSVElORyAmJiBzY2hlZHVsZS5zdGF0ZSA8IEVORElORztcbiAgICBzY2hlZHVsZS5zdGF0ZSA9IEVOREVEO1xuICAgIHNjaGVkdWxlLnRpbWVyLnN0b3AoKTtcbiAgICBpZiAoYWN0aXZlKSBzY2hlZHVsZS5vbi5jYWxsKFwiaW50ZXJydXB0XCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIHNjaGVkdWxlLmluZGV4LCBzY2hlZHVsZS5ncm91cCk7XG4gICAgZGVsZXRlIHNjaGVkdWxlc1tpXTtcbiAgfVxuXG4gIGlmIChlbXB0eSkgZGVsZXRlIG5vZGUuX190cmFuc2l0aW9uO1xufVxuIiwiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCBzZWxlY3Rpb25faW50ZXJydXB0IGZyb20gXCIuL2ludGVycnVwdFwiO1xuaW1wb3J0IHNlbGVjdGlvbl90cmFuc2l0aW9uIGZyb20gXCIuL3RyYW5zaXRpb25cIjtcblxuc2VsZWN0aW9uLnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBzZWxlY3Rpb25faW50ZXJydXB0O1xuc2VsZWN0aW9uLnByb3RvdHlwZS50cmFuc2l0aW9uID0gc2VsZWN0aW9uX3RyYW5zaXRpb247XG4iLCJpbXBvcnQgaW50ZXJydXB0IGZyb20gXCIuLi9pbnRlcnJ1cHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIGludGVycnVwdCh0aGlzLCBuYW1lKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQge1RyYW5zaXRpb24sIG5ld0lkfSBmcm9tIFwiLi4vdHJhbnNpdGlvbi9pbmRleFwiO1xuaW1wb3J0IHNjaGVkdWxlIGZyb20gXCIuLi90cmFuc2l0aW9uL3NjaGVkdWxlXCI7XG5pbXBvcnQge2Vhc2VDdWJpY0luT3V0fSBmcm9tIFwiZDMtZWFzZVwiO1xuaW1wb3J0IHtub3d9IGZyb20gXCJkMy10aW1lclwiO1xuXG52YXIgZGVmYXVsdFRpbWluZyA9IHtcbiAgdGltZTogbnVsbCwgLy8gU2V0IG9uIHVzZS5cbiAgZGVsYXk6IDAsXG4gIGR1cmF0aW9uOiAyNTAsXG4gIGVhc2U6IGVhc2VDdWJpY0luT3V0XG59O1xuXG5mdW5jdGlvbiBpbmhlcml0KG5vZGUsIGlkKSB7XG4gIHZhciB0aW1pbmc7XG4gIHdoaWxlICghKHRpbWluZyA9IG5vZGUuX190cmFuc2l0aW9uKSB8fCAhKHRpbWluZyA9IHRpbWluZ1tpZF0pKSB7XG4gICAgaWYgKCEobm9kZSA9IG5vZGUucGFyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VGltaW5nLnRpbWUgPSBub3coKSwgZGVmYXVsdFRpbWluZztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRpbWluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICB2YXIgaWQsXG4gICAgICB0aW1pbmc7XG5cbiAgaWYgKG5hbWUgaW5zdGFuY2VvZiBUcmFuc2l0aW9uKSB7XG4gICAgaWQgPSBuYW1lLl9pZCwgbmFtZSA9IG5hbWUuX25hbWU7XG4gIH0gZWxzZSB7XG4gICAgaWQgPSBuZXdJZCgpLCAodGltaW5nID0gZGVmYXVsdFRpbWluZykudGltZSA9IG5vdygpLCBuYW1lID0gbmFtZSA9PSBudWxsID8gbnVsbCA6IG5hbWUgKyBcIlwiO1xuICB9XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc2NoZWR1bGUobm9kZSwgbmFtZSwgaWQsIGksIGdyb3VwLCB0aW1pbmcgfHwgaW5oZXJpdChub2RlLCBpZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkKTtcbn1cbiIsImltcG9ydCB7aW50ZXJwb2xhdGVUcmFuc2Zvcm1TdmcgYXMgaW50ZXJwb2xhdGVUcmFuc2Zvcm19IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHtuYW1lc3BhY2V9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7dHdlZW5WYWx1ZX0gZnJvbSBcIi4vdHdlZW5cIjtcbmltcG9ydCBpbnRlcnBvbGF0ZSBmcm9tIFwiLi9pbnRlcnBvbGF0ZVwiO1xuXG5mdW5jdGlvbiBhdHRyUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyUmVtb3ZlTlMoZnVsbG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50KG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZTEpIHtcbiAgdmFyIHZhbHVlMDAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gdGhpcy5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHZhbHVlMDAgPSB2YWx1ZTAsIHZhbHVlMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudE5TKGZ1bGxuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciB2YWx1ZTAwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlMCA9IHRoaXMuZ2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICByZXR1cm4gdmFsdWUwID09PSB2YWx1ZTEgPyBudWxsXG4gICAgICAgIDogdmFsdWUwID09PSB2YWx1ZTAwID8gaW50ZXJwb2xhdGUwXG4gICAgICAgIDogaW50ZXJwb2xhdGUwID0gaW50ZXJwb2xhdGUodmFsdWUwMCA9IHZhbHVlMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uKG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwLCB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICBpZiAodmFsdWUxID09IG51bGwpIHJldHVybiB2b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIHZhbHVlMCA9IHRoaXMuZ2V0QXR0cmlidXRlKG5hbWUpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgJiYgdmFsdWUxID09PSB2YWx1ZTEwID8gaW50ZXJwb2xhdGUwXG4gICAgICAgIDogaW50ZXJwb2xhdGUwID0gaW50ZXJwb2xhdGUodmFsdWUwMCA9IHZhbHVlMCwgdmFsdWUxMCA9IHZhbHVlMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUpIHtcbiAgdmFyIHZhbHVlMDAsXG4gICAgICB2YWx1ZTEwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlMCwgdmFsdWUxID0gdmFsdWUodGhpcyk7XG4gICAgaWYgKHZhbHVlMSA9PSBudWxsKSByZXR1cm4gdm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgdmFsdWUwID0gdGhpcy5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgJiYgdmFsdWUxID09PSB2YWx1ZTEwID8gaW50ZXJwb2xhdGUwXG4gICAgICAgIDogaW50ZXJwb2xhdGUwID0gaW50ZXJwb2xhdGUodmFsdWUwMCA9IHZhbHVlMCwgdmFsdWUxMCA9IHZhbHVlMSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKSwgaSA9IGZ1bGxuYW1lID09PSBcInRyYW5zZm9ybVwiID8gaW50ZXJwb2xhdGVUcmFuc2Zvcm0gOiBpbnRlcnBvbGF0ZTtcbiAgcmV0dXJuIHRoaXMuYXR0clR3ZWVuKG5hbWUsIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJGdW5jdGlvbk5TIDogYXR0ckZ1bmN0aW9uKShmdWxsbmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcImF0dHIuXCIgKyBuYW1lLCB2YWx1ZSkpXG4gICAgICA6IHZhbHVlID09IG51bGwgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKShmdWxsbmFtZSlcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKGZ1bGxuYW1lLCBpLCB2YWx1ZSArIFwiXCIpKTtcbn1cbiIsImltcG9ydCB7bmFtZXNwYWNlfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbmZ1bmN0aW9uIGF0dHJUd2Vlbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMsIGkgPSB2YWx1ZS5hcHBseShub2RlLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBpICYmIGZ1bmN0aW9uKHQpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCBpKHQpKTtcbiAgICB9O1xuICB9XG4gIHR3ZWVuLl92YWx1ZSA9IHZhbHVlO1xuICByZXR1cm4gdHdlZW47XG59XG5cbmZ1bmN0aW9uIGF0dHJUd2VlbihuYW1lLCB2YWx1ZSkge1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMsIGkgPSB2YWx1ZS5hcHBseShub2RlLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBpICYmIGZ1bmN0aW9uKHQpIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsIGkodCkpO1xuICAgIH07XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGtleSA9IFwiYXR0ci5cIiArIG5hbWU7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikgcmV0dXJuIChrZXkgPSB0aGlzLnR3ZWVuKGtleSkpICYmIGtleS5fdmFsdWU7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdGhpcy50d2VlbihrZXksIG51bGwpO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuICByZXR1cm4gdGhpcy50d2VlbihrZXksIChmdWxsbmFtZS5sb2NhbCA/IGF0dHJUd2Vlbk5TIDogYXR0clR3ZWVuKShmdWxsbmFtZSwgdmFsdWUpKTtcbn1cbiIsImltcG9ydCB7Z2V0LCBpbml0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5mdW5jdGlvbiBkZWxheUZ1bmN0aW9uKGlkLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgaW5pdCh0aGlzLCBpZCkuZGVsYXkgPSArdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVsYXlDb25zdGFudChpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID0gK3ZhbHVlLCBmdW5jdGlvbigpIHtcbiAgICBpbml0KHRoaXMsIGlkKS5kZWxheSA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBkZWxheUZ1bmN0aW9uXG4gICAgICAgICAgOiBkZWxheUNvbnN0YW50KShpZCwgdmFsdWUpKVxuICAgICAgOiBnZXQodGhpcy5ub2RlKCksIGlkKS5kZWxheTtcbn1cbiIsImltcG9ydCB7Z2V0LCBzZXR9IGZyb20gXCIuL3NjaGVkdWxlXCI7XG5cbmZ1bmN0aW9uIGR1cmF0aW9uRnVuY3Rpb24oaWQsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBzZXQodGhpcywgaWQpLmR1cmF0aW9uID0gK3ZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGR1cmF0aW9uQ29uc3RhbnQoaWQsIHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9ICt2YWx1ZSwgZnVuY3Rpb24oKSB7XG4gICAgc2V0KHRoaXMsIGlkKS5kdXJhdGlvbiA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBkdXJhdGlvbkZ1bmN0aW9uXG4gICAgICAgICAgOiBkdXJhdGlvbkNvbnN0YW50KShpZCwgdmFsdWUpKVxuICAgICAgOiBnZXQodGhpcy5ub2RlKCksIGlkKS5kdXJhdGlvbjtcbn1cbiIsImltcG9ydCB7Z2V0LCBzZXR9IGZyb20gXCIuL3NjaGVkdWxlXCI7XG5cbmZ1bmN0aW9uIGVhc2VDb25zdGFudChpZCwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBzZXQodGhpcywgaWQpLmVhc2UgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKGVhc2VDb25zdGFudChpZCwgdmFsdWUpKVxuICAgICAgOiBnZXQodGhpcy5ub2RlKCksIGlkKS5lYXNlO1xufVxuIiwiaW1wb3J0IHttYXRjaGVyfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggIT09IFwiZnVuY3Rpb25cIikgbWF0Y2ggPSBtYXRjaGVyKG1hdGNoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gW10sIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgbWF0Y2guY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpIHtcbiAgICAgICAgc3ViZ3JvdXAucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCB0aGlzLl9uYW1lLCB0aGlzLl9pZCk7XG59XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHRyYW5zaXRpb25fYXR0ciBmcm9tIFwiLi9hdHRyXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9hdHRyVHdlZW4gZnJvbSBcIi4vYXR0clR3ZWVuXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9kZWxheSBmcm9tIFwiLi9kZWxheVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fZHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb25cIjtcbmltcG9ydCB0cmFuc2l0aW9uX2Vhc2UgZnJvbSBcIi4vZWFzZVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlclwiO1xuaW1wb3J0IHRyYW5zaXRpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2VcIjtcbmltcG9ydCB0cmFuc2l0aW9uX29uIGZyb20gXCIuL29uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0XCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fc3R5bGVUd2VlbiBmcm9tIFwiLi9zdHlsZVR3ZWVuXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl90ZXh0IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHRyYW5zaXRpb25fdHdlZW4gZnJvbSBcIi4vdHdlZW5cIjtcblxudmFyIGlkID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFRyYW5zaXRpb24oZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCkge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xuICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgdGhpcy5faWQgPSBpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbihuYW1lKSB7XG4gIHJldHVybiBzZWxlY3Rpb24oKS50cmFuc2l0aW9uKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQoKSB7XG4gIHJldHVybiArK2lkO1xufVxuXG52YXIgc2VsZWN0aW9uX3Byb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGU7XG5cblRyYW5zaXRpb24ucHJvdG90eXBlID0gdHJhbnNpdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2l0aW9uLFxuICBzZWxlY3Q6IHRyYW5zaXRpb25fc2VsZWN0LFxuICBzZWxlY3RBbGw6IHRyYW5zaXRpb25fc2VsZWN0QWxsLFxuICBmaWx0ZXI6IHRyYW5zaXRpb25fZmlsdGVyLFxuICBtZXJnZTogdHJhbnNpdGlvbl9tZXJnZSxcbiAgc2VsZWN0aW9uOiB0cmFuc2l0aW9uX3NlbGVjdGlvbixcbiAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbl90cmFuc2l0aW9uLFxuICBjYWxsOiBzZWxlY3Rpb25fcHJvdG90eXBlLmNhbGwsXG4gIG5vZGVzOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGUsXG4gIHNpemU6IHNlbGVjdGlvbl9wcm90b3R5cGUuc2l6ZSxcbiAgZW1wdHk6IHNlbGVjdGlvbl9wcm90b3R5cGUuZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9wcm90b3R5cGUuZWFjaCxcbiAgb246IHRyYW5zaXRpb25fb24sXG4gIGF0dHI6IHRyYW5zaXRpb25fYXR0cixcbiAgYXR0clR3ZWVuOiB0cmFuc2l0aW9uX2F0dHJUd2VlbixcbiAgc3R5bGU6IHRyYW5zaXRpb25fc3R5bGUsXG4gIHN0eWxlVHdlZW46IHRyYW5zaXRpb25fc3R5bGVUd2VlbixcbiAgdGV4dDogdHJhbnNpdGlvbl90ZXh0LFxuICByZW1vdmU6IHRyYW5zaXRpb25fcmVtb3ZlLFxuICB0d2VlbjogdHJhbnNpdGlvbl90d2VlbixcbiAgZGVsYXk6IHRyYW5zaXRpb25fZGVsYXksXG4gIGR1cmF0aW9uOiB0cmFuc2l0aW9uX2R1cmF0aW9uLFxuICBlYXNlOiB0cmFuc2l0aW9uX2Vhc2Vcbn07XG4iLCJpbXBvcnQge2NvbG9yfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVOdW1iZXIsIGludGVycG9sYXRlUmdiLCBpbnRlcnBvbGF0ZVN0cmluZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGM7XG4gIHJldHVybiAodHlwZW9mIGIgPT09IFwibnVtYmVyXCIgPyBpbnRlcnBvbGF0ZU51bWJlclxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyBpbnRlcnBvbGF0ZVJnYlxuICAgICAgOiAoYyA9IGNvbG9yKGIpKSA/IChiID0gYywgaW50ZXJwb2xhdGVSZ2IpXG4gICAgICA6IGludGVycG9sYXRlU3RyaW5nKShhLCBiKTtcbn1cbiIsImltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHJhbnNpdGlvbikge1xuICBpZiAodHJhbnNpdGlvbi5faWQgIT09IHRoaXMuX2lkKSB0aHJvdyBuZXcgRXJyb3I7XG5cbiAgZm9yICh2YXIgZ3JvdXBzMCA9IHRoaXMuX2dyb3VwcywgZ3JvdXBzMSA9IHRyYW5zaXRpb24uX2dyb3VwcywgbTAgPSBncm91cHMwLmxlbmd0aCwgbTEgPSBncm91cHMxLmxlbmd0aCwgbSA9IE1hdGgubWluKG0wLCBtMSksIG1lcmdlcyA9IG5ldyBBcnJheShtMCksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAwID0gZ3JvdXBzMFtqXSwgZ3JvdXAxID0gZ3JvdXBzMVtqXSwgbiA9IGdyb3VwMC5sZW5ndGgsIG1lcmdlID0gbWVyZ2VzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cDBbaV0gfHwgZ3JvdXAxW2ldKSB7XG4gICAgICAgIG1lcmdlW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKDsgaiA8IG0wOyArK2opIHtcbiAgICBtZXJnZXNbal0gPSBncm91cHMwW2pdO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKG1lcmdlcywgdGhpcy5fcGFyZW50cywgdGhpcy5fbmFtZSwgdGhpcy5faWQpO1xufVxuIiwiaW1wb3J0IHtnZXQsIHNldCwgaW5pdH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZnVuY3Rpb24gc3RhcnQobmFtZSkge1xuICByZXR1cm4gKG5hbWUgKyBcIlwiKS50cmltKCkuc3BsaXQoL158XFxzKy8pLmV2ZXJ5KGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuICF0IHx8IHQgPT09IFwic3RhcnRcIjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uRnVuY3Rpb24oaWQsIG5hbWUsIGxpc3RlbmVyKSB7XG4gIHZhciBvbjAsIG9uMSwgc2l0ID0gc3RhcnQobmFtZSkgPyBpbml0IDogc2V0O1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2l0KHRoaXMsIGlkKSxcbiAgICAgICAgb24gPSBzY2hlZHVsZS5vbjtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgYSBkaXNwYXRjaCB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCBkaXNwYXRjaCBhbmQgd2XigJlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAob24gIT09IG9uMCkgKG9uMSA9IChvbjAgPSBvbikuY29weSgpKS5vbihuYW1lLCBsaXN0ZW5lcik7XG5cbiAgICBzY2hlZHVsZS5vbiA9IG9uMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgbGlzdGVuZXIpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyXG4gICAgICA/IGdldCh0aGlzLm5vZGUoKSwgaWQpLm9uLm9uKG5hbWUpXG4gICAgICA6IHRoaXMuZWFjaChvbkZ1bmN0aW9uKGlkLCBuYW1lLCBsaXN0ZW5lcikpO1xufVxuIiwiZnVuY3Rpb24gcmVtb3ZlRnVuY3Rpb24oaWQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gICAgZm9yICh2YXIgaSBpbiB0aGlzLl9fdHJhbnNpdGlvbikgaWYgKCtpICE9PSBpZCkgcmV0dXJuO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm9uKFwiZW5kLnJlbW92ZVwiLCByZW1vdmVGdW5jdGlvbih0aGlzLl9pZCkpO1xufVxuIiwiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge3RpbWVyLCB0aW1lb3V0fSBmcm9tIFwiZDMtdGltZXJcIjtcblxudmFyIGVtcHR5T24gPSBkaXNwYXRjaChcInN0YXJ0XCIsIFwiZW5kXCIsIFwiaW50ZXJydXB0XCIpO1xudmFyIGVtcHR5VHdlZW4gPSBbXTtcblxuZXhwb3J0IHZhciBDUkVBVEVEID0gMDtcbmV4cG9ydCB2YXIgU0NIRURVTEVEID0gMTtcbmV4cG9ydCB2YXIgU1RBUlRJTkcgPSAyO1xuZXhwb3J0IHZhciBTVEFSVEVEID0gMztcbmV4cG9ydCB2YXIgUlVOTklORyA9IDQ7XG5leHBvcnQgdmFyIEVORElORyA9IDU7XG5leHBvcnQgdmFyIEVOREVEID0gNjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgbmFtZSwgaWQsIGluZGV4LCBncm91cCwgdGltaW5nKSB7XG4gIHZhciBzY2hlZHVsZXMgPSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgaWYgKCFzY2hlZHVsZXMpIG5vZGUuX190cmFuc2l0aW9uID0ge307XG4gIGVsc2UgaWYgKGlkIGluIHNjaGVkdWxlcykgcmV0dXJuO1xuICBjcmVhdGUobm9kZSwgaWQsIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIGluZGV4OiBpbmRleCwgLy8gRm9yIGNvbnRleHQgZHVyaW5nIGNhbGxiYWNrLlxuICAgIGdyb3VwOiBncm91cCwgLy8gRm9yIGNvbnRleHQgZHVyaW5nIGNhbGxiYWNrLlxuICAgIG9uOiBlbXB0eU9uLFxuICAgIHR3ZWVuOiBlbXB0eVR3ZWVuLFxuICAgIHRpbWU6IHRpbWluZy50aW1lLFxuICAgIGRlbGF5OiB0aW1pbmcuZGVsYXksXG4gICAgZHVyYXRpb246IHRpbWluZy5kdXJhdGlvbixcbiAgICBlYXNlOiB0aW1pbmcuZWFzZSxcbiAgICB0aW1lcjogbnVsbCxcbiAgICBzdGF0ZTogQ1JFQVRFRFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXQobm9kZSwgaWQpIHtcbiAgdmFyIHNjaGVkdWxlID0gZ2V0KG5vZGUsIGlkKTtcbiAgaWYgKHNjaGVkdWxlLnN0YXRlID4gQ1JFQVRFRCkgdGhyb3cgbmV3IEVycm9yKFwidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkXCIpO1xuICByZXR1cm4gc2NoZWR1bGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXQobm9kZSwgaWQpIHtcbiAgdmFyIHNjaGVkdWxlID0gZ2V0KG5vZGUsIGlkKTtcbiAgaWYgKHNjaGVkdWxlLnN0YXRlID4gU1RBUlRJTkcpIHRocm93IG5ldyBFcnJvcihcInRvbyBsYXRlOyBhbHJlYWR5IHN0YXJ0ZWRcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgaWYgKCFzY2hlZHVsZSB8fCAhKHNjaGVkdWxlID0gc2NoZWR1bGVbaWRdKSkgdGhyb3cgbmV3IEVycm9yKFwidHJhbnNpdGlvbiBub3QgZm91bmRcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKG5vZGUsIGlkLCBzZWxmKSB7XG4gIHZhciBzY2hlZHVsZXMgPSBub2RlLl9fdHJhbnNpdGlvbixcbiAgICAgIHR3ZWVuO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHNlbGYgdGltZXIgd2hlbiB0aGUgdHJhbnNpdGlvbiBpcyBjcmVhdGVkLlxuICAvLyBOb3RlIHRoZSBhY3R1YWwgZGVsYXkgaXMgbm90IGtub3duIHVudGlsIHRoZSBmaXJzdCBjYWxsYmFjayFcbiAgc2NoZWR1bGVzW2lkXSA9IHNlbGY7XG4gIHNlbGYudGltZXIgPSB0aW1lcihzY2hlZHVsZSwgMCwgc2VsZi50aW1lKTtcblxuICBmdW5jdGlvbiBzY2hlZHVsZShlbGFwc2VkKSB7XG4gICAgc2VsZi5zdGF0ZSA9IFNDSEVEVUxFRDtcbiAgICBzZWxmLnRpbWVyLnJlc3RhcnQoc3RhcnQsIHNlbGYuZGVsYXksIHNlbGYudGltZSk7XG5cbiAgICAvLyBJZiB0aGUgZWxhcHNlZCBkZWxheSBpcyBsZXNzIHRoYW4gb3VyIGZpcnN0IHNsZWVwLCBzdGFydCBpbW1lZGlhdGVseS5cbiAgICBpZiAoc2VsZi5kZWxheSA8PSBlbGFwc2VkKSBzdGFydChlbGFwc2VkIC0gc2VsZi5kZWxheSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChlbGFwc2VkKSB7XG4gICAgdmFyIGksIGosIG4sIG87XG5cbiAgICAvLyBJZiB0aGUgc3RhdGUgaXMgbm90IFNDSEVEVUxFRCwgdGhlbiB3ZSBwcmV2aW91c2x5IGVycm9yZWQgb24gc3RhcnQuXG4gICAgaWYgKHNlbGYuc3RhdGUgIT09IFNDSEVEVUxFRCkgcmV0dXJuIHN0b3AoKTtcblxuICAgIGZvciAoaSBpbiBzY2hlZHVsZXMpIHtcbiAgICAgIG8gPSBzY2hlZHVsZXNbaV07XG4gICAgICBpZiAoby5uYW1lICE9PSBzZWxmLm5hbWUpIGNvbnRpbnVlO1xuXG4gICAgICAvLyBXaGlsZSB0aGlzIGVsZW1lbnQgYWxyZWFkeSBoYXMgYSBzdGFydGluZyB0cmFuc2l0aW9uIGR1cmluZyB0aGlzIGZyYW1lLFxuICAgICAgLy8gZGVmZXIgc3RhcnRpbmcgYW4gaW50ZXJydXB0aW5nIHRyYW5zaXRpb24gdW50aWwgdGhhdCB0cmFuc2l0aW9uIGhhcyBhXG4gICAgICAvLyBjaGFuY2UgdG8gdGljayAoYW5kIHBvc3NpYmx5IGVuZCk7IHNlZSBkMy9kMy10cmFuc2l0aW9uIzU0IVxuICAgICAgaWYgKG8uc3RhdGUgPT09IFNUQVJURUQpIHJldHVybiB0aW1lb3V0KHN0YXJ0KTtcblxuICAgICAgLy8gSW50ZXJydXB0IHRoZSBhY3RpdmUgdHJhbnNpdGlvbiwgaWYgYW55LlxuICAgICAgLy8gRGlzcGF0Y2ggdGhlIGludGVycnVwdCBldmVudC5cbiAgICAgIGlmIChvLnN0YXRlID09PSBSVU5OSU5HKSB7XG4gICAgICAgIG8uc3RhdGUgPSBFTkRFRDtcbiAgICAgICAgby50aW1lci5zdG9wKCk7XG4gICAgICAgIG8ub24uY2FsbChcImludGVycnVwdFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBvLmluZGV4LCBvLmdyb3VwKTtcbiAgICAgICAgZGVsZXRlIHNjaGVkdWxlc1tpXTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FuY2VsIGFueSBwcmUtZW1wdGVkIHRyYW5zaXRpb25zLiBObyBpbnRlcnJ1cHQgZXZlbnQgaXMgZGlzcGF0Y2hlZFxuICAgICAgLy8gYmVjYXVzZSB0aGUgY2FuY2VsbGVkIHRyYW5zaXRpb25zIG5ldmVyIHN0YXJ0ZWQuIE5vdGUgdGhhdCB0aGlzIGFsc29cbiAgICAgIC8vIHJlbW92ZXMgdGhpcyB0cmFuc2l0aW9uIGZyb20gdGhlIHBlbmRpbmcgbGlzdCFcbiAgICAgIGVsc2UgaWYgKCtpIDwgaWQpIHtcbiAgICAgICAgby5zdGF0ZSA9IEVOREVEO1xuICAgICAgICBvLnRpbWVyLnN0b3AoKTtcbiAgICAgICAgZGVsZXRlIHNjaGVkdWxlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWZlciB0aGUgZmlyc3QgdGljayB0byBlbmQgb2YgdGhlIGN1cnJlbnQgZnJhbWU7IHNlZSBkMy9kMyMxNTc2LlxuICAgIC8vIE5vdGUgdGhlIHRyYW5zaXRpb24gbWF5IGJlIGNhbmNlbGVkIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgdGhlIGZpcnN0IHRpY2shXG4gICAgLy8gTm90ZSB0aGlzIG11c3QgYmUgc2NoZWR1bGVkIGJlZm9yZSB0aGUgc3RhcnQgZXZlbnQ7IHNlZSBkMy9kMy10cmFuc2l0aW9uIzE2IVxuICAgIC8vIEFzc3VtaW5nIHRoaXMgaXMgc3VjY2Vzc2Z1bCwgc3Vic2VxdWVudCBjYWxsYmFja3MgZ28gc3RyYWlnaHQgdG8gdGljay5cbiAgICB0aW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHNlbGYuc3RhdGUgPT09IFNUQVJURUQpIHtcbiAgICAgICAgc2VsZi5zdGF0ZSA9IFJVTk5JTkc7XG4gICAgICAgIHNlbGYudGltZXIucmVzdGFydCh0aWNrLCBzZWxmLmRlbGF5LCBzZWxmLnRpbWUpO1xuICAgICAgICB0aWNrKGVsYXBzZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRGlzcGF0Y2ggdGhlIHN0YXJ0IGV2ZW50LlxuICAgIC8vIE5vdGUgdGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSB0d2VlbiBhcmUgaW5pdGlhbGl6ZWQuXG4gICAgc2VsZi5zdGF0ZSA9IFNUQVJUSU5HO1xuICAgIHNlbGYub24uY2FsbChcInN0YXJ0XCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIHNlbGYuaW5kZXgsIHNlbGYuZ3JvdXApO1xuICAgIGlmIChzZWxmLnN0YXRlICE9PSBTVEFSVElORykgcmV0dXJuOyAvLyBpbnRlcnJ1cHRlZFxuICAgIHNlbGYuc3RhdGUgPSBTVEFSVEVEO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgdHdlZW4sIGRlbGV0aW5nIG51bGwgdHdlZW4uXG4gICAgdHdlZW4gPSBuZXcgQXJyYXkobiA9IHNlbGYudHdlZW4ubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBqID0gLTE7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChvID0gc2VsZi50d2VlbltpXS52YWx1ZS5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIHNlbGYuaW5kZXgsIHNlbGYuZ3JvdXApKSB7XG4gICAgICAgIHR3ZWVuWysral0gPSBvO1xuICAgICAgfVxuICAgIH1cbiAgICB0d2Vlbi5sZW5ndGggPSBqICsgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2soZWxhcHNlZCkge1xuICAgIHZhciB0ID0gZWxhcHNlZCA8IHNlbGYuZHVyYXRpb24gPyBzZWxmLmVhc2UuY2FsbChudWxsLCBlbGFwc2VkIC8gc2VsZi5kdXJhdGlvbikgOiAoc2VsZi50aW1lci5yZXN0YXJ0KHN0b3ApLCBzZWxmLnN0YXRlID0gRU5ESU5HLCAxKSxcbiAgICAgICAgaSA9IC0xLFxuICAgICAgICBuID0gdHdlZW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIHR3ZWVuW2ldLmNhbGwobnVsbCwgdCk7XG4gICAgfVxuXG4gICAgLy8gRGlzcGF0Y2ggdGhlIGVuZCBldmVudC5cbiAgICBpZiAoc2VsZi5zdGF0ZSA9PT0gRU5ESU5HKSB7XG4gICAgICBzZWxmLm9uLmNhbGwoXCJlbmRcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgc2VsZi5pbmRleCwgc2VsZi5ncm91cCk7XG4gICAgICBzdG9wKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RvcCgpIHtcbiAgICBzZWxmLnN0YXRlID0gRU5ERUQ7XG4gICAgc2VsZi50aW1lci5zdG9wKCk7XG4gICAgZGVsZXRlIHNjaGVkdWxlc1tpZF07XG4gICAgZm9yICh2YXIgaSBpbiBzY2hlZHVsZXMpIHJldHVybjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIGRlbGV0ZSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgfVxufVxuIiwiaW1wb3J0IHtzZWxlY3Rvcn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNjaGVkdWxlLCB7Z2V0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgdmFyIG5hbWUgPSB0aGlzLl9uYW1lLFxuICAgICAgaWQgPSB0aGlzLl9pZDtcblxuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvcihzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIHN1Ym5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKHN1Ym5vZGUgPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpKSB7XG4gICAgICAgIGlmIChcIl9fZGF0YV9fXCIgaW4gbm9kZSkgc3Vibm9kZS5fX2RhdGFfXyA9IG5vZGUuX19kYXRhX187XG4gICAgICAgIHN1Ymdyb3VwW2ldID0gc3Vibm9kZTtcbiAgICAgICAgc2NoZWR1bGUoc3ViZ3JvdXBbaV0sIG5hbWUsIGlkLCBpLCBzdWJncm91cCwgZ2V0KG5vZGUsIGlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIiwiaW1wb3J0IHtzZWxlY3RvckFsbH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNjaGVkdWxlLCB7Z2V0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgdmFyIG5hbWUgPSB0aGlzLl9uYW1lLFxuICAgICAgaWQgPSB0aGlzLl9pZDtcblxuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvckFsbChzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IFtdLCBwYXJlbnRzID0gW10sIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGZvciAodmFyIGNoaWxkcmVuID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApLCBjaGlsZCwgaW5oZXJpdCA9IGdldChub2RlLCBpZCksIGsgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBrIDwgbDsgKytrKSB7XG4gICAgICAgICAgaWYgKGNoaWxkID0gY2hpbGRyZW5ba10pIHtcbiAgICAgICAgICAgIHNjaGVkdWxlKGNoaWxkLCBuYW1lLCBpZCwgaywgY2hpbGRyZW4sIGluaGVyaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdWJncm91cHMucHVzaChjaGlsZHJlbik7XG4gICAgICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCk7XG59XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG52YXIgU2VsZWN0aW9uID0gc2VsZWN0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2dyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCJpbXBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtQ3NzIGFzIGludGVycG9sYXRlVHJhbnNmb3JtfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCB7c3R5bGV9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7dHdlZW5WYWx1ZX0gZnJvbSBcIi4vdHdlZW5cIjtcbmltcG9ydCBpbnRlcnBvbGF0ZSBmcm9tIFwiLi9pbnRlcnBvbGF0ZVwiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lLCBpbnRlcnBvbGF0ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gc3R5bGUodGhpcywgbmFtZSksXG4gICAgICAgIHZhbHVlMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVSZW1vdmVFbmQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVDb25zdGFudChuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciB2YWx1ZTAwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlMCA9IHN0eWxlKHRoaXMsIG5hbWUpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gc3R5bGUodGhpcywgbmFtZSksXG4gICAgICAgIHZhbHVlMSA9IHZhbHVlKHRoaXMpO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgdmFsdWUxID0gKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSksIHN0eWxlKHRoaXMsIG5hbWUpKTtcbiAgICByZXR1cm4gdmFsdWUwID09PSB2YWx1ZTEgPyBudWxsXG4gICAgICAgIDogdmFsdWUwID09PSB2YWx1ZTAwICYmIHZhbHVlMSA9PT0gdmFsdWUxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHZhbHVlMDAgPSB2YWx1ZTAsIHZhbHVlMTAgPSB2YWx1ZTEpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgdmFyIGkgPSAobmFtZSArPSBcIlwiKSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGludGVycG9sYXRlVHJhbnNmb3JtIDogaW50ZXJwb2xhdGU7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdGhpc1xuICAgICAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlUmVtb3ZlKG5hbWUsIGkpKVxuICAgICAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIHN0eWxlUmVtb3ZlRW5kKG5hbWUpKVxuICAgICAgOiB0aGlzLnN0eWxlVHdlZW4obmFtZSwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHN0eWxlRnVuY3Rpb24obmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcInN0eWxlLlwiICsgbmFtZSwgdmFsdWUpKVxuICAgICAgICAgIDogc3R5bGVDb25zdGFudChuYW1lLCBpLCB2YWx1ZSArIFwiXCIpLCBwcmlvcml0eSk7XG59XG4iLCJmdW5jdGlvbiBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMsIGkgPSB2YWx1ZS5hcHBseShub2RlLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBpICYmIGZ1bmN0aW9uKHQpIHtcbiAgICAgIG5vZGUuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgaSh0KSwgcHJpb3JpdHkpO1xuICAgIH07XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHZhciBrZXkgPSBcInN0eWxlLlwiICsgKG5hbWUgKz0gXCJcIik7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikgcmV0dXJuIChrZXkgPSB0aGlzLnR3ZWVuKGtleSkpICYmIGtleS5fdmFsdWU7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdGhpcy50d2VlbihrZXksIG51bGwpO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSk7XG59XG4iLCJpbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuXCI7XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWUxID09IG51bGwgPyBcIlwiIDogdmFsdWUxO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdGhpcy50d2VlbihcInRleHRcIiwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gdGV4dEZ1bmN0aW9uKHR3ZWVuVmFsdWUodGhpcywgXCJ0ZXh0XCIsIHZhbHVlKSlcbiAgICAgIDogdGV4dENvbnN0YW50KHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiKSk7XG59XG4iLCJpbXBvcnQge1RyYW5zaXRpb24sIG5ld0lkfSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNjaGVkdWxlLCB7Z2V0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5hbWUgPSB0aGlzLl9uYW1lLFxuICAgICAgaWQwID0gdGhpcy5faWQsXG4gICAgICBpZDEgPSBuZXdJZCgpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIHZhciBpbmhlcml0ID0gZ2V0KG5vZGUsIGlkMCk7XG4gICAgICAgIHNjaGVkdWxlKG5vZGUsIG5hbWUsIGlkMSwgaSwgZ3JvdXAsIHtcbiAgICAgICAgICB0aW1lOiBpbmhlcml0LnRpbWUgKyBpbmhlcml0LmRlbGF5ICsgaW5oZXJpdC5kdXJhdGlvbixcbiAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICBkdXJhdGlvbjogaW5oZXJpdC5kdXJhdGlvbixcbiAgICAgICAgICBlYXNlOiBpbmhlcml0LmVhc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKGdyb3VwcywgdGhpcy5fcGFyZW50cywgbmFtZSwgaWQxKTtcbn1cbiIsImltcG9ydCB7Z2V0LCBzZXR9IGZyb20gXCIuL3NjaGVkdWxlXCI7XG5cbmZ1bmN0aW9uIHR3ZWVuUmVtb3ZlKGlkLCBuYW1lKSB7XG4gIHZhciB0d2VlbjAsIHR3ZWVuMTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCksXG4gICAgICAgIHR3ZWVuID0gc2NoZWR1bGUudHdlZW47XG5cbiAgICAvLyBJZiB0aGlzIG5vZGUgc2hhcmVkIHR3ZWVuIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIHR3ZWVuIGFuZCB3ZeKAmXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmICh0d2VlbiAhPT0gdHdlZW4wKSB7XG4gICAgICB0d2VlbjEgPSB0d2VlbjAgPSB0d2VlbjtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHdlZW4xLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAodHdlZW4xW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICB0d2VlbjEgPSB0d2VlbjEuc2xpY2UoKTtcbiAgICAgICAgICB0d2VlbjEuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2NoZWR1bGUudHdlZW4gPSB0d2VlbjE7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHR3ZWVuRnVuY3Rpb24oaWQsIG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0d2VlbjAsIHR3ZWVuMTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpLFxuICAgICAgICB0d2VlbiA9IHNjaGVkdWxlLnR3ZWVuO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCB0d2VlbiB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCB0d2VlbiBhbmQgd2XigJlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAodHdlZW4gIT09IHR3ZWVuMCkge1xuICAgICAgdHdlZW4xID0gKHR3ZWVuMCA9IHR3ZWVuKS5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgdCA9IHtuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWV9LCBpID0gMCwgbiA9IHR3ZWVuMS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKHR3ZWVuMVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgdHdlZW4xW2ldID0gdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGkgPT09IG4pIHR3ZWVuMS5wdXNoKHQpO1xuICAgIH1cblxuICAgIHNjaGVkdWxlLnR3ZWVuID0gdHdlZW4xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICBuYW1lICs9IFwiXCI7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIHR3ZWVuID0gZ2V0KHRoaXMubm9kZSgpLCBpZCkudHdlZW47XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0d2Vlbi5sZW5ndGgsIHQ7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgodCA9IHR3ZWVuW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiB0LnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVhY2goKHZhbHVlID09IG51bGwgPyB0d2VlblJlbW92ZSA6IHR3ZWVuRnVuY3Rpb24pKGlkLCBuYW1lLCB2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHdlZW5WYWx1ZSh0cmFuc2l0aW9uLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgaWQgPSB0cmFuc2l0aW9uLl9pZDtcblxuICB0cmFuc2l0aW9uLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKTtcbiAgICAoc2NoZWR1bGUudmFsdWUgfHwgKHNjaGVkdWxlLnZhbHVlID0ge30pKVtuYW1lXSA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIGdldChub2RlLCBpZCkudmFsdWVbbmFtZV07XG4gIH07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFpvb21FdmVudCh0YXJnZXQsIHR5cGUsIHRyYW5zZm9ybSkge1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG59XG4iLCJleHBvcnQge2RlZmF1bHQgYXMgem9vbX0gZnJvbSBcIi4vem9vbVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHpvb21UcmFuc2Zvcm0sIGlkZW50aXR5IGFzIHpvb21JZGVudGl0eX0gZnJvbSBcIi4vdHJhbnNmb3JtXCI7XG4iLCJpbXBvcnQge2V2ZW50fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3Byb3BhZ2F0aW9uKCkge1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIFRyYW5zZm9ybShrLCB4LCB5KSB7XG4gIHRoaXMuayA9IGs7XG4gIHRoaXMueCA9IHg7XG4gIHRoaXMueSA9IHk7XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2Zvcm0sXG4gIHNjYWxlOiBmdW5jdGlvbihrKSB7XG4gICAgcmV0dXJuIGsgPT09IDEgPyB0aGlzIDogbmV3IFRyYW5zZm9ybSh0aGlzLmsgKiBrLCB0aGlzLngsIHRoaXMueSk7XG4gIH0sXG4gIHRyYW5zbGF0ZTogZnVuY3Rpb24oeCwgeSkge1xuICAgIHJldHVybiB4ID09PSAwICYgeSA9PT0gMCA/IHRoaXMgOiBuZXcgVHJhbnNmb3JtKHRoaXMuaywgdGhpcy54ICsgdGhpcy5rICogeCwgdGhpcy55ICsgdGhpcy5rICogeSk7XG4gIH0sXG4gIGFwcGx5OiBmdW5jdGlvbihwb2ludCkge1xuICAgIHJldHVybiBbcG9pbnRbMF0gKiB0aGlzLmsgKyB0aGlzLngsIHBvaW50WzFdICogdGhpcy5rICsgdGhpcy55XTtcbiAgfSxcbiAgYXBwbHlYOiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHggKiB0aGlzLmsgKyB0aGlzLng7XG4gIH0sXG4gIGFwcGx5WTogZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiB5ICogdGhpcy5rICsgdGhpcy55O1xuICB9LFxuICBpbnZlcnQ6IGZ1bmN0aW9uKGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIFsobG9jYXRpb25bMF0gLSB0aGlzLngpIC8gdGhpcy5rLCAobG9jYXRpb25bMV0gLSB0aGlzLnkpIC8gdGhpcy5rXTtcbiAgfSxcbiAgaW52ZXJ0WDogZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiAoeCAtIHRoaXMueCkgLyB0aGlzLms7XG4gIH0sXG4gIGludmVydFk6IGZ1bmN0aW9uKHkpIHtcbiAgICByZXR1cm4gKHkgLSB0aGlzLnkpIC8gdGhpcy5rO1xuICB9LFxuICByZXNjYWxlWDogZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiB4LmNvcHkoKS5kb21haW4oeC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsIHRoaXMpLm1hcCh4LmludmVydCwgeCkpO1xuICB9LFxuICByZXNjYWxlWTogZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiB5LmNvcHkoKS5kb21haW4oeS5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksIHRoaXMpLm1hcCh5LmludmVydCwgeSkpO1xuICB9LFxuICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwidHJhbnNsYXRlKFwiICsgdGhpcy54ICsgXCIsXCIgKyB0aGlzLnkgKyBcIikgc2NhbGUoXCIgKyB0aGlzLmsgKyBcIilcIjtcbiAgfVxufTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IG5ldyBUcmFuc2Zvcm0oMSwgMCwgMCk7XG5cbnRyYW5zZm9ybS5wcm90b3R5cGUgPSBUcmFuc2Zvcm0ucHJvdG90eXBlO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSkge1xuICByZXR1cm4gbm9kZS5fX3pvb20gfHwgaWRlbnRpdHk7XG59XG4iLCJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7ZHJhZ0Rpc2FibGUsIGRyYWdFbmFibGV9IGZyb20gXCJkMy1kcmFnXCI7XG5pbXBvcnQge2ludGVycG9sYXRlWm9vbX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2V2ZW50LCBjdXN0b21FdmVudCwgc2VsZWN0LCBtb3VzZSwgdG91Y2h9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7aW50ZXJydXB0fSBmcm9tIFwiZDMtdHJhbnNpdGlvblwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50XCI7XG5pbXBvcnQgWm9vbUV2ZW50IGZyb20gXCIuL2V2ZW50XCI7XG5pbXBvcnQge1RyYW5zZm9ybSwgaWRlbnRpdHl9IGZyb20gXCIuL3RyYW5zZm9ybVwiO1xuaW1wb3J0IG5vZXZlbnQsIHtub3Byb3BhZ2F0aW9ufSBmcm9tIFwiLi9ub2V2ZW50XCI7XG5cbi8vIElnbm9yZSByaWdodC1jbGljaywgc2luY2UgdGhhdCBzaG91bGQgb3BlbiB0aGUgY29udGV4dCBtZW51LlxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlcigpIHtcbiAgcmV0dXJuICFldmVudC5idXR0b247XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRFeHRlbnQoKSB7XG4gIHZhciBlID0gdGhpcywgdywgaDtcbiAgaWYgKGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSB7XG4gICAgZSA9IGUub3duZXJTVkdFbGVtZW50IHx8IGU7XG4gICAgdyA9IGUud2lkdGguYmFzZVZhbC52YWx1ZTtcbiAgICBoID0gZS5oZWlnaHQuYmFzZVZhbC52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB3ID0gZS5jbGllbnRXaWR0aDtcbiAgICBoID0gZS5jbGllbnRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIFtbMCwgMF0sIFt3LCBoXV07XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUcmFuc2Zvcm0oKSB7XG4gIHJldHVybiB0aGlzLl9fem9vbSB8fCBpZGVudGl0eTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFdoZWVsRGVsdGEoKSB7XG4gIHJldHVybiAtZXZlbnQuZGVsdGFZICogKGV2ZW50LmRlbHRhTW9kZSA/IDEyMCA6IDEpIC8gNTAwO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG91Y2hhYmxlKCkge1xuICByZXR1cm4gXCJvbnRvdWNoc3RhcnRcIiBpbiB0aGlzO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29uc3RyYWluKHRyYW5zZm9ybSwgZXh0ZW50LCB0cmFuc2xhdGVFeHRlbnQpIHtcbiAgdmFyIGR4MCA9IHRyYW5zZm9ybS5pbnZlcnRYKGV4dGVudFswXVswXSkgLSB0cmFuc2xhdGVFeHRlbnRbMF1bMF0sXG4gICAgICBkeDEgPSB0cmFuc2Zvcm0uaW52ZXJ0WChleHRlbnRbMV1bMF0pIC0gdHJhbnNsYXRlRXh0ZW50WzFdWzBdLFxuICAgICAgZHkwID0gdHJhbnNmb3JtLmludmVydFkoZXh0ZW50WzBdWzFdKSAtIHRyYW5zbGF0ZUV4dGVudFswXVsxXSxcbiAgICAgIGR5MSA9IHRyYW5zZm9ybS5pbnZlcnRZKGV4dGVudFsxXVsxXSkgLSB0cmFuc2xhdGVFeHRlbnRbMV1bMV07XG4gIHJldHVybiB0cmFuc2Zvcm0udHJhbnNsYXRlKFxuICAgIGR4MSA+IGR4MCA/IChkeDAgKyBkeDEpIC8gMiA6IE1hdGgubWluKDAsIGR4MCkgfHwgTWF0aC5tYXgoMCwgZHgxKSxcbiAgICBkeTEgPiBkeTAgPyAoZHkwICsgZHkxKSAvIDIgOiBNYXRoLm1pbigwLCBkeTApIHx8IE1hdGgubWF4KDAsIGR5MSlcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBmaWx0ZXIgPSBkZWZhdWx0RmlsdGVyLFxuICAgICAgZXh0ZW50ID0gZGVmYXVsdEV4dGVudCxcbiAgICAgIGNvbnN0cmFpbiA9IGRlZmF1bHRDb25zdHJhaW4sXG4gICAgICB3aGVlbERlbHRhID0gZGVmYXVsdFdoZWVsRGVsdGEsXG4gICAgICB0b3VjaGFibGUgPSBkZWZhdWx0VG91Y2hhYmxlLFxuICAgICAgc2NhbGVFeHRlbnQgPSBbMCwgSW5maW5pdHldLFxuICAgICAgdHJhbnNsYXRlRXh0ZW50ID0gW1stSW5maW5pdHksIC1JbmZpbml0eV0sIFtJbmZpbml0eSwgSW5maW5pdHldXSxcbiAgICAgIGR1cmF0aW9uID0gMjUwLFxuICAgICAgaW50ZXJwb2xhdGUgPSBpbnRlcnBvbGF0ZVpvb20sXG4gICAgICBnZXN0dXJlcyA9IFtdLFxuICAgICAgbGlzdGVuZXJzID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcInpvb21cIiwgXCJlbmRcIiksXG4gICAgICB0b3VjaHN0YXJ0aW5nLFxuICAgICAgdG91Y2hlbmRpbmcsXG4gICAgICB0b3VjaERlbGF5ID0gNTAwLFxuICAgICAgd2hlZWxEZWxheSA9IDE1MCxcbiAgICAgIGNsaWNrRGlzdGFuY2UyID0gMDtcblxuICBmdW5jdGlvbiB6b29tKHNlbGVjdGlvbikge1xuICAgIHNlbGVjdGlvblxuICAgICAgICAucHJvcGVydHkoXCJfX3pvb21cIiwgZGVmYXVsdFRyYW5zZm9ybSlcbiAgICAgICAgLm9uKFwid2hlZWwuem9vbVwiLCB3aGVlbGVkKVxuICAgICAgICAub24oXCJtb3VzZWRvd24uem9vbVwiLCBtb3VzZWRvd25lZClcbiAgICAgICAgLm9uKFwiZGJsY2xpY2suem9vbVwiLCBkYmxjbGlja2VkKVxuICAgICAgLmZpbHRlcih0b3VjaGFibGUpXG4gICAgICAgIC5vbihcInRvdWNoc3RhcnQuem9vbVwiLCB0b3VjaHN0YXJ0ZWQpXG4gICAgICAgIC5vbihcInRvdWNobW92ZS56b29tXCIsIHRvdWNobW92ZWQpXG4gICAgICAgIC5vbihcInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbVwiLCB0b3VjaGVuZGVkKVxuICAgICAgICAuc3R5bGUoXCJ0b3VjaC1hY3Rpb25cIiwgXCJub25lXCIpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIik7XG4gIH1cblxuICB6b29tLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHRyYW5zZm9ybSkge1xuICAgIHZhciBzZWxlY3Rpb24gPSBjb2xsZWN0aW9uLnNlbGVjdGlvbiA/IGNvbGxlY3Rpb24uc2VsZWN0aW9uKCkgOiBjb2xsZWN0aW9uO1xuICAgIHNlbGVjdGlvbi5wcm9wZXJ0eShcIl9fem9vbVwiLCBkZWZhdWx0VHJhbnNmb3JtKTtcbiAgICBpZiAoY29sbGVjdGlvbiAhPT0gc2VsZWN0aW9uKSB7XG4gICAgICBzY2hlZHVsZShjb2xsZWN0aW9uLCB0cmFuc2Zvcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3Rpb24uaW50ZXJydXB0KCkuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgZ2VzdHVyZSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgICAgICAuc3RhcnQoKVxuICAgICAgICAgICAgLnpvb20obnVsbCwgdHlwZW9mIHRyYW5zZm9ybSA9PT0gXCJmdW5jdGlvblwiID8gdHJhbnNmb3JtLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB0cmFuc2Zvcm0pXG4gICAgICAgICAgICAuZW5kKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgem9vbS5zY2FsZUJ5ID0gZnVuY3Rpb24oc2VsZWN0aW9uLCBrKSB7XG4gICAgem9vbS5zY2FsZVRvKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgazAgPSB0aGlzLl9fem9vbS5rLFxuICAgICAgICAgIGsxID0gdHlwZW9mIGsgPT09IFwiZnVuY3Rpb25cIiA/IGsuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGs7XG4gICAgICByZXR1cm4gazAgKiBrMTtcbiAgICB9KTtcbiAgfTtcblxuICB6b29tLnNjYWxlVG8gPSBmdW5jdGlvbihzZWxlY3Rpb24sIGspIHtcbiAgICB6b29tLnRyYW5zZm9ybShzZWxlY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSBleHRlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgICB0MCA9IHRoaXMuX196b29tLFxuICAgICAgICAgIHAwID0gY2VudHJvaWQoZSksXG4gICAgICAgICAgcDEgPSB0MC5pbnZlcnQocDApLFxuICAgICAgICAgIGsxID0gdHlwZW9mIGsgPT09IFwiZnVuY3Rpb25cIiA/IGsuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGs7XG4gICAgICByZXR1cm4gY29uc3RyYWluKHRyYW5zbGF0ZShzY2FsZSh0MCwgazEpLCBwMCwgcDEpLCBlLCB0cmFuc2xhdGVFeHRlbnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIHpvb20udHJhbnNsYXRlQnkgPSBmdW5jdGlvbihzZWxlY3Rpb24sIHgsIHkpIHtcbiAgICB6b29tLnRyYW5zZm9ybShzZWxlY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cmFpbih0aGlzLl9fem9vbS50cmFuc2xhdGUoXG4gICAgICAgIHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB4LFxuICAgICAgICB0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiID8geS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogeVxuICAgICAgKSwgZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRyYW5zbGF0ZUV4dGVudCk7XG4gICAgfSk7XG4gIH07XG5cbiAgem9vbS50cmFuc2xhdGVUbyA9IGZ1bmN0aW9uKHNlbGVjdGlvbiwgeCwgeSkge1xuICAgIHpvb20udHJhbnNmb3JtKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IGV4dGVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICAgIHQgPSB0aGlzLl9fem9vbSxcbiAgICAgICAgICBwID0gY2VudHJvaWQoZSk7XG4gICAgICByZXR1cm4gY29uc3RyYWluKGlkZW50aXR5LnRyYW5zbGF0ZShwWzBdLCBwWzFdKS5zY2FsZSh0LmspLnRyYW5zbGF0ZShcbiAgICAgICAgdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IC14LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiAteCxcbiAgICAgICAgdHlwZW9mIHkgPT09IFwiZnVuY3Rpb25cIiA/IC15LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiAteVxuICAgICAgKSwgZSwgdHJhbnNsYXRlRXh0ZW50KTtcbiAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBzY2FsZSh0cmFuc2Zvcm0sIGspIHtcbiAgICBrID0gTWF0aC5tYXgoc2NhbGVFeHRlbnRbMF0sIE1hdGgubWluKHNjYWxlRXh0ZW50WzFdLCBrKSk7XG4gICAgcmV0dXJuIGsgPT09IHRyYW5zZm9ybS5rID8gdHJhbnNmb3JtIDogbmV3IFRyYW5zZm9ybShrLCB0cmFuc2Zvcm0ueCwgdHJhbnNmb3JtLnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHRyYW5zZm9ybSwgcDAsIHAxKSB7XG4gICAgdmFyIHggPSBwMFswXSAtIHAxWzBdICogdHJhbnNmb3JtLmssIHkgPSBwMFsxXSAtIHAxWzFdICogdHJhbnNmb3JtLms7XG4gICAgcmV0dXJuIHggPT09IHRyYW5zZm9ybS54ICYmIHkgPT09IHRyYW5zZm9ybS55ID8gdHJhbnNmb3JtIDogbmV3IFRyYW5zZm9ybSh0cmFuc2Zvcm0uaywgeCwgeSk7XG4gIH1cblxuICBmdW5jdGlvbiBjZW50cm9pZChleHRlbnQpIHtcbiAgICByZXR1cm4gWygrZXh0ZW50WzBdWzBdICsgK2V4dGVudFsxXVswXSkgLyAyLCAoK2V4dGVudFswXVsxXSArICtleHRlbnRbMV1bMV0pIC8gMl07XG4gIH1cblxuICBmdW5jdGlvbiBzY2hlZHVsZSh0cmFuc2l0aW9uLCB0cmFuc2Zvcm0sIGNlbnRlcikge1xuICAgIHRyYW5zaXRpb25cbiAgICAgICAgLm9uKFwic3RhcnQuem9vbVwiLCBmdW5jdGlvbigpIHsgZ2VzdHVyZSh0aGlzLCBhcmd1bWVudHMpLnN0YXJ0KCk7IH0pXG4gICAgICAgIC5vbihcImludGVycnVwdC56b29tIGVuZC56b29tXCIsIGZ1bmN0aW9uKCkgeyBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cykuZW5kKCk7IH0pXG4gICAgICAgIC50d2VlbihcInpvb21cIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICBnID0gZ2VzdHVyZSh0aGF0LCBhcmdzKSxcbiAgICAgICAgICAgICAgZSA9IGV4dGVudC5hcHBseSh0aGF0LCBhcmdzKSxcbiAgICAgICAgICAgICAgcCA9IGNlbnRlciB8fCBjZW50cm9pZChlKSxcbiAgICAgICAgICAgICAgdyA9IE1hdGgubWF4KGVbMV1bMF0gLSBlWzBdWzBdLCBlWzFdWzFdIC0gZVswXVsxXSksXG4gICAgICAgICAgICAgIGEgPSB0aGF0Ll9fem9vbSxcbiAgICAgICAgICAgICAgYiA9IHR5cGVvZiB0cmFuc2Zvcm0gPT09IFwiZnVuY3Rpb25cIiA/IHRyYW5zZm9ybS5hcHBseSh0aGF0LCBhcmdzKSA6IHRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgaSA9IGludGVycG9sYXRlKGEuaW52ZXJ0KHApLmNvbmNhdCh3IC8gYS5rKSwgYi5pbnZlcnQocCkuY29uY2F0KHcgLyBiLmspKTtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgICAgICAgaWYgKHQgPT09IDEpIHQgPSBiOyAvLyBBdm9pZCByb3VuZGluZyBlcnJvciBvbiBlbmQuXG4gICAgICAgICAgICBlbHNlIHsgdmFyIGwgPSBpKHQpLCBrID0gdyAvIGxbMl07IHQgPSBuZXcgVHJhbnNmb3JtKGssIHBbMF0gLSBsWzBdICogaywgcFsxXSAtIGxbMV0gKiBrKTsgfVxuICAgICAgICAgICAgZy56b29tKG51bGwsIHQpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2VzdHVyZSh0aGF0LCBhcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBnZXN0dXJlcy5sZW5ndGgsIGc7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgoZyA9IGdlc3R1cmVzW2ldKS50aGF0ID09PSB0aGF0KSB7XG4gICAgICAgIHJldHVybiBnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEdlc3R1cmUodGhhdCwgYXJncyk7XG4gIH1cblxuICBmdW5jdGlvbiBHZXN0dXJlKHRoYXQsIGFyZ3MpIHtcbiAgICB0aGlzLnRoYXQgPSB0aGF0O1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy5pbmRleCA9IC0xO1xuICAgIHRoaXMuYWN0aXZlID0gMDtcbiAgICB0aGlzLmV4dGVudCA9IGV4dGVudC5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfVxuXG4gIEdlc3R1cmUucHJvdG90eXBlID0ge1xuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgrK3RoaXMuYWN0aXZlID09PSAxKSB7XG4gICAgICAgIHRoaXMuaW5kZXggPSBnZXN0dXJlcy5wdXNoKHRoaXMpIC0gMTtcbiAgICAgICAgdGhpcy5lbWl0KFwic3RhcnRcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHpvb206IGZ1bmN0aW9uKGtleSwgdHJhbnNmb3JtKSB7XG4gICAgICBpZiAodGhpcy5tb3VzZSAmJiBrZXkgIT09IFwibW91c2VcIikgdGhpcy5tb3VzZVsxXSA9IHRyYW5zZm9ybS5pbnZlcnQodGhpcy5tb3VzZVswXSk7XG4gICAgICBpZiAodGhpcy50b3VjaDAgJiYga2V5ICE9PSBcInRvdWNoXCIpIHRoaXMudG91Y2gwWzFdID0gdHJhbnNmb3JtLmludmVydCh0aGlzLnRvdWNoMFswXSk7XG4gICAgICBpZiAodGhpcy50b3VjaDEgJiYga2V5ICE9PSBcInRvdWNoXCIpIHRoaXMudG91Y2gxWzFdID0gdHJhbnNmb3JtLmludmVydCh0aGlzLnRvdWNoMVswXSk7XG4gICAgICB0aGlzLnRoYXQuX196b29tID0gdHJhbnNmb3JtO1xuICAgICAgdGhpcy5lbWl0KFwiem9vbVwiKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW5kOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgtLXRoaXMuYWN0aXZlID09PSAwKSB7XG4gICAgICAgIGdlc3R1cmVzLnNwbGljZSh0aGlzLmluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5pbmRleCA9IC0xO1xuICAgICAgICB0aGlzLmVtaXQoXCJlbmRcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVtaXQ6IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgIGN1c3RvbUV2ZW50KG5ldyBab29tRXZlbnQoem9vbSwgdHlwZSwgdGhpcy50aGF0Ll9fem9vbSksIGxpc3RlbmVycy5hcHBseSwgbGlzdGVuZXJzLCBbdHlwZSwgdGhpcy50aGF0LCB0aGlzLmFyZ3NdKTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gd2hlZWxlZCgpIHtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHQgPSB0aGlzLl9fem9vbSxcbiAgICAgICAgayA9IE1hdGgubWF4KHNjYWxlRXh0ZW50WzBdLCBNYXRoLm1pbihzY2FsZUV4dGVudFsxXSwgdC5rICogTWF0aC5wb3coMiwgd2hlZWxEZWx0YS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSkpLFxuICAgICAgICBwID0gbW91c2UodGhpcyk7XG5cbiAgICAvLyBJZiB0aGUgbW91c2UgaXMgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMgYmVmb3JlLCByZXVzZSBpdC5cbiAgICAvLyBJZiB0aGVyZSB3ZXJlIHJlY2VudCB3aGVlbCBldmVudHMsIHJlc2V0IHRoZSB3aGVlbCBpZGxlIHRpbWVvdXQuXG4gICAgaWYgKGcud2hlZWwpIHtcbiAgICAgIGlmIChnLm1vdXNlWzBdWzBdICE9PSBwWzBdIHx8IGcubW91c2VbMF1bMV0gIT09IHBbMV0pIHtcbiAgICAgICAgZy5tb3VzZVsxXSA9IHQuaW52ZXJ0KGcubW91c2VbMF0gPSBwKTtcbiAgICAgIH1cbiAgICAgIGNsZWFyVGltZW91dChnLndoZWVsKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGlzIHdoZWVsIGV2ZW50IHdvbuKAmXQgdHJpZ2dlciBhIHRyYW5zZm9ybSBjaGFuZ2UsIGlnbm9yZSBpdC5cbiAgICBlbHNlIGlmICh0LmsgPT09IGspIHJldHVybjtcblxuICAgIC8vIE90aGVyd2lzZSwgY2FwdHVyZSB0aGUgbW91c2UgcG9pbnQgYW5kIGxvY2F0aW9uIGF0IHRoZSBzdGFydC5cbiAgICBlbHNlIHtcbiAgICAgIGcubW91c2UgPSBbcCwgdC5pbnZlcnQocCldO1xuICAgICAgaW50ZXJydXB0KHRoaXMpO1xuICAgICAgZy5zdGFydCgpO1xuICAgIH1cblxuICAgIG5vZXZlbnQoKTtcbiAgICBnLndoZWVsID0gc2V0VGltZW91dCh3aGVlbGlkbGVkLCB3aGVlbERlbGF5KTtcbiAgICBnLnpvb20oXCJtb3VzZVwiLCBjb25zdHJhaW4odHJhbnNsYXRlKHNjYWxlKHQsIGspLCBnLm1vdXNlWzBdLCBnLm1vdXNlWzFdKSwgZy5leHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkpO1xuXG4gICAgZnVuY3Rpb24gd2hlZWxpZGxlZCgpIHtcbiAgICAgIGcud2hlZWwgPSBudWxsO1xuICAgICAgZy5lbmQoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZWRvd25lZCgpIHtcbiAgICBpZiAodG91Y2hlbmRpbmcgfHwgIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHYgPSBzZWxlY3QoZXZlbnQudmlldykub24oXCJtb3VzZW1vdmUuem9vbVwiLCBtb3VzZW1vdmVkLCB0cnVlKS5vbihcIm1vdXNldXAuem9vbVwiLCBtb3VzZXVwcGVkLCB0cnVlKSxcbiAgICAgICAgcCA9IG1vdXNlKHRoaXMpLFxuICAgICAgICB4MCA9IGV2ZW50LmNsaWVudFgsXG4gICAgICAgIHkwID0gZXZlbnQuY2xpZW50WTtcblxuICAgIGRyYWdEaXNhYmxlKGV2ZW50LnZpZXcpO1xuICAgIG5vcHJvcGFnYXRpb24oKTtcbiAgICBnLm1vdXNlID0gW3AsIHRoaXMuX196b29tLmludmVydChwKV07XG4gICAgaW50ZXJydXB0KHRoaXMpO1xuICAgIGcuc3RhcnQoKTtcblxuICAgIGZ1bmN0aW9uIG1vdXNlbW92ZWQoKSB7XG4gICAgICBub2V2ZW50KCk7XG4gICAgICBpZiAoIWcubW92ZWQpIHtcbiAgICAgICAgdmFyIGR4ID0gZXZlbnQuY2xpZW50WCAtIHgwLCBkeSA9IGV2ZW50LmNsaWVudFkgLSB5MDtcbiAgICAgICAgZy5tb3ZlZCA9IGR4ICogZHggKyBkeSAqIGR5ID4gY2xpY2tEaXN0YW5jZTI7XG4gICAgICB9XG4gICAgICBnLnpvb20oXCJtb3VzZVwiLCBjb25zdHJhaW4odHJhbnNsYXRlKGcudGhhdC5fX3pvb20sIGcubW91c2VbMF0gPSBtb3VzZShnLnRoYXQpLCBnLm1vdXNlWzFdKSwgZy5leHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vdXNldXBwZWQoKSB7XG4gICAgICB2Lm9uKFwibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tXCIsIG51bGwpO1xuICAgICAgZHJhZ0VuYWJsZShldmVudC52aWV3LCBnLm1vdmVkKTtcbiAgICAgIG5vZXZlbnQoKTtcbiAgICAgIGcuZW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGJsY2xpY2tlZCgpIHtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIHQwID0gdGhpcy5fX3pvb20sXG4gICAgICAgIHAwID0gbW91c2UodGhpcyksXG4gICAgICAgIHAxID0gdDAuaW52ZXJ0KHAwKSxcbiAgICAgICAgazEgPSB0MC5rICogKGV2ZW50LnNoaWZ0S2V5ID8gMC41IDogMiksXG4gICAgICAgIHQxID0gY29uc3RyYWluKHRyYW5zbGF0ZShzY2FsZSh0MCwgazEpLCBwMCwgcDEpLCBleHRlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdHJhbnNsYXRlRXh0ZW50KTtcblxuICAgIG5vZXZlbnQoKTtcbiAgICBpZiAoZHVyYXRpb24gPiAwKSBzZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGR1cmF0aW9uKS5jYWxsKHNjaGVkdWxlLCB0MSwgcDApO1xuICAgIGVsc2Ugc2VsZWN0KHRoaXMpLmNhbGwoem9vbS50cmFuc2Zvcm0sIHQxKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoc3RhcnRlZCgpIHtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgc3RhcnRlZCxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCB0LCBwO1xuXG4gICAgbm9wcm9wYWdhdGlvbigpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHQgPSB0b3VjaGVzW2ldLCBwID0gdG91Y2godGhpcywgdG91Y2hlcywgdC5pZGVudGlmaWVyKTtcbiAgICAgIHAgPSBbcCwgdGhpcy5fX3pvb20uaW52ZXJ0KHApLCB0LmlkZW50aWZpZXJdO1xuICAgICAgaWYgKCFnLnRvdWNoMCkgZy50b3VjaDAgPSBwLCBzdGFydGVkID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKCFnLnRvdWNoMSkgZy50b3VjaDEgPSBwO1xuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgYSBkYmx0YXAsIHJlcm91dGUgdG8gdGhlIChvcHRpb25hbCkgZGJsY2xpY2suem9vbSBoYW5kbGVyLlxuICAgIGlmICh0b3VjaHN0YXJ0aW5nKSB7XG4gICAgICB0b3VjaHN0YXJ0aW5nID0gY2xlYXJUaW1lb3V0KHRvdWNoc3RhcnRpbmcpO1xuICAgICAgaWYgKCFnLnRvdWNoMSkge1xuICAgICAgICBnLmVuZCgpO1xuICAgICAgICBwID0gc2VsZWN0KHRoaXMpLm9uKFwiZGJsY2xpY2suem9vbVwiKTtcbiAgICAgICAgaWYgKHApIHAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydGVkKSB7XG4gICAgICB0b3VjaHN0YXJ0aW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hzdGFydGluZyA9IG51bGw7IH0sIHRvdWNoRGVsYXkpO1xuICAgICAgaW50ZXJydXB0KHRoaXMpO1xuICAgICAgZy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNobW92ZWQoKSB7XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCB0LCBwLCBsO1xuXG4gICAgbm9ldmVudCgpO1xuICAgIGlmICh0b3VjaHN0YXJ0aW5nKSB0b3VjaHN0YXJ0aW5nID0gY2xlYXJUaW1lb3V0KHRvdWNoc3RhcnRpbmcpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHQgPSB0b3VjaGVzW2ldLCBwID0gdG91Y2godGhpcywgdG91Y2hlcywgdC5pZGVudGlmaWVyKTtcbiAgICAgIGlmIChnLnRvdWNoMCAmJiBnLnRvdWNoMFsyXSA9PT0gdC5pZGVudGlmaWVyKSBnLnRvdWNoMFswXSA9IHA7XG4gICAgICBlbHNlIGlmIChnLnRvdWNoMSAmJiBnLnRvdWNoMVsyXSA9PT0gdC5pZGVudGlmaWVyKSBnLnRvdWNoMVswXSA9IHA7XG4gICAgfVxuICAgIHQgPSBnLnRoYXQuX196b29tO1xuICAgIGlmIChnLnRvdWNoMSkge1xuICAgICAgdmFyIHAwID0gZy50b3VjaDBbMF0sIGwwID0gZy50b3VjaDBbMV0sXG4gICAgICAgICAgcDEgPSBnLnRvdWNoMVswXSwgbDEgPSBnLnRvdWNoMVsxXSxcbiAgICAgICAgICBkcCA9IChkcCA9IHAxWzBdIC0gcDBbMF0pICogZHAgKyAoZHAgPSBwMVsxXSAtIHAwWzFdKSAqIGRwLFxuICAgICAgICAgIGRsID0gKGRsID0gbDFbMF0gLSBsMFswXSkgKiBkbCArIChkbCA9IGwxWzFdIC0gbDBbMV0pICogZGw7XG4gICAgICB0ID0gc2NhbGUodCwgTWF0aC5zcXJ0KGRwIC8gZGwpKTtcbiAgICAgIHAgPSBbKHAwWzBdICsgcDFbMF0pIC8gMiwgKHAwWzFdICsgcDFbMV0pIC8gMl07XG4gICAgICBsID0gWyhsMFswXSArIGwxWzBdKSAvIDIsIChsMFsxXSArIGwxWzFdKSAvIDJdO1xuICAgIH1cbiAgICBlbHNlIGlmIChnLnRvdWNoMCkgcCA9IGcudG91Y2gwWzBdLCBsID0gZy50b3VjaDBbMV07XG4gICAgZWxzZSByZXR1cm47XG4gICAgZy56b29tKFwidG91Y2hcIiwgY29uc3RyYWluKHRyYW5zbGF0ZSh0LCBwLCBsKSwgZy5leHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hlbmRlZCgpIHtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgdG91Y2hlcyA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLFxuICAgICAgICBuID0gdG91Y2hlcy5sZW5ndGgsIGksIHQ7XG5cbiAgICBub3Byb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgIHRvdWNoZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hlbmRpbmcgPSBudWxsOyB9LCB0b3VjaERlbGF5KTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB0ID0gdG91Y2hlc1tpXTtcbiAgICAgIGlmIChnLnRvdWNoMCAmJiBnLnRvdWNoMFsyXSA9PT0gdC5pZGVudGlmaWVyKSBkZWxldGUgZy50b3VjaDA7XG4gICAgICBlbHNlIGlmIChnLnRvdWNoMSAmJiBnLnRvdWNoMVsyXSA9PT0gdC5pZGVudGlmaWVyKSBkZWxldGUgZy50b3VjaDE7XG4gICAgfVxuICAgIGlmIChnLnRvdWNoMSAmJiAhZy50b3VjaDApIGcudG91Y2gwID0gZy50b3VjaDEsIGRlbGV0ZSBnLnRvdWNoMTtcbiAgICBpZiAoZy50b3VjaDApIGcudG91Y2gwWzFdID0gdGhpcy5fX3pvb20uaW52ZXJ0KGcudG91Y2gwWzBdKTtcbiAgICBlbHNlIGcuZW5kKCk7XG4gIH1cblxuICB6b29tLndoZWVsRGVsdGEgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAod2hlZWxEZWx0YSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCB6b29tKSA6IHdoZWVsRGVsdGE7XG4gIH07XG5cbiAgem9vbS5maWx0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZmlsdGVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCB6b29tKSA6IGZpbHRlcjtcbiAgfTtcblxuICB6b29tLnRvdWNoYWJsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0b3VjaGFibGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIHpvb20pIDogdG91Y2hhYmxlO1xuICB9O1xuXG4gIHpvb20uZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4dGVudCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoW1srX1swXVswXSwgK19bMF1bMV1dLCBbK19bMV1bMF0sICtfWzFdWzFdXV0pLCB6b29tKSA6IGV4dGVudDtcbiAgfTtcblxuICB6b29tLnNjYWxlRXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNjYWxlRXh0ZW50WzBdID0gK19bMF0sIHNjYWxlRXh0ZW50WzFdID0gK19bMV0sIHpvb20pIDogW3NjYWxlRXh0ZW50WzBdLCBzY2FsZUV4dGVudFsxXV07XG4gIH07XG5cbiAgem9vbS50cmFuc2xhdGVFeHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHJhbnNsYXRlRXh0ZW50WzBdWzBdID0gK19bMF1bMF0sIHRyYW5zbGF0ZUV4dGVudFsxXVswXSA9ICtfWzFdWzBdLCB0cmFuc2xhdGVFeHRlbnRbMF1bMV0gPSArX1swXVsxXSwgdHJhbnNsYXRlRXh0ZW50WzFdWzFdID0gK19bMV1bMV0sIHpvb20pIDogW1t0cmFuc2xhdGVFeHRlbnRbMF1bMF0sIHRyYW5zbGF0ZUV4dGVudFswXVsxXV0sIFt0cmFuc2xhdGVFeHRlbnRbMV1bMF0sIHRyYW5zbGF0ZUV4dGVudFsxXVsxXV1dO1xuICB9O1xuXG4gIHpvb20uY29uc3RyYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvbnN0cmFpbiA9IF8sIHpvb20pIDogY29uc3RyYWluO1xuICB9O1xuXG4gIHpvb20uZHVyYXRpb24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHVyYXRpb24gPSArXywgem9vbSkgOiBkdXJhdGlvbjtcbiAgfTtcblxuICB6b29tLmludGVycG9sYXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRlID0gXywgem9vbSkgOiBpbnRlcnBvbGF0ZTtcbiAgfTtcblxuICB6b29tLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gbGlzdGVuZXJzLm9uLmFwcGx5KGxpc3RlbmVycywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdmFsdWUgPT09IGxpc3RlbmVycyA/IHpvb20gOiB2YWx1ZTtcbiAgfTtcblxuICB6b29tLmNsaWNrRGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2xpY2tEaXN0YW5jZTIgPSAoXyA9ICtfKSAqIF8sIHpvb20pIDogTWF0aC5zcXJ0KGNsaWNrRGlzdGFuY2UyKTtcbiAgfTtcblxuICByZXR1cm4gem9vbTtcbn1cbiIsImV4cG9ydCB7ZGVmYXVsdCBhcyBhY2Nlc3Nvcn0gZnJvbSBcIi4vc3JjL2FjY2Vzc29yXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYXNzaWdufSBmcm9tIFwiLi9zcmMvYXNzaWduXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYXR0cml6ZX0gZnJvbSBcIi4vc3JjL2F0dHJpemVcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBCYXNlQ2xhc3N9IGZyb20gXCIuL3NyYy9CYXNlQ2xhc3NcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbG9zZXN0fSBmcm9tIFwiLi9zcmMvY2xvc2VzdFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNvbmZpZ1ByZXB9IGZyb20gXCIuL3NyYy9jb25maWdQcmVwXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY29uc3RhbnR9IGZyb20gXCIuL3NyYy9jb25zdGFudFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGVsZW19IGZyb20gXCIuL3NyYy9lbGVtXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaXNPYmplY3R9IGZyb20gXCIuL3NyYy9pc09iamVjdFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIG1lcmdlfSBmcm9tIFwiLi9zcmMvbWVyZ2VcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwYXJzZVNpZGVzfSBmcm9tIFwiLi9zcmMvcGFyc2VTaWRlc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZWZpeH0gZnJvbSBcIi4vc3JjL3ByZWZpeFwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFJFU0VUfSBmcm9tIFwiLi9zcmMvUkVTRVRcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdHlsaXplfSBmcm9tIFwiLi9zcmMvc3R5bGl6ZVwiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHV1aWR9IGZyb20gXCIuL3NyYy91dWlkXCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCBhc3NpZ24gZnJvbSBcIi4vYXNzaWduXCI7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSBcIi4vaXNPYmplY3RcIjtcbmltcG9ydCB1dWlkIGZyb20gXCIuL3V1aWRcIjtcbmltcG9ydCBSRVNFVCBmcm9tIFwiLi9SRVNFVFwiO1xuXG4vKipcbiAgICBAZGVzYyBSZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCByZXNldHMgbmVzdGVkIE9iamVjdCBjb25maWdzLlxuICAgIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAgICBAcGFyYW0ge09iamVjdH0gZGVmYXVsdHNcbiAgICBAcHJpdmF0ZVxuKi9cbmZ1bmN0aW9uIG5lc3RlZFJlc2V0KG9iaiwgZGVmYXVsdHMpIHtcbiAgaWYgKGlzT2JqZWN0KG9iaikpIHtcbiAgICBmb3IgKHZhciBuZXN0ZWRLZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChvYmosIG5lc3RlZEtleSkgJiYgIW5lc3RlZEtleS5zdGFydHNXaXRoKFwiX1wiKSkge1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gZGVmYXVsdHMgJiYgaXNPYmplY3QoZGVmYXVsdHMpID8gZGVmYXVsdHNbbmVzdGVkS2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG9ialtuZXN0ZWRLZXldID09PSBSRVNFVCkge1xuICAgICAgICAgIG9ialtuZXN0ZWRLZXldID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9ialtuZXN0ZWRLZXldKSkge1xuICAgICAgICAgIG5lc3RlZFJlc2V0KG9ialtuZXN0ZWRLZXldLCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICAgIEBjbGFzcyBCYXNlQ2xhc3NcbiAgICBAc3VtbWFyeSBBbiBhYnN0cmFjdCBjbGFzcyB0aGF0IGNvbnRhaW5zIHNvbWUgZ2xvYmFsIG1ldGhvZHMgYW5kIGZ1bmN0aW9uYWxpdHkuXG4qL1xudmFyIEJhc2VDbGFzcyA9IGZ1bmN0aW9uIEJhc2VDbGFzcygpIHtcbiAgdGhpcy5fb24gPSB7fTtcbiAgdGhpcy5fdXVpZCA9IHV1aWQoKTtcbn07XG5cbi8qKlxuICAgIEBtZW1iZXJvZiBCYXNlQ2xhc3NcbiAgICBAZGVzYyBJZiAqdmFsdWUqIGlzIHNwZWNpZmllZCwgc2V0cyB0aGUgbWV0aG9kcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIGtleS92YWx1ZSBwYWlycyBhbmQgcmV0dXJucyB0aGlzIGNsYXNzLiBJZiAqdmFsdWUqIGlzIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAgICBAcGFyYW0ge09iamVjdH0gWyp2YWx1ZSpdXG4gICAgQGNoYWluYWJsZVxuKi9cbkJhc2VDbGFzcy5wcm90b3R5cGUuY29uZmlnID0gZnVuY3Rpb24gY29uZmlnIChfKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKCF0aGlzLl9jb25maWdEZWZhdWx0KSB7XG4gICAgdmFyIGNvbmZpZyA9IHt9O1xuICAgIGZvciAodmFyIGsgaW4gdGhpcyQxLl9fcHJvdG9fXykge1xuICAgICAgaWYgKGsuaW5kZXhPZihcIl9cIikgIT09IDAgJiYgIVtcImNvbmZpZ1wiLCBcImNvbnN0cnVjdG9yXCIsIFwicmVuZGVyXCJdLmluY2x1ZGVzKGspKSB7XG4gICAgICAgIHZhciB2ID0gdGhpcyQxW2tdKCk7XG4gICAgICAgIGNvbmZpZ1trXSA9IGlzT2JqZWN0KHYpID8gYXNzaWduKHt9LCB2KSA6IHY7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZ0RlZmF1bHQgPSBjb25maWc7XG4gIH1cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBmb3IgKHZhciBrJDEgaW4gXykge1xuICAgICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwoXywgayQxKSAmJiBrJDEgaW4gdGhpcyQxKSB7XG4gICAgICAgIHZhciB2JDEgPSBfW2skMV07XG4gICAgICAgIGlmICh2JDEgPT09IFJFU0VUKSB7XG4gICAgICAgICAgaWYgKGskMSA9PT0gXCJvblwiKSB7IHRoaXMkMS5fb24gPSB0aGlzJDEuX2NvbmZpZ0RlZmF1bHRbayQxXTsgfVxuICAgICAgICAgIGVsc2UgeyB0aGlzJDFbayQxXSh0aGlzJDEuX2NvbmZpZ0RlZmF1bHRbayQxXSk7IH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBuZXN0ZWRSZXNldCh2JDEsIHRoaXMkMS5fY29uZmlnRGVmYXVsdFtrJDFdKTtcbiAgICAgICAgICB0aGlzJDFbayQxXSh2JDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGVsc2Uge1xuICAgIHZhciBjb25maWckMSA9IHt9O1xuICAgIGZvciAodmFyIGskMiBpbiB0aGlzJDEuX19wcm90b19fKSB7IGlmIChrJDIuaW5kZXhPZihcIl9cIikgIT09IDAgJiYgIVtcImNvbmZpZ1wiLCBcImNvbnN0cnVjdG9yXCIsIFwicmVuZGVyXCJdLmluY2x1ZGVzKGskMikpIHsgY29uZmlnJDFbayQyXSA9IHRoaXMkMVtrJDJdKCk7IH0gfVxuICAgIHJldHVybiBjb25maWckMTtcbiAgfVxufTtcblxuLyoqXG4gICAgQG1lbWJlcm9mIEJhc2VDbGFzc1xuICAgIEBkZXNjIEFkZHMgb3IgcmVtb3ZlcyBhICpsaXN0ZW5lciogdG8gZWFjaCBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgKnR5cGVuYW1lcyouIElmIGEgKmxpc3RlbmVyKiBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSBjdXJyZW50bHkgYXNzaWduZWQgbGlzdGVuZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgKnR5cGVuYW1lKi4gTWlycm9ycyB0aGUgY29yZSBbZDMtc2VsZWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtc2VsZWN0aW9uI3NlbGVjdGlvbl9vbikgYmVoYXZpb3IuXG4gICAgQHBhcmFtIHtTdHJpbmd9IFsqdHlwZW5hbWVzKl1cbiAgICBAcGFyYW0ge0Z1bmN0aW9ufSBbKmxpc3RlbmVyKl1cbiAgICBAY2hhaW5hYmxlXG4gICAgQGV4YW1wbGUgPGNhcHRpb24+QnkgZGVmYXVsdCwgbGlzdGVuZXJzIGFwcGx5IGdsb2JhbGx5IHRvIGFsbCBvYmplY3RzLCBob3dldmVyLCBwYXNzaW5nIGEgbmFtZXNwYWNlIHdpdGggdGhlIGNsYXNzIG5hbWUgZ2l2ZXMgY29udHJvbCBvdmVyIHNwZWNpZmljIGVsZW1lbnRzOjwvY2FwdGlvbj5cbm5ldyBQbG90XG4ub24oXCJjbGljay5TaGFwZVwiLCBmdW5jdGlvbihkKSB7XG4gIGNvbnNvbGUubG9nKFwiZGF0YSBmb3Igc2hhcGUgY2xpY2tlZDpcIiwgZCk7XG59KVxuLm9uKFwiY2xpY2suTGVnZW5kXCIsIGZ1bmN0aW9uKGQpIHtcbiAgY29uc29sZS5sb2coXCJkYXRhIGZvciBsZWdlbmQgY2xpY2tlZDpcIiwgZCk7XG59KVxuKi9cbkJhc2VDbGFzcy5wcm90b3R5cGUub24gPSBmdW5jdGlvbiBvbiAoXywgZikge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMiA/ICh0aGlzLl9vbltfXSA9IGYsIHRoaXMpIDogYXJndW1lbnRzLmxlbmd0aCA/IHR5cGVvZiBfID09PSBcInN0cmluZ1wiID8gdGhpcy5fb25bX10gOiAodGhpcy5fb24gPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vbiwgXyksIHRoaXMpIDogdGhpcy5fb247XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYXNlQ2xhc3M7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VDbGFzcy5qcy5tYXAiLCIvKipcbiAgICBAY29uc3RhbnQgUkVTRVRcbiAgICBAZGVzYyBTdHJpbmcgY29uc3RhbnQgdXNlZCB0byByZXNldCBhbiBpbmRpdmlkdWFsIGNvbmZpZyBwcm9wZXJ0eS5cbiovXG5leHBvcnQgZGVmYXVsdCBcIkQzUExVUy1DT01NT04tUkVTRVRcIjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UkVTRVQuanMubWFwIiwiLyoqXG4gICAgQGZ1bmN0aW9uIGFjY2Vzc29yXG4gICAgQGRlc2MgV3JhcHMgYW4gb2JqZWN0IGtleSBpbiBhIHNpbXBsZSBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICBAcGFyYW0ge1N0cmluZ30ga2V5IFRoZSBrZXkgdG8gYmUgcmV0dXJuZWQgZnJvbSBlYWNoIE9iamVjdCBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLlxuICAgIEBwYXJhbSB7Kn0gW2RlZl0gQSBkZWZhdWx0IHZhbHVlIHRvIGJlIHJldHVybmVkIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQuXG4gICAgQGV4YW1wbGUgPGNhcHRpb24+dGhpczwvY2FwdGlvbj5cbmFjY2Vzc29yKFwiaWRcIik7XG4gICAgQGV4YW1wbGUgPGNhcHRpb24+cmV0dXJucyB0aGlzPC9jYXB0aW9uPlxuZnVuY3Rpb24oZCkge1xuICByZXR1cm4gZFtcImlkXCJdO1xufVxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGtleSwgZGVmKSB7XG4gIGlmIChkZWYgPT09IHZvaWQgMCkgeyByZXR1cm4gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGRba2V5XTsgfTsgfVxuICByZXR1cm4gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGRba2V5XSA9PT0gdm9pZCAwID8gZGVmIDogZFtrZXldOyB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hY2Nlc3Nvci5qcy5tYXAiLCJpbXBvcnQge2RlZmF1bHQgYXMgaXNPYmplY3R9IGZyb20gXCIuL2lzT2JqZWN0XCI7XG5cbi8qKlxuICAgIEBmdW5jdGlvbiB2YWxpZE9iamVjdFxuICAgIEBkZXNjIERldGVybWluZXMgaWYgdGhlIG9iamVjdCBwYXNzZWQgaXMgdGhlIGRvY3VtZW50IG9yIHdpbmRvdy5cbiAgICBAcGFyYW0ge09iamVjdH0gb2JqXG4gICAgQHByaXZhdGVcbiovXG5mdW5jdGlvbiB2YWxpZE9iamVjdChvYmopIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHsgcmV0dXJuIHRydWU7IH1cbiAgZWxzZSB7IHJldHVybiBvYmogIT09IHdpbmRvdyAmJiBvYmogIT09IGRvY3VtZW50OyB9XG59XG5cbi8qKlxuICAgIEBmdW5jdGlvbiBhc3NpZ25cbiAgICBAZGVzYyBBIGRlZXBseSByZWN1cnNpdmUgdmVyc2lvbiBvZiBgT2JqZWN0LmFzc2lnbmAuXG4gICAgQHBhcmFtIHsuLi5PYmplY3R9IG9iamVjdHNcbiAgICBAZXhhbXBsZSA8Y2FwdGlvbj50aGlzPC9jYXB0aW9uPlxuYXNzaWduKHtpZDogXCJmb29cIiwgZGVlcDoge2dyb3VwOiBcIkFcIn19LCB7aWQ6IFwiYmFyXCIsIGRlZXA6IHt2YWx1ZTogMjB9fSkpO1xuICAgIEBleGFtcGxlIDxjYXB0aW9uPnJldHVybnMgdGhpczwvY2FwdGlvbj5cbntpZDogXCJiYXJcIiwgZGVlcDoge2dyb3VwOiBcIkFcIiwgdmFsdWU6IDIwfX1cbiovXG5mdW5jdGlvbiBhc3NpZ24oKSB7XG4gIHZhciBvYmplY3RzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHdoaWxlICggbGVuLS0gKSBvYmplY3RzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cblxuICB2YXIgdGFyZ2V0ID0gb2JqZWN0c1swXTtcbiAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGkgKSB7XG5cbiAgICB2YXIgc291cmNlID0gb2JqZWN0c1tpXTtcblxuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuXG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbcHJvcF07XG5cbiAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkgJiYgdmFsaWRPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGlmICh0YXJnZXQuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgaXNPYmplY3QodGFyZ2V0W3Byb3BdKSkgeyB0YXJnZXRbcHJvcF0gPSBhc3NpZ24oe30sIHRhcmdldFtwcm9wXSwgdmFsdWUpOyB9XG4gICAgICAgIGVsc2UgeyB0YXJnZXRbcHJvcF0gPSBhc3NpZ24oe30sIHZhbHVlKTsgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsgdGFyZ2V0W3Byb3BdID0gdmFsdWUuc2xpY2UoKTsgfVxuICAgICAgZWxzZSB7IHRhcmdldFtwcm9wXSA9IHZhbHVlOyB9XG5cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IG9iamVjdHMubGVuZ3RoOyBpKyspIGxvb3AoIGkgKTtcblxuICByZXR1cm4gdGFyZ2V0O1xuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2lnbjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXNzaWduLmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiBhdHRyaXplXG4gICAgQGRlc2MgQXBwbGllcyBlYWNoIGtleS92YWx1ZSBpbiBhbiBvYmplY3QgYXMgYW4gYXR0ci5cbiAgICBAcGFyYW0ge0Qzc2VsZWN0aW9ufSBlbGVtIFRoZSBEMyBlbGVtZW50IHRvIGFwcGx5IHRoZSBzdHlsZXMgdG8uXG4gICAgQHBhcmFtIHtPYmplY3R9IGF0dHJzIEFuIG9iamVjdCBvZiBrZXkvdmFsdWUgYXR0ciBwYWlycy5cbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihlLCBhKSB7XG4gIGlmICggYSA9PT0gdm9pZCAwICkgYSA9IHt9O1xuXG4gIGZvciAodmFyIGsgaW4gYSkgeyBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChhLCBrKSkgeyBlLmF0dHIoaywgYVtrXSk7IH0gfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hdHRyaXplLmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiBjbG9zZXN0XG4gICAgQGRlc2MgRmluZHMgdGhlIGNsb3Nlc3QgbnVtZXJpYyB2YWx1ZSBpbiBhbiBhcnJheS5cbiAgICBAcGFyYW0ge051bWJlcn0gbiBUaGUgbnVtYmVyIHZhbHVlIHRvIHVzZSB3aGVuIHNlYXJjaGluZyB0aGUgYXJyYXkuXG4gICAgQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSBvZiB2YWx1ZXMgdG8gdGVzdCBhZ2FpbnN0LlxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG4sIGFycikge1xuICBpZiAoIGFyciA9PT0gdm9pZCAwICkgYXJyID0gW107XG5cbiAgaWYgKCFhcnIgfHwgIShhcnIgaW5zdGFuY2VvZiBBcnJheSkgfHwgIWFyci5sZW5ndGgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gYXJyLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VycikgeyByZXR1cm4gTWF0aC5hYnMoY3VyciAtIG4pIDwgTWF0aC5hYnMocHJldiAtIG4pID8gY3VyciA6IHByZXY7IH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbG9zZXN0LmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiBjb25maWdQcmVwXG4gICAgQGRlc2MgUHJlcHMgYSBjb25maWcgb2JqZWN0IGZvciBkM3BsdXMgZGF0YSwgYW5kIG9wdGlvbmFsbHkgYnViYmxlcyB1cCBhIHNwZWNpZmljIG5lc3RlZCB0eXBlLiBXaGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHlvdSBtdXN0IGJpbmQgYSBkM3BsdXMgY2xhc3MnIGB0aGlzYCBjb250ZXh0LlxuICAgIEBwYXJhbSB7T2JqZWN0fSBbY29uZmlnID0gdGhpcy5fc2hhcGVDb25maWddIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB0byBwYXJzZS5cbiAgICBAcGFyYW0ge1N0cmluZ30gW3R5cGUgPSBcInNoYXBlXCJdIFRoZSBldmVudCBjbGFzc2lmaWVyIHRvIHVzZXIgZm9yIFwib25cIiBldmVudHMuIEZvciBleGFtcGxlLCB0aGUgZGVmYXVsdCBldmVudCB0eXBlIG9mIFwic2hhcGVcIiB3aWxsIGFwcGx5IGFsbCBldmVudHMgaW4gdGhlIFwib25cIiBjb25maWcgb2JqZWN0IHdpdGggdGhhdCBrZXksIGxpa2UgXCJjbGljay5zaGFwZVwiIGFuZCBcIm1vdXNlbGVhdmUuc2hhcGVcIiwgaW4gYWRkaXRpb24gdG8gYW55IGdsb3ZhbCBldmVudHMgbGlrZSBcImNsaWNrXCIgYW5kIFwibW91c2VsZWF2ZVwiLlxuICAgIEBwYXJhbSB7U3RyaW5nfSBbbmVzdF0gQW4gb3B0aW9uYWwgbmVzdGVkIGtleSB0byBidWJibGUgdXAgdG8gdGhlIHBhcmVudCBjb25maWcgbGV2ZWwuXG4qL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29uZmlnUHJlcChjb25maWcsIHR5cGUsIG5lc3QpIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gIGlmICggY29uZmlnID09PSB2b2lkIDAgKSBjb25maWcgPSB0aGlzLl9zaGFwZUNvbmZpZztcbiAgaWYgKCB0eXBlID09PSB2b2lkIDAgKSB0eXBlID0gXCJzaGFwZVwiO1xuICBpZiAoIG5lc3QgPT09IHZvaWQgMCApIG5lc3QgPSBmYWxzZTtcblxuXG4gIHZhciBuZXdDb25maWcgPSB7ZHVyYXRpb246IHRoaXMuX2R1cmF0aW9uLCBvbjoge319O1xuXG4gIHZhciB3cmFwRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuYykgeyByZXR1cm4gZnVuY3Rpb24gKGQsIGksIHMpIHtcbiAgICB3aGlsZSAoZC5fX2QzcGx1c19fKSB7XG4gICAgICBpID0gZC5pO1xuICAgICAgZCA9IGQuZGF0YSB8fCBkLmZlYXR1cmU7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmJpbmQodGhpcyQxKShkLCBpLCBzKTtcbiAgfTsgfTtcblxuICB2YXIgcGFyc2VFdmVudHMgPSBmdW5jdGlvbiAobmV3T2JqLCBvbikge1xuXG4gICAgZm9yICh2YXIgZXZlbnQgaW4gb24pIHtcblxuICAgICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwob24sIGV2ZW50KSAmJiAhZXZlbnQuaW5jbHVkZXMoXCIuXCIpIHx8IGV2ZW50LmluY2x1ZGVzKChcIi5cIiArIHR5cGUpKSkge1xuICAgICAgICBuZXdPYmoub25bZXZlbnRdID0gd3JhcEZ1bmN0aW9uKG9uW2V2ZW50XSk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgfTtcblxuICB2YXIga2V5RXZhbCA9IGZ1bmN0aW9uIChuZXdPYmosIG9iaikge1xuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuXG4gICAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcblxuICAgICAgICBpZiAoa2V5ID09PSBcIm9uXCIpIHsgcGFyc2VFdmVudHMobmV3T2JqLCBvYmpba2V5XSk7IH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIG9ialtrZXldID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBuZXdPYmpba2V5XSA9IHdyYXBGdW5jdGlvbihvYmpba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIG9ialtrZXldID09PSBcIm9iamVjdFwiICYmICEob2JqIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgbmV3T2JqW2tleV0gPSB7b246IHt9fTtcbiAgICAgICAgICBrZXlFdmFsKG5ld09ialtrZXldLCBvYmpba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gIH07XG5cbiAga2V5RXZhbChuZXdDb25maWcsIGNvbmZpZyk7XG4gIGlmICh0aGlzLl9vbikgeyBwYXJzZUV2ZW50cyhuZXdDb25maWcsIHRoaXMuX29uKTsgfVxuICBpZiAobmVzdCAmJiBjb25maWdbbmVzdF0pIHtcbiAgICBrZXlFdmFsKG5ld0NvbmZpZywgY29uZmlnW25lc3RdKTtcbiAgICBpZiAoY29uZmlnW25lc3RdLm9uKSB7IHBhcnNlRXZlbnRzKG5ld0NvbmZpZywgY29uZmlnW25lc3RdLm9uKTsgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0NvbmZpZztcblxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25maWdQcmVwLmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiBjb25zdGFudFxuICAgIEBkZXNjIFdyYXBzIG5vbi1mdW5jdGlvbiB2YXJpYWJsZXMgaW4gYSBzaW1wbGUgcmV0dXJuIGZ1bmN0aW9uLlxuICAgIEBwYXJhbSB7QXJyYXl8TnVtYmVyfE9iamVjdHxTdHJpbmd9IHZhbHVlIFRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbi5cbiAgICBAZXhhbXBsZSA8Y2FwdGlvbj50aGlzPC9jYXB0aW9uPlxuY29uc3RhbnQoNDIpO1xuICAgIEBleGFtcGxlIDxjYXB0aW9uPnJldHVybnMgdGhpczwvY2FwdGlvbj5cbmZ1bmN0aW9uKCkge1xuICByZXR1cm4gNDI7XG59XG4qL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnQuanMubWFwIiwiaW1wb3J0IHtzZWxlY3R9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7dHJhbnNpdGlvbn0gZnJvbSBcImQzLXRyYW5zaXRpb25cIjtcblxuaW1wb3J0IHtkZWZhdWx0IGFzIGF0dHJpemV9IGZyb20gXCIuL2F0dHJpemVcIjtcblxuLyoqXG4gICAgQGZ1bmN0aW9uIGVsZW1cbiAgICBAZGVzYyBNYW5hZ2VzIHRoZSBlbnRlci91cGRhdGUvZXhpdCBwYXR0ZXJuIGZvciBhIHNpbmdsZSBET00gZWxlbWVudC5cbiAgICBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3IgQSBEMyBzZWxlY3Rvciwgd2hpY2ggbXVzdCBpbmNsdWRlIHRoZSB0YWduYW1lIGFuZCBhIGNsYXNzIGFuZC9vciBJRC5cbiAgICBAcGFyYW0ge09iamVjdH0gcGFyYW1zIEFkZGl0aW9uYWwgcGFyYW1ldGVycy5cbiAgICBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuY29uZGl0aW9uID0gdHJ1ZV0gV2hldGhlciBvciBub3QgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHJlbmRlcmVkIChvciByZW1vdmVkKS5cbiAgICBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5lbnRlciA9IHt9XSBBIGNvbGxlY3Rpb24gb2Yga2V5L3ZhbHVlIHBhaXJzIHRoYXQgbWFwIHRvIGF0dHJpYnV0ZXMgdG8gYmUgZ2l2ZW4gb24gZW50ZXIuXG4gICAgQHBhcmFtIHtPYmplY3R9IFtwYXJhbXMuZXhpdCA9IHt9XSBBIGNvbGxlY3Rpb24gb2Yga2V5L3ZhbHVlIHBhaXJzIHRoYXQgbWFwIHRvIGF0dHJpYnV0ZXMgdG8gYmUgZ2l2ZW4gb24gZXhpdC5cbiAgICBAcGFyYW0ge0QzU2VsZWN0aW9ufSBbcGFyYW1zLnBhcmVudCA9IGQzLnNlbGVjdChcImJvZHlcIildIFRoZSBwYXJlbnQgZWxlbWVudCBmb3IgdGhpcyBuZXcgZWxlbWVudCB0byBiZSBhcHBlbmRlZCB0by5cbiAgICBAcGFyYW0ge0QzVHJhbnNpdGlvbn0gW3BhcmFtcy50cmFuc2l0aW9uID0gZDMudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApXSBUaGUgdHJhbnNpdGlvbiB0byB1c2Ugd2hlbiBhbmltYXRlZCB0aGUgZGlmZmVyZW50IGxpZmUgY3ljbGUgc3RhZ2VzLlxuICAgIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLnVwZGF0ZSA9IHt9XSBBIGNvbGxlY3Rpb24gb2Yga2V5L3ZhbHVlIHBhaXJzIHRoYXQgbWFwIHRvIGF0dHJpYnV0ZXMgdG8gYmUgZ2l2ZW4gb24gdXBkYXRlLlxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yLCBwKSB7XG5cbiAgLy8gb3ZlcnJpZGVzIGRlZmF1bHQgcGFyYW1zXG4gIHAgPSBPYmplY3QuYXNzaWduKHt9LCB7XG4gICAgY29uZGl0aW9uOiB0cnVlLFxuICAgIGVudGVyOiB7fSxcbiAgICBleGl0OiB7fSxcbiAgICBwYXJlbnQ6IHNlbGVjdChcImJvZHlcIiksXG4gICAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbigpLmR1cmF0aW9uKDApLFxuICAgIHVwZGF0ZToge31cbiAgfSwgcCk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9ICgvXFwuKFteI10rKS9nKS5leGVjKHNlbGVjdG9yKSxcbiAgICAgICAgaWQgPSAoLyMoW15cXC5dKykvZykuZXhlYyhzZWxlY3RvciksXG4gICAgICAgIHRhZyA9ICgvXihbXi5eI10rKS9nKS5leGVjKHNlbGVjdG9yKVsxXTtcblxuICB2YXIgZWxlbSA9IHAucGFyZW50LnNlbGVjdEFsbChzZWxlY3Rvci5pbmNsdWRlcyhcIjpcIikgPyBzZWxlY3Rvci5zcGxpdChcIjpcIilbMV0gOiBzZWxlY3RvcilcbiAgICAuZGF0YShwLmNvbmRpdGlvbiA/IFtudWxsXSA6IFtdKTtcblxuICB2YXIgZW50ZXIgPSBlbGVtLmVudGVyKCkuYXBwZW5kKHRhZykuY2FsbChhdHRyaXplLCBwLmVudGVyKTtcblxuICBpZiAoaWQpIHsgZW50ZXIuYXR0cihcImlkXCIsIGlkWzFdKTsgfVxuICBpZiAoY2xhc3NOYW1lKSB7IGVudGVyLmF0dHIoXCJjbGFzc1wiLCBjbGFzc05hbWVbMV0pOyB9XG5cbiAgZWxlbS5leGl0KCkudHJhbnNpdGlvbihwLnRyYW5zaXRpb24pLmNhbGwoYXR0cml6ZSwgcC5leGl0KS5yZW1vdmUoKTtcblxuICB2YXIgdXBkYXRlID0gZW50ZXIubWVyZ2UoZWxlbSk7XG4gIHVwZGF0ZS50cmFuc2l0aW9uKHAudHJhbnNpdGlvbikuY2FsbChhdHRyaXplLCBwLnVwZGF0ZSk7XG5cbiAgcmV0dXJuIHVwZGF0ZTtcblxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGVtLmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiBpc09iamVjdFxuICAgIEBkZXNjIERldGVjdHMgaWYgYSB2YXJpYWJsZSBpcyBhIGphdmFzY3JpcHQgT2JqZWN0LlxuICAgIEBwYXJhbSB7Kn0gaXRlbVxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgcmV0dXJuIGl0ZW0gJiZcbiAgICB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IGl0ZW0gIT09IHdpbmRvdyAmJiBpdGVtICE9PSB3aW5kb3cuZG9jdW1lbnQgJiYgIShpdGVtIGluc3RhbmNlb2YgRWxlbWVudCkpICYmXG4gICAgIUFycmF5LmlzQXJyYXkoaXRlbSlcbiAgICA/IHRydWUgOiBmYWxzZTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNPYmplY3QuanMubWFwIiwiaW1wb3J0IHttZXJnZSwgc3VtfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7a2V5c30gZnJvbSBcImQzLWNvbGxlY3Rpb25cIjtcblxuLyoqXG4gICAgQGZ1bmN0aW9uIG1lcmdlXG4gICAgQGRlc2MgQ29tYmluZXMgYW4gQXJyYXkgb2YgT2JqZWN0cyB0b2dldGhlciBhbmQgcmV0dXJucyBhIG5ldyBPYmplY3QuXG4gICAgQHBhcmFtIHtBcnJheX0gb2JqZWN0cyBUaGUgQXJyYXkgb2Ygb2JqZWN0cyB0byBiZSBtZXJnZWQgdG9nZXRoZXIuXG4gICAgQHBhcmFtIHtPYmplY3R9IGFnZ3MgQW4gb2JqZWN0IGNvbnRhaW5pbmcgc3BlY2lmaWMgYWdncmVnYXRpb24gbWV0aG9kcyAoZnVuY3Rpb25zKSBmb3IgZWFjaCBrZXkgdHlwZS4gQnkgZGVmYXVsdCwgbnVtYmVycyBhcmUgc3VtbWVkIGFuZCBzdHJpbmdzIGFyZSByZXR1cm5lZCBhcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLlxuICAgIEBleGFtcGxlIDxjYXB0aW9uPnRoaXM8L2NhcHRpb24+XG5tZXJnZShbXG4gIHtpZDogXCJmb29cIiwgZ3JvdXA6IFwiQVwiLCB2YWx1ZTogMTAsIGxpbmtzOiBbMSwgMl19LFxuICB7aWQ6IFwiYmFyXCIsIGdyb3VwOiBcIkFcIiwgdmFsdWU6IDIwLCBsaW5rczogWzEsIDNdfVxuXSk7XG4gICAgQGV4YW1wbGUgPGNhcHRpb24+cmV0dXJucyB0aGlzPC9jYXB0aW9uPlxue2lkOiBbXCJiYXJcIiwgXCJmb29cIl0sIGdyb3VwOiBcIkFcIiwgdmFsdWU6IDMwLCBsaW5rczogWzEsIDIsIDNdfVxuKi9cbmZ1bmN0aW9uIG9iamVjdE1lcmdlKG9iamVjdHMsIGFnZ3MpIHtcbiAgaWYgKCBhZ2dzID09PSB2b2lkIDAgKSBhZ2dzID0ge307XG5cblxuICB2YXIgYXZhaWxhYmxlS2V5cyA9IG5ldyBTZXQobWVyZ2Uob2JqZWN0cy5tYXAoZnVuY3Rpb24gKG8pIHsgcmV0dXJuIGtleXMobyk7IH0pKSksXG4gICAgICAgIG5ld09iamVjdCA9IHt9O1xuXG4gIGF2YWlsYWJsZUtleXMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgIHZhciB2YWx1ZXMgPSBvYmplY3RzLm1hcChmdW5jdGlvbiAobykgeyByZXR1cm4gb1trXTsgfSk7XG4gICAgdmFyIHZhbHVlO1xuICAgIGlmIChhZ2dzW2tdKSB7IHZhbHVlID0gYWdnc1trXSh2YWx1ZXMpOyB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgdHlwZXMgPSB2YWx1ZXMubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2IHx8IHYgPT09IGZhbHNlID8gdi5jb25zdHJ1Y3RvciA6IHY7IH0pLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdiAhPT0gdm9pZCAwOyB9KTtcbiAgICAgIGlmICghdHlwZXMubGVuZ3RoKSB7IHZhbHVlID0gdW5kZWZpbmVkOyB9XG4gICAgICBlbHNlIGlmICh0eXBlcy5pbmRleE9mKEFycmF5KSA+PSAwKSB7XG4gICAgICAgIHZhbHVlID0gbWVyZ2UodmFsdWVzLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdiBpbnN0YW5jZW9mIEFycmF5ID8gdiA6IFt2XTsgfSkpO1xuICAgICAgICB2YWx1ZSA9IEFycmF5LmZyb20obmV3IFNldCh2YWx1ZSkpO1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7IHZhbHVlID0gdmFsdWVbMF07IH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHR5cGVzLmluZGV4T2YoU3RyaW5nKSA+PSAwKSB7XG4gICAgICAgIHZhbHVlID0gQXJyYXkuZnJvbShuZXcgU2V0KHZhbHVlcykpO1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7IHZhbHVlID0gdmFsdWVbMF07IH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHR5cGVzLmluZGV4T2YoTnVtYmVyKSA+PSAwKSB7IHZhbHVlID0gc3VtKHZhbHVlcyk7IH1cbiAgICAgIGVsc2UgaWYgKHR5cGVzLmluZGV4T2YoT2JqZWN0KSA+PSAwKSB7IHZhbHVlID0gb2JqZWN0TWVyZ2UodmFsdWVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdjsgfSkpOyB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBBcnJheS5mcm9tKG5ldyBTZXQodmFsdWVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdiAhPT0gdm9pZCAwOyB9KSkpO1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7IHZhbHVlID0gdmFsdWVbMF07IH1cbiAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqZWN0W2tdID0gdmFsdWU7XG4gIH0pO1xuXG4gIHJldHVybiBuZXdPYmplY3Q7XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgb2JqZWN0TWVyZ2U7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlLmpzLm1hcCIsIi8qKlxuIEBmdW5jdGlvbiBwYXJzZVNpZGVzXG4gQGRlc2MgQ29udmVydHMgYSBzdHJpbmcgb2YgZGlyZWN0aW9uYWwgQ1NTIHNob3J0aGFuZCB2YWx1ZXMgaW50byBhbiBvYmplY3Qgd2l0aCB0aGUgdmFsdWVzIGV4cGFuZGVkLlxuIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gc2lkZXMgVGhlIENTUyBzaG9ydGhhbmQgc3RyaW5nIHRvIGV4cGFuZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2lkZXMpIHtcbiAgdmFyIHZhbHVlcztcbiAgaWYgKHR5cGVvZiBzaWRlcyA9PT0gXCJudW1iZXJcIikgeyB2YWx1ZXMgPSBbc2lkZXNdOyB9XG4gIGVsc2UgeyB2YWx1ZXMgPSBzaWRlcy5zcGxpdCgvXFxzKy8pOyB9XG5cbiAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHsgdmFsdWVzID0gW3ZhbHVlc1swXSwgdmFsdWVzWzBdLCB2YWx1ZXNbMF0sIHZhbHVlc1swXV07IH1cbiAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMikgeyB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHZhbHVlcyk7IH1cbiAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMykgeyB2YWx1ZXMucHVzaCh2YWx1ZXNbMV0pOyB9XG5cbiAgcmV0dXJuIFtcbiAgICBcInRvcFwiLFxuICAgIFwicmlnaHRcIixcbiAgICBcImJvdHRvbVwiLFxuICAgIFwibGVmdFwiXG4gIF0ucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGRpcmVjdGlvbiwgaSkge1xuICAgIHZhciB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVzW2ldKTtcbiAgICBhY2NbZGlyZWN0aW9uXSA9IHZhbHVlIHx8IDA7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZVNpZGVzLmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiBwcmVmaXhcbiAgICBAZGVzYyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgdmVuZG9yIHByZWZpeCwgZ2l2ZW4gdGhlIGN1cnJlbnQgYnJvd3Nlci5cbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgaWYgKFwiLXdlYmtpdC10cmFuc2Zvcm1cIiBpbiBkb2N1bWVudC5ib2R5LnN0eWxlKSB7IHJldHVybiBcIi13ZWJraXQtXCI7IH1cbiAgZWxzZSBpZiAoXCItbW96LXRyYW5zZm9ybVwiIGluIGRvY3VtZW50LmJvZHkuc3R5bGUpIHsgcmV0dXJuIFwiLW1vei1cIjsgfVxuICBlbHNlIGlmIChcIi1tcy10cmFuc2Zvcm1cIiBpbiBkb2N1bWVudC5ib2R5LnN0eWxlKSB7IHJldHVybiBcIi1tcy1cIjsgfVxuICBlbHNlIGlmIChcIi1vLXRyYW5zZm9ybVwiIGluIGRvY3VtZW50LmJvZHkuc3R5bGUpIHsgcmV0dXJuIFwiLW8tXCI7IH1cbiAgZWxzZSB7IHJldHVybiBcIlwiOyB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZWZpeC5qcy5tYXAiLCIvKipcbiAgICBAZnVuY3Rpb24gc3R5bGl6ZVxuICAgIEBkZXNjIEFwcGxpZXMgZWFjaCBrZXkvdmFsdWUgaW4gYW4gb2JqZWN0IGFzIGEgc3R5bGUuXG4gICAgQHBhcmFtIHtEM3NlbGVjdGlvbn0gZWxlbSBUaGUgRDMgZWxlbWVudCB0byBhcHBseSB0aGUgc3R5bGVzIHRvLlxuICAgIEBwYXJhbSB7T2JqZWN0fSBzdHlsZXMgQW4gb2JqZWN0IG9mIGtleS92YWx1ZSBzdHlsZSBwYWlycy5cbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihlLCBzKSB7XG4gIGlmICggcyA9PT0gdm9pZCAwICkgcyA9IHt9O1xuXG4gIGZvciAodmFyIGsgaW4gcykgeyBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChzLCBrKSkgeyBlLnN0eWxlKGssIHNba10pOyB9IH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGl6ZS5qcy5tYXAiLCIvKipcbiAgICBAZnVuY3Rpb24gc1xuICAgIEBkZXNjIFJldHVybnMgNCByYW5kb20gY2hhcmFjdGVycywgdXNlZCBmb3IgY29uc3RydWN0aW5nIHVuaXF1ZSBpZGVudGlmaWVycy5cbiAgICBAcHJpdmF0ZVxuKi9cbmZ1bmN0aW9uIHMoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpO1xufVxuXG4vKipcbiAgICBAZnVuY3Rpb24gdXVpZFxuICAgIEBzdW1tYXJ5IFJldHVybnMgYSB1bmlxdWUgaWRlbnRpZmllci5cbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIChcIlwiICsgKHMoKSkgKyAocygpKSArIFwiLVwiICsgKHMoKSkgKyBcIi1cIiArIChzKCkpICsgXCItXCIgKyAocygpKSArIFwiLVwiICsgKHMoKSkgKyAocygpKSArIChzKCkpKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXVpZC5qcy5tYXAiLCJleHBvcnQge2RlZmF1bHQgYXMgZm9udEV4aXN0c30gZnJvbSBcIi4vc3JjL2ZvbnRFeGlzdHNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBydGx9IGZyb20gXCIuL3NyYy9ydGxcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdHJpbmdpZnl9IGZyb20gXCIuL3NyYy9zdHJpbmdpZnlcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdHJpcH0gZnJvbSBcIi4vc3JjL3N0cmlwXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgVGV4dEJveH0gZnJvbSBcIi4vc3JjL1RleHRCb3hcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0ZXh0U3BsaXR9IGZyb20gXCIuL3NyYy90ZXh0U3BsaXRcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0ZXh0V2lkdGh9IGZyb20gXCIuL3NyYy90ZXh0V2lkdGhcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0ZXh0V3JhcH0gZnJvbSBcIi4vc3JjL3RleHRXcmFwXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGl0bGVDYXNlfSBmcm9tIFwiLi9zcmMvdGl0bGVDYXNlXCI7XG5leHBvcnQge3RyaW0sIHRyaW1MZWZ0LCB0cmltUmlnaHR9IGZyb20gXCIuL3NyYy90cmltXCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qKlxuICAgIEBleHRlcm5hbCBCYXNlQ2xhc3NcbiAgICBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kM3BsdXMvZDNwbHVzLWNvbW1vbiNCYXNlQ2xhc3NcbiovXG5cbmltcG9ydCB7c2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge3RyYW5zaXRpb259IGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5pbXBvcnQge21heCwgbWluLCBzdW19IGZyb20gXCJkMy1hcnJheVwiO1xuXG5pbXBvcnQge2FjY2Vzc29yLCBCYXNlQ2xhc3MsIGNvbnN0YW50LCBwYXJzZVNpZGVzfSBmcm9tIFwiZDNwbHVzLWNvbW1vblwiO1xuXG5pbXBvcnQgZm9udEV4aXN0cyBmcm9tIFwiLi9mb250RXhpc3RzXCI7XG5pbXBvcnQge2RlZmF1bHQgYXMgZGV0ZWN0UlRMfSBmcm9tIFwiLi9ydGxcIjtcbmltcG9ydCBzdHJpcCBmcm9tIFwiLi9zdHJpcFwiO1xuaW1wb3J0IHRleHRTcGxpdCBmcm9tIFwiLi90ZXh0U3BsaXRcIjtcbmltcG9ydCBtZWFzdXJlIGZyb20gXCIuL3RleHRXaWR0aFwiO1xuaW1wb3J0IHdyYXAgZnJvbSBcIi4vdGV4dFdyYXBcIjtcbmltcG9ydCB7dHJpbVJpZ2h0fSBmcm9tIFwiLi90cmltXCI7XG5cbi8qKlxuICAgIEBjbGFzcyBUZXh0Qm94XG4gICAgQGV4dGVuZHMgZXh0ZXJuYWw6QmFzZUNsYXNzXG4gICAgQGRlc2MgQ3JlYXRlcyBhIHdyYXBwZWQgdGV4dCBib3ggZm9yIGVhY2ggcG9pbnQgaW4gYW4gYXJyYXkgb2YgZGF0YS4gU2VlIFt0aGlzIGV4YW1wbGVdKGh0dHBzOi8vZDNwbHVzLm9yZy9leGFtcGxlcy9kM3BsdXMtdGV4dC9nZXR0aW5nLXN0YXJ0ZWQvKSBmb3IgaGVscCBnZXR0aW5nIHN0YXJ0ZWQgdXNpbmcgdGhlIFRleHRCb3ggY2xhc3MuXG4qL1xudmFyIFRleHRCb3ggPSAoZnVuY3Rpb24gKEJhc2VDbGFzcykge1xuICBmdW5jdGlvbiBUZXh0Qm94KCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICBCYXNlQ2xhc3MuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuX2FyaWFIaWRkZW4gPSBjb25zdGFudChcImZhbHNlXCIpO1xuICAgIHRoaXMuX2RlbGF5ID0gMDtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IDA7XG4gICAgdGhpcy5fZWxsaXBzaXMgPSBmdW5jdGlvbiAodGV4dCwgbGluZSkgeyByZXR1cm4gbGluZSA/ICgodGV4dC5yZXBsYWNlKC9cXC58LCQvZywgXCJcIikpICsgXCIuLi5cIikgOiBcIlwiOyB9O1xuICAgIHRoaXMuX2ZvbnRDb2xvciA9IGNvbnN0YW50KFwiYmxhY2tcIik7XG4gICAgdGhpcy5fZm9udEZhbWlseSA9IGNvbnN0YW50KFtcIlJvYm90b1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIFwic2Fucy1zZXJpZlwiXSk7XG4gICAgdGhpcy5fZm9udE1heCA9IGNvbnN0YW50KDUwKTtcbiAgICB0aGlzLl9mb250TWluID0gY29uc3RhbnQoOCk7XG4gICAgdGhpcy5fZm9udE9wYWNpdHkgPSBjb25zdGFudCgxKTtcbiAgICB0aGlzLl9mb250UmVzaXplID0gY29uc3RhbnQoZmFsc2UpO1xuICAgIHRoaXMuX2ZvbnRTaXplID0gY29uc3RhbnQoMTApO1xuICAgIHRoaXMuX2ZvbnRXZWlnaHQgPSBjb25zdGFudCg0MDApO1xuICAgIHRoaXMuX2hlaWdodCA9IGFjY2Vzc29yKFwiaGVpZ2h0XCIsIDIwMCk7XG4gICAgdGhpcy5faWQgPSBmdW5jdGlvbiAoZCwgaSkgeyByZXR1cm4gZC5pZCB8fCAoXCJcIiArIGkpOyB9O1xuICAgIHRoaXMuX2xpbmVIZWlnaHQgPSBmdW5jdGlvbiAoZCwgaSkgeyByZXR1cm4gdGhpcyQxLl9mb250U2l6ZShkLCBpKSAqIDEuMjsgfTtcbiAgICB0aGlzLl9tYXhMaW5lcyA9IGNvbnN0YW50KG51bGwpO1xuICAgIHRoaXMuX29uID0ge307XG4gICAgdGhpcy5fb3ZlcmZsb3cgPSBjb25zdGFudChmYWxzZSk7XG4gICAgdGhpcy5fcGFkZGluZyA9IGNvbnN0YW50KDApO1xuICAgIHRoaXMuX3BvaW50ZXJFdmVudHMgPSBjb25zdGFudChcImF1dG9cIik7XG4gICAgdGhpcy5fcm90YXRlID0gY29uc3RhbnQoMCk7XG4gICAgdGhpcy5fcm90YXRlQW5jaG9yID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIFtkLncgLyAyLCBkLmggLyAyXTsgfTtcbiAgICB0aGlzLl9zcGxpdCA9IHRleHRTcGxpdDtcbiAgICB0aGlzLl90ZXh0ID0gYWNjZXNzb3IoXCJ0ZXh0XCIpO1xuICAgIHRoaXMuX3RleHRBbmNob3IgPSBjb25zdGFudChcInN0YXJ0XCIpO1xuICAgIHRoaXMuX3ZlcnRpY2FsQWxpZ24gPSBjb25zdGFudChcInRvcFwiKTtcbiAgICB0aGlzLl93aWR0aCA9IGFjY2Vzc29yKFwid2lkdGhcIiwgMjAwKTtcbiAgICB0aGlzLl94ID0gYWNjZXNzb3IoXCJ4XCIsIDApO1xuICAgIHRoaXMuX3kgPSBhY2Nlc3NvcihcInlcIiwgMCk7XG5cbiAgfVxuXG4gIGlmICggQmFzZUNsYXNzICkgVGV4dEJveC5fX3Byb3RvX18gPSBCYXNlQ2xhc3M7XG4gIFRleHRCb3gucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQmFzZUNsYXNzICYmIEJhc2VDbGFzcy5wcm90b3R5cGUgKTtcbiAgVGV4dEJveC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZXh0Qm94O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFJlbmRlcnMgdGhlIHRleHQgYm94ZXMuIElmIGEgKmNhbGxiYWNrKiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgY2FsbGVkIG9uY2UgdGhlIHNoYXBlcyBhcmUgZG9uZSBkcmF3aW5nLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gWypjYWxsYmFjayogPSB1bmRlZmluZWRdXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlciAoY2FsbGJhY2spIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgaWYgKHRoaXMuX3NlbGVjdCA9PT0gdm9pZCAwKSB7IHRoaXMuc2VsZWN0KHNlbGVjdChcImJvZHlcIikuYXBwZW5kKFwic3ZnXCIpLnN0eWxlKFwid2lkdGhcIiwgKCh3aW5kb3cuaW5uZXJXaWR0aCkgKyBcInB4XCIpKS5zdHlsZShcImhlaWdodFwiLCAoKHdpbmRvdy5pbm5lckhlaWdodCkgKyBcInB4XCIpKS5ub2RlKCkpOyB9XG5cbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICB2YXIgYm94ZXMgPSB0aGlzLl9zZWxlY3Quc2VsZWN0QWxsKFwiLmQzcGx1cy10ZXh0Qm94XCIpLmRhdGEodGhpcy5fZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgZCwgaSkge1xuXG4gICAgICB2YXIgdCA9IHRoaXMkMS5fdGV4dChkLCBpKTtcbiAgICAgIGlmICh0ID09PSB2b2lkIDApIHsgcmV0dXJuIGFycjsgfVxuXG4gICAgICB2YXIgcmVzaXplID0gdGhpcyQxLl9mb250UmVzaXplKGQsIGkpO1xuICAgICAgdmFyIGxIUmF0aW8gPSB0aGlzJDEuX2xpbmVIZWlnaHQoZCwgaSkgLyB0aGlzJDEuX2ZvbnRTaXplKGQsIGkpO1xuXG4gICAgICB2YXIgZlMgPSByZXNpemUgPyB0aGlzJDEuX2ZvbnRNYXgoZCwgaSkgOiB0aGlzJDEuX2ZvbnRTaXplKGQsIGkpLFxuICAgICAgICAgIGxIID0gcmVzaXplID8gZlMgKiBsSFJhdGlvIDogdGhpcyQxLl9saW5lSGVpZ2h0KGQsIGkpLFxuICAgICAgICAgIGxpbmUgPSAxLFxuICAgICAgICAgIGxpbmVEYXRhID0gW10sXG4gICAgICAgICAgc2l6ZXMsXG4gICAgICAgICAgd3JhcFJlc3VsdHM7XG5cbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgXCJmb250LWZhbWlseVwiOiBmb250RXhpc3RzKHRoaXMkMS5fZm9udEZhbWlseShkLCBpKSksXG4gICAgICAgIFwiZm9udC1zaXplXCI6IGZTLFxuICAgICAgICBcImZvbnQtd2VpZ2h0XCI6IHRoaXMkMS5fZm9udFdlaWdodChkLCBpKSxcbiAgICAgICAgXCJsaW5lLWhlaWdodFwiOiBsSFxuICAgICAgfTtcblxuICAgICAgdmFyIHBhZGRpbmcgPSBwYXJzZVNpZGVzKHRoaXMkMS5fcGFkZGluZyhkLCBpKSk7XG5cbiAgICAgIHZhciBoID0gdGhpcyQxLl9oZWlnaHQoZCwgaSkgLSAocGFkZGluZy50b3AgKyBwYWRkaW5nLmJvdHRvbSksXG4gICAgICAgICAgICB3ID0gdGhpcyQxLl93aWR0aChkLCBpKSAtIChwYWRkaW5nLmxlZnQgKyBwYWRkaW5nLnJpZ2h0KTtcblxuICAgICAgdmFyIHdyYXBwZXIgPSB3cmFwKClcbiAgICAgICAgLmZvbnRGYW1pbHkoc3R5bGVbXCJmb250LWZhbWlseVwiXSlcbiAgICAgICAgLmZvbnRTaXplKGZTKVxuICAgICAgICAuZm9udFdlaWdodChzdHlsZVtcImZvbnQtd2VpZ2h0XCJdKVxuICAgICAgICAubGluZUhlaWdodChsSClcbiAgICAgICAgLm1heExpbmVzKHRoaXMkMS5fbWF4TGluZXMoZCwgaSkpXG4gICAgICAgIC5oZWlnaHQoaClcbiAgICAgICAgLm92ZXJmbG93KHRoaXMkMS5fb3ZlcmZsb3coZCwgaSkpXG4gICAgICAgIC53aWR0aCh3KTtcblxuICAgICAgdmFyIGZNYXggPSB0aGlzJDEuX2ZvbnRNYXgoZCwgaSksXG4gICAgICAgICAgICBmTWluID0gdGhpcyQxLl9mb250TWluKGQsIGkpLFxuICAgICAgICAgICAgdkEgPSB0aGlzJDEuX3ZlcnRpY2FsQWxpZ24oZCwgaSksXG4gICAgICAgICAgICB3b3JkcyA9IHRoaXMkMS5fc3BsaXQodCwgaSk7XG5cbiAgICAgIC8qKlxuICAgICAgICAgIEZpZ3VyZXMgb3V0IHRoZSBsaW5lRGF0YSB0byBiZSB1c2VkIGZvciB3cmFwcGluZy5cbiAgICAgICAgICBAcHJpdmF0ZVxuICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIGNoZWNrU2l6ZSgpIHtcbiAgICAgICAgdmFyIHRydW5jYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChsaW5lIDwgMSkgeyBsaW5lRGF0YSA9IFt0aGF0Ll9lbGxpcHNpcyhcIlwiLCBsaW5lKV07IH1cbiAgICAgICAgICBlbHNlIHsgbGluZURhdGFbbGluZSAtIDFdID0gdGhhdC5fZWxsaXBzaXMobGluZURhdGFbbGluZSAtIDFdLCBsaW5lKTsgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENvbnN0cmFpbnQgdGhlIGZvbnQgc2l6ZVxuICAgICAgICBmUyA9IG1heChbZlMsIGZNaW5dKTtcbiAgICAgICAgZlMgPSBtaW4oW2ZTLCBmTWF4XSk7XG5cbiAgICAgICAgaWYgKHJlc2l6ZSkge1xuICAgICAgICAgIGxIID0gZlMgKiBsSFJhdGlvO1xuICAgICAgICAgIHdyYXBwZXJcbiAgICAgICAgICAgIC5mb250U2l6ZShmUylcbiAgICAgICAgICAgIC5saW5lSGVpZ2h0KGxIKTtcbiAgICAgICAgICBzdHlsZVtcImZvbnQtc2l6ZVwiXSA9IGZTO1xuICAgICAgICAgIHN0eWxlW1wibGluZS1oZWlnaHRcIl0gPSBsSDtcbiAgICAgICAgfVxuXG4gICAgICAgIHdyYXBSZXN1bHRzID0gd3JhcHBlcih0KTtcbiAgICAgICAgbGluZURhdGEgPSB3cmFwUmVzdWx0cy5saW5lcy5maWx0ZXIoZnVuY3Rpb24gKGwpIHsgcmV0dXJuIGwgIT09IFwiXCI7IH0pO1xuICAgICAgICBsaW5lID0gbGluZURhdGEubGVuZ3RoO1xuXG4gICAgICAgIGlmICh3cmFwUmVzdWx0cy50cnVuY2F0ZWQpIHtcbiAgICAgICAgICBpZiAocmVzaXplKSB7XG4gICAgICAgICAgICBmUy0tO1xuICAgICAgICAgICAgaWYgKGZTIDwgZk1pbikge1xuICAgICAgICAgICAgICBmUyA9IGZNaW47XG4gICAgICAgICAgICAgIHRydW5jYXRlKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgeyBjaGVja1NpemUoKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHsgdHJ1bmNhdGUoKTsgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3ID4gZk1pbiAmJiAoaCA+IGxIIHx8IHJlc2l6ZSAmJiBoID4gZk1pbiAqIGxIUmF0aW8pKSB7XG5cbiAgICAgICAgaWYgKHJlc2l6ZSkge1xuXG4gICAgICAgICAgc2l6ZXMgPSBtZWFzdXJlKHdvcmRzLCBzdHlsZSk7XG5cbiAgICAgICAgICB2YXIgYXJlYU1vZCA9IDEuMTY1ICsgdyAvIGggKiAwLjEsXG4gICAgICAgICAgICAgICAgYm94QXJlYSA9IHcgKiBoLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoID0gbWF4KHNpemVzKSxcbiAgICAgICAgICAgICAgICB0ZXh0QXJlYSA9IHN1bShzaXplcywgZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQgKiBsSDsgfSkgKiBhcmVhTW9kO1xuXG4gICAgICAgICAgaWYgKG1heFdpZHRoID4gdyB8fCB0ZXh0QXJlYSA+IGJveEFyZWEpIHtcbiAgICAgICAgICAgIHZhciBhcmVhUmF0aW8gPSBNYXRoLnNxcnQoYm94QXJlYSAvIHRleHRBcmVhKSxcbiAgICAgICAgICAgICAgICAgIHdpZHRoUmF0aW8gPSB3IC8gbWF4V2lkdGg7XG4gICAgICAgICAgICB2YXIgc2l6ZVJhdGlvID0gbWluKFthcmVhUmF0aW8sIHdpZHRoUmF0aW9dKTtcbiAgICAgICAgICAgIGZTID0gTWF0aC5mbG9vcihmUyAqIHNpemVSYXRpbyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGhlaWdodE1heCA9IE1hdGguZmxvb3IoaCAqIDAuOCk7XG4gICAgICAgICAgaWYgKGZTID4gaGVpZ2h0TWF4KSB7IGZTID0gaGVpZ2h0TWF4OyB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGNoZWNrU2l6ZSgpO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChsaW5lRGF0YS5sZW5ndGgpIHtcblxuICAgICAgICB2YXIgdEggPSBsaW5lICogbEg7XG4gICAgICAgIHZhciByID0gdGhpcyQxLl9yb3RhdGUoZCwgaSk7XG4gICAgICAgIHZhciB5UCA9IHIgPT09IDAgPyB2QSA9PT0gXCJ0b3BcIiA/IDAgOiB2QSA9PT0gXCJtaWRkbGVcIiA/IGggLyAyIC0gdEggLyAyIDogaCAtIHRIIDogMDtcbiAgICAgICAgeVAgLT0gbEggKiAwLjE7XG5cbiAgICAgICAgYXJyLnB1c2goe1xuICAgICAgICAgIGFIOiB0aGlzJDEuX2FyaWFIaWRkZW4oZCwgaSksXG4gICAgICAgICAgZGF0YTogZCxcbiAgICAgICAgICBpOiBpLFxuICAgICAgICAgIGxpbmVzOiBsaW5lRGF0YSxcbiAgICAgICAgICBmQzogdGhpcyQxLl9mb250Q29sb3IoZCwgaSksXG4gICAgICAgICAgZkY6IHN0eWxlW1wiZm9udC1mYW1pbHlcIl0sXG4gICAgICAgICAgZk86IHRoaXMkMS5fZm9udE9wYWNpdHkoZCwgaSksXG4gICAgICAgICAgZlc6IHN0eWxlW1wiZm9udC13ZWlnaHRcIl0sXG4gICAgICAgICAgaWQ6IHRoaXMkMS5faWQoZCwgaSksXG4gICAgICAgICAgdEE6IHRoaXMkMS5fdGV4dEFuY2hvcihkLCBpKSxcbiAgICAgICAgICB2QTogdGhpcyQxLl92ZXJ0aWNhbEFsaWduKGQsIGkpLFxuICAgICAgICAgIHdpZHRoczogd3JhcFJlc3VsdHMud2lkdGhzLFxuICAgICAgICAgIGZTOiBmUywgbEg6IGxILCB3OiB3LCBoOiBoLCByOiByLFxuICAgICAgICAgIHg6IHRoaXMkMS5feChkLCBpKSArIHBhZGRpbmcubGVmdCxcbiAgICAgICAgICB5OiB0aGlzJDEuX3koZCwgaSkgKyB5UCArIHBhZGRpbmcudG9wXG4gICAgICAgIH0pO1xuXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhcnI7XG5cbiAgICB9LCBbXSksIGZ1bmN0aW9uIChkKSB7IHJldHVybiB0aGlzJDEuX2lkKGQuZGF0YSwgZC5pKTsgfSk7XG5cbiAgICB2YXIgdCA9IHRyYW5zaXRpb24oKS5kdXJhdGlvbih0aGlzLl9kdXJhdGlvbik7XG5cbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcblxuICAgICAgYm94ZXMuZXhpdCgpLnJlbW92ZSgpO1xuXG4gICAgfVxuICAgIGVsc2Uge1xuXG4gICAgICBib3hlcy5leGl0KCkudHJhbnNpdGlvbigpLmRlbGF5KHRoaXMuX2R1cmF0aW9uKS5yZW1vdmUoKTtcblxuICAgICAgYm94ZXMuZXhpdCgpLnNlbGVjdEFsbChcInRleHRcIikudHJhbnNpdGlvbih0KVxuICAgICAgICAuYXR0cihcIm9wYWNpdHlcIiwgMClcbiAgICAgICAgLnN0eWxlKFwib3BhY2l0eVwiLCAwKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJvdGF0ZSh0ZXh0KSB7XG4gICAgICB0ZXh0LmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24gKGQsIGkpIHtcbiAgICAgICAgdmFyIHJvdGF0ZUFuY2hvciA9IHRoYXQuX3JvdGF0ZUFuY2hvcihkLCBpKTtcbiAgICAgICAgcmV0dXJuIChcInRyYW5zbGF0ZShcIiArIChkLngpICsgXCIsIFwiICsgKGQueSkgKyBcIikgcm90YXRlKFwiICsgKGQucikgKyBcIiwgXCIgKyAocm90YXRlQW5jaG9yWzBdKSArIFwiLCBcIiArIChyb3RhdGVBbmNob3JbMV0pICsgXCIpXCIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZSA9IGJveGVzLmVudGVyKCkuYXBwZW5kKFwiZ1wiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwiZDNwbHVzLXRleHRCb3hcIilcbiAgICAgICAgLmF0dHIoXCJpZFwiLCBmdW5jdGlvbiAoZCkgeyByZXR1cm4gKFwiZDNwbHVzLXRleHRCb3gtXCIgKyAoc3RyaXAoZC5pZCkpKTsgfSlcbiAgICAgICAgLmNhbGwocm90YXRlKVxuICAgICAgLm1lcmdlKGJveGVzKTtcblxuICAgIHZhciBydGwgPSBkZXRlY3RSVEwoKTtcblxuICAgIHVwZGF0ZVxuICAgICAgLnN0eWxlKFwicG9pbnRlci1ldmVudHNcIiwgZnVuY3Rpb24gKGQpIHsgcmV0dXJuIHRoaXMkMS5fcG9pbnRlckV2ZW50cyhkLmRhdGEsIGQuaSk7IH0pXG4gICAgICAuZWFjaChmdW5jdGlvbihkKSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAgICBTdHlsZXMgdG8gYXBwbHkgdG8gZWFjaCA8dGV4dD4gZWxlbWVudC5cbiAgICAgICAgICAgIEBwcml2YXRlXG4gICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHRleHRTdHlsZSh0ZXh0KSB7XG5cbiAgICAgICAgICB0ZXh0XG4gICAgICAgICAgICAudGV4dChmdW5jdGlvbiAodCkgeyByZXR1cm4gdHJpbVJpZ2h0KHQpOyB9KVxuICAgICAgICAgICAgLmF0dHIoXCJhcmlhLWhpZGRlblwiLCBkLmFIKVxuICAgICAgICAgICAgLmF0dHIoXCJkaXJcIiwgcnRsID8gXCJydGxcIiA6IFwibHRyXCIpXG4gICAgICAgICAgICAuYXR0cihcImZpbGxcIiwgZC5mQylcbiAgICAgICAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgZC50QSlcbiAgICAgICAgICAgIC5hdHRyKFwiZm9udC1mYW1pbHlcIiwgZC5mRilcbiAgICAgICAgICAgIC5zdHlsZShcImZvbnQtZmFtaWx5XCIsIGQuZkYpXG4gICAgICAgICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCAoKGQuZlMpICsgXCJweFwiKSlcbiAgICAgICAgICAgIC5zdHlsZShcImZvbnQtc2l6ZVwiLCAoKGQuZlMpICsgXCJweFwiKSlcbiAgICAgICAgICAgIC5hdHRyKFwiZm9udC13ZWlnaHRcIiwgZC5mVylcbiAgICAgICAgICAgIC5zdHlsZShcImZvbnQtd2VpZ2h0XCIsIGQuZlcpXG4gICAgICAgICAgICAuYXR0cihcInhcIiwgKChkLnRBID09PSBcIm1pZGRsZVwiID8gZC53IC8gMiA6IHJ0bCA/IGQudEEgPT09IFwic3RhcnRcIiA/IGQudyA6IDAgOiBkLnRBID09PSBcImVuZFwiID8gZC53IDogMiAqIE1hdGguc2luKE1hdGguUEkgKiBkLnIgLyAxODApKSArIFwicHhcIikpXG4gICAgICAgICAgICAuYXR0cihcInlcIiwgZnVuY3Rpb24gKHQsIGkpIHsgcmV0dXJuIGQuciA9PT0gMCB8fCBkLnZBID09PSBcInRvcFwiID8gKCgoaSArIDEpICogZC5sSCAtIChkLmxIIC0gZC5mUykpICsgXCJweFwiKSA6IFxuICAgICAgICAgICAgICBkLnZBID09PSBcIm1pZGRsZVwiID8gXG4gICAgICAgICAgICAgICAgKCgoZC5oICsgZC5mUykgLyAyIC0gKGQubEggLSBkLmZTKSArIChpIC0gZC5saW5lcy5sZW5ndGggLyAyICsgMC41KSAqIGQubEgpICsgXCJweFwiKSA6IFxuICAgICAgICAgICAgICAgICgoZC5oIC0gMiAqIChkLmxIIC0gZC5mUykgLSAoZC5saW5lcy5sZW5ndGggLSAoaSArIDEpKSAqIGQubEggKyAyICogTWF0aC5jb3MoTWF0aC5QSSAqIGQuciAvIDE4MCkpICsgXCJweFwiKTsgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZXh0cyA9IHNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoXCJ0ZXh0XCIpLmRhdGEoZC5saW5lcyk7XG5cbiAgICAgICAgaWYgKHRoYXQuX2R1cmF0aW9uID09PSAwKSB7XG5cbiAgICAgICAgICB0ZXh0cy5jYWxsKHRleHRTdHlsZSk7XG5cbiAgICAgICAgICB0ZXh0cy5leGl0KCkucmVtb3ZlKCk7XG5cbiAgICAgICAgICB0ZXh0cy5lbnRlcigpLmFwcGVuZChcInRleHRcIilcbiAgICAgICAgICAgIC5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJhbHBoYWJldGljXCIpXG4gICAgICAgICAgICAuc3R5bGUoXCJiYXNlbGluZS1zaGlmdFwiLCBcIjAlXCIpXG4gICAgICAgICAgICAuYXR0cihcInVuaWNvZGUtYmlkaVwiLCBcImJpZGktb3ZlcnJpZGVcIilcbiAgICAgICAgICAgIC5jYWxsKHRleHRTdHlsZSlcbiAgICAgICAgICAgIC5hdHRyKFwib3BhY2l0eVwiLCBkLmZPKVxuICAgICAgICAgICAgLnN0eWxlKFwib3BhY2l0eVwiLCBkLmZPKTtcblxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgdGV4dHMudHJhbnNpdGlvbih0KS5jYWxsKHRleHRTdHlsZSk7XG5cbiAgICAgICAgICB0ZXh0cy5leGl0KCkudHJhbnNpdGlvbih0KVxuICAgICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIDApLnJlbW92ZSgpO1xuXG4gICAgICAgICAgdGV4dHMuZW50ZXIoKS5hcHBlbmQoXCJ0ZXh0XCIpXG4gICAgICAgICAgICAgIC5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJhbHBoYWJldGljXCIpXG4gICAgICAgICAgICAgIC5zdHlsZShcImJhc2VsaW5lLXNoaWZ0XCIsIFwiMCVcIilcbiAgICAgICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIDApXG4gICAgICAgICAgICAgIC5zdHlsZShcIm9wYWNpdHlcIiwgMClcbiAgICAgICAgICAgICAgLmNhbGwodGV4dFN0eWxlKVxuICAgICAgICAgICAgLm1lcmdlKHRleHRzKS50cmFuc2l0aW9uKHQpLmRlbGF5KHRoYXQuX2RlbGF5KVxuICAgICAgICAgICAgICAuY2FsbCh0ZXh0U3R5bGUpXG4gICAgICAgICAgICAgIC5hdHRyKFwib3BhY2l0eVwiLCBkLmZPKVxuICAgICAgICAgICAgICAuc3R5bGUoXCJvcGFjaXR5XCIsIGQuZk8pO1xuICAgICAgICB9XG5cbiAgICAgIH0pXG4gICAgICAudHJhbnNpdGlvbih0KS5jYWxsKHJvdGF0ZSk7XG5cbiAgICB2YXIgZXZlbnRzID0gT2JqZWN0LmtleXModGhpcy5fb24pLFxuICAgICAgICAgIG9uID0gZXZlbnRzLnJlZHVjZShmdW5jdGlvbiAob2JqLCBlKSB7XG4gICAgICAgICAgICBvYmpbZV0gPSBmdW5jdGlvbiAoZCwgaSkgeyByZXR1cm4gdGhpcyQxLl9vbltlXShkLmRhdGEsIGkpOyB9O1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICB9LCB7fSk7XG4gICAgZm9yICh2YXIgZSA9IDA7IGUgPCBldmVudHMubGVuZ3RoOyBlKyspIHsgdXBkYXRlLm9uKGV2ZW50c1tlXSwgb25bZXZlbnRzW2VdXSk7IH1cblxuICAgIGlmIChjYWxsYmFjaykgeyBzZXRUaW1lb3V0KGNhbGxiYWNrLCB0aGlzLl9kdXJhdGlvbiArIDEwMCk7IH1cblxuICAgIHJldHVybiB0aGlzO1xuXG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgSWYgKnZhbHVlKiBpcyBzcGVjaWZpZWQsIHNldHMgdGhlIGFyaWEtaGlkZGVuIGF0dHJpYnV0ZSB0byB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIG9yIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjbGFzcyBpbnN0YW5jZS5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5nfSAqdmFsdWUqXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmFyaWFIaWRkZW4gPSBmdW5jdGlvbiBhcmlhSGlkZGVuIChfKSB7XG4gICAgcmV0dXJuIF8gIT09IHVuZGVmaW5lZCBcbiAgICAgID8gKHRoaXMuX2FyaWFIaWRkZW4gPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSBcbiAgICAgIDogdGhpcy5fYXJpYUhpZGRlbjtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBTZXRzIHRoZSBkYXRhIGFycmF5IHRvIHRoZSBzcGVjaWZpZWQgYXJyYXkuIEEgdGV4dCBib3ggd2lsbCBiZSBkcmF3biBmb3IgZWFjaCBvYmplY3QgaW4gdGhlIGFycmF5LlxuICAgICAgQHBhcmFtIHtBcnJheX0gWypkYXRhKiA9IFtdXVxuICAgICAgQGNoYWluYWJsZVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS5kYXRhID0gZnVuY3Rpb24gZGF0YSAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX2RhdGEgPSBfLCB0aGlzKSA6IHRoaXMuX2RhdGE7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgYW5pbWF0aW9uIGRlbGF5IHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIG1pbGxpc2Vjb25kcy5cbiAgICAgIEBwYXJhbSB7TnVtYmVyfSBbKnZhbHVlKiA9IDBdXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmRlbGF5ID0gZnVuY3Rpb24gZGVsYXkgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9kZWxheSA9IF8sIHRoaXMpIDogdGhpcy5fZGVsYXk7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIG1pbGxpc2Vjb25kcy5cbiAgICAgIEBwYXJhbSB7TnVtYmVyfSBbKnZhbHVlKiA9IDBdXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmR1cmF0aW9uID0gZnVuY3Rpb24gZHVyYXRpb24gKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9kdXJhdGlvbiA9IF8sIHRoaXMpIDogdGhpcy5fZHVyYXRpb247XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHdoYXQgdG8gZG8gd2hlbiBhIGxpbmUgaXMgdHJ1bmNhdGVkLiBJdCBzaG91bGQgcmV0dXJuIHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBsaW5lLCBhbmQgaXMgcGFzc2VkIDIgYXJndW1lbnRzOiB0aGUgU3RyaW5nIG9mIHRleHQgZm9yIHRoZSBsaW5lIGluIHF1ZXN0aW9uLCBhbmQgdGhlIG51bWJlciBvZiB0aGUgbGluZS4gQnkgZGVmYXVsdCwgYW4gZWxsaXBzaXMgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiBhbnkgbGluZSBleGNlcHQgaWYgaXQgaXMgdGhlIGZpcnN0IHdvcmQgdGhhdCBjYW5ub3QgZml0IChpbiB0aGF0IGNhc2UsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCkuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gWyp2YWx1ZSpdXG4gICAgICBAY2hhaW5hYmxlXG4gICAgICBAZXhhbXBsZSA8Y2FwdGlvbj5kZWZhdWx0IGFjY2Vzc29yPC9jYXB0aW9uPlxuZnVuY3Rpb24odGV4dCwgbGluZSkge1xuICByZXR1cm4gbGluZSA/IHRleHQucmVwbGFjZSgvXFwufCwkL2csIFwiXCIpICsgXCIuLi5cIiA6IFwiXCI7XG59XG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmVsbGlwc2lzID0gZnVuY3Rpb24gZWxsaXBzaXMgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9lbGxpcHNpcyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fZWxsaXBzaXM7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgZm9udCBjb2xvciB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBzdHJpbmcsIHdoaWNoIGlzIGluZmVycmVkIGZyb20gdGhlIFtET00gc2VsZWN0aW9uXSgjdGV4dEJveC5zZWxlY3QpIGJ5IGRlZmF1bHQuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gWyp2YWx1ZSogPSBcImJsYWNrXCJdXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmZvbnRDb2xvciA9IGZ1bmN0aW9uIGZvbnRDb2xvciAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX2ZvbnRDb2xvciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fZm9udENvbG9yO1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIERlZmluZXMgdGhlIGZvbnQtZmFtaWx5IHRvIGJlIHVzZWQuIFRoZSB2YWx1ZSBwYXNzZWQgY2FuIGJlIGVpdGhlciBhICpTdHJpbmcqIG5hbWUgb2YgYSBmb250LCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZvbnQtZmFtaWx5IGZhbGxiYWNrcywgYW4gKkFycmF5KiBvZiBmYWxsYmFja3MsIG9yIGEgKkZ1bmN0aW9uKiB0aGF0IHJldHVybnMgZWl0aGVyIGEgKlN0cmluZyogb3IgYW4gKkFycmF5Ki4gSWYgc3VwcGx5aW5nIG11bHRpcGxlIGZhbGxiYWNrIGZvbnRzLCB0aGUgW2ZvbnRFeGlzdHNdKCNmb250RXhpc3RzKSBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBmaXJzdCBhdmFpbGFibGUgZm9udCBvbiB0aGUgY2xpZW50J3MgbWFjaGluZS5cbiAgICAgIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb258U3RyaW5nfSBbKnZhbHVlKiA9IFtcIlJvYm90b1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIFwic2Fucy1zZXJpZlwiXV1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuZm9udEZhbWlseSA9IGZ1bmN0aW9uIGZvbnRGYW1pbHkgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9mb250RmFtaWx5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9mb250RmFtaWx5O1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIG1heGltdW0gZm9udCBzaXplIHRvIHRoZSBzcGVjaWZpZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3Igc3RhdGljIG51bWJlciAod2hpY2ggY29ycmVzcG9uZHMgdG8gcGl4ZWwgdW5pdHMpLCB3aGljaCBpcyB1c2VkIHdoZW4gW2R5bmFtaWNhbGx5IHJlc2l6aW5nIGZvbnRzXSgjdGV4dEJveC5mb250UmVzaXplKS5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258TnVtYmVyfSBbKnZhbHVlKiA9IDUwXVxuICAgICAgQGNoYWluYWJsZVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS5mb250TWF4ID0gZnVuY3Rpb24gZm9udE1heCAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX2ZvbnRNYXggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSA6IHRoaXMuX2ZvbnRNYXg7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgbWluaW11bSBmb250IHNpemUgdG8gdGhlIHNwZWNpZmllZCBhY2Nlc3NvciBmdW5jdGlvbiBvciBzdGF0aWMgbnVtYmVyICh3aGljaCBjb3JyZXNwb25kcyB0byBwaXhlbCB1bml0cyksIHdoaWNoIGlzIHVzZWQgd2hlbiBbZHluYW1pY2FsbHkgcmVzaXppbmcgZm9udHNdKCN0ZXh0Qm94LmZvbnRSZXNpemUpLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqID0gOF1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuZm9udE1pbiA9IGZ1bmN0aW9uIGZvbnRNaW4gKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9mb250TWluID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9mb250TWluO1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIGZvbnQgb3BhY2l0eSB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqID0gMV1cbiAgICAgIEBjaGFpbmFibGVcbiAgICovXG4gIFRleHRCb3gucHJvdG90eXBlLmZvbnRPcGFjaXR5ID0gZnVuY3Rpb24gZm9udE9wYWNpdHkgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9mb250T3BhY2l0eSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fZm9udE9wYWNpdHk7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgVG9nZ2xlcyBmb250IHJlc2l6aW5nLCB3aGljaCBjYW4gZWl0aGVyIGJlIGRlZmluZWQgYXMgYSBzdGF0aWMgYm9vbGVhbiBmb3IgYWxsIGRhdGEgcG9pbnRzLCBvciBhbiBhY2Nlc3NvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBib29sZWFuLiBTZWUgW3RoaXMgZXhhbXBsZV0oaHR0cDovL2QzcGx1cy5vcmcvZXhhbXBsZXMvZDNwbHVzLXRleHQvcmVzaXppbmctdGV4dC8pIGZvciBhIHNpZGUtYnktc2lkZSBjb21wYXJpc29uLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxCb29sZWFufSBbKnZhbHVlKiA9IGZhbHNlXVxuICAgICAgQGNoYWluYWJsZVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS5mb250UmVzaXplID0gZnVuY3Rpb24gZm9udFJlc2l6ZSAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX2ZvbnRSZXNpemUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSA6IHRoaXMuX2ZvbnRSZXNpemU7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgZm9udCBzaXplIHRvIHRoZSBzcGVjaWZpZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3Igc3RhdGljIG51bWJlciAod2hpY2ggY29ycmVzcG9uZHMgdG8gcGl4ZWwgdW5pdHMpLCB3aGljaCBpcyBpbmZlcnJlZCBmcm9tIHRoZSBbRE9NIHNlbGVjdGlvbl0oI3RleHRCb3guc2VsZWN0KSBieSBkZWZhdWx0LlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqID0gMTBdXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmZvbnRTaXplID0gZnVuY3Rpb24gZm9udFNpemUgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9mb250U2l6ZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fZm9udFNpemU7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgZm9udCB3ZWlnaHQgdG8gdGhlIHNwZWNpZmllZCBhY2Nlc3NvciBmdW5jdGlvbiBvciBzdGF0aWMgbnVtYmVyLCB3aGljaCBpcyBpbmZlcnJlZCBmcm9tIHRoZSBbRE9NIHNlbGVjdGlvbl0oI3RleHRCb3guc2VsZWN0KSBieSBkZWZhdWx0LlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ8U3RyaW5nfSBbKnZhbHVlKiA9IDQwMF1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuZm9udFdlaWdodCA9IGZ1bmN0aW9uIGZvbnRXZWlnaHQgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9mb250V2VpZ2h0ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9mb250V2VpZ2h0O1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIGhlaWdodCBmb3IgZWFjaCBib3ggdG8gdGhlIHNwZWNpZmllZCBhY2Nlc3NvciBmdW5jdGlvbiBvciBzdGF0aWMgbnVtYmVyLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqXVxuICAgICAgQGNoYWluYWJsZVxuICAgICAgQGV4YW1wbGUgPGNhcHRpb24+ZGVmYXVsdCBhY2Nlc3NvcjwvY2FwdGlvbj5cbmZ1bmN0aW9uKGQpIHtcbiAgcmV0dXJuIGQuaGVpZ2h0IHx8IDIwMDtcbn1cbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24gaGVpZ2h0IChfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5faGVpZ2h0ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9oZWlnaHQ7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgRGVmaW5lcyB0aGUgdW5pcXVlIGlkIGZvciBlYWNoIGJveCB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBudW1iZXIuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gWyp2YWx1ZSpdXG4gICAgICBAY2hhaW5hYmxlXG4gICAgICBAZXhhbXBsZSA8Y2FwdGlvbj5kZWZhdWx0IGFjY2Vzc29yPC9jYXB0aW9uPlxuZnVuY3Rpb24oZCwgaSkge1xuICByZXR1cm4gZC5pZCB8fCBpICsgXCJcIjtcbn1cbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuaWQgPSBmdW5jdGlvbiBpZCAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX2lkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9pZDtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBTZXRzIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBudW1iZXIsIHdoaWNoIGlzIDEuMiB0aW1lcyB0aGUgW2ZvbnQgc2l6ZV0oI3RleHRCb3guZm9udFNpemUpIGJ5IGRlZmF1bHQuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gWyp2YWx1ZSpdXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLmxpbmVIZWlnaHQgPSBmdW5jdGlvbiBsaW5lSGVpZ2h0IChfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5fbGluZUhlaWdodCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fbGluZUhlaWdodDtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBSZXN0cmljdHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHdyYXAgb250bywgd2hpY2ggaXMgbnVsbCAodW5saW1pdGVkKSBieSBkZWZhdWx0LlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqXVxuICAgICAgQGNoYWluYWJsZVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS5tYXhMaW5lcyA9IGZ1bmN0aW9uIG1heExpbmVzIChfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5fbWF4TGluZXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSA6IHRoaXMuX21heExpbmVzO1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIHRleHQgb3ZlcmZsb3cgdG8gdGhlIHNwZWNpZmllZCBhY2Nlc3NvciBmdW5jdGlvbiBvciBzdGF0aWMgYm9vbGVhbi5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258Qm9vbGVhbn0gWyp2YWx1ZSogPSBmYWxzZV1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUub3ZlcmZsb3cgPSBmdW5jdGlvbiBvdmVyZmxvdyAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX292ZXJmbG93ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9vdmVyZmxvdztcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBTZXRzIHRoZSBwYWRkaW5nIHRvIHRoZSBzcGVjaWZpZWQgYWNjZXNzb3IgZnVuY3Rpb24sIENTUyBzaG9ydGhhbmQgc3RyaW5nLCBvciBzdGF0aWMgbnVtYmVyLCB3aGljaCBpcyAwIGJ5IGRlZmF1bHQuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcnxTdHJpbmd9IFsqdmFsdWUqXVxuICAgICAgQGNoYWluYWJsZVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS5wYWRkaW5nID0gZnVuY3Rpb24gcGFkZGluZyAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3BhZGRpbmcgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSA6IHRoaXMuX3BhZGRpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgcG9pbnRlci1ldmVudHMgdG8gdGhlIHNwZWNpZmllZCBhY2Nlc3NvciBmdW5jdGlvbiBvciBzdGF0aWMgc3RyaW5nLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxTdHJpbmd9IFsqdmFsdWUqID0gXCJhdXRvXCJdXG4gICAgICBAY2hhaW5hYmxlXG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLnBvaW50ZXJFdmVudHMgPSBmdW5jdGlvbiBwb2ludGVyRXZlbnRzIChfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5fcG9pbnRlckV2ZW50cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fcG9pbnRlckV2ZW50cztcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBTZXRzIHRoZSByb3RhdGUgcGVyY2VudGFnZSBmb3IgZWFjaCBib3ggdG8gdGhlIHNwZWNpZmllZCBhY2Nlc3NvciBmdW5jdGlvbiBvciBzdGF0aWMgc3RyaW5nLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqID0gMF1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUucm90YXRlID0gZnVuY3Rpb24gcm90YXRlIChfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5fcm90YXRlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl9yb3RhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgYW5jaG9yIHBvaW50IGFyb3VuZCB3aGljaCB0byByb3RhdGUgdGhlIHRleHQgYm94LlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJbXX1cbiAgICAgIEBjaGFpbmFibGVcbiAgICovXG4gIFRleHRCb3gucHJvdG90eXBlLnJvdGF0ZUFuY2hvciA9IGZ1bmN0aW9uIHJvdGF0ZUFuY2hvciAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3JvdGF0ZUFuY2hvciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5fcm90YXRlQW5jaG9yO1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIFNWRyBjb250YWluZXIgZWxlbWVudCB0byB0aGUgc3BlY2lmaWVkIGQzIHNlbGVjdG9yIG9yIERPTSBlbGVtZW50LiBJZiBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQsIGFuIFNWRyBlbGVtZW50IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHBhZ2UgZm9yIHVzZS5cbiAgICAgIEBwYXJhbSB7U3RyaW5nfEhUTUxFbGVtZW50fSBbKnNlbGVjdG9yKl1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24gc2VsZWN0JDEgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9zZWxlY3QgPSBzZWxlY3QoXyksIHRoaXMpIDogdGhpcy5fc2VsZWN0O1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIHdvcmQgc3BsaXQgYmVoYXZpb3IgdG8gdGhlIHNwZWNpZmllZCBmdW5jdGlvbiwgd2hpY2ggd2hlbiBwYXNzZWQgYSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIHRoYXQgc3RyaW5nIHNwbGl0IGludG8gYW4gYXJyYXkgb2Ygd29yZHMuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBbKnZhbHVlKl1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3NwbGl0ID0gXywgdGhpcykgOiB0aGlzLl9zcGxpdDtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBTZXRzIHRoZSB0ZXh0IGZvciBlYWNoIGJveCB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBzdHJpbmcuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gWyp2YWx1ZSpdXG4gICAgICBAY2hhaW5hYmxlXG4gICAgICBAZXhhbXBsZSA8Y2FwdGlvbj5kZWZhdWx0IGFjY2Vzc29yPC9jYXB0aW9uPlxuZnVuY3Rpb24oZCkge1xuICByZXR1cm4gZC50ZXh0O1xufVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS50ZXh0ID0gZnVuY3Rpb24gdGV4dCAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3RleHQgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSA6IHRoaXMuX3RleHQ7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgaG9yaXpvbnRhbCB0ZXh0IGFuY2hvciB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBzdHJpbmcsIHdob3NlIHZhbHVlcyBhcmUgYW5hbGFnb3VzIHRvIHRoZSBTVkcgW3RleHQtYW5jaG9yXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlL3RleHQtYW5jaG9yKSBwcm9wZXJ0eS5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5nfSBbKnZhbHVlKiA9IFwic3RhcnRcIl1cbiAgICAgIEBjaGFpbmFibGVcbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUudGV4dEFuY2hvciA9IGZ1bmN0aW9uIHRleHRBbmNob3IgKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl90ZXh0QW5jaG9yID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl90ZXh0QW5jaG9yO1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIHZlcnRpY2FsIGFsaWdubWVudCB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBzdHJpbmcuIEFjY2VwdHMgYFwidG9wXCJgLCBgXCJtaWRkbGVcImAsIGFuZCBgXCJib3R0b21cImAuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gWyp2YWx1ZSogPSBcInRvcFwiXVxuICAgICAgQGNoYWluYWJsZVxuICAqL1xuICBUZXh0Qm94LnByb3RvdHlwZS52ZXJ0aWNhbEFsaWduID0gZnVuY3Rpb24gdmVydGljYWxBbGlnbiAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3ZlcnRpY2FsQWxpZ24gPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCB0aGlzKSA6IHRoaXMuX3ZlcnRpY2FsQWxpZ247XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgVGV4dEJveFxuICAgICAgQGRlc2MgU2V0cyB0aGUgd2lkdGggZm9yIGVhY2ggYm94IHRvIHRoZSBzcGVjaWZpZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3Igc3RhdGljIG51bWJlci5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258TnVtYmVyfSBbKnZhbHVlKl1cbiAgICAgIEBjaGFpbmFibGVcbiAgICAgIEBleGFtcGxlIDxjYXB0aW9uPmRlZmF1bHQgYWNjZXNzb3I8L2NhcHRpb24+XG5mdW5jdGlvbihkKSB7XG4gIHJldHVybiBkLndpZHRoIHx8IDIwMDtcbn1cbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUud2lkdGggPSBmdW5jdGlvbiB3aWR0aCAoXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3dpZHRoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl93aWR0aDtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiBUZXh0Qm94XG4gICAgICBAZGVzYyBTZXRzIHRoZSB4IHBvc2l0aW9uIGZvciBlYWNoIGJveCB0byB0aGUgc3BlY2lmaWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHN0YXRpYyBudW1iZXIuIFRoZSBudW1iZXIgZ2l2ZW4gc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgdGV4dEJveC5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258TnVtYmVyfSBbKnZhbHVlKl1cbiAgICAgIEBjaGFpbmFibGVcbiAgICAgIEBleGFtcGxlIDxjYXB0aW9uPmRlZmF1bHQgYWNjZXNzb3I8L2NhcHRpb24+XG5mdW5jdGlvbihkKSB7XG4gIHJldHVybiBkLnggfHwgMDtcbn1cbiAgKi9cbiAgVGV4dEJveC5wcm90b3R5cGUueCA9IGZ1bmN0aW9uIHggKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl94ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgdGhpcykgOiB0aGlzLl94O1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIFRleHRCb3hcbiAgICAgIEBkZXNjIFNldHMgdGhlIHkgcG9zaXRpb24gZm9yIGVhY2ggYm94IHRvIHRoZSBzcGVjaWZpZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3Igc3RhdGljIG51bWJlci4gVGhlIG51bWJlciBnaXZlbiBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgdG9wIHNpZGUgb2YgdGhlIHRleHRCb3guXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gWyp2YWx1ZSpdXG4gICAgICBAY2hhaW5hYmxlXG4gICAgICBAZXhhbXBsZSA8Y2FwdGlvbj5kZWZhdWx0IGFjY2Vzc29yPC9jYXB0aW9uPlxuZnVuY3Rpb24oZCkge1xuICByZXR1cm4gZC55IHx8IDA7XG59XG4gICovXG4gIFRleHRCb3gucHJvdG90eXBlLnkgPSBmdW5jdGlvbiB5IChfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5feSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHRoaXMpIDogdGhpcy5feTtcbiAgfTtcblxuICByZXR1cm4gVGV4dEJveDtcbn0oQmFzZUNsYXNzKSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRCb3g7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHRCb3guanMubWFwIiwiLy8gc2NyYXBlZCBmcm9tIGh0dHA6Ly93d3cuZmlsZWZvcm1hdC5pbmZvL2luZm8vdW5pY29kZS9jYXRlZ29yeS9NYy9saXN0Lmh0bVxuLy8gYW5kIGh0dHA6Ly93d3cuZmlsZWZvcm1hdC5pbmZvL2luZm8vdW5pY29kZS9jYXRlZ29yeS9Nbi9saXN0Lmh0bVxuLy8gSlNPTi5zdHJpbmdpZnkoW10uc2xpY2UuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFibGUtbGlzdFwiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRyXCIpKS5maWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKS5sZW5ndGggJiYgZC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIilbMF0uaW5uZXJIVE1MLmxlbmd0aCA9PT0gNjsgfSkubWFwKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIilbMF0uaW5uZXJIVE1MLnJlcGxhY2UoXCJVXCIsIFwidVwiKS5yZXBsYWNlKFwiK1wiLCBcIlwiKTsgfSkuc29ydCgpKTtcbi8vIFRoZSBmb2xsb3dpbmcgdW5pY29kZSBjaGFyYWN0ZXJzIGNvbWJpbmUgdG8gZm9ybSBuZXcgY2hhcmFjdGVycyBhbmQgc2hvdWxkIG5ldmVyIGJlIHNwbGl0IGZyb20gc3Vycm91bmRpbmcgY2hhcmFjdGVycy5cbnZhciBhID0gW1widTA5MDNcIiwgXCJ1MDkzQlwiLCBcInUwOTNFXCIsIFwidTA5M0ZcIiwgXCJ1MDk0MFwiLCBcInUwOTQ5XCIsIFwidTA5NEFcIiwgXCJ1MDk0QlwiLCBcInUwOTRDXCIsIFwidTA5NEVcIiwgXCJ1MDk0RlwiLCBcInUwOTgyXCIsIFwidTA5ODNcIiwgXCJ1MDlCRVwiLCBcInUwOUJGXCIsIFwidTA5QzBcIiwgXCJ1MDlDN1wiLCBcInUwOUM4XCIsIFwidTA5Q0JcIiwgXCJ1MDlDQ1wiLCBcInUwOUQ3XCIsIFwidTBBMDNcIiwgXCJ1MEEzRVwiLCBcInUwQTNGXCIsIFwidTBBNDBcIiwgXCJ1MEE4M1wiLCBcInUwQUJFXCIsIFwidTBBQkZcIiwgXCJ1MEFDMFwiLCBcInUwQUM5XCIsIFwidTBBQ0JcIiwgXCJ1MEFDQ1wiLCBcInUwQjAyXCIsIFwidTBCMDNcIiwgXCJ1MEIzRVwiLCBcInUwQjQwXCIsIFwidTBCNDdcIiwgXCJ1MEI0OFwiLCBcInUwQjRCXCIsIFwidTBCNENcIiwgXCJ1MEI1N1wiLCBcInUwQkJFXCIsIFwidTBCQkZcIiwgXCJ1MEJDMVwiLCBcInUwQkMyXCIsIFwidTBCQzZcIiwgXCJ1MEJDN1wiLCBcInUwQkM4XCIsIFwidTBCQ0FcIiwgXCJ1MEJDQlwiLCBcInUwQkNDXCIsIFwidTBCRDdcIiwgXCJ1MEMwMVwiLCBcInUwQzAyXCIsIFwidTBDMDNcIiwgXCJ1MEM0MVwiLCBcInUwQzQyXCIsIFwidTBDNDNcIiwgXCJ1MEM0NFwiLCBcInUwQzgyXCIsIFwidTBDODNcIiwgXCJ1MENCRVwiLCBcInUwQ0MwXCIsIFwidTBDQzFcIiwgXCJ1MENDMlwiLCBcInUwQ0MzXCIsIFwidTBDQzRcIiwgXCJ1MENDN1wiLCBcInUwQ0M4XCIsIFwidTBDQ0FcIiwgXCJ1MENDQlwiLCBcInUwQ0Q1XCIsIFwidTBDRDZcIiwgXCJ1MEQwMlwiLCBcInUwRDAzXCIsIFwidTBEM0VcIiwgXCJ1MEQzRlwiLCBcInUwRDQwXCIsIFwidTBENDZcIiwgXCJ1MEQ0N1wiLCBcInUwRDQ4XCIsIFwidTBENEFcIiwgXCJ1MEQ0QlwiLCBcInUwRDRDXCIsIFwidTBENTdcIiwgXCJ1MEQ4MlwiLCBcInUwRDgzXCIsIFwidTBEQ0ZcIiwgXCJ1MEREMFwiLCBcInUwREQxXCIsIFwidTBERDhcIiwgXCJ1MEREOVwiLCBcInUwRERBXCIsIFwidTBEREJcIiwgXCJ1MEREQ1wiLCBcInUwREREXCIsIFwidTBEREVcIiwgXCJ1MERERlwiLCBcInUwREYyXCIsIFwidTBERjNcIiwgXCJ1MEYzRVwiLCBcInUwRjNGXCIsIFwidTBGN0ZcIiwgXCJ1MTAyQlwiLCBcInUxMDJDXCIsIFwidTEwMzFcIiwgXCJ1MTAzOFwiLCBcInUxMDNCXCIsIFwidTEwM0NcIiwgXCJ1MTA1NlwiLCBcInUxMDU3XCIsIFwidTEwNjJcIiwgXCJ1MTA2M1wiLCBcInUxMDY0XCIsIFwidTEwNjdcIiwgXCJ1MTA2OFwiLCBcInUxMDY5XCIsIFwidTEwNkFcIiwgXCJ1MTA2QlwiLCBcInUxMDZDXCIsIFwidTEwNkRcIiwgXCJ1MTA4M1wiLCBcInUxMDg0XCIsIFwidTEwODdcIiwgXCJ1MTA4OFwiLCBcInUxMDg5XCIsIFwidTEwOEFcIiwgXCJ1MTA4QlwiLCBcInUxMDhDXCIsIFwidTEwOEZcIiwgXCJ1MTA5QVwiLCBcInUxMDlCXCIsIFwidTEwOUNcIiwgXCJ1MTdCNlwiLCBcInUxN0JFXCIsIFwidTE3QkZcIiwgXCJ1MTdDMFwiLCBcInUxN0MxXCIsIFwidTE3QzJcIiwgXCJ1MTdDM1wiLCBcInUxN0M0XCIsIFwidTE3QzVcIiwgXCJ1MTdDN1wiLCBcInUxN0M4XCIsIFwidTE5MjNcIiwgXCJ1MTkyNFwiLCBcInUxOTI1XCIsIFwidTE5MjZcIiwgXCJ1MTkyOVwiLCBcInUxOTJBXCIsIFwidTE5MkJcIiwgXCJ1MTkzMFwiLCBcInUxOTMxXCIsIFwidTE5MzNcIiwgXCJ1MTkzNFwiLCBcInUxOTM1XCIsIFwidTE5MzZcIiwgXCJ1MTkzN1wiLCBcInUxOTM4XCIsIFwidTFBMTlcIiwgXCJ1MUExQVwiLCBcInUxQTU1XCIsIFwidTFBNTdcIiwgXCJ1MUE2MVwiLCBcInUxQTYzXCIsIFwidTFBNjRcIiwgXCJ1MUE2RFwiLCBcInUxQTZFXCIsIFwidTFBNkZcIiwgXCJ1MUE3MFwiLCBcInUxQTcxXCIsIFwidTFBNzJcIiwgXCJ1MUIwNFwiLCBcInUxQjM1XCIsIFwidTFCM0JcIiwgXCJ1MUIzRFwiLCBcInUxQjNFXCIsIFwidTFCM0ZcIiwgXCJ1MUI0MFwiLCBcInUxQjQxXCIsIFwidTFCNDNcIiwgXCJ1MUI0NFwiLCBcInUxQjgyXCIsIFwidTFCQTFcIiwgXCJ1MUJBNlwiLCBcInUxQkE3XCIsIFwidTFCQUFcIiwgXCJ1MUJFN1wiLCBcInUxQkVBXCIsIFwidTFCRUJcIiwgXCJ1MUJFQ1wiLCBcInUxQkVFXCIsIFwidTFCRjJcIiwgXCJ1MUJGM1wiLCBcInUxQzI0XCIsIFwidTFDMjVcIiwgXCJ1MUMyNlwiLCBcInUxQzI3XCIsIFwidTFDMjhcIiwgXCJ1MUMyOVwiLCBcInUxQzJBXCIsIFwidTFDMkJcIiwgXCJ1MUMzNFwiLCBcInUxQzM1XCIsIFwidTFDRTFcIiwgXCJ1MUNGMlwiLCBcInUxQ0YzXCIsIFwidTMwMkVcIiwgXCJ1MzAyRlwiLCBcInVBODIzXCIsIFwidUE4MjRcIiwgXCJ1QTgyN1wiLCBcInVBODgwXCIsIFwidUE4ODFcIiwgXCJ1QThCNFwiLCBcInVBOEI1XCIsIFwidUE4QjZcIiwgXCJ1QThCN1wiLCBcInVBOEI4XCIsIFwidUE4QjlcIiwgXCJ1QThCQVwiLCBcInVBOEJCXCIsIFwidUE4QkNcIiwgXCJ1QThCRFwiLCBcInVBOEJFXCIsIFwidUE4QkZcIiwgXCJ1QThDMFwiLCBcInVBOEMxXCIsIFwidUE4QzJcIiwgXCJ1QThDM1wiLCBcInVBOTUyXCIsIFwidUE5NTNcIiwgXCJ1QTk4M1wiLCBcInVBOUI0XCIsIFwidUE5QjVcIiwgXCJ1QTlCQVwiLCBcInVBOUJCXCIsIFwidUE5QkRcIiwgXCJ1QTlCRVwiLCBcInVBOUJGXCIsIFwidUE5QzBcIiwgXCJ1QUEyRlwiLCBcInVBQTMwXCIsIFwidUFBMzNcIiwgXCJ1QUEzNFwiLCBcInVBQTREXCIsIFwidUFBN0JcIiwgXCJ1QUE3RFwiLCBcInVBQUVCXCIsIFwidUFBRUVcIiwgXCJ1QUFFRlwiLCBcInVBQUY1XCIsIFwidUFCRTNcIiwgXCJ1QUJFNFwiLCBcInVBQkU2XCIsIFwidUFCRTdcIiwgXCJ1QUJFOVwiLCBcInVBQkVBXCIsIFwidUFCRUNcIl07XG52YXIgYiA9IFtcInUwMzAwXCIsIFwidTAzMDFcIiwgXCJ1MDMwMlwiLCBcInUwMzAzXCIsIFwidTAzMDRcIiwgXCJ1MDMwNVwiLCBcInUwMzA2XCIsIFwidTAzMDdcIiwgXCJ1MDMwOFwiLCBcInUwMzA5XCIsIFwidTAzMEFcIiwgXCJ1MDMwQlwiLCBcInUwMzBDXCIsIFwidTAzMERcIiwgXCJ1MDMwRVwiLCBcInUwMzBGXCIsIFwidTAzMTBcIiwgXCJ1MDMxMVwiLCBcInUwMzEyXCIsIFwidTAzMTNcIiwgXCJ1MDMxNFwiLCBcInUwMzE1XCIsIFwidTAzMTZcIiwgXCJ1MDMxN1wiLCBcInUwMzE4XCIsIFwidTAzMTlcIiwgXCJ1MDMxQVwiLCBcInUwMzFCXCIsIFwidTAzMUNcIiwgXCJ1MDMxRFwiLCBcInUwMzFFXCIsIFwidTAzMUZcIiwgXCJ1MDMyMFwiLCBcInUwMzIxXCIsIFwidTAzMjJcIiwgXCJ1MDMyM1wiLCBcInUwMzI0XCIsIFwidTAzMjVcIiwgXCJ1MDMyNlwiLCBcInUwMzI3XCIsIFwidTAzMjhcIiwgXCJ1MDMyOVwiLCBcInUwMzJBXCIsIFwidTAzMkJcIiwgXCJ1MDMyQ1wiLCBcInUwMzJEXCIsIFwidTAzMkVcIiwgXCJ1MDMyRlwiLCBcInUwMzMwXCIsIFwidTAzMzFcIiwgXCJ1MDMzMlwiLCBcInUwMzMzXCIsIFwidTAzMzRcIiwgXCJ1MDMzNVwiLCBcInUwMzM2XCIsIFwidTAzMzdcIiwgXCJ1MDMzOFwiLCBcInUwMzM5XCIsIFwidTAzM0FcIiwgXCJ1MDMzQlwiLCBcInUwMzNDXCIsIFwidTAzM0RcIiwgXCJ1MDMzRVwiLCBcInUwMzNGXCIsIFwidTAzNDBcIiwgXCJ1MDM0MVwiLCBcInUwMzQyXCIsIFwidTAzNDNcIiwgXCJ1MDM0NFwiLCBcInUwMzQ1XCIsIFwidTAzNDZcIiwgXCJ1MDM0N1wiLCBcInUwMzQ4XCIsIFwidTAzNDlcIiwgXCJ1MDM0QVwiLCBcInUwMzRCXCIsIFwidTAzNENcIiwgXCJ1MDM0RFwiLCBcInUwMzRFXCIsIFwidTAzNEZcIiwgXCJ1MDM1MFwiLCBcInUwMzUxXCIsIFwidTAzNTJcIiwgXCJ1MDM1M1wiLCBcInUwMzU0XCIsIFwidTAzNTVcIiwgXCJ1MDM1NlwiLCBcInUwMzU3XCIsIFwidTAzNThcIiwgXCJ1MDM1OVwiLCBcInUwMzVBXCIsIFwidTAzNUJcIiwgXCJ1MDM1Q1wiLCBcInUwMzVEXCIsIFwidTAzNUVcIiwgXCJ1MDM1RlwiLCBcInUwMzYwXCIsIFwidTAzNjFcIiwgXCJ1MDM2MlwiLCBcInUwMzYzXCIsIFwidTAzNjRcIiwgXCJ1MDM2NVwiLCBcInUwMzY2XCIsIFwidTAzNjdcIiwgXCJ1MDM2OFwiLCBcInUwMzY5XCIsIFwidTAzNkFcIiwgXCJ1MDM2QlwiLCBcInUwMzZDXCIsIFwidTAzNkRcIiwgXCJ1MDM2RVwiLCBcInUwMzZGXCIsIFwidTA0ODNcIiwgXCJ1MDQ4NFwiLCBcInUwNDg1XCIsIFwidTA0ODZcIiwgXCJ1MDQ4N1wiLCBcInUwNTkxXCIsIFwidTA1OTJcIiwgXCJ1MDU5M1wiLCBcInUwNTk0XCIsIFwidTA1OTVcIiwgXCJ1MDU5NlwiLCBcInUwNTk3XCIsIFwidTA1OThcIiwgXCJ1MDU5OVwiLCBcInUwNTlBXCIsIFwidTA1OUJcIiwgXCJ1MDU5Q1wiLCBcInUwNTlEXCIsIFwidTA1OUVcIiwgXCJ1MDU5RlwiLCBcInUwNUEwXCIsIFwidTA1QTFcIiwgXCJ1MDVBMlwiLCBcInUwNUEzXCIsIFwidTA1QTRcIiwgXCJ1MDVBNVwiLCBcInUwNUE2XCIsIFwidTA1QTdcIiwgXCJ1MDVBOFwiLCBcInUwNUE5XCIsIFwidTA1QUFcIiwgXCJ1MDVBQlwiLCBcInUwNUFDXCIsIFwidTA1QURcIiwgXCJ1MDVBRVwiLCBcInUwNUFGXCIsIFwidTA1QjBcIiwgXCJ1MDVCMVwiLCBcInUwNUIyXCIsIFwidTA1QjNcIiwgXCJ1MDVCNFwiLCBcInUwNUI1XCIsIFwidTA1QjZcIiwgXCJ1MDVCN1wiLCBcInUwNUI4XCIsIFwidTA1QjlcIiwgXCJ1MDVCQVwiLCBcInUwNUJCXCIsIFwidTA1QkNcIiwgXCJ1MDVCRFwiLCBcInUwNUJGXCIsIFwidTA1QzFcIiwgXCJ1MDVDMlwiLCBcInUwNUM0XCIsIFwidTA1QzVcIiwgXCJ1MDVDN1wiLCBcInUwNjEwXCIsIFwidTA2MTFcIiwgXCJ1MDYxMlwiLCBcInUwNjEzXCIsIFwidTA2MTRcIiwgXCJ1MDYxNVwiLCBcInUwNjE2XCIsIFwidTA2MTdcIiwgXCJ1MDYxOFwiLCBcInUwNjE5XCIsIFwidTA2MUFcIiwgXCJ1MDY0QlwiLCBcInUwNjRDXCIsIFwidTA2NERcIiwgXCJ1MDY0RVwiLCBcInUwNjRGXCIsIFwidTA2NTBcIiwgXCJ1MDY1MVwiLCBcInUwNjUyXCIsIFwidTA2NTNcIiwgXCJ1MDY1NFwiLCBcInUwNjU1XCIsIFwidTA2NTZcIiwgXCJ1MDY1N1wiLCBcInUwNjU4XCIsIFwidTA2NTlcIiwgXCJ1MDY1QVwiLCBcInUwNjVCXCIsIFwidTA2NUNcIiwgXCJ1MDY1RFwiLCBcInUwNjVFXCIsIFwidTA2NUZcIiwgXCJ1MDY3MFwiLCBcInUwNkQ2XCIsIFwidTA2RDdcIiwgXCJ1MDZEOFwiLCBcInUwNkQ5XCIsIFwidTA2REFcIiwgXCJ1MDZEQlwiLCBcInUwNkRDXCIsIFwidTA2REZcIiwgXCJ1MDZFMFwiLCBcInUwNkUxXCIsIFwidTA2RTJcIiwgXCJ1MDZFM1wiLCBcInUwNkU0XCIsIFwidTA2RTdcIiwgXCJ1MDZFOFwiLCBcInUwNkVBXCIsIFwidTA2RUJcIiwgXCJ1MDZFQ1wiLCBcInUwNkVEXCIsIFwidTA3MTFcIiwgXCJ1MDczMFwiLCBcInUwNzMxXCIsIFwidTA3MzJcIiwgXCJ1MDczM1wiLCBcInUwNzM0XCIsIFwidTA3MzVcIiwgXCJ1MDczNlwiLCBcInUwNzM3XCIsIFwidTA3MzhcIiwgXCJ1MDczOVwiLCBcInUwNzNBXCIsIFwidTA3M0JcIiwgXCJ1MDczQ1wiLCBcInUwNzNEXCIsIFwidTA3M0VcIiwgXCJ1MDczRlwiLCBcInUwNzQwXCIsIFwidTA3NDFcIiwgXCJ1MDc0MlwiLCBcInUwNzQzXCIsIFwidTA3NDRcIiwgXCJ1MDc0NVwiLCBcInUwNzQ2XCIsIFwidTA3NDdcIiwgXCJ1MDc0OFwiLCBcInUwNzQ5XCIsIFwidTA3NEFcIiwgXCJ1MDdBNlwiLCBcInUwN0E3XCIsIFwidTA3QThcIiwgXCJ1MDdBOVwiLCBcInUwN0FBXCIsIFwidTA3QUJcIiwgXCJ1MDdBQ1wiLCBcInUwN0FEXCIsIFwidTA3QUVcIiwgXCJ1MDdBRlwiLCBcInUwN0IwXCIsIFwidTA3RUJcIiwgXCJ1MDdFQ1wiLCBcInUwN0VEXCIsIFwidTA3RUVcIiwgXCJ1MDdFRlwiLCBcInUwN0YwXCIsIFwidTA3RjFcIiwgXCJ1MDdGMlwiLCBcInUwN0YzXCIsIFwidTA4MTZcIiwgXCJ1MDgxN1wiLCBcInUwODE4XCIsIFwidTA4MTlcIiwgXCJ1MDgxQlwiLCBcInUwODFDXCIsIFwidTA4MURcIiwgXCJ1MDgxRVwiLCBcInUwODFGXCIsIFwidTA4MjBcIiwgXCJ1MDgyMVwiLCBcInUwODIyXCIsIFwidTA4MjNcIiwgXCJ1MDgyNVwiLCBcInUwODI2XCIsIFwidTA4MjdcIiwgXCJ1MDgyOVwiLCBcInUwODJBXCIsIFwidTA4MkJcIiwgXCJ1MDgyQ1wiLCBcInUwODJEXCIsIFwidTA4NTlcIiwgXCJ1MDg1QVwiLCBcInUwODVCXCIsIFwidTA4RTNcIiwgXCJ1MDhFNFwiLCBcInUwOEU1XCIsIFwidTA4RTZcIiwgXCJ1MDhFN1wiLCBcInUwOEU4XCIsIFwidTA4RTlcIiwgXCJ1MDhFQVwiLCBcInUwOEVCXCIsIFwidTA4RUNcIiwgXCJ1MDhFRFwiLCBcInUwOEVFXCIsIFwidTA4RUZcIiwgXCJ1MDhGMFwiLCBcInUwOEYxXCIsIFwidTA4RjJcIiwgXCJ1MDhGM1wiLCBcInUwOEY0XCIsIFwidTA4RjVcIiwgXCJ1MDhGNlwiLCBcInUwOEY3XCIsIFwidTA4RjhcIiwgXCJ1MDhGOVwiLCBcInUwOEZBXCIsIFwidTA4RkJcIiwgXCJ1MDhGQ1wiLCBcInUwOEZEXCIsIFwidTA4RkVcIiwgXCJ1MDhGRlwiLCBcInUwOTAwXCIsIFwidTA5MDFcIiwgXCJ1MDkwMlwiLCBcInUwOTNBXCIsIFwidTA5M0NcIiwgXCJ1MDk0MVwiLCBcInUwOTQyXCIsIFwidTA5NDNcIiwgXCJ1MDk0NFwiLCBcInUwOTQ1XCIsIFwidTA5NDZcIiwgXCJ1MDk0N1wiLCBcInUwOTQ4XCIsIFwidTA5NERcIiwgXCJ1MDk1MVwiLCBcInUwOTUyXCIsIFwidTA5NTNcIiwgXCJ1MDk1NFwiLCBcInUwOTU1XCIsIFwidTA5NTZcIiwgXCJ1MDk1N1wiLCBcInUwOTYyXCIsIFwidTA5NjNcIiwgXCJ1MDk4MVwiLCBcInUwOUJDXCIsIFwidTA5QzFcIiwgXCJ1MDlDMlwiLCBcInUwOUMzXCIsIFwidTA5QzRcIiwgXCJ1MDlDRFwiLCBcInUwOUUyXCIsIFwidTA5RTNcIiwgXCJ1MEEwMVwiLCBcInUwQTAyXCIsIFwidTBBM0NcIiwgXCJ1MEE0MVwiLCBcInUwQTQyXCIsIFwidTBBNDdcIiwgXCJ1MEE0OFwiLCBcInUwQTRCXCIsIFwidTBBNENcIiwgXCJ1MEE0RFwiLCBcInUwQTUxXCIsIFwidTBBNzBcIiwgXCJ1MEE3MVwiLCBcInUwQTc1XCIsIFwidTBBODFcIiwgXCJ1MEE4MlwiLCBcInUwQUJDXCIsIFwidTBBQzFcIiwgXCJ1MEFDMlwiLCBcInUwQUMzXCIsIFwidTBBQzRcIiwgXCJ1MEFDNVwiLCBcInUwQUM3XCIsIFwidTBBQzhcIiwgXCJ1MEFDRFwiLCBcInUwQUUyXCIsIFwidTBBRTNcIiwgXCJ1MEIwMVwiLCBcInUwQjNDXCIsIFwidTBCM0ZcIiwgXCJ1MEI0MVwiLCBcInUwQjQyXCIsIFwidTBCNDNcIiwgXCJ1MEI0NFwiLCBcInUwQjREXCIsIFwidTBCNTZcIiwgXCJ1MEI2MlwiLCBcInUwQjYzXCIsIFwidTBCODJcIiwgXCJ1MEJDMFwiLCBcInUwQkNEXCIsIFwidTBDMDBcIiwgXCJ1MEMzRVwiLCBcInUwQzNGXCIsIFwidTBDNDBcIiwgXCJ1MEM0NlwiLCBcInUwQzQ3XCIsIFwidTBDNDhcIiwgXCJ1MEM0QVwiLCBcInUwQzRCXCIsIFwidTBDNENcIiwgXCJ1MEM0RFwiLCBcInUwQzU1XCIsIFwidTBDNTZcIiwgXCJ1MEM2MlwiLCBcInUwQzYzXCIsIFwidTBDODFcIiwgXCJ1MENCQ1wiLCBcInUwQ0JGXCIsIFwidTBDQzZcIiwgXCJ1MENDQ1wiLCBcInUwQ0NEXCIsIFwidTBDRTJcIiwgXCJ1MENFM1wiLCBcInUwRDAxXCIsIFwidTBENDFcIiwgXCJ1MEQ0MlwiLCBcInUwRDQzXCIsIFwidTBENDRcIiwgXCJ1MEQ0RFwiLCBcInUwRDYyXCIsIFwidTBENjNcIiwgXCJ1MERDQVwiLCBcInUwREQyXCIsIFwidTBERDNcIiwgXCJ1MERENFwiLCBcInUwREQ2XCIsIFwidTBFMzFcIiwgXCJ1MEUzNFwiLCBcInUwRTM1XCIsIFwidTBFMzZcIiwgXCJ1MEUzN1wiLCBcInUwRTM4XCIsIFwidTBFMzlcIiwgXCJ1MEUzQVwiLCBcInUwRTQ3XCIsIFwidTBFNDhcIiwgXCJ1MEU0OVwiLCBcInUwRTRBXCIsIFwidTBFNEJcIiwgXCJ1MEU0Q1wiLCBcInUwRTREXCIsIFwidTBFNEVcIiwgXCJ1MEVCMVwiLCBcInUwRUI0XCIsIFwidTBFQjVcIiwgXCJ1MEVCNlwiLCBcInUwRUI3XCIsIFwidTBFQjhcIiwgXCJ1MEVCOVwiLCBcInUwRUJCXCIsIFwidTBFQkNcIiwgXCJ1MEVDOFwiLCBcInUwRUM5XCIsIFwidTBFQ0FcIiwgXCJ1MEVDQlwiLCBcInUwRUNDXCIsIFwidTBFQ0RcIiwgXCJ1MEYxOFwiLCBcInUwRjE5XCIsIFwidTBGMzVcIiwgXCJ1MEYzN1wiLCBcInUwRjM5XCIsIFwidTBGNzFcIiwgXCJ1MEY3MlwiLCBcInUwRjczXCIsIFwidTBGNzRcIiwgXCJ1MEY3NVwiLCBcInUwRjc2XCIsIFwidTBGNzdcIiwgXCJ1MEY3OFwiLCBcInUwRjc5XCIsIFwidTBGN0FcIiwgXCJ1MEY3QlwiLCBcInUwRjdDXCIsIFwidTBGN0RcIiwgXCJ1MEY3RVwiLCBcInUwRjgwXCIsIFwidTBGODFcIiwgXCJ1MEY4MlwiLCBcInUwRjgzXCIsIFwidTBGODRcIiwgXCJ1MEY4NlwiLCBcInUwRjg3XCIsIFwidTBGOERcIiwgXCJ1MEY4RVwiLCBcInUwRjhGXCIsIFwidTBGOTBcIiwgXCJ1MEY5MVwiLCBcInUwRjkyXCIsIFwidTBGOTNcIiwgXCJ1MEY5NFwiLCBcInUwRjk1XCIsIFwidTBGOTZcIiwgXCJ1MEY5N1wiLCBcInUwRjk5XCIsIFwidTBGOUFcIiwgXCJ1MEY5QlwiLCBcInUwRjlDXCIsIFwidTBGOURcIiwgXCJ1MEY5RVwiLCBcInUwRjlGXCIsIFwidTBGQTBcIiwgXCJ1MEZBMVwiLCBcInUwRkEyXCIsIFwidTBGQTNcIiwgXCJ1MEZBNFwiLCBcInUwRkE1XCIsIFwidTBGQTZcIiwgXCJ1MEZBN1wiLCBcInUwRkE4XCIsIFwidTBGQTlcIiwgXCJ1MEZBQVwiLCBcInUwRkFCXCIsIFwidTBGQUNcIiwgXCJ1MEZBRFwiLCBcInUwRkFFXCIsIFwidTBGQUZcIiwgXCJ1MEZCMFwiLCBcInUwRkIxXCIsIFwidTBGQjJcIiwgXCJ1MEZCM1wiLCBcInUwRkI0XCIsIFwidTBGQjVcIiwgXCJ1MEZCNlwiLCBcInUwRkI3XCIsIFwidTBGQjhcIiwgXCJ1MEZCOVwiLCBcInUwRkJBXCIsIFwidTBGQkJcIiwgXCJ1MEZCQ1wiLCBcInUwRkM2XCIsIFwidTEwMkRcIiwgXCJ1MTAyRVwiLCBcInUxMDJGXCIsIFwidTEwMzBcIiwgXCJ1MTAzMlwiLCBcInUxMDMzXCIsIFwidTEwMzRcIiwgXCJ1MTAzNVwiLCBcInUxMDM2XCIsIFwidTEwMzdcIiwgXCJ1MTAzOVwiLCBcInUxMDNBXCIsIFwidTEwM0RcIiwgXCJ1MTAzRVwiLCBcInUxMDU4XCIsIFwidTEwNTlcIiwgXCJ1MTA1RVwiLCBcInUxMDVGXCIsIFwidTEwNjBcIiwgXCJ1MTA3MVwiLCBcInUxMDcyXCIsIFwidTEwNzNcIiwgXCJ1MTA3NFwiLCBcInUxMDgyXCIsIFwidTEwODVcIiwgXCJ1MTA4NlwiLCBcInUxMDhEXCIsIFwidTEwOURcIiwgXCJ1MTM1RFwiLCBcInUxMzVFXCIsIFwidTEzNUZcIiwgXCJ1MTcxMlwiLCBcInUxNzEzXCIsIFwidTE3MTRcIiwgXCJ1MTczMlwiLCBcInUxNzMzXCIsIFwidTE3MzRcIiwgXCJ1MTc1MlwiLCBcInUxNzUzXCIsIFwidTE3NzJcIiwgXCJ1MTc3M1wiLCBcInUxN0I0XCIsIFwidTE3QjVcIiwgXCJ1MTdCN1wiLCBcInUxN0I4XCIsIFwidTE3QjlcIiwgXCJ1MTdCQVwiLCBcInUxN0JCXCIsIFwidTE3QkNcIiwgXCJ1MTdCRFwiLCBcInUxN0M2XCIsIFwidTE3QzlcIiwgXCJ1MTdDQVwiLCBcInUxN0NCXCIsIFwidTE3Q0NcIiwgXCJ1MTdDRFwiLCBcInUxN0NFXCIsIFwidTE3Q0ZcIiwgXCJ1MTdEMFwiLCBcInUxN0QxXCIsIFwidTE3RDJcIiwgXCJ1MTdEM1wiLCBcInUxN0REXCIsIFwidTE4MEJcIiwgXCJ1MTgwQ1wiLCBcInUxODBEXCIsIFwidTE4QTlcIiwgXCJ1MTkyMFwiLCBcInUxOTIxXCIsIFwidTE5MjJcIiwgXCJ1MTkyN1wiLCBcInUxOTI4XCIsIFwidTE5MzJcIiwgXCJ1MTkzOVwiLCBcInUxOTNBXCIsIFwidTE5M0JcIiwgXCJ1MUExN1wiLCBcInUxQTE4XCIsIFwidTFBMUJcIiwgXCJ1MUE1NlwiLCBcInUxQTU4XCIsIFwidTFBNTlcIiwgXCJ1MUE1QVwiLCBcInUxQTVCXCIsIFwidTFBNUNcIiwgXCJ1MUE1RFwiLCBcInUxQTVFXCIsIFwidTFBNjBcIiwgXCJ1MUE2MlwiLCBcInUxQTY1XCIsIFwidTFBNjZcIiwgXCJ1MUE2N1wiLCBcInUxQTY4XCIsIFwidTFBNjlcIiwgXCJ1MUE2QVwiLCBcInUxQTZCXCIsIFwidTFBNkNcIiwgXCJ1MUE3M1wiLCBcInUxQTc0XCIsIFwidTFBNzVcIiwgXCJ1MUE3NlwiLCBcInUxQTc3XCIsIFwidTFBNzhcIiwgXCJ1MUE3OVwiLCBcInUxQTdBXCIsIFwidTFBN0JcIiwgXCJ1MUE3Q1wiLCBcInUxQTdGXCIsIFwidTFBQjBcIiwgXCJ1MUFCMVwiLCBcInUxQUIyXCIsIFwidTFBQjNcIiwgXCJ1MUFCNFwiLCBcInUxQUI1XCIsIFwidTFBQjZcIiwgXCJ1MUFCN1wiLCBcInUxQUI4XCIsIFwidTFBQjlcIiwgXCJ1MUFCQVwiLCBcInUxQUJCXCIsIFwidTFBQkNcIiwgXCJ1MUFCRFwiLCBcInUxQjAwXCIsIFwidTFCMDFcIiwgXCJ1MUIwMlwiLCBcInUxQjAzXCIsIFwidTFCMzRcIiwgXCJ1MUIzNlwiLCBcInUxQjM3XCIsIFwidTFCMzhcIiwgXCJ1MUIzOVwiLCBcInUxQjNBXCIsIFwidTFCM0NcIiwgXCJ1MUI0MlwiLCBcInUxQjZCXCIsIFwidTFCNkNcIiwgXCJ1MUI2RFwiLCBcInUxQjZFXCIsIFwidTFCNkZcIiwgXCJ1MUI3MFwiLCBcInUxQjcxXCIsIFwidTFCNzJcIiwgXCJ1MUI3M1wiLCBcInUxQjgwXCIsIFwidTFCODFcIiwgXCJ1MUJBMlwiLCBcInUxQkEzXCIsIFwidTFCQTRcIiwgXCJ1MUJBNVwiLCBcInUxQkE4XCIsIFwidTFCQTlcIiwgXCJ1MUJBQlwiLCBcInUxQkFDXCIsIFwidTFCQURcIiwgXCJ1MUJFNlwiLCBcInUxQkU4XCIsIFwidTFCRTlcIiwgXCJ1MUJFRFwiLCBcInUxQkVGXCIsIFwidTFCRjBcIiwgXCJ1MUJGMVwiLCBcInUxQzJDXCIsIFwidTFDMkRcIiwgXCJ1MUMyRVwiLCBcInUxQzJGXCIsIFwidTFDMzBcIiwgXCJ1MUMzMVwiLCBcInUxQzMyXCIsIFwidTFDMzNcIiwgXCJ1MUMzNlwiLCBcInUxQzM3XCIsIFwidTFDRDBcIiwgXCJ1MUNEMVwiLCBcInUxQ0QyXCIsIFwidTFDRDRcIiwgXCJ1MUNENVwiLCBcInUxQ0Q2XCIsIFwidTFDRDdcIiwgXCJ1MUNEOFwiLCBcInUxQ0Q5XCIsIFwidTFDREFcIiwgXCJ1MUNEQlwiLCBcInUxQ0RDXCIsIFwidTFDRERcIiwgXCJ1MUNERVwiLCBcInUxQ0RGXCIsIFwidTFDRTBcIiwgXCJ1MUNFMlwiLCBcInUxQ0UzXCIsIFwidTFDRTRcIiwgXCJ1MUNFNVwiLCBcInUxQ0U2XCIsIFwidTFDRTdcIiwgXCJ1MUNFOFwiLCBcInUxQ0VEXCIsIFwidTFDRjRcIiwgXCJ1MUNGOFwiLCBcInUxQ0Y5XCIsIFwidTFEQzBcIiwgXCJ1MURDMVwiLCBcInUxREMyXCIsIFwidTFEQzNcIiwgXCJ1MURDNFwiLCBcInUxREM1XCIsIFwidTFEQzZcIiwgXCJ1MURDN1wiLCBcInUxREM4XCIsIFwidTFEQzlcIiwgXCJ1MURDQVwiLCBcInUxRENCXCIsIFwidTFEQ0NcIiwgXCJ1MURDRFwiLCBcInUxRENFXCIsIFwidTFEQ0ZcIiwgXCJ1MUREMFwiLCBcInUxREQxXCIsIFwidTFERDJcIiwgXCJ1MUREM1wiLCBcInUxREQ0XCIsIFwidTFERDVcIiwgXCJ1MURENlwiLCBcInUxREQ3XCIsIFwidTFERDhcIiwgXCJ1MUREOVwiLCBcInUxRERBXCIsIFwidTFEREJcIiwgXCJ1MUREQ1wiLCBcInUxREREXCIsIFwidTFEREVcIiwgXCJ1MURERlwiLCBcInUxREUwXCIsIFwidTFERTFcIiwgXCJ1MURFMlwiLCBcInUxREUzXCIsIFwidTFERTRcIiwgXCJ1MURFNVwiLCBcInUxREU2XCIsIFwidTFERTdcIiwgXCJ1MURFOFwiLCBcInUxREU5XCIsIFwidTFERUFcIiwgXCJ1MURFQlwiLCBcInUxREVDXCIsIFwidTFERURcIiwgXCJ1MURFRVwiLCBcInUxREVGXCIsIFwidTFERjBcIiwgXCJ1MURGMVwiLCBcInUxREYyXCIsIFwidTFERjNcIiwgXCJ1MURGNFwiLCBcInUxREY1XCIsIFwidTFERkNcIiwgXCJ1MURGRFwiLCBcInUxREZFXCIsIFwidTFERkZcIiwgXCJ1MjBEMFwiLCBcInUyMEQxXCIsIFwidTIwRDJcIiwgXCJ1MjBEM1wiLCBcInUyMEQ0XCIsIFwidTIwRDVcIiwgXCJ1MjBENlwiLCBcInUyMEQ3XCIsIFwidTIwRDhcIiwgXCJ1MjBEOVwiLCBcInUyMERBXCIsIFwidTIwREJcIiwgXCJ1MjBEQ1wiLCBcInUyMEUxXCIsIFwidTIwRTVcIiwgXCJ1MjBFNlwiLCBcInUyMEU3XCIsIFwidTIwRThcIiwgXCJ1MjBFOVwiLCBcInUyMEVBXCIsIFwidTIwRUJcIiwgXCJ1MjBFQ1wiLCBcInUyMEVEXCIsIFwidTIwRUVcIiwgXCJ1MjBFRlwiLCBcInUyMEYwXCIsIFwidTJDRUZcIiwgXCJ1MkNGMFwiLCBcInUyQ0YxXCIsIFwidTJEN0ZcIiwgXCJ1MkRFMFwiLCBcInUyREUxXCIsIFwidTJERTJcIiwgXCJ1MkRFM1wiLCBcInUyREU0XCIsIFwidTJERTVcIiwgXCJ1MkRFNlwiLCBcInUyREU3XCIsIFwidTJERThcIiwgXCJ1MkRFOVwiLCBcInUyREVBXCIsIFwidTJERUJcIiwgXCJ1MkRFQ1wiLCBcInUyREVEXCIsIFwidTJERUVcIiwgXCJ1MkRFRlwiLCBcInUyREYwXCIsIFwidTJERjFcIiwgXCJ1MkRGMlwiLCBcInUyREYzXCIsIFwidTJERjRcIiwgXCJ1MkRGNVwiLCBcInUyREY2XCIsIFwidTJERjdcIiwgXCJ1MkRGOFwiLCBcInUyREY5XCIsIFwidTJERkFcIiwgXCJ1MkRGQlwiLCBcInUyREZDXCIsIFwidTJERkRcIiwgXCJ1MkRGRVwiLCBcInUyREZGXCIsIFwidTMwMkFcIiwgXCJ1MzAyQlwiLCBcInUzMDJDXCIsIFwidTMwMkRcIiwgXCJ1MzA5OVwiLCBcInUzMDlBXCIsIFwidUE2NkZcIiwgXCJ1QTY3NFwiLCBcInVBNjc1XCIsIFwidUE2NzZcIiwgXCJ1QTY3N1wiLCBcInVBNjc4XCIsIFwidUE2NzlcIiwgXCJ1QTY3QVwiLCBcInVBNjdCXCIsIFwidUE2N0NcIiwgXCJ1QTY3RFwiLCBcInVBNjlFXCIsIFwidUE2OUZcIiwgXCJ1QTZGMFwiLCBcInVBNkYxXCIsIFwidUE4MDJcIiwgXCJ1QTgwNlwiLCBcInVBODBCXCIsIFwidUE4MjVcIiwgXCJ1QTgyNlwiLCBcInVBOEM0XCIsIFwidUE4RTBcIiwgXCJ1QThFMVwiLCBcInVBOEUyXCIsIFwidUE4RTNcIiwgXCJ1QThFNFwiLCBcInVBOEU1XCIsIFwidUE4RTZcIiwgXCJ1QThFN1wiLCBcInVBOEU4XCIsIFwidUE4RTlcIiwgXCJ1QThFQVwiLCBcInVBOEVCXCIsIFwidUE4RUNcIiwgXCJ1QThFRFwiLCBcInVBOEVFXCIsIFwidUE4RUZcIiwgXCJ1QThGMFwiLCBcInVBOEYxXCIsIFwidUE5MjZcIiwgXCJ1QTkyN1wiLCBcInVBOTI4XCIsIFwidUE5MjlcIiwgXCJ1QTkyQVwiLCBcInVBOTJCXCIsIFwidUE5MkNcIiwgXCJ1QTkyRFwiLCBcInVBOTQ3XCIsIFwidUE5NDhcIiwgXCJ1QTk0OVwiLCBcInVBOTRBXCIsIFwidUE5NEJcIiwgXCJ1QTk0Q1wiLCBcInVBOTREXCIsIFwidUE5NEVcIiwgXCJ1QTk0RlwiLCBcInVBOTUwXCIsIFwidUE5NTFcIiwgXCJ1QTk4MFwiLCBcInVBOTgxXCIsIFwidUE5ODJcIiwgXCJ1QTlCM1wiLCBcInVBOUI2XCIsIFwidUE5QjdcIiwgXCJ1QTlCOFwiLCBcInVBOUI5XCIsIFwidUE5QkNcIiwgXCJ1QTlFNVwiLCBcInVBQTI5XCIsIFwidUFBMkFcIiwgXCJ1QUEyQlwiLCBcInVBQTJDXCIsIFwidUFBMkRcIiwgXCJ1QUEyRVwiLCBcInVBQTMxXCIsIFwidUFBMzJcIiwgXCJ1QUEzNVwiLCBcInVBQTM2XCIsIFwidUFBNDNcIiwgXCJ1QUE0Q1wiLCBcInVBQTdDXCIsIFwidUFBQjBcIiwgXCJ1QUFCMlwiLCBcInVBQUIzXCIsIFwidUFBQjRcIiwgXCJ1QUFCN1wiLCBcInVBQUI4XCIsIFwidUFBQkVcIiwgXCJ1QUFCRlwiLCBcInVBQUMxXCIsIFwidUFBRUNcIiwgXCJ1QUFFRFwiLCBcInVBQUY2XCIsIFwidUFCRTVcIiwgXCJ1QUJFOFwiLCBcInVBQkVEXCIsIFwidUZCMUVcIiwgXCJ1RkUwMFwiLCBcInVGRTAxXCIsIFwidUZFMDJcIiwgXCJ1RkUwM1wiLCBcInVGRTA0XCIsIFwidUZFMDVcIiwgXCJ1RkUwNlwiLCBcInVGRTA3XCIsIFwidUZFMDhcIiwgXCJ1RkUwOVwiLCBcInVGRTBBXCIsIFwidUZFMEJcIiwgXCJ1RkUwQ1wiLCBcInVGRTBEXCIsIFwidUZFMEVcIiwgXCJ1RkUwRlwiLCBcInVGRTIwXCIsIFwidUZFMjFcIiwgXCJ1RkUyMlwiLCBcInVGRTIzXCIsIFwidUZFMjRcIiwgXCJ1RkUyNVwiLCBcInVGRTI2XCIsIFwidUZFMjdcIiwgXCJ1RkUyOFwiLCBcInVGRTI5XCIsIFwidUZFMkFcIiwgXCJ1RkUyQlwiLCBcInVGRTJDXCIsIFwidUZFMkRcIiwgXCJ1RkUyRVwiLCBcInVGRTJGXCJdO1xuZXhwb3J0IGRlZmF1bHQgYS5jb25jYXQoYik7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbWJpbmluZ01hcmtzLmpzLm1hcCIsImltcG9ydCB7ZGVmYXVsdCBhcyB0ZXh0V2lkdGh9IGZyb20gXCIuL3RleHRXaWR0aFwiO1xuaW1wb3J0IHt0cmltfSBmcm9tIFwiLi90cmltXCI7XG5cbnZhciBhbHBoYSA9IFwiYWJjZGVmZ2hpQUJDREVGR0hJXyFAIyQlXiYqKClfKzEyMzQ1Njc4OTBcIixcbiAgICAgIGNoZWNrZWQgPSB7fSxcbiAgICAgIGhlaWdodCA9IDMyO1xuXG52YXIgZGVqYXZ1LCBtYWNvcywgbW9ub3NwYWNlLCBwcm9wb3J0aW9uYWw7XG5cbi8qKlxuICAgIEBmdW5jdGlvbiBmb250RXhpc3RzXG4gICAgQGRlc2MgR2l2ZW4gZWl0aGVyIGEgc2luZ2xlIGZvbnQtZmFtaWx5IG9yIGEgbGlzdCBvZiBmb250cywgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgZm9udCB0aGF0IGNhbiBiZSByZW5kZXJlZCwgb3IgYGZhbHNlYCBpZiBub25lIGFyZSBpbnN0YWxsZWQgb24gdGhlIHVzZXIncyBtYWNoaW5lLlxuICAgIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBmb250IENhbiBiZSBlaXRoZXIgYSB2YWxpZCBDU1MgZm9udC1mYW1pbHkgc3RyaW5nIChzaW5nbGUgb3IgY29tbWEtc2VwYXJhdGVkIG5hbWVzKSBvciBhbiBBcnJheSBvZiBzdHJpbmcgbmFtZXMuXG4qL1xudmFyIGZvbnRFeGlzdHMgPSBmdW5jdGlvbiAoZm9udCkge1xuXG4gIGlmICghZGVqYXZ1KSB7XG4gICAgZGVqYXZ1ID0gdGV4dFdpZHRoKGFscGhhLCB7XCJmb250LWZhbWlseVwiOiBcIkRlamFWdVNhbnNcIiwgXCJmb250LXNpemVcIjogaGVpZ2h0fSk7XG4gICAgbWFjb3MgPSB0ZXh0V2lkdGgoYWxwaGEsIHtcImZvbnQtZmFtaWx5XCI6IFwiLWFwcGxlLXN5c3RlbVwiLCBcImZvbnQtc2l6ZVwiOiBoZWlnaHR9KTtcbiAgICBtb25vc3BhY2UgPSB0ZXh0V2lkdGgoYWxwaGEsIHtcImZvbnQtZmFtaWx5XCI6IFwibW9ub3NwYWNlXCIsIFwiZm9udC1zaXplXCI6IGhlaWdodH0pO1xuICAgIHByb3BvcnRpb25hbCA9IHRleHRXaWR0aChhbHBoYSwge1wiZm9udC1mYW1pbHlcIjogXCJzYW5zLXNlcmlmXCIsIFwiZm9udC1zaXplXCI6IGhlaWdodH0pO1xuICB9XG5cbiAgaWYgKCEoZm9udCBpbnN0YW5jZW9mIEFycmF5KSkgeyBmb250ID0gZm9udC5zcGxpdChcIixcIik7IH1cbiAgZm9udCA9IGZvbnQubWFwKGZ1bmN0aW9uIChmKSB7IHJldHVybiB0cmltKGYpOyB9KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGZvbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZmFtID0gZm9udFtpXTtcbiAgICBpZiAoY2hlY2tlZFtmYW1dIHx8IFtcIi1hcHBsZS1zeXN0ZW1cIiwgXCJtb25vc3BhY2VcIiwgXCJzYW5zLXNlcmlmXCIsIFwiRGVqYVZ1U2Fuc1wiXS5pbmNsdWRlcyhmYW0pKSB7IHJldHVybiBmYW07IH1cbiAgICBlbHNlIGlmIChjaGVja2VkW2ZhbV0gPT09IGZhbHNlKSB7IGNvbnRpbnVlOyB9XG4gICAgdmFyIHdpZHRoID0gdGV4dFdpZHRoKGFscGhhLCB7XCJmb250LWZhbWlseVwiOiBmYW0sIFwiZm9udC1zaXplXCI6IGhlaWdodH0pO1xuICAgIGNoZWNrZWRbZmFtXSA9IHdpZHRoICE9PSBtb25vc3BhY2U7XG4gICAgaWYgKGNoZWNrZWRbZmFtXSkgeyBjaGVja2VkW2ZhbV0gPSB3aWR0aCAhPT0gcHJvcG9ydGlvbmFsOyB9XG4gICAgaWYgKG1hY29zICYmIGNoZWNrZWRbZmFtXSkgeyBjaGVja2VkW2ZhbV0gPSB3aWR0aCAhPT0gbWFjb3M7IH1cbiAgICBpZiAoZGVqYXZ1ICYmIGNoZWNrZWRbZmFtXSkgeyBjaGVja2VkW2ZhbV0gPSB3aWR0aCAhPT0gZGVqYXZ1OyB9XG4gICAgaWYgKGNoZWNrZWRbZmFtXSkgeyByZXR1cm4gZmFtOyB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG5cbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgZm9udEV4aXN0cztcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9udEV4aXN0cy5qcy5tYXAiLCJpbXBvcnQge3NlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG4vKipcbiAgICBAZnVuY3Rpb24gcnRsXG4gICAgQGRlc2MgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIEhUTUwgb3IgYm9keSBlbGVtZW50IGhhcyBlaXRoZXIgdGhlIFwiZGlyXCIgSFRNTCBhdHRyaWJ1dGUgb3IgdGhlIFwiZGlyZWN0aW9uXCIgQ1NTIHByb3BlcnR5IHNldCB0byBcInJ0bFwiLlxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGVjdChcImh0bWxcIikuYXR0cihcImRpclwiKSA9PT0gXCJydGxcIiB8fFxuICBzZWxlY3QoXCJib2R5XCIpLmF0dHIoXCJkaXJcIikgPT09IFwicnRsXCIgfHxcbiAgc2VsZWN0KFwiaHRtbFwiKS5zdHlsZShcImRpcmVjdGlvblwiKSA9PT0gXCJydGxcIiB8fFxuICBzZWxlY3QoXCJib2R5XCIpLnN0eWxlKFwiZGlyZWN0aW9uXCIpID09PSBcInJ0bFwiOyB9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ydGwuanMubWFwIiwiLyoqXG4gICAgQGZ1bmN0aW9uIHN0cmluZ2lmeVxuICAgIEBkZXNjIENvZXJjZXMgdmFsdWUgaW50byBhIFN0cmluZy5cbiAgICBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHZvaWQgMCkgeyB2YWx1ZSA9IFwidW5kZWZpbmVkXCI7IH1cbiAgZWxzZSBpZiAoISh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7IHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpOyB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyaW5naWZ5LmpzLm1hcCIsIi8vIGdyZWF0IHVuaWNvZGUgbGlzdDogaHR0cDovL2FzZWN1cml0eXNpdGUuY29tL2NvZGluZy9hc2MyXG5cbnZhciBkaWFjcml0aWNzID0gW1xuICBbL1tcXDMwMC1cXDMwNV0vZywgXCJBXCJdLCBbL1tcXDM0MC1cXDM0NV0vZywgXCJhXCJdLFxuICBbL1tcXDMwNl0vZywgXCJBRVwiXSwgWy9bXFwzNDZdL2csIFwiYWVcIl0sXG4gIFsvW1xcMzM3XS9nLCBcIkJcIl0sXG4gIFsvW1xcMzA3XS9nLCBcIkNcIl0sIFsvW1xcMzQ3XS9nLCBcImNcIl0sXG4gIFsvW1xcMzIwXFwzMzZcXDM3Nl0vZywgXCJEXCJdLCBbL1tcXDM2MF0vZywgXCJkXCJdLFxuICBbL1tcXDMxMC1cXDMxM10vZywgXCJFXCJdLCBbL1tcXDM1MC1cXDM1M10vZywgXCJlXCJdLFxuICBbL1tcXDMxNC1cXDMxN10vZywgXCJJXCJdLCBbL1tcXDM1NC1cXDM1N10vZywgXCJpXCJdLFxuICBbL1tcXDMyMV0vZywgXCJOXCJdLCBbL1tcXDM2MV0vZywgXCJuXCJdLFxuICBbL1tcXDMyMi1cXDMyNlxcMzMwXS9nLCBcIk9cIl0sIFsvW1xcMzYyLVxcMzY2XFwzNzBdL2csIFwib1wiXSxcbiAgWy9bXFwzMzEtXFwzMzRdL2csIFwiVVwiXSwgWy9bXFwzNzEtXFwzNzRdL2csIFwidVwiXSxcbiAgWy9bXFwzMjddL2csIFwieFwiXSxcbiAgWy9bXFwzMzVdL2csIFwiWVwiXSwgWy9bXFwzNzVcXDM3N10vZywgXCJ5XCJdXG5dO1xuXG4vKipcbiAgICBAZnVuY3Rpb24gc3RyaXBcbiAgICBAZGVzYyBSZW1vdmVzIGFsbCBub24gQVNDSUkgY2hhcmFjdGVycyBmcm9tIGEgc3RyaW5nLlxuICAgIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG5cbiAgcmV0dXJuIChcIlwiICsgdmFsdWUpLnJlcGxhY2UoL1teQS1aYS16MC05XFwtX10vZywgZnVuY3Rpb24gKGNoYXIpIHtcblxuICAgIGlmIChjaGFyID09PSBcIiBcIikgeyByZXR1cm4gXCItXCI7IH1cblxuICAgIHZhciByZXQgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRpYWNyaXRpY3MubGVuZ3RoOyBkKyspIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGRpYWNyaXRpY3NbZF1bMF0pLnRlc3QoY2hhcikpIHtcbiAgICAgICAgcmV0ID0gZGlhY3JpdGljc1tkXVsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldCB8fCBcIlwiO1xuXG4gIH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHJpcC5qcy5tYXAiLCJpbXBvcnQge2RlZmF1bHQgYXMgc3RyaW5naWZ5fSBmcm9tIFwiLi9zdHJpbmdpZnlcIjtcbmltcG9ydCB7ZGVmYXVsdCBhcyBjb21iaW5pbmdNYXJrc30gZnJvbSBcIi4vY29tYmluaW5nTWFya3NcIjtcbmltcG9ydCB7bWVyZ2V9IGZyb20gXCJkMy1hcnJheVwiO1xuXG52YXIgc3BsaXRDaGFycyA9IFtcIi1cIiwgIFwiL1wiLCAgXCI7XCIsICBcIjpcIiwgIFwiJlwiLFxuICBcInUwRTJGXCIsICAvLyB0aGFpIGNoYXJhY3RlciBwYWlyYW5ub2lcbiAgXCJ1MEVBRlwiLCAgLy8gbGFvIGVsbGlwc2lzXG4gIFwidTBFQzZcIiwgIC8vIGxhbyBrbyBsYSAod29yZCByZXBldGl0aW9uKVxuICBcInUwRUNDXCIsICAvLyBsYW8gY2FuY2VsbGF0aW9uIG1hcmtcbiAgXCJ1MTA0QVwiLCAgLy8gbXlhbm1hciBzaWduIGxpdHRsZSBzZWN0aW9uXG4gIFwidTEwNEJcIiwgIC8vIG15YW5tYXIgc2lnbiBzZWN0aW9uXG4gIFwidTEwNENcIiwgIC8vIG15YW5tYXIgc3ltYm9sIGxvY2F0aXZlXG4gIFwidTEwNERcIiwgIC8vIG15YW5tYXIgc3ltYm9sIGNvbXBsZXRlZFxuICBcInUxMDRFXCIsICAvLyBteWFubWFyIHN5bWJvbCBhZm9yZW1lbnRpb25lZFxuICBcInUxMDRGXCIsICAvLyBteWFubWFyIHN5bWJvbCBnZW5pdGl2ZVxuICBcInUyMDEzXCIsICAvLyBlbiBkYXNoXG4gIFwidTIwMTRcIiwgIC8vIGVtIGRhc2hcbiAgXCJ1MjAyN1wiLCAgLy8gc2ltcGxpZmllZCBjaGluZXNlIGh5cGhlbmF0aW9uIHBvaW50XG4gIFwidTMwMDBcIiwgIC8vIHNpbXBsaWZpZWQgY2hpbmVzZSBpZGVvZ3JhcGhpYyBzcGFjZVxuICBcInUzMDAxXCIsICAvLyBzaW1wbGlmaWVkIGNoaW5lc2UgaWRlb2dyYXBoaWMgY29tbWFcbiAgXCJ1MzAwMlwiLCAgLy8gc2ltcGxpZmllZCBjaGluZXNlIGlkZW9ncmFwaGljIGZ1bGwgc3RvcFxuICBcInVGRjBDXCIsICAvLyBmdWxsLXdpZHRoIGNvbW1hXG4gIFwidUZGNUVcIiAgIC8vIHdhdmUgZGFzaFxuXTtcblxudmFyIHByZWZpeENoYXJzID0gW1wiJ1wiLCAgXCI8XCIsICBcIihcIiwgIFwie1wiLCAgXCJbXCIsXG4gIFwidTAwQUJcIiwgIC8vIGxlZnQtcG9pbnRpbmcgZG91YmxlIGFuZ2xlIHF1b3RhdGlvbiBtYXJrXG4gIFwidTMwMEFcIiwgIC8vIGxlZnQgZG91YmxlIGFuZ2xlIGJyYWNrZXRcbiAgXCJ1MzAwOFwiICAvLyBsZWZ0IGFuZ2xlIGJyYWNrZXRcbl07XG5cbnZhciBzdWZmaXhDaGFycyA9IFtcIidcIiwgIFwiPlwiLCAgXCIpXCIsICBcIn1cIiwgIFwiXVwiLCAgXCIuXCIsICBcIiFcIiwgIFwiP1wiLFxuICBcInUwMEJCXCIsICAvLyByaWdodC1wb2ludGluZyBkb3VibGUgYW5nbGUgcXVvdGF0aW9uIG1hcmtcbiAgXCJ1MzAwQlwiLCAgLy8gcmlnaHQgZG91YmxlIGFuZ2xlIGJyYWNrZXRcbiAgXCJ1MzAwOVwiICAvLyByaWdodCBhbmdsZSBicmFja2V0XG5dLmNvbmNhdChzcGxpdENoYXJzKTtcblxudmFyIGJ1cm1lc2VSYW5nZSA9IFwiXFx1MTAwMC1cXHUxMDJBXFx1MTAzRi1cXHUxMDQ5XFx1MTA1MC1cXHUxMDU1XCI7XG52YXIgamFwYW5lc2VSYW5nZSA9IFwiXFx1MzA0MC1cXHUzMDlmXFx1MzBhMC1cXHUzMGZmXFx1ZmYwMC1cXHVmZjBiXFx1ZmYwZC1cXHVmZjVkXFx1ZmY1Zi1cXHVmZjlmXFx1MzQwMC1cXHU0ZGJmXCI7XG52YXIgY2hpbmVzZVJhbmdlID0gXCJcXHUzNDAwLVxcdTlGQkZcIjtcbnZhciBsYW9SYW5nZSA9IFwiXFx1MEU4MS1cXHUwRUFFXFx1MEVCMC1cXHUwRUM0XFx1MEVDOC1cXHUwRUNCXFx1MEVDRC1cXHUwRUREXCI7XG5cbnZhciBub1NwYWNlUmFuZ2UgPSBidXJtZXNlUmFuZ2UgKyBjaGluZXNlUmFuZ2UgKyBqYXBhbmVzZVJhbmdlICsgbGFvUmFuZ2U7XG5cbnZhciBzcGxpdFdvcmRzID0gbmV3IFJlZ0V4cCgoXCIoXFxcXFwiICsgKHNwbGl0Q2hhcnMuam9pbihcInxcXFxcXCIpKSArIFwiKSpbXlxcXFxzfFxcXFxcIiArIChzcGxpdENoYXJzLmpvaW4oXCJ8XFxcXFwiKSkgKyBcIl0qKFxcXFxcIiArIChzcGxpdENoYXJzLmpvaW4oXCJ8XFxcXFwiKSkgKyBcIikqXCIpLCBcImdcIik7XG52YXIgbm9TcGFjZUxhbmd1YWdlID0gbmV3IFJlZ0V4cCgoXCJbXCIgKyBub1NwYWNlUmFuZ2UgKyBcIl1cIikpO1xudmFyIHNwbGl0QWxsQ2hhcnMgPSBuZXcgUmVnRXhwKChcIihcXFxcXCIgKyAocHJlZml4Q2hhcnMuam9pbihcInxcXFxcXCIpKSArIFwiKSpbXCIgKyBub1NwYWNlUmFuZ2UgKyBcIl0oXFxcXFwiICsgKHN1ZmZpeENoYXJzLmpvaW4oXCJ8XFxcXFwiKSkgKyBcInxcXFxcXCIgKyAoY29tYmluaW5nTWFya3Muam9pbihcInxcXFxcXCIpKSArIFwiKSp8W2EtejAtOV0rXCIpLCBcImdpXCIpO1xuXG4vKipcbiAgICBAZnVuY3Rpb24gdGV4dFNwbGl0XG4gICAgQGRlc2MgU3BsaXRzIGEgZ2l2ZW4gc2VudGVuY2UgaW50byBhbiBhcnJheSBvZiB3b3Jkcy5cbiAgICBAcGFyYW0ge1N0cmluZ30gc2VudGVuY2VcbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZW50ZW5jZSkge1xuICBpZiAoIW5vU3BhY2VMYW5ndWFnZS50ZXN0KHNlbnRlbmNlKSkgeyByZXR1cm4gc3RyaW5naWZ5KHNlbnRlbmNlKS5tYXRjaChzcGxpdFdvcmRzKS5maWx0ZXIoZnVuY3Rpb24gKHcpIHsgcmV0dXJuIHcubGVuZ3RoOyB9KTsgfVxuICByZXR1cm4gbWVyZ2Uoc3RyaW5naWZ5KHNlbnRlbmNlKS5tYXRjaChzcGxpdFdvcmRzKS5tYXAoZnVuY3Rpb24gKGQpIHtcbiAgICBpZiAobm9TcGFjZUxhbmd1YWdlLnRlc3QoZCkpIHsgcmV0dXJuIGQubWF0Y2goc3BsaXRBbGxDaGFycyk7IH1cbiAgICByZXR1cm4gW2RdO1xuICB9KSk7XG59XG5cbmV4cG9ydCB7cHJlZml4Q2hhcnMsIHNwbGl0Q2hhcnMsIHNwbGl0V29yZHMsIHN1ZmZpeENoYXJzfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dFNwbGl0LmpzLm1hcCIsIi8qKlxuICAgIEBmdW5jdGlvbiB0ZXh0V2lkdGhcbiAgICBAZGVzYyBHaXZlbiBhIHRleHQgc3RyaW5nLCByZXR1cm5zIHRoZSBwcmVkaWN0ZWQgcGl4ZWwgd2lkdGggb2YgdGhlIHN0cmluZyB3aGVuIHBsYWNlZCBpbnRvIERPTS5cbiAgICBAcGFyYW0ge1N0cmluZ3xBcnJheX0gdGV4dCBDYW4gYmUgZWl0aGVyIGEgc2luZ2xlIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzIHRvIGFuYWx5emUuXG4gICAgQHBhcmFtIHtPYmplY3R9IFtzdHlsZV0gQW4gb2JqZWN0IG9mIENTUyBmb250IHN0eWxlcyB0byBhcHBseS4gQWNjZXB0cyBhbnkgb2YgdGhlIHZhbGlkIFtDU1MgZm9udCBwcm9wZXJ0eV0oaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL2Nzc3JlZi9wcl9mb250X2ZvbnQuYXNwKSB2YWx1ZXMuXG4qL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGV4dCwgc3R5bGUpIHtcblxuICBzdHlsZSA9IE9iamVjdC5hc3NpZ24oe1xuICAgIFwiZm9udC1zaXplXCI6IDEwLFxuICAgIFwiZm9udC1mYW1pbHlcIjogXCJzYW5zLXNlcmlmXCIsXG4gICAgXCJmb250LXN0eWxlXCI6IFwibm9ybWFsXCIsXG4gICAgXCJmb250LXdlaWdodFwiOiA0MDAsXG4gICAgXCJmb250LXZhcmlhbnRcIjogXCJub3JtYWxcIlxuICB9LCBzdHlsZSk7XG5cbiAgdmFyIGNvbnRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLmdldENvbnRleHQoXCIyZFwiKTtcblxuICB2YXIgZm9udCA9IFtdO1xuICBmb250LnB1c2goc3R5bGVbXCJmb250LXN0eWxlXCJdKTtcbiAgZm9udC5wdXNoKHN0eWxlW1wiZm9udC12YXJpYW50XCJdKTtcbiAgZm9udC5wdXNoKHN0eWxlW1wiZm9udC13ZWlnaHRcIl0pO1xuICBmb250LnB1c2godHlwZW9mIHN0eWxlW1wiZm9udC1zaXplXCJdID09PSBcInN0cmluZ1wiID8gc3R5bGVbXCJmb250LXNpemVcIl0gOiAoKHN0eWxlW1wiZm9udC1zaXplXCJdKSArIFwicHhcIikpO1xuICAvLyBsZXQgcyA9IGAke3N0eWxlW1wiZm9udC1zaXplXCJdfXB4YDtcbiAgLy8gaWYgKFwibGluZS1oZWlnaHRcIiBpbiBzdHlsZSkgcyArPSBgLyR7c3R5bGVbXCJsaW5lLWhlaWdodFwiXX1weGA7XG4gIC8vIGZvbnQucHVzaChzKTtcbiAgZm9udC5wdXNoKHN0eWxlW1wiZm9udC1mYW1pbHlcIl0pO1xuXG4gIGNvbnRleHQuZm9udCA9IGZvbnQuam9pbihcIiBcIik7XG5cbiAgaWYgKHRleHQgaW5zdGFuY2VvZiBBcnJheSkgeyByZXR1cm4gdGV4dC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGNvbnRleHQubWVhc3VyZVRleHQodCkud2lkdGg7IH0pOyB9XG4gIHJldHVybiBjb250ZXh0Lm1lYXN1cmVUZXh0KHRleHQpLndpZHRoO1xuXG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHRXaWR0aC5qcy5tYXAiLCJpbXBvcnQgbWVhc3VyZSBmcm9tIFwiLi90ZXh0V2lkdGhcIjtcbmltcG9ydCBkZWZhdWx0U3BsaXQgZnJvbSBcIi4vdGV4dFNwbGl0XCI7XG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gXCIuL3N0cmluZ2lmeVwiO1xuaW1wb3J0IHt0cmltUmlnaHR9IGZyb20gXCIuL3RyaW1cIjtcblxuLyoqXG4gICAgQGZ1bmN0aW9uIHRleHRXcmFwXG4gICAgQGRlc2MgQmFzZWQgb24gdGhlIGRlZmluZWQgc3R5bGVzIGFuZCBkaW1lbnNpb25zLCBicmVha3MgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBlYWNoIGxpbmUgb2YgdGV4dC5cbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcblxuICB2YXIgZm9udEZhbWlseSA9IFwic2Fucy1zZXJpZlwiLFxuICAgICAgZm9udFNpemUgPSAxMCxcbiAgICAgIGZvbnRXZWlnaHQgPSA0MDAsXG4gICAgICBoZWlnaHQgPSAyMDAsXG4gICAgICBsaW5lSGVpZ2h0LFxuICAgICAgbWF4TGluZXMgPSBudWxsLFxuICAgICAgb3ZlcmZsb3cgPSBmYWxzZSxcbiAgICAgIHNwbGl0ID0gZGVmYXVsdFNwbGl0LFxuICAgICAgd2lkdGggPSAyMDA7XG5cbiAgLyoqXG4gICAgICBUaGUgaW5uZXIgcmV0dXJuIG9iamVjdCBhbmQgd3JhcHMgdGhlIHRleHQgYW5kIHJldHVybnMgdGhlIGxpbmUgZGF0YSBhcnJheS5cbiAgICAgIEBwcml2YXRlXG4gICovXG4gIGZ1bmN0aW9uIHRleHRXcmFwKHNlbnRlbmNlKSB7XG5cbiAgICBzZW50ZW5jZSA9IHN0cmluZ2lmeShzZW50ZW5jZSk7XG5cbiAgICBpZiAobGluZUhlaWdodCA9PT0gdm9pZCAwKSB7IGxpbmVIZWlnaHQgPSBNYXRoLmNlaWwoZm9udFNpemUgKiAxLjQpOyB9XG5cbiAgICB2YXIgd29yZHMgPSBzcGxpdChzZW50ZW5jZSk7XG5cbiAgICB2YXIgc3R5bGUgPSB7XG4gICAgICBcImZvbnQtZmFtaWx5XCI6IGZvbnRGYW1pbHksXG4gICAgICBcImZvbnQtc2l6ZVwiOiBmb250U2l6ZSxcbiAgICAgIFwiZm9udC13ZWlnaHRcIjogZm9udFdlaWdodCxcbiAgICAgIFwibGluZS1oZWlnaHRcIjogbGluZUhlaWdodFxuICAgIH07XG5cbiAgICB2YXIgbGluZSA9IDEsXG4gICAgICAgIHRleHRQcm9nID0gXCJcIixcbiAgICAgICAgdHJ1bmNhdGVkID0gZmFsc2UsXG4gICAgICAgIHdpZHRoUHJvZyA9IDA7XG5cbiAgICB2YXIgbGluZURhdGEgPSBbXSxcbiAgICAgICAgICBzaXplcyA9IG1lYXN1cmUod29yZHMsIHN0eWxlKSxcbiAgICAgICAgICBzcGFjZSA9IG1lYXN1cmUoXCIgXCIsIHN0eWxlKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3b3JkID0gd29yZHNbaV07XG4gICAgICB2YXIgd29yZFdpZHRoID0gc2l6ZXNbd29yZHMuaW5kZXhPZih3b3JkKV07XG4gICAgICB3b3JkICs9IHNlbnRlbmNlLnNsaWNlKHRleHRQcm9nLmxlbmd0aCArIHdvcmQubGVuZ3RoKS5tYXRjaChcIl4oIHxcXG4pKlwiLCBcImdcIilbMF07XG4gICAgICBpZiAodGV4dFByb2cuc2xpY2UoLTEpID09PSBcIlxcblwiIHx8IHdpZHRoUHJvZyArIHdvcmRXaWR0aCA+IHdpZHRoKSB7XG4gICAgICAgIGlmICghaSAmJiAhb3ZlcmZsb3cpIHtcbiAgICAgICAgICB0cnVuY2F0ZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVEYXRhW2xpbmUgLSAxXSA9IHRyaW1SaWdodChsaW5lRGF0YVtsaW5lIC0gMV0pO1xuICAgICAgICBsaW5lKys7XG4gICAgICAgIGlmIChsaW5lSGVpZ2h0ICogbGluZSA+IGhlaWdodCB8fCB3b3JkV2lkdGggPiB3aWR0aCAmJiAhb3ZlcmZsb3cgfHwgbWF4TGluZXMgJiYgbGluZSA+IG1heExpbmVzKSB7XG4gICAgICAgICAgdHJ1bmNhdGVkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB3aWR0aFByb2cgPSAwO1xuICAgICAgICBsaW5lRGF0YS5wdXNoKHdvcmQpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWkpIHsgbGluZURhdGFbMF0gPSB3b3JkOyB9XG4gICAgICBlbHNlIHsgbGluZURhdGFbbGluZSAtIDFdICs9IHdvcmQ7IH1cbiAgICAgIHRleHRQcm9nICs9IHdvcmQ7XG4gICAgICB3aWR0aFByb2cgKz0gd29yZFdpZHRoO1xuICAgICAgd2lkdGhQcm9nICs9IHdvcmQubWF0Y2goL1tcXHNdKiQvZylbMF0ubGVuZ3RoICogc3BhY2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmVzOiBsaW5lRGF0YSxcbiAgICAgIHNlbnRlbmNlOiBzZW50ZW5jZSwgdHJ1bmNhdGVkOiB0cnVuY2F0ZWQsXG4gICAgICB3aWR0aHM6IG1lYXN1cmUobGluZURhdGEsIHN0eWxlKSxcbiAgICAgIHdvcmRzOiB3b3Jkc1xuICAgIH07XG5cbiAgfVxuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIHRleHRXcmFwXG4gICAgICBAZGVzYyBJZiAqdmFsdWUqIGlzIHNwZWNpZmllZCwgc2V0cyB0aGUgZm9udCBmYW1pbHkgYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBvciBzdHJpbmcgYW5kIHJldHVybnMgdGhpcyBnZW5lcmF0b3IuIElmICp2YWx1ZSogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgY3VycmVudCBmb250IGZhbWlseS5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5nfSBbKnZhbHVlKiA9IFwic2Fucy1zZXJpZlwiXVxuICAqL1xuICB0ZXh0V3JhcC5mb250RmFtaWx5ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZvbnRGYW1pbHkgPSBfLCB0ZXh0V3JhcCkgOiBmb250RmFtaWx5O1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIHRleHRXcmFwXG4gICAgICBAZGVzYyBJZiAqdmFsdWUqIGlzIHNwZWNpZmllZCwgc2V0cyB0aGUgZm9udCBzaXplIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gb3IgbnVtYmVyIGFuZCByZXR1cm5zIHRoaXMgZ2VuZXJhdG9yLiBJZiAqdmFsdWUqIGlzIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgZm9udCBzaXplLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqID0gMTBdXG4gICovXG4gIHRleHRXcmFwLmZvbnRTaXplID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZvbnRTaXplID0gXywgdGV4dFdyYXApIDogZm9udFNpemU7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgdGV4dFdyYXBcbiAgICAgIEBkZXNjIElmICp2YWx1ZSogaXMgc3BlY2lmaWVkLCBzZXRzIHRoZSBmb250IHdlaWdodCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIG9yIG51bWJlciBhbmQgcmV0dXJucyB0aGlzIGdlbmVyYXRvci4gSWYgKnZhbHVlKiBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSBjdXJyZW50IGZvbnQgd2VpZ2h0LlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ8U3RyaW5nfSBbKnZhbHVlKiA9IDQwMF1cbiAgKi9cbiAgdGV4dFdyYXAuZm9udFdlaWdodCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmb250V2VpZ2h0ID0gXywgdGV4dFdyYXApIDogZm9udFdlaWdodDtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiB0ZXh0V3JhcFxuICAgICAgQGRlc2MgSWYgKnZhbHVlKiBpcyBzcGVjaWZpZWQsIHNldHMgaGVpZ2h0IGxpbWl0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUgYW5kIHJldHVybnMgdGhpcyBnZW5lcmF0b3IuIElmICp2YWx1ZSogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICAgIEBwYXJhbSB7TnVtYmVyfSBbKnZhbHVlKiA9IDIwMF1cbiAgKi9cbiAgdGV4dFdyYXAuaGVpZ2h0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGhlaWdodCA9IF8sIHRleHRXcmFwKSA6IGhlaWdodDtcbiAgfTtcblxuICAvKipcbiAgICAgIEBtZW1iZXJvZiB0ZXh0V3JhcFxuICAgICAgQGRlc2MgSWYgKnZhbHVlKiBpcyBzcGVjaWZpZWQsIHNldHMgdGhlIGxpbmUgaGVpZ2h0IGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gb3IgbnVtYmVyIGFuZCByZXR1cm5zIHRoaXMgZ2VuZXJhdG9yLiBJZiAqdmFsdWUqIGlzIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgbGluZSBoZWlnaHQgYWNjZXNzb3IsIHdoaWNoIGlzIDEuMSB0aW1lcyB0aGUgW2ZvbnQgc2l6ZV0oI3RleHRXcmFwLmZvbnRTaXplKSBieSBkZWZhdWx0LlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqXVxuICAqL1xuICB0ZXh0V3JhcC5saW5lSGVpZ2h0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGxpbmVIZWlnaHQgPSBfLCB0ZXh0V3JhcCkgOiBsaW5lSGVpZ2h0O1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIHRleHRXcmFwXG4gICAgICBAZGVzYyBJZiAqdmFsdWUqIGlzIHNwZWNpZmllZCwgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgYWxsb3dlZCB3aGVuIHdyYXBwaW5nLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFsqdmFsdWUqXVxuICAqL1xuICB0ZXh0V3JhcC5tYXhMaW5lcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChtYXhMaW5lcyA9IF8sIHRleHRXcmFwKSA6IG1heExpbmVzO1xuICB9O1xuXG4gIC8qKlxuICAgICAgQG1lbWJlcm9mIHRleHRXcmFwXG4gICAgICBAZGVzYyBJZiAqdmFsdWUqIGlzIHNwZWNpZmllZCwgc2V0cyB0aGUgb3ZlcmZsb3cgdG8gdGhlIHNwZWNpZmllZCBib29sZWFuIGFuZCByZXR1cm5zIHRoaXMgZ2VuZXJhdG9yLiBJZiAqdmFsdWUqIGlzIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgb3ZlcmZsb3cgdmFsdWUuXG4gICAgICBAcGFyYW0ge0Jvb2xlYW59IFsqdmFsdWUqID0gZmFsc2VdXG4gICovXG4gIHRleHRXcmFwLm92ZXJmbG93ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG92ZXJmbG93ID0gXywgdGV4dFdyYXApIDogb3ZlcmZsb3c7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgdGV4dFdyYXBcbiAgICAgIEBkZXNjIElmICp2YWx1ZSogaXMgc3BlY2lmaWVkLCBzZXRzIHRoZSB3b3JkIHNwbGl0IGZ1bmN0aW9uIHRvIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gYW5kIHJldHVybnMgdGhpcyBnZW5lcmF0b3IuIElmICp2YWx1ZSogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgY3VycmVudCB3b3JkIHNwbGl0IGZ1bmN0aW9uLlxuICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gWyp2YWx1ZSpdIEEgZnVuY3Rpb24gdGhhdCwgd2hlbiBwYXNzZWQgYSBzdHJpbmcsIGlzIGV4cGVjdGVkIHRvIHJldHVybiB0aGF0IHN0cmluZyBzcGxpdCBpbnRvIGFuIGFycmF5IG9mIHdvcmRzIHRvIHRleHRXcmFwLiBUaGUgZGVmYXVsdCBzcGxpdCBmdW5jdGlvbiBzcGxpdHMgc3RyaW5ncyBvbiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IGAtYCwgYC9gLCBgO2AsIGA6YCwgYCZgXG4gICovXG4gIHRleHRXcmFwLnNwbGl0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNwbGl0ID0gXywgdGV4dFdyYXApIDogc3BsaXQ7XG4gIH07XG5cbiAgLyoqXG4gICAgICBAbWVtYmVyb2YgdGV4dFdyYXBcbiAgICAgIEBkZXNjIElmICp2YWx1ZSogaXMgc3BlY2lmaWVkLCBzZXRzIHdpZHRoIGxpbWl0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUgYW5kIHJldHVybnMgdGhpcyBnZW5lcmF0b3IuIElmICp2YWx1ZSogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICAgIEBwYXJhbSB7TnVtYmVyfSBbKnZhbHVlKiA9IDIwMF1cbiAgKi9cbiAgdGV4dFdyYXAud2lkdGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAod2lkdGggPSBfLCB0ZXh0V3JhcCkgOiB3aWR0aDtcbiAgfTtcblxuICByZXR1cm4gdGV4dFdyYXA7XG5cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dFdyYXAuanMubWFwIiwiaW1wb3J0IHtzdWZmaXhDaGFycywgZGVmYXVsdCBhcyB0ZXh0U3BsaXR9IGZyb20gXCIuL3RleHRTcGxpdFwiO1xuXG52YXIgbG93ZXJjYXNlID0gW1wiYVwiLCBcImFuXCIsIFwiYW5kXCIsIFwiYXNcIiwgXCJhdFwiLCBcImJ1dFwiLCBcImJ5XCIsIFwiZm9yXCIsIFwiZnJvbVwiLCBcImlmXCIsIFwiaW5cIiwgXCJpbnRvXCIsIFwibmVhclwiLCBcIm5vclwiLCBcIm9mXCIsIFwib25cIiwgXCJvbnRvXCIsIFwib3JcIiwgXCJwZXJcIiwgXCJ0aGF0XCIsIFwidGhlXCIsIFwidG9cIiwgXCJ3aXRoXCIsIFwidmlhXCIsIFwidnNcIiwgXCJ2cy5cIl07XG52YXIgdXBwZXJjYXNlID0gW1wiQ0VPXCIsIFwiQ0ZPXCIsIFwiQ05DXCIsIFwiQ09PXCIsIFwiQ1BVXCIsIFwiR0RQXCIsIFwiSFZBQ1wiLCBcIklEXCIsIFwiSVRcIiwgXCJSJkRcIiwgXCJUVlwiLCBcIlVJXCJdO1xuXG4vKipcbiAgICBAZnVuY3Rpb24gdGl0bGVDYXNlXG4gICAgQGRlc2MgQ2FwaXRhbGl6ZXMgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgaW4gYSBwaHJhc2Uvc2VudGVuY2UuXG4gICAgQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgc3RyaW5nIHRvIGFwcGx5IHRoZSB0aXRsZSBjYXNlIGxvZ2ljLlxuKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0cikge1xuXG4gIGlmIChzdHIgPT09IHZvaWQgMCkgeyByZXR1cm4gXCJcIjsgfVxuXG4gIHZhciBzbWFsbHMgPSBsb3dlcmNhc2UubWFwKGZ1bmN0aW9uIChzKSB7IHJldHVybiBzLnRvTG93ZXJDYXNlKCk7IH0pO1xuXG4gIHZhciBiaWdzID0gdXBwZXJjYXNlLnNsaWNlKCk7XG4gIGJpZ3MgPSBiaWdzLmNvbmNhdChiaWdzLm1hcChmdW5jdGlvbiAoYikgeyByZXR1cm4gKGIgKyBcInNcIik7IH0pKTtcbiAgdmFyIGJpZ2xvdyA9IGJpZ3MubWFwKGZ1bmN0aW9uIChiKSB7IHJldHVybiBiLnRvTG93ZXJDYXNlKCk7IH0pO1xuXG4gIHZhciBzcGxpdCA9IHRleHRTcGxpdChzdHIpO1xuICByZXR1cm4gc3BsaXQubWFwKGZ1bmN0aW9uIChzLCBpKSB7XG4gICAgaWYgKHMpIHtcbiAgICAgIHZhciBsb3dlciA9IHMudG9Mb3dlckNhc2UoKTtcbiAgICAgIHZhciBzdHJpcHBlZCA9IHN1ZmZpeENoYXJzLmluY2x1ZGVzKGxvd2VyLmNoYXJBdChsb3dlci5sZW5ndGggLSAxKSkgPyBsb3dlci5zbGljZSgwLCAtMSkgOiBsb3dlcjtcbiAgICAgIHZhciBiaWdpbmRleCA9IGJpZ2xvdy5pbmRleE9mKHN0cmlwcGVkKTtcbiAgICAgIGlmIChiaWdpbmRleCA+PSAwKSB7IHJldHVybiBiaWdzW2JpZ2luZGV4XTsgfVxuICAgICAgZWxzZSBpZiAoc21hbGxzLmluY2x1ZGVzKHN0cmlwcGVkKSAmJiBpICE9PSAwICYmIGkgIT09IHNwbGl0Lmxlbmd0aCAtIDEpIHsgcmV0dXJuIGxvd2VyOyB9XG4gICAgICBlbHNlIHsgcmV0dXJuIHMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpOyB9XG4gICAgfVxuICAgIGVsc2UgeyByZXR1cm4gXCJcIjsgfVxuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKHJldCwgcywgaSkge1xuICAgIGlmIChpICYmIHN0ci5jaGFyQXQocmV0Lmxlbmd0aCkgPT09IFwiIFwiKSB7IHJldCArPSBcIiBcIjsgfVxuICAgIHJldCArPSBzO1xuICAgIHJldHVybiByZXQ7XG4gIH0sIFwiXCIpO1xuXG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpdGxlQ2FzZS5qcy5tYXAiLCIvKipcbiAgICBAZnVuY3Rpb24gdHJpbVxuICAgIEBkZXNjIENyb3NzLWJyb3dzZXIgaW1wbGVtZW50YXRpb24gb2YgW3RyaW1dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9UcmltKS5cbiAgICBAcGFyYW0ge1N0cmluZ30gc3RyXG4qL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCBcIlwiKTtcbn1cblxuLyoqXG4gICAgQGZ1bmN0aW9uIHRyaW1MZWZ0XG4gICAgQGRlc2MgQ3Jvc3MtYnJvd3NlciBpbXBsZW1lbnRhdGlvbiBvZiBbdHJpbUxlZnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9UcmltTGVmdCkuXG4gICAgQHBhcmFtIHtTdHJpbmd9IHN0clxuKi9cbmZ1bmN0aW9uIHRyaW1MZWZ0KHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrLywgXCJcIik7XG59XG5cbi8qKlxuICAgIEBmdW5jdGlvbiB0cmltUmlnaHRcbiAgICBAZGVzYyBDcm9zcy1icm93c2VyIGltcGxlbWVudGF0aW9uIG9mIFt0cmltUmlnaHRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9UcmltUmlnaHQpLlxuICAgIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiovXG5mdW5jdGlvbiB0cmltUmlnaHQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxzKyQvLCBcIlwiKTtcbn1cblxuZXhwb3J0IHt0cmltLCB0cmltTGVmdCwgdHJpbVJpZ2h0fTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJpbS5qcy5tYXAiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICB0aGlzLl9ldmVudHMgPSB0aGlzLl9ldmVudHMgfHwge307XG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbkV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKG4pIHtcbiAgaWYgKCFpc051bWJlcihuKSB8fCBuIDwgMCB8fCBpc05hTihuKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGVyLCBoYW5kbGVyLCBsZW4sIGFyZ3MsIGksIGxpc3RlbmVycztcblxuICBpZiAoIXRoaXMuX2V2ZW50cylcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMuZXJyb3IgfHxcbiAgICAgICAgKGlzT2JqZWN0KHRoaXMuX2V2ZW50cy5lcnJvcikgJiYgIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKSB7XG4gICAgICBlciA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgXCJlcnJvclwiIGV2ZW50LiAoJyArIGVyICsgJyknKTtcbiAgICAgICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZXIgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzVW5kZWZpbmVkKGhhbmRsZXIpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gZmFzdCBjYXNlc1xuICAgICAgY2FzZSAxOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0sIGFyZ3VtZW50c1syXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gc2xvd2VyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2UgaWYgKGxpc3RlbmVycykge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgaWYgKHRoaXMuX2V2ZW50cykge1xuICAgIHZhciBldmxpc3RlbmVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oZXZsaXN0ZW5lcikpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChldmxpc3RlbmVyKVxuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICB9XG4gIHJldHVybiAwO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG59O1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG4iLCJpbXBvcnQgQm94ZWRUcmVlIGZyb20gJy4vanMvQm94ZWRUcmVlJztcclxuaW1wb3J0IENpcmNsZVRyZWUgZnJvbSAnLi9qcy9DaXJjbGVUcmVlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIGJveGVkVHJlZTogQm94ZWRUcmVlLFxyXG4gICAgY2lyY2xlVHJlZTogQ2lyY2xlVHJlZVxyXG59OyIsImltcG9ydCBkMyBmcm9tICcuL0N1c3RvbUQzJztcclxuaW1wb3J0IE5vZGVTZXR0aW5ncyBmcm9tICcuL05vZGVTZXR0aW5ncyc7XHJcbmltcG9ydCBMb2FkT25EZW1hbmRTZXR0aW5ncyBmcm9tICcuL0xvYWRPbkRlbWFuZFNldHRpbmdzJztcclxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudHMnO1xyXG5cclxuLyoqXHJcbiAqIFJlY3Vyc2l2ZWx5IGZpbmQgYSBwYXJ0aWN1bGFyIG9iamVjdCB3aXRoaW4gYSBoaWVyYXJjaGljYWwgZGF0YXNldC5cclxuICogXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBoaWVyYXJjaGljYWxPYmplY3QgVGhlIGluaXRpYWwgaGllcmFyY2hpY2FsIG9iamVjdCB0byBzdGFydCB0aGUgcmVjdXJzaXZlIGZpbmQuXHJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoaWxkcmVuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGNoaWxkcmVuIGl0ZW1zIG9mIHRoZSBoaWVyYXJjaGljYWwgb2JqZWN0LlxyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaW5kQ29uZGl0aW9uIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGRlZmluZXMgd2hldGhlciB0aGUgb2JqZWN0IG1hdGNoZXMgdGhlIGNvbmRpdGlvbiB0byBiZSByZXR1cm5lZCBvciBub3QuXHJcbiAqIEByZXR1cm5zIHtvYmplY3R8bnVsbH0gVGhlIGZpcnN0IG9iamVjdCBtYXRjaGluZyB0aGUgY29uZGl0aW9ucy5cclxuICovXHJcbmZ1bmN0aW9uIHJlY3Vyc2l2ZUZpbmQoaGllcmFyY2hpY2FsT2JqZWN0LCBnZXRDaGlsZHJlbiwgZmluZENvbmRpdGlvbikge1xyXG4gICAgaWYgKGZpbmRDb25kaXRpb24oaGllcmFyY2hpY2FsT2JqZWN0KSlcclxuICAgICAgICByZXR1cm4gaGllcmFyY2hpY2FsT2JqZWN0O1xyXG4gICAgdmFyIGNoaWxkcmVuID0gZ2V0Q2hpbGRyZW4oaGllcmFyY2hpY2FsT2JqZWN0KTtcclxuICAgIHZhciBmb3VuZE5vZGUgPSBjaGlsZHJlbi5maW5kKGZpbmRDb25kaXRpb24pO1xyXG4gICAgaWYgKCFmb3VuZE5vZGUpXHJcbiAgICB7XHJcbiAgICAgICAgZm9yICh2YXIgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgZm91bmROb2RlID0gcmVjdXJzaXZlRmluZChjaGlsZCwgZ2V0Q2hpbGRyZW4sIGZpbmRDb25kaXRpb24pO1xyXG4gICAgICAgICAgICBpZiAoZm91bmROb2RlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kTm9kZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlY3Vyc2l2ZWx5IGdldHMgYSBzZXQgb2Ygb2JqZWN0cyB3aXRoaW4gYSBoaWVyYXJjaGljYWwgZGF0YXNldC5cclxuICogXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBoaWVyYXJjaGljYWxPYmplY3QgVGhlIGluaXRpYWwgaGllcmFyY2hpY2FsIG9iamVjdCB0byBzdGFydCB0aGUgcmVjdXJzaXZlIGdldC5cclxuICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hpbGRyZW4gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgY2hpbGRyZW4gaXRlbXMgb2YgdGhlIGhpZXJhcmNoaWNhbCBvYmplY3QuXHJcbiAqL1xyXG5mdW5jdGlvbiByZWN1cnNpdmVHZXQoaGllcmFyY2hpY2FsT2JqZWN0LCBnZXRDaGlsZHJlbikge1xyXG4gICAgdmFyIGFsbEl0ZW1zID0gW107XHJcbiAgICB2YXIgY2hpbGRyZW4gPSBnZXRDaGlsZHJlbihoaWVyYXJjaGljYWxPYmplY3QpO1xyXG4gICAgaWYgKGNoaWxkcmVuKVxyXG4gICAge1xyXG4gICAgICAgIGZvciAodmFyIGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGFsbEl0ZW1zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB2YXIgZGVzY2VuZGFudHMgPSByZWN1cnNpdmVHZXQoY2hpbGQsIGdldENoaWxkcmVuKTtcclxuICAgICAgICAgICAgaWYgKGRlc2NlbmRhbnRzKVxyXG4gICAgICAgICAgICAgICAgYWxsSXRlbXMgPSBbLi4uYWxsSXRlbXMsIC4uLmRlc2NlbmRhbnRzXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsSXRlbXM7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VUcmVlIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgVGhlIG9wdGlvbnMgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnRoZW1lPWRlZmF1bHRdIFRoZSB0aGVtZSBvZiB0aGUgdHJlZS5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vcmllbnRhdGlvbj1sZWZ0VG9SaWdodF0gVGhlIG9yaWVudGF0aW9uIG9mIHRoZSB0cmVlLlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd1Bhbj10cnVlXSBFbmFibGVzL2Rpc2FibGVzIHRoZSBtb3VzZSBkcmFnIHRvIHBhbiBmZWF0dXJlLlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd1pvb209dHJ1ZV0gRW5hYmxlcy9kaXNhYmxlcyB0aGUgbW91c2Ugd2hlZWwgdG8gem9vbSBmZWF0dXJlLlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd0ZvY3VzPXRydWVdIElmIHRydWUsIGNsaWNraW5nIG9uIGEgbm9kZSB3b3VsZCBmb2N1cyB0byB0aGUgbm9kZSwgaGlkaW5nIGFsbCBpcnJlbGV2YW50IG5vZGVzIHRoYXQncyBub3QgYSBwYXJlbnQsIGFuY2VzdG9yLCBvciBzaWJsaW5nLlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd05vZGVDZW50ZXJpbmc9dHJ1ZV0gSWYgdHJ1ZSwgY2xpY2tpbmcgb24gYSBub2RlIHdvdWxkIHBhbiB0byB0aGUgbm9kZS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5taW5TY2FsZT0xXSBNaW5pbXVtIHpvb20gc2NhbGluZy5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhTY2FsZT0yXSBNYXhpbXVtIHpvb20gc2NhbGluZy5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5ub2RlRGVwdGhNdWx0aXBsaWVyPTMwMF0gVGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBhcmVudCBhbmQgY2hpbGQgbm9kZXMuXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmlzRmxhdERhdGE9ZmFsc2VdIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXNzZWQgZGF0YSB3YXMgYSBmbGF0IGFycmF5IG9mIG9iamVjdHMuIElmIHRydWUsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIGBnZXRQYXJlbnRJZGAgb3B0aW9uLlxyXG4gICAgICogQHBhcmFtIHtnZXRJZENhbGxCYWNrfSBvcHRpb25zLmdldElkXHJcbiAgICAgKiBAcGFyYW0ge2dldFBhcmVudElkQ2FsbEJhY2t9IFtvcHRpb25zLmdldFBhcmVudElkXVxyXG4gICAgICogQHBhcmFtIHtnZXRDaGlsZHJlbkNhbGxCYWNrfSBbb3B0aW9ucy5nZXRDaGlsZHJlbl1cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy53aWR0aFdpdGhvdXRNYXJnaW5zPTk2MF0gVGhlIHdpZHRoIG9mIHRoZSB0cmVlLCBub3QgaW5jbHVkaW5nIHRoZSBtYXJnaW5zLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmhlaWdodFdpdGhvdXRNYXJnaW5zPTgwMF0gVGhlIGhlaWdodCBvZiB0aGUgdHJlZSwgbm90IGluY2x1ZGluZyB0aGUgbWFyZ2lucy5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9ucy5tYXJnaW5zXSBPYmplY3Qgc3BlY2lmeWluZyB0aGUgbWFyZ2lucyBvZiB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1hcmdpbnMudG9wXSBUaGUgdG9wIG1hcmdpbiBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXJnaW5zLnJpZ2h0XSBUaGUgcmlnaHQgbWFyZ2luIGZvciB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1hcmdpbnMuYm90dG9tXSBUaGUgYm90dG9tIG1hcmdpbiBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXJnaW5zLmxlZnRdIFRoZSBsZWZ0IG1hcmdpbiBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5kdXJhdGlvbl0gSW50ZWdlciBpbiBtaWxsaXNlY29uZHMgZGV0ZXJtaW5pbmcgdGhlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRpb25zIGZvciB0aGUgdHJlZS5cclxuICAgICAqIEBwYXJhbSB7TG9hZE9uRGVtYW5kU2V0dGluZ3N9IFtvcHRpb25zLmxvYWRPbkRlbWFuZFNldHRpbmdzXSBPYmplY3Qgc3BlY2lmeWluZyB0aGUgbG9hZC1vbi1kZW1hbmQgc2V0dGluZ3MuXHJcbiAgICAgKiBAcGFyYW0ge05vZGVTZXR0aW5nc30gW29wdGlvbnMubm9kZVNldHRpbmdzXSBPYmplY3Qgc3BlY2lmeWluZyB0aGUgbm9kZSBzZXR0aW5ncyBmb3IgdGhlIHRyZWUuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBEZWZhdWx0cyBvcHRpb25zIHRvIGFuIGVtcHR5IG9iamVjdFxyXG5cclxuICAgICAgICB2YXIgbWVyZ2VkT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLi4uQmFzZVRyZWUuZGVmYXVsdHMsXHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBXZSBkZWZpbmUgb3VyIHByb3RvdHlwZSBwcm9wZXJ0aWVzIHdoaWNoIHdvdWxkIGJlIHNldCBsYXRlclxyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3N2ZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fcGFubmluZ0NvbnRhaW5lciA9IG51bGwsXHJcbiAgICAgICAgdGhpcy5fdmlldyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fdHJlZUdlbmVyYXRvciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fbGlua1BhdGhHZW5lcmF0b3IgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3Zpc2libGVOb2RlcyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fbGlua3MgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3pvb21MaXN0ZW5lciA9IG51bGwsXHJcblxyXG4gICAgICAgIC8vIEFzc2lnbi9TZXQgcHJvdG90eXBlIHByb3BlcnRpZXMsIHVzaW5nIHZhbHVlcyBwYXNzZWQgZnJvbSB0aGUgb3B0aW9ucyBvYmplY3RcclxuICAgICAgICB0aGlzLnNldFRoZW1lKG1lcmdlZE9wdGlvbnMudGhlbWUpO1xyXG4gICAgICAgIHRoaXMuc2V0T3JpZW50YXRpb24obWVyZ2VkT3B0aW9ucy5vcmllbnRhdGlvbik7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKG1lcmdlZE9wdGlvbnMuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtZW50KG1lcmdlZE9wdGlvbnMuZWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy5zZXRXaWR0aFdpdGhvdXRNYXJnaW5zKG1lcmdlZE9wdGlvbnMud2lkdGhXaXRob3V0TWFyZ2lucyk7XHJcbiAgICAgICAgdGhpcy5zZXRIZWlnaHRXaXRob3V0TWFyZ2lucyhtZXJnZWRPcHRpb25zLmhlaWdodFdpdGhvdXRNYXJnaW5zKTtcclxuICAgICAgICB0aGlzLnNldE1hcmdpbnMobWVyZ2VkT3B0aW9ucy5tYXJnaW5zKTtcclxuICAgICAgICB0aGlzLnNldER1cmF0aW9uKG1lcmdlZE9wdGlvbnMuZHVyYXRpb24pO1xyXG4gICAgICAgIHRoaXMuc2V0QWxsb3dQYW4obWVyZ2VkT3B0aW9ucy5hbGxvd1Bhbik7XHJcbiAgICAgICAgdGhpcy5zZXRBbGxvd1pvb20obWVyZ2VkT3B0aW9ucy5hbGxvd1pvb20pO1xyXG4gICAgICAgIHRoaXMuc2V0QWxsb3dGb2N1cyhtZXJnZWRPcHRpb25zLmFsbG93Rm9jdXMpO1xyXG4gICAgICAgIHRoaXMuc2V0QWxsb3dOb2RlQ2VudGVyaW5nKG1lcmdlZE9wdGlvbnMuYWxsb3dOb2RlQ2VudGVyaW5nKTtcclxuICAgICAgICB0aGlzLnNldE1pblNjYWxlKG1lcmdlZE9wdGlvbnMubWluU2NhbGUpO1xyXG4gICAgICAgIHRoaXMuc2V0TWF4U2NhbGUobWVyZ2VkT3B0aW9ucy5tYXhTY2FsZSk7XHJcbiAgICAgICAgdGhpcy5zZXRJc0ZsYXREYXRhKG1lcmdlZE9wdGlvbnMuaXNGbGF0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5zZXROb2RlRGVwdGhNdWx0aXBsaWVyKG1lcmdlZE9wdGlvbnMubm9kZURlcHRoTXVsdGlwbGllcilcclxuXHJcbiAgICAgICAgLy8gV2UgZGVmaW5lIG91ciBzdWItcHJvdG90eXBlIChBS0Egc3ViLWNsYXNzKSBwcm9wZXJ0aWVzXHJcblxyXG4gICAgICAgIHRoaXMubG9hZE9uRGVtYW5kU2V0dGluZ3MgPSBuZXcgTG9hZE9uRGVtYW5kU2V0dGluZ3ModGhpcywgbWVyZ2VkT3B0aW9ucy5sb2FkT25EZW1hbmRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5ub2RlU2V0dGluZ3MgPSBuZXcgTm9kZVNldHRpbmdzKHRoaXMsIG1lcmdlZE9wdGlvbnMubm9kZVNldHRpbmdzKTtcclxuXHJcbiAgICAgICAgLy8gV2UgZGVmaW5lIG91ciBtZXRob2RzLCB3aGljaCBkZXJpdmVzIGZyb20gb3VyIG9wdGlvbnNcclxuICAgICAgICB0aGlzLl9nZXRJZCA9IG1lcmdlZE9wdGlvbnMuZ2V0SWQ7XHJcbiAgICAgICAgdGhpcy5fZ2V0Q2hpbGRyZW4gPSBtZXJnZWRPcHRpb25zLmdldENoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuX2dldFBhcmVudElkID0gbWVyZ2VkT3B0aW9ucy5nZXRQYXJlbnRJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgaG93IHRvIGNyZWF0ZSB0aGUgbm9kZXMgZm9yIG5ld2x5XHJcbiAgICAgKiBhZGRlZCBkYXRhIG9iamVjdHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHsqfSBub2RlRW50ZXIgVGhlIEQzIEVudGVyIHNlbGVjdGlvbiBvZiBub2Rlcy5cclxuICAgICAqIEBwYXJhbSB7Kn0gbm9kZXNcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgX25vZGVFbnRlcihub2RlRW50ZXIsIG5vZGVzKSB7XHJcbiAgICAgICAgdGhyb3cgJ1RoZSBmdW5jdGlvbiBfbm9kZUVudGVyIG11c3QgYmUgaW1wbGVtZW50ZWQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyBob3cgdG8gdXBkYXRlIHRoZSBub2RlcyBmb3IgdGhlXHJcbiAgICAgKiBkYXRhIG9iamVjdHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHsqfSBub2RlVXBkYXRlIFRoZSBEMyBVcGRhdGUgc2VsZWN0aW9uIG9mIG5vZGVzLlxyXG4gICAgICogQHBhcmFtIHsqfSBub2RlVXBkYXRlVHJhbnNpdGlvbiBUaGUgRDMgdHJhbnNpdGlvbiBvYmplY3QgZm9yIHRoZSBEMyBVcGRhdGUgc2VsZWN0aW9uIG9mIG5vZGVzLlxyXG4gICAgICogQHBhcmFtIHsqfSBub2Rlc1xyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBfbm9kZVVwZGF0ZShub2RlVXBkYXRlLCBub2RlVXBkYXRlVHJhbnNpdGlvbiwgbm9kZXMpIHtcclxuICAgICAgICB0aHJvdyAnVGhlIGZ1bmN0aW9uIF9ub2RlVXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyBob3cgdG8gcmVtb3ZlIHRoZSBub2RlcyBmb3IgdGhlXHJcbiAgICAgKiByZW1vdmVkIGRhdGEgb2JqZWN0cy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0geyp9IG5vZGVFeGl0IFRoZSBEMyBFeGl0IHNlbGVjdGlvbiBvZiBub2Rlcy5cclxuICAgICAqIEBwYXJhbSB7Kn0gbm9kZUV4aXRUcmFuc2l0aW9uIFRoZSBEMyB0cmFuc2l0aW9uIG9iamVjdCBmb3IgdGhlIEQzIEV4aXQgc2VsZWN0aW9uIG9mIG5vZGVzLlxyXG4gICAgICogQHBhcmFtIHsqfSBub2Rlc1xyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBfbm9kZUV4aXQobm9kZUV4aXQsIG5vZGVFeGl0VHJhbnNpdGlvbiwgbm9kZXMpIHtcclxuICAgICAgICB0aHJvdyAnVGhlIGZ1bmN0aW9uIF9ub2RlRXhpdCBtdXN0IGJlIGltcGxlbWVudGVkJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHBhdGggZ2VuZXJhdG9yIHVzZWQgdG8gcmVuZGVyXHJcbiAgICAgKiB0aGUgbGlua3MgYmV0d2VlbiB0aGUgbm9kZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9ufSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIFNWRyBwYXRoIGNvb3JkaW5hdGVzIGZvciB0aGUgbGlua3MsIGdpdmVuIGEgY29vcmRpbmF0ZXMgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBfZ2V0TGlua1BhdGhHZW5lcmF0b3IoKSB7XHJcbiAgICAgICAgdGhyb3cgJ1RoZSBmdW5jdGlvbiBfZ2V0TGlua1BhdGhHZW5lcmF0b3IgbXVzdCBiZSBpbXBsZW1lbnRlZCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIGhvdyB0byBjcmVhdGUgdGhlIGxpbmtzIGZvciBuZXdseVxyXG4gICAgICogYWRkZWQgZGF0YSBvYmplY3RzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7Kn0gc291cmNlIFRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCB0aGF0IHRoZSBsaW5rcyBhcmUgYmVpbmcgZHJhd24gZm9yLlxyXG4gICAgICogQHBhcmFtIHsqfSBsaW5rRW50ZXIgVGhlIEQzIEVudGVyIHNlbGVjdGlvbiBvZiBsaW5rcy5cclxuICAgICAqIEBwYXJhbSB7Kn0gbGlua3NcclxuICAgICAqIEBwYXJhbSB7Kn0gbGlua1BhdGhHZW5lcmF0b3JcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgX2xpbmtFbnRlcihzb3VyY2UsIGxpbmtFbnRlciwgbGlua3MsIGxpbmtQYXRoR2VuZXJhdG9yKSB7XHJcbiAgICAgICAgdGhyb3cgJ1RoZSBmdW5jdGlvbiBfbGlua0VudGVyIG11c3QgYmUgaW1wbGVtZW50ZWQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyBob3cgdG8gdXBkYXRlIHRoZSBsaW5rcyBmb3IgdGhlXHJcbiAgICAgKiBkYXRhIG9iamVjdHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHsqfSBzb3VyY2UgVGhlIG9yaWdpbmFsIGRhdGEgb2JqZWN0IHRoYXQgdGhlIGxpbmtzIGFyZSBiZWluZyBkcmF3biBmb3IuXHJcbiAgICAgKiBAcGFyYW0geyp9IGxpbmtVcGRhdGUgVGhlIEQzIFVwZGF0ZSBzZWxlY3Rpb24gb2YgbGlua3MuXHJcbiAgICAgKiBAcGFyYW0geyp9IGxpbmtVcGRhdGVUcmFuc2l0aW9uIFRoZSBEMyB0cmFuc2l0aW9uIG9iamVjdCBmb3IgdGhlIEQzIFVwZGF0ZSBzZWxlY3Rpb24gb2YgbGlua3MuXHJcbiAgICAgKiBAcGFyYW0geyp9IGxpbmtzXHJcbiAgICAgKiBAcGFyYW0geyp9IGxpbmtQYXRoR2VuZXJhdG9yIFRoZSBsaW5rIHBhdGggZ2VuZXJhdG9yIGZ1bmN0aW9uLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBfbGlua1VwZGF0ZShzb3VyY2UsIGxpbmtVcGRhdGUsIGxpbmtVcGRhdGVUcmFuc2l0aW9uLCBsaW5rcywgbGlua1BhdGhHZW5lcmF0b3IpIHtcclxuICAgICAgICB0aHJvdyAnVGhlIGZ1bmN0aW9uIF9saW5rVXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyBob3cgdG8gcmVtb3ZlIHRoZSBsaW5rcyBmb3IgdGhlXHJcbiAgICAgKiByZW1vdmVkIGRhdGEgb2JqZWN0cy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gc291cmNlIFRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCB0aGF0IHRoZSBsaW5rcyBhcmUgYmVpbmcgZHJhd24gZm9yLlxyXG4gICAgICogQHBhcmFtIHsqfSBsaW5rRXhpdCBUaGUgRDMgRXhpdCBzZWxlY3Rpb24gb2YgbGlua3MuXHJcbiAgICAgKiBAcGFyYW0geyp9IGxpbmtFeGl0VHJhbnNpdGlvbiBUaGUgRDMgdHJhbnNpdGlvbiBvYmplY3QgZm9yIHRoZSBEMyBVcGRhdGUgc2VsZWN0aW9uIG9mIGxpbmtzLlxyXG4gICAgICogQHBhcmFtIHsqfSBsaW5rc1xyXG4gICAgICogQHBhcmFtIHsqfSBsaW5rUGF0aEdlbmVyYXRvciBUaGUgbGluayBwYXRoIGdlbmVyYXRvciBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgX2xpbmtFeGl0KHNvdXJjZSwgbGlua0V4aXQsIGxpbmtFeGl0VHJhbnNpdGlvbiwgbGlua3MsIGxpbmtQYXRoR2VuZXJhdG9yKSB7XHJcbiAgICAgICAgdGhyb3cgJ1RoZSBmdW5jdGlvbiBfbGlua0V4aXQgbXVzdCBiZSBpbXBsZW1lbnRlZCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiB1cGRhdGluZyBkaW1lbnNpb25zIHdoZW5cclxuICAgICAqIG5vZGUgc2V0dGluZ3MgaXMgY29uZmlndXJlZCB0byBiZVxyXG4gICAgICogJ25vZGVzaXplJy5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBBbiBhcnJheSB3aXRoIHR3byB2YWx1ZXMsIHJlcHJlc2VudGluZyB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBvZiB0aGUgbm9kZSByZXNwZWN0aXZlbHkuXHJcbiAgICAgKi9cclxuICAgIF9nZXROb2RlU2l6ZSgpIHtcclxuICAgICAgICB0aHJvdyAnVGhlIGZ1bmN0aW9uIF9nZXROb2RlU2l6ZSBtdXN0IGJlIGltcGxlbWVudGVkJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvY3VzZXMgYW5kIGV4cGFuZHMgYWxsIHRoZSB3YXkgdGhyb3VnaCB0byBhIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Kn0gaWRPck5vZGVEYXRhSXRlbSBUaGUgaWQgb2YgdGhlIG5vZGUgdG8gZm9jdXMsIG9yIHRoZSBub2RlIGRhdGEgaXRlbSBvYmplY3QuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGZvY3VzVG9Ob2RlKGlkT3JOb2RlRGF0YUl0ZW0pIHtcclxuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGlvbih0aGlzLmdldFJvb3QoKSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIG5vZGVEYXRhSXRlbSA9IGlkT3JOb2RlRGF0YUl0ZW07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlRGF0YUl0ZW0gIT09ICdvYmplY3QnICYmIG5vZGVEYXRhSXRlbSAhPT0gbnVsbClcclxuICAgICAgICAgICAgbm9kZURhdGFJdGVtID0gdGhpcy5nZXROb2RlKG5vZGVEYXRhSXRlbSk7XHJcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBudWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIEV4cGFuZCBldmVyeSBwYXJlbnQvYW5jZXN0b3Igbm9kZVxyXG4gICAgICAgIHBhcmVudE5vZGUgPSBub2RlRGF0YUl0ZW0ucGFyZW50O1xyXG4gICAgICAgIHdoaWxlKHBhcmVudE5vZGUpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZS5fY2hpbGRyZW4pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZChwYXJlbnROb2RlKTtcclxuICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0QWxsb3dGb2N1cygpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy8gSGlkZSB0aGUgcGFyZW50L2FuY2VzdG9yIG5vZGUgc2libGluZ3NcclxuICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG5vZGVEYXRhSXRlbS5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHdoaWxlKHBhcmVudE5vZGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVNpYmxpbmdzKHBhcmVudE5vZGUpO1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRyZWVXaXRoRm9jdXNPbk5vZGUobm9kZURhdGFJdGVtKTtcclxuICAgICAgICAgICAgbm9kZURhdGFJdGVtLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMuZ2V0Um9vdCgpKTtcclxuICAgICAgICB0aGlzLmNlbnRlck5vZGUobm9kZURhdGFJdGVtKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgYm9vbGVhbiB3aGV0aGVyIHRoZVxyXG4gICAgICogdHJlZSBpcyB1c2luZyBmbGF0IGRhdGEgb3Igbm90LlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgdHJlZSBpcyB1c2luZyBmbGF0IGRhdGEgb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBnZXRJc0ZsYXREYXRhKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ZsYXREYXRhO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGlzIGZsYXQgZGF0YSBmbGFnLlxyXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHlvdSBtdXN0IHNwZWNpZnlcclxuICAgICAqIHRoZSBgZ2V0UGFyZW50SWRgIG9wdGlvbi5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBuZXdJc0ZsYXREYXRhIFdoZXRoZXIgdGhlIHRyZWUgaXMgdXNpbmcgZmxhdCBkYXRhIG9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgc2V0SXNGbGF0RGF0YShuZXdJc0ZsYXREYXRhKSB7XHJcbiAgICAgICAgdGhpcy5faXNGbGF0RGF0YSA9IG5ld0lzRmxhdERhdGE7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdlbmVyYXRlcyB0aGUgbm9kZSBkYXRhLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHJlZ2VuZXJhdGVOb2RlRGF0YSgpIHtcclxuICAgICAgICAvLyBBc3NpZ25zIHBhcmVudCwgY2hpbGRyZW4sIGhlaWdodCwgZGVwdGhcclxuICAgICAgICBpZiAoIXRoaXMuZ2V0SXNGbGF0RGF0YSgpKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZ2V0Q2hpbGRyZW4pXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBcIklmIHlvdSBhcmUgcHJvdmlkaW5nIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmVkIGRhdGEsIHRoZW4geW91IG11c3Qgc2V0IHRoZSBnZXRDaGlsZHJlbiBhY2Nlc3NvciBwcm9wZXJ0eS5cIjtcclxuXHJcbiAgICAgICAgICAgIC8vIFNwZWNpZnkgeW91ciBjaGlsZHJlbiBwcm9wZXJ0eSBoZXJlLFxyXG4gICAgICAgICAgICAvLyBzbyB0aGF0IEQzJ3MgcmVzdWx0aW5nIHJvb3Qgb2JqZWN0XHJcbiAgICAgICAgICAgIC8vIGhhcyBhIG1hcHBpbmcgZnJvbSBpdHMgXCJjaGlsZHJlblwiIHByb3BlcnR5XHJcbiAgICAgICAgICAgIC8vIHRvIHlvdXIgc3BlY2lmaWVkIGNoaWxkcmVuIHByb3BlcnR5XHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSBkMy5oaWVyYXJjaHkodGhpcy5nZXREYXRhKCksIChkYXRhKSA9PiB0aGlzLmdldENoaWxkcmVuLmNhbGwodGhpcywgZGF0YSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9nZXRQYXJlbnRJZClcclxuICAgICAgICAgICAgICAgIHRocm93IFwiSWYgeW91IGFyZSBwcm92aWRpbmcgZmxhdCBzdHJ1Y3R1cmVkIGRhdGEsIHRoZW4geW91IG11c3Qgc2V0IHRoZSBnZXRQYXJlbnRJZCBhY2Nlc3NvciBwcm9wZXJ0eS5cIjtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0cmF0aWZpZXIgaXMgYSBmdW5jdGlvbiB0aGF0IHdvdWxkIGNvbnZlcnQgdGhlIGZsYXRcclxuICAgICAgICAgICAgLy8gZGF0YXNldCBpbnRvIGhpZXJhcmNoaWNhbGx5IHN0cnVjdHVyZWQgZGF0YVxyXG4gICAgICAgICAgICAvLyB0byBiZSB1c2VkIHdpdGggRDMgdHJlZXMuXHJcbiAgICAgICAgICAgIC8vIEl0IGFjY2VwdHMgdGhlIGRhdGFzZXQgYXMgaXRzIHBhcmFtZXRlcixcclxuICAgICAgICAgICAgLy8gYW5kIHJldHVybnMgdGhlIGNvbnZlcnRlZCBkYXRhLlxyXG5cclxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkMy5oaWVyYXJjaHkoKVxyXG4gICAgICAgICAgICAvLyBtZXRob2QgYXMgZDMuaGllcmFyY2h5KCkgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGVcclxuICAgICAgICAgICAgLy8gZGF0YSBpcyBhbHJlYWR5IGluIGhlaXJhcmNoaWNhbCBzdHJ1Y3R1cmUsIGFuZFxyXG4gICAgICAgICAgICAvLyBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gRDMgaGllcmFyY2hpY2FsIG5vZGVzXHJcbiAgICAgICAgICAgIHZhciBzdHJhdGlmaWVyID0gZDMuc3RyYXRpZnkoKVxyXG4gICAgICAgICAgICAgICAgLmlkKChkYXRhLCBpbmRleCwgYXJyKSA9PiB0aGlzLmdldElkLmNhbGwodGhpcywgZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAucGFyZW50SWQoKGRhdGEsIGluZGV4LCBhcnIpID0+IHRoaXMuZ2V0UGFyZW50SWQuY2FsbCh0aGlzLCBkYXRhKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSBzdHJhdGlmaWVyKHRoaXMuZ2V0RGF0YSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB0cmVlIHRoZW1lLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgdGhlbWUgdGhlIHRyZWUgaXMgdXNpbmcuXHJcbiAgICAgKi9cclxuICAgIGdldFRoZW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90aGVtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHRyZWUgdGhlbWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aGVtZSBUaGUgdGhlbWUgdG8gc2V0IHRoZSB0cmVlIHRvLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRUaGVtZSh0aGVtZSkge1xyXG4gICAgICAgIHRoaXMuX3RoZW1lID0gdGhlbWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB0cmVlIG9yaWVudGF0aW9uLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgb3JpZW50YXRpb24gdGhlIHRyZWUgaXMgdXNpbmcuXHJcbiAgICAgKi9cclxuICAgIGdldE9yaWVudGF0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vcmllbnRhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHRyZWUgb3JpZW50YXRpb24uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmllbnRhdGlvbiBUaGUgb3JpZW50YXRpb24gdG8gc2V0IHRoZSB0cmVlIHRvLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRPcmllbnRhdGlvbihvcmllbnRhdGlvbikge1xyXG4gICAgICAgIHRoaXMuX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBkYXRhIGl0ZW1zIHVzZWQgdG8gcmVuZGVyXHJcbiAgICAgKiB0aGUgbm9kZXMuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3RbXX0gVGhlIGFycmF5IG9mIGRhdGEgaXRlbXMgdGhlIHRyZWUgdXNlcy5cclxuICAgICAqL1xyXG4gICAgZ2V0RGF0YSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGRhdGEgaXRlbXMgdGhlIHRyZWUgc2hvdWxkXHJcbiAgICAgKiB1c2UgdG8gcmVuZGVyIHRoZSBub2Rlcy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3RbXX0gbmV3RGF0YSBUaGUgbmV3IHNldCBvZiBkYXRhIGl0ZW1zLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXREYXRhKG5ld0RhdGEpIHtcclxuICAgICAgICB0aGlzLl9kYXRhID0gbmV3RGF0YTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG5vZGUgZGVwdGggbXVsdGlwbGllciB0aGF0XHJcbiAgICAgKiBhZmZlY3RzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZVxyXG4gICAgICogcGFyZW50IG5vZGUgYW5kIHRoZSBjaGlsZCBub2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbm9kZSBkZXB0aCBtdWx0aXBsaWVyIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIGdldE5vZGVEZXB0aE11bHRpcGxpZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVEZXB0aE11bHRpcGxpZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBub2RlIGRlcHRoIG11bHRpcGxpZXIgdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdOb2RlRGVwdGhNdWx0aXBsaWVyIFRoZSB2YWx1ZSB0aGF0IGFmZmVjdHMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBhcmVudCBub2RlIGFuZCB0aGUgY2hpbGQgbm9kZS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0Tm9kZURlcHRoTXVsdGlwbGllcihuZXdOb2RlRGVwdGhNdWx0aXBsaWVyKSB7XHJcbiAgICAgICAgdGhpcy5fbm9kZURlcHRoTXVsdGlwbGllciA9IG5ld05vZGVEZXB0aE11bHRpcGxpZXI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBkdXJhdGlvbiBvZiBhbmltYXRpb25zXHJcbiAgICAgKiBmb3IgdGhlIHRyZWUuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBhbmltYXRpb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxyXG4gICAgICovXHJcbiAgICBnZXREdXJhdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHVyYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBkdXJhdGlvbiBvZiBhbmltYXRpb25zXHJcbiAgICAgKiBmb3IgdGhlIHRyZWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Kn0gbmV3RHVyYXRpb24gVGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldER1cmF0aW9uKG5ld0R1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5fZHVyYXRpb24gPSBuZXdEdXJhdGlvbjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZ1xyXG4gICAgICogd2hldGhlciB0aGUgZHJhZy10by1wYW4gcGFuIGZlYXR1cmVcclxuICAgICAqIGlzIGVuYWJsZWQgb3Igbm90LlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBwYW5uaW5nIGlzIGVuYWJsZWQgb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBnZXRBbGxvd1BhbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dQYW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBib29sZWFuIHZhbHVlIGluZGljYXRpbmdcclxuICAgICAqIHdoZXRoZXIgdGhlIGRyYWctdG8tcGFuIHBhbiBmZWF0dXJlXHJcbiAgICAgKiBpcyBlbmFibGVkIG9yIG5vdC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBuZXdBbGxvd1BhbiBXaGV0aGVyIHBhbm5pbmcgaXMgZW5hYmxlZCBvciBub3QuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldEFsbG93UGFuKG5ld0FsbG93UGFuKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsb3dQYW4gPSBuZXdBbGxvd1BhbjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZ1xyXG4gICAgICogd2hldGhlciB0aGUgbW91c2Ugd2hlZWwgdG8gem9vbSBpbi9vdXRcclxuICAgICAqIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBub3QuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHpvb21pbmcgaXMgZW5hYmxlZCBvciBub3QuXHJcbiAgICAgKi9cclxuICAgIGdldEFsbG93Wm9vbSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dab29tO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nXHJcbiAgICAgKiB3aGV0aGVyIHRoZSBtb3VzZSB3aGVlbCB0byB6b29tIGluL291dFxyXG4gICAgICogZmVhdHVyZSBpcyBlbmFibGVkIG9yIG5vdC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBuZXdBbGxvd1pvb20gV2hldGhlciB6b29taW5nIGlzIGVuYWJsZWQgb3Igbm90LlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRBbGxvd1pvb20obmV3QWxsb3dab29tKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsb3dab29tID0gbmV3QWxsb3dab29tO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nXHJcbiAgICAgKiB3aGV0aGVyIHRvIGZvY3VzIHRvIHRoZSBjbGlja2VkIG5vZGVcclxuICAgICAqIG9yIG5vdC4gRm9jdXNpbmcgb24gYSBub2RlIHdvdWxkIGhpZGVcclxuICAgICAqIGFsbCBpcnJlbGV2YW50IG5vZGVzIHRoYXQncyBub3QgYSBcclxuICAgICAqIHBhcmVudCwgc2libGluZyBvciBhbmNlc3RvciBvZiB0aGVcclxuICAgICAqIGNsaWNrZWQgbm9kZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdG8gZm9jdXMgdG8gdGhlIGNsaWNrZWQgbm9kZS5cclxuICAgICAqL1xyXG4gICAgZ2V0QWxsb3dGb2N1cygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dGb2N1cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZ1xyXG4gICAgICogd2hldGhlciB0byBmb2N1cyB0byB0aGUgY2xpY2tlZCBub2RlXHJcbiAgICAgKiBvciBub3QuIEZvY3VzaW5nIG9uIGEgbm9kZSB3b3VsZCBoaWRlXHJcbiAgICAgKiBhbGwgaXJyZWxldmFudCBub2RlcyB0aGF0J3Mgbm90IGEgXHJcbiAgICAgKiBwYXJlbnQsIHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgdGhlXHJcbiAgICAgKiBjbGlja2VkIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbmV3QWxsb3dGb2N1cyBXaGV0aGVyIHRvIHBhbiB0byB0aGUgY2xpY2tlZCBub2RlLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRBbGxvd0ZvY3VzKG5ld0FsbG93Rm9jdXMpIHtcclxuICAgICAgICB0aGlzLl9hbGxvd0ZvY3VzID0gbmV3QWxsb3dGb2N1cztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZ1xyXG4gICAgICogd2hldGhlciB0byBwYW4gdG8gYSBjbGlja2VkIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRvIHBhbiB0byB0aGUgY2xpY2tlZCBub2RlLlxyXG4gICAgICovXHJcbiAgICBnZXRBbGxvd05vZGVDZW50ZXJpbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93Tm9kZUNlbnRlcmluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdG8gcGFuIHRvIGEgY2xpY2tlZCBub2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5ld0FsbG93Tm9kZUNlbnRlcmluZyBXaGV0aGVyIHRvIHBhbiB0byB0aGUgY2xpY2tlZCBub2RlLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRBbGxvd05vZGVDZW50ZXJpbmcobmV3QWxsb3dOb2RlQ2VudGVyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsb3dOb2RlQ2VudGVyaW5nID0gbmV3QWxsb3dOb2RlQ2VudGVyaW5nO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbWluaW11bSB6b29tIHNjYWxpbmcuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBtaW5pbXVtIHpvb20gc2NhbGUgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGdldE1pblNjYWxlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9taW5TY2FsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIG1pbmltdW0gem9vbSBzY2FsaW5nLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geyp9IG5ld01pblNjYWxlIFRoZSBtaW5pbXVtIHpvb20gc2NhbGUgdmFsdWUuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldE1pblNjYWxlKG5ld01pblNjYWxlKSB7XHJcbiAgICAgICAgdGhpcy5fbWluU2NhbGUgPSBuZXdNaW5TY2FsZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG1heGltdW0gem9vbSBzY2FsaW5nLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBNYXhpbXVtIHpvb20gc2NhbGUgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGdldE1heFNjYWxlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhTY2FsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIG1heGltdW0gem9vbSBzY2FsaW5nLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geyp9IG5ld01heFNjYWxlIFRoZSBtYXhpbXVtIHpvb20gc2NhbGUgdmFsdWUuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldE1heFNjYWxlKG5ld01heFNjYWxlKSB7XHJcbiAgICAgICAgdGhpcy5fbWF4U2NhbGUgPSBuZXdNYXhTY2FsZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGxvYWQgb24gZGVtYW5kIHNldHRpbmdzIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge0xvYWRPbkRlbWFuZFNldHRpbmdzfSBUaGUgbG9hZCBvbiBkZW1hbmQgc2V0dGluZ3MuXHJcbiAgICAgKi9cclxuICAgIGdldExvYWRPbkRlbWFuZFNldHRpbmdzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRPbkRlbWFuZFNldHRpbmdzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbm9kZSBzZXR0aW5ncyBvYmplY3QuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtOb2RlU2V0dGluZ3N9IFRoZSBub2RlIHNldHRpbmdzLlxyXG4gICAgICovXHJcbiAgICBnZXROb2RlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZVNldHRpbmdzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgY29udGFpbmVyIERPTSBlbGVtZW50LlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgY29udGFpbmVyIERPTSBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBnZXRFbGVtZW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgY29udGFpbmVyIERPTSBlbGVtZW50XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdFbGVtZW50IFRoZSBjb250YWluZXIgRE9NIGVsZW1lbnQuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldEVsZW1lbnQobmV3RWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBuZXdFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcm9vdCBub2RlIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcm9vdCBEMyB0cmVlIG5vZGUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBnZXRSb290KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgRDMgc2VsZWN0aW9uIG9iamVjdCBmb3IgdGhlIFNWRyBlbGVtZW50LlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IFJldHVybnMgdGhlIEQzIHNlbGVjdGlvbiBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGdldFN2ZygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3ZnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgRDMgc2VsZWN0aW9uIG9iamVjdCBmb3IgdGhlIHZpZXcgZWxlbWVudC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gRDMgc2VsZWN0aW9uIG9iamVjdCBmb3IgdGhlIHZpZXcgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgZ2V0VmlldygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmlldztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIEQzIHNlbGVjdGlvbiBvYmplY3QgZm9yIHRoZVxyXG4gICAgICogcGFubmluZyBjb250YWluZXIgZWxlbWVudC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gRDMgc2VsZWN0aW9uIG9iamVjdCBmb3IgdGhlIHBhbm5pbmcgY29udGFpbmVyIGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIGdldFBhbm5pbmdDb250YWluZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bhbm5pbmdDb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBEMyBnZW5lcmF0b3Igb2JqZWN0IHVzZWQgdG9cclxuICAgICAqIGdlbmVyYXRlIHRoZSB0cmVlIG5vZGVzIGNvb3JkaW5hdGVzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb259IEQzIHRyZWUgZ2VuZXJhdG9yIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgZ2V0VHJlZUdlbmVyYXRvcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJlZUdlbmVyYXRvcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhIHNpbmdsZSBub2RlIGdpdmVuIGFuIGlkIG9yIGEgZGF0YSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geyp8b2JqZWN0fSBpZE9yRGF0YUl0ZW0gVGhlIElEIG9yIGRhdGEgaXRlbSB0byByZXRyaWV2ZSB0aGUgRDMgdHJlZSBub2RlIGRhdGEgaXRlbSB3aXRoLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gRDMgdHJlZSBub2RlIGRhdGEgaXRlbS5cclxuICAgICAqL1xyXG4gICAgZ2V0Tm9kZShpZE9yRGF0YUl0ZW0pIHtcclxuICAgICAgICB2YXIgaWQgPSBpZE9yRGF0YUl0ZW07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ29iamVjdCcgJiYgaWQgIT09IG51bGwpXHJcbiAgICAgICAgICAgIGlkID0gdGhpcy5nZXRJZChpZCk7ICAgICAgICBcclxuICAgICAgICB2YXIgcm9vdE5vZGUgPSB0aGlzLmdldFJvb3QoKTtcclxuXHJcbiAgICAgICAgdmFyIGdldE5vZGVDaGlsZHJlbiA9IChub2RlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChub2RlLl9jaGlsZHJlbilcclxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLl9jaGlsZHJlbjtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbm9kZSA9IHJlY3Vyc2l2ZUZpbmQocm9vdE5vZGUsIGdldE5vZGVDaGlsZHJlbiwgeCA9PiB0aGlzLmdldElkKHguZGF0YSkgPT0gaWQpO1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGEgc2luZ2xlIGRhdGEgaXRlbSBnaXZlbiBhbiBpZC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBpZCBUaGUgSUQgdG8gcmV0cmlldmUgdGhlIGRhdGEgaXRlbSB3aXRoLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIGRhdGEgaXRlbSB3aXRoIHRoZSBnaXZlbiBJRC5cclxuICAgICAqL1xyXG4gICAgZ2V0RGF0YUl0ZW0oaWQpIHtcclxuICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZ2V0Tm9kZShpZCk7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCB0aGUgYXJyYXkgb2YgRDMgbm9kZSBkYXRhIGl0ZW1zXHJcbiAgICAgKiB0aGUgRDMgdHJlZSBoYXMgZ2VuZXJhdGVkLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0W119IEFycmF5IG9mIEQzIG5vZGUgZGF0YSBpdGVtcy5cclxuICAgICAqL1xyXG4gICAgZ2V0Tm9kZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHRoZSBhcnJheSBvZiB2aXNpYmxlIEQzIG5vZGVcclxuICAgICAqIGRhdGEgaXRlbXMgdGhlIEQzIHRyZWUgaGFzIGdlbmVyYXRlZC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdFtdfSBBcnJheSBvZiBEMyBub2RlIGRhdGEgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIGdldFZpc2libGVOb2RlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZU5vZGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHRoZSBhcnJheSBvZiBEMyBsaW5rIGRhdGEgaXRlbXNcclxuICAgICAqIHRoZSBEMyB0cmVlIGhhcyBnZW5lcmF0ZWQuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3RbXX0gQXJyYXkgb2YgRDMgbGluayBkYXRhIGl0ZW1zLlxyXG4gICAgICovXHJcbiAgICBnZXRMaW5rcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGlua3M7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBEMyB6b29tIGxpc3RlbmVyIHVzZWQgZm9yXHJcbiAgICAgKiB0aGUgcGFubmluZywgem9vbWluZyBhbmQgZm9jdXMgZmVhdHVyZXMuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbn0gVGhlIEQzIHpvb20gbGlzdGVuZXJcclxuICAgICAqL1xyXG4gICAgZ2V0Wm9vbUxpc3RlbmVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl96b29tTGlzdGVuZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBJRCBmb3IgYSBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhSXRlbSBUaGUgZGF0YSBpdGVtIHRvIGdldCB0aGUgSUQgZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHsqfSBUaGUgSUQgZm9yIHRoZSBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIGdldElkKGRhdGFJdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldElkKGRhdGFJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGNoaWxkcmVuIGRhdGEgaXRlbXMgZm9yIGEgZ2l2ZW4gZGF0YSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YUl0ZW0gVGhlIGRhdGEgaXRlbSB0byBnZXQgdGhlIGNoaWxkcmVuIGRhdGEgaXRlbXMgZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3RbXX0gVGhlIGFycmF5IG9mIGNoaWxkIGRhdGEgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIGdldENoaWxkcmVuKGRhdGFJdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldENoaWxkcmVuKGRhdGFJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHBhcmVudCBJRCBmb3IgYSBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhSXRlbSBUaGUgZGF0YSBpdGVtIHRvIGdldCB0aGUgcGFyZW50IElEIGZyb20uXHJcbiAgICAgKiBAcmV0dXJucyB7Kn0gVGhlIHBhcmVudCBJRCBmb3IgdGhlIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqL1xyXG4gICAgZ2V0UGFyZW50SWQoZGF0YUl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UGFyZW50SWQoZGF0YUl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgSUQgYWNjZXNzb3IgY2FsbGJhY2sgZnVuY3Rpb24sXHJcbiAgICAgKiBkZWZpbmluZyBob3cgdG8gZ2V0IGEgdW5pcXVlIElEIGZyb20gYVxyXG4gICAgICogZ2l2ZW4gZGF0YSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2dldElkQ2FsbEJhY2t9IG5ld0lkQWNjZXNzb3IgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gZ2V0IHRoZSBJRCBmb3IgYSBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldElkQWNjZXNzb3IobmV3SWRBY2Nlc3Nvcikge1xyXG4gICAgICAgIHRoaXMuX2dldElkID0gbmV3SWRBY2Nlc3NvcjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGNoaWxkcmVuIGFjY2Vzc29yIGNhbGxiYWNrIGZ1bmN0aW9uLFxyXG4gICAgICogZGVmaW5pbmcgaG93IHRvIGdldCB0aGUgY2hpbGRyZW4gZGF0YSBpdGVtc1xyXG4gICAgICogZnJvbSBhIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtnZXRDaGlsZHJlbkNhbGxCYWNrfSBuZXdDaGlsZHJlbkFjY2Vzc29yIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGdldCB0aGUgY2hpbGRyZW4gZm9yIGEgZ2l2ZW4gZGF0YSBpdGVtLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRDaGlsZHJlbkFjY2Vzc29yKG5ld0NoaWxkcmVuQWNjZXNzb3IpIHtcclxuICAgICAgICB0aGlzLl9nZXRDaGlsZHJlbiA9IG5ld0NoaWxkcmVuQWNjZXNzb3I7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBwYXJlbnQgSUQgYWNjZXNzb3IgY2FsbGJhY2sgZnVuY3Rpb24sXHJcbiAgICAgKiBkZWZpbmluZyBob3cgdG8gZ2V0IHRoZSBwYXJlbnQgSUQgZnJvbSBhXHJcbiAgICAgKiBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Z2V0UGFyZW50SWRDYWxsQmFja30gbmV3UGFyZW50SWRBY2Nlc3NvciBDYWxsYmFjayBmdW5jdGlvbiB0byBnZXQgdGhlIHBhcmVudCBpZCBmb3IgYSBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldFBhcmVudElkQWNjZXNzb3IobmV3UGFyZW50SWRBY2Nlc3Nvcikge1xyXG4gICAgICAgIHRoaXMuX2dldFBhcmVudElkID0gbmV3UGFyZW50SWRBY2Nlc3NvcjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHdpZHRoIG9mIFNWRywgaW5jbHVkaW5nIHRoZSBtYXJnaW5zLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgd2lkdGggb2YgdGhlIFNWRy5cclxuICAgICAqL1xyXG4gICAgZ2V0V2lkdGgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGhXaXRob3V0TWFyZ2lucygpIC0gdGhpcy5nZXRNYXJnaW5zKCkubGVmdCAtIHRoaXMuZ2V0TWFyZ2lucygpLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaGVpZ2h0IG9mIFNWRywgaW5jbHVkaW5nIHRoZSBtYXJnaW5zLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgaGVpZ2h0IG9mIHRoZSBTVkcuXHJcbiAgICAgKi9cclxuICAgIGdldEhlaWdodCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZWlnaHRXaXRob3V0TWFyZ2lucygpIC0gdGhpcy5nZXRNYXJnaW5zKCkudG9wIC0gdGhpcy5nZXRNYXJnaW5zKCkuYm90dG9tO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgbWFyZ2lucyBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5ld01hcmdpbnMgVGhlIG1hcmdpbiBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3TWFyZ2lucy50b3AgVGhlIG1hcmdpbiB0b3AgZm9yIHRoZSB0cmVlIGRpYWdyYW0uXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3TWFyZ2lucy5yaWdodCBUaGUgbWFyZ2luIHJpZ2h0IGZvciB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld01hcmdpbnMuYm90dG9tIFRoZSBtYXJnaW4gYm90dG9tIGZvciB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld01hcmdpbnMubGVmdCBUaGUgbWFyZ2luIGxlZnQgZm9yIHRoZSB0cmVlIGRpYWdyYW0uXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldE1hcmdpbnMobmV3TWFyZ2lucykge1xyXG4gICAgICAgIHRoaXMuX21hcmdpbnMgPSBuZXdNYXJnaW5zO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbWFyZ2lucyBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG1hcmdpbnMgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBnZXRNYXJnaW5zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tYXJnaW5zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgd2lkdGggb2YgdGhlIFNWRyBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBuZXdXaWR0aFdpdGhvdXRNYXJnaW4gVGhlIHdpZHRoIG9mIFNWRyBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0V2lkdGhXaXRob3V0TWFyZ2lucyhuZXdXaWR0aFdpdGhvdXRNYXJnaW4pIHtcclxuICAgICAgICB0aGlzLl93aWR0aFdpdGhvdXRNYXJnaW4gPSBuZXdXaWR0aFdpdGhvdXRNYXJnaW47XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB3aWR0aCBvZiB0aGUgU1ZHIGZvciB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogRG9lcyBub3QgaW5jbHVkZSB0aGUgbWFyZ2lucy5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVGhlIHdpZHRoIChub3QgaW5jbHVkaW5nIHRoZSBtYXJnaW5zKSBvZiB0aGUgU1ZHIGZvciB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICovXHJcbiAgICBnZXRXaWR0aFdpdGhvdXRNYXJnaW5zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aFdpdGhvdXRNYXJnaW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIFNWRyBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBuZXdIZWlnaHRXaXRob3V0TWFyZ2luIFRoZSBoZWlnaHQgb2YgU1ZHIGZvciB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRIZWlnaHRXaXRob3V0TWFyZ2lucyhuZXdIZWlnaHRXaXRob3V0TWFyZ2luKSB7XHJcbiAgICAgICAgdGhpcy5faGVpZ2h0V2l0aG91dE1hcmdpbiA9IG5ld0hlaWdodFdpdGhvdXRNYXJnaW47XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBoZWlnaHQgb2YgdGhlIFNWRyBmb3IgdGhlIHRyZWUgZGlhZ3JhbS5cclxuICAgICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIG1hcmdpbnMuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBoZWlnaHQgKG5vdCBpbmNsdWRpbmcgdGhlIG1hcmdpbnMpIG9mIHRoZSBTVkcgZm9yIHRoZSB0cmVlIGRpYWdyYW0uXHJcbiAgICAgKi9cclxuICAgIGdldEhlaWdodFdpdGhvdXRNYXJnaW5zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oZWlnaHRXaXRob3V0TWFyZ2luO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgU1ZHLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZURpbWVuc2lvbnMoKSB7XHJcbiAgICAgICAgLy8gVXBkYXRlIFNWRyB3aXRoIG5ldyB3aWR0aCBhbmQgaGVpZ2h0XHJcbiAgICAgICAgdGhpcy5nZXRTdmcoKVxyXG4gICAgICAgICAgICAvLyBVc2Ugdmlld0JveCB0byBzZXQgU1ZHIHdpZHRoIGFuZCBoZWlnaHRcclxuICAgICAgICAgICAgLy8gc28gaXQgaXMgcmVzcG9uc2l2ZSwgYW5kIGNhbiBiZSByZXNpemVkXHJcbiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBwYXJlbnQgZWxlbWVudFxyXG4gICAgICAgICAgICAuYXR0cihcInZpZXdCb3hcIiwgXCIwIDAgXCIgKyB0aGlzLmdldFdpZHRoV2l0aG91dE1hcmdpbnMoKSArIFwiIFwiICsgdGhpcy5nZXRIZWlnaHRXaXRob3V0TWFyZ2lucygpKTtcclxuXHJcbiAgICAgICAgdmFyIG1hcmdpbnMgPSB0aGlzLmdldE1hcmdpbnMoKTtcclxuXHJcbiAgICAgICAgdmFyIG5lZWRUb0NlbnRlclZpZXcgPSBmYWxzZTtcclxuICAgICAgICAvLyB1cGRhdGUgdGhlIHRyZWUgZ2VuZXJhdG9yIHdpdGggdGhlIG5ldyB3aWR0aCBhbmQgaGVpZ2h0XHJcbiAgICAgICAgdmFyIHNpemluZ01vZGUgPSB0aGlzLm5vZGVTZXR0aW5ncy5nZXRTaXppbmdNb2RlKCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzaXppbmdNb2RlID09PSAnc3RyaW5nJylcclxuICAgICAgICAgICAgc2l6aW5nTW9kZSA9IHNpemluZ01vZGUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHNpemluZ01vZGUgPT09IFwibm9kZXNpemVcIikge1xyXG4gICAgICAgICAgICB0aGlzLmdldFRyZWVHZW5lcmF0b3IoKVxyXG4gICAgICAgICAgICAgICAgLm5vZGVTaXplKHRoaXMuX2dldE5vZGVTaXplKCkpO1xyXG5cclxuICAgICAgICAgICAgLy8gT25seSBwZXJmb3JtIGNlbnRlcmluZyBpZiBub2RlIGNlbnRlcmluZyBpcyB0dXJuZWQgb2ZmLFxyXG4gICAgICAgICAgICAvLyBhcyB0aGF0IHdvdWxkIGNlbnRlciB0byB0aGUgcm9vdCBub2RlIGFueXdheS4gTm9kZVxyXG4gICAgICAgICAgICAvLyBjZW50ZXJpbmcgaXMgdHVybmVkIG9uIHdoZW4gYWxsb3cgZm9jdXMgaXMgdHVybmVkIG9uLlxyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRBbGxvd0ZvY3VzKCkgPT09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgbmVlZFRvQ2VudGVyVmlldyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldFRyZWVHZW5lcmF0b3IoKVxyXG4gICAgICAgICAgICAgICAgLnNpemUoW3RoaXMuZ2V0SGVpZ2h0KCksIHRoaXMuZ2V0V2lkdGgoKV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5lZWRUb0NlbnRlclZpZXcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmlldyB3aXRoIHRoZSBuZXcgbWFyZ2luc1xyXG4gICAgICAgICAgICB0aGlzLmdldFZpZXcoKVxyXG4gICAgICAgICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyBtYXJnaW5zLmxlZnQgKyBcIixcIiArIG1hcmdpbnMudG9wICsgXCIpXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gTW92ZSB0aGUgdmlldyBkb3dud2FyZHMgYXMgdG8gY2VudGVyIHRoZSByb290IG5vZGVcclxuICAgICAgICAgICAgLy8gVGhpcyBpcyBkdWUgdG8gd2hlbiB5b3UgdXNlIG5vZGUtc2l6ZSwgaXQgc2V0cyB0aGVcclxuICAgICAgICAgICAgLy8gbm9kZSBvcmlnaW4gYXQgMCwgMCBpbnN0ZWFkIG9mIGF1dG9tYXRpY2FsbHlcclxuICAgICAgICAgICAgLy8gY2VudGVyaW5nIGl0IGFzIGl0IGRvZXMgd2l0aCBzaXplKClcclxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3KClcclxuICAgICAgICAgICAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgbWFyZ2lucy5sZWZ0ICsgXCIsIFwiICsgKHRoaXMuZ2V0SGVpZ2h0KCkgLyAyICsgbWFyZ2lucy50b3ApICsgXCIpXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgd2UgbmVlZCB0byBjZW50ZXIgdGhlIHRyZWUgYnkgYWRqdXN0aW5nIHRoZSB2aWV3IGFuZCB0aGUgbm9kZSBwb3NpdGlvblxyXG4gICAgICAgIHZhciB4MCwgeTA7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3JpZW50YXRpb24oKSA9PT0gJ3RvcFRvQm90dG9tJylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmIChuZWVkVG9DZW50ZXJWaWV3ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgeDAgPSB0aGlzLmdldFdpZHRoKCkgLyAyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgeDAgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHkwID0gdGhpcy5nZXRIZWlnaHQoKSAvIDQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmIChuZWVkVG9DZW50ZXJWaWV3ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgeDAgPSB0aGlzLmdldEhlaWdodCgpIC8gMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHgwID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB5MCA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFJvb3QoKS54MCA9IHgwO1xyXG4gICAgICAgIHRoaXMuZ2V0Um9vdCgpLnkwID0geTA7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmdldFpvb21MaXN0ZW5lcigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Wm9vbUxpc3RlbmVyKClcclxuICAgICAgICAgICAgICAgIC5leHRlbnQoW1swLCAwXSwgW3RoaXMuZ2V0V2lkdGhXaXRob3V0TWFyZ2lucygpLCB0aGlzLmdldEhlaWdodFdpdGhvdXRNYXJnaW5zKCldXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGVzIHRoZSBzZXR0aW5ncyB0byBlbnN1cmUgdGhlXHJcbiAgICAgKiB0cmVlIGRpYWdyYW0gaXMgcmVhZHkgdG8gYmUgZ2VuZXJhdGVkLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJlIGNvbXB1bHNvcnkgb3B0aW9ucyBhcmUgcHJvdmlkZWRcclxuICAgICAgICBpZiAoIXRoaXMuZ2V0RWxlbWVudCgpKVxyXG4gICAgICAgICAgICB0aHJvdyBcIk5lZWQgdG8gcGFzcyBpbiBhbiBlbGVtZW50IGFzIHBhcnQgb2YgdGhlIG9wdGlvbnNcIjtcclxuICAgICAgICBpZiAoIXRoaXMuZ2V0RGF0YSgpKVxyXG4gICAgICAgICAgICB0aHJvdyBcIk5lZWQgdG8gcGFzcyBpbiBkYXRhIGFzIHBhcnQgb2YgdGhlIG9wdGlvbnNcIjtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2tzIGlmIG1hbmRhdG9yeSBtZXRob2RzIHRvIHNwZWNpZnkgZXhpc3RzXHJcbiAgICAgICAgaWYgKCF0aGlzLl9nZXRJZClcclxuICAgICAgICAgICAgdGhyb3cgXCJOZWVkIHRvIGRlZmluZSB0aGUgZ2V0SWQgZnVuY3Rpb24gYXMgcGFydCBvZiB0aGUgb3B0aW9uc1wiO1xyXG4gICAgICAgIHRoaXMubG9hZE9uRGVtYW5kU2V0dGluZ3MudmFsaWRhdGVTZXR0aW5ncygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbmQgc2V0IHVwIHRoZSB0aGUgdHJlZSBkaWFncmFtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgdGhpcy5yZWdlbmVyYXRlTm9kZURhdGEoKTtcclxuXHJcbiAgICAgICAgd2hpbGUgKHRoaXMuZ2V0RWxlbWVudCgpLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50KCkucmVtb3ZlQ2hpbGQodGhpcy5nZXRFbGVtZW50KCkuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBzdmcsIGFuZCBzZXQgaXRzIGRpbWVuc2lvbnNcclxuICAgICAgICB0aGlzLl9zdmcgPSBkMy5zZWxlY3QodGhpcy5nZXRFbGVtZW50KCkpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgICAgICAgICAgICAgIC5jbGFzc2VkKCdtaXRjaC1kMy10cmVlJywgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIC5jbGFzc2VkKHRoaXMuZ2V0VGhlbWUoKSwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIC5hdHRyKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcInhNaWRZTWlkIG1lZXRcIilcclxuICAgICAgICAgICAgICAgIC5zdHlsZShcIndpZHRoXCIsIFwiMTAwJVwiKVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSB2aWV3IHdpdGggbWFyZ2luc1xyXG4gICAgICAgIHRoaXMuX3ZpZXcgPSB0aGlzLmdldFN2ZygpLmFwcGVuZChcImdcIilcclxuICAgICAgICAgICAgLmNsYXNzZWQoXCJ2aWV3XCIsIHRydWUpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdHJlZSBnZW5lcmF0b3IgdG8gcG9zaXRpb24gdGhlIG5vZGVzXHJcbiAgICAgICAgdGhpcy5fdHJlZUdlbmVyYXRvciA9IGQzLnRyZWUoKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBwYW5uaW5nIGNvbnRhaW5lciB3aGljaCBwYW5uaW5nIHNob3VsZCBhY3QgdXBvblxyXG4gICAgICAgIHRoaXMuX3Bhbm5pbmdDb250YWluZXIgPSB0aGlzLmdldFZpZXcoKS5hcHBlbmQoXCJnXCIpXHJcbiAgICAgICAgICAgIC5jbGFzc2VkKFwicGFubmluZ0NvbnRhaW5lclwiLCB0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fem9vbUxpc3RlbmVyID0gZDMuem9vbSgpXHJcbiAgICAgICAgICAgIC8vIExpbWl0IHpvb20gbGV2ZWxcclxuICAgICAgICAgICAgLnNjYWxlRXh0ZW50KFt0aGlzLmdldE1pblNjYWxlKCksIHRoaXMuZ2V0TWF4U2NhbGUoKV0pXHJcbiAgICAgICAgICAgIC8vIFpvb20gaW4gRDMgdHJhbnNsYXRlcyB0byB0aGUgbmF0aXZlIEhUTUwvSlMgZXZlbnRzIG9mOlxyXG4gICAgICAgICAgICAvLyAtIERvdWJsZSBDbGlja2luZyAoaS5lLiB0byB6b29tIGluKVxyXG4gICAgICAgICAgICAvLyAtIERyYWdnaW5nIChpLmUuIHBhbm5pbmcgb3IgbW92aW5nIGFyb3VuZClcclxuICAgICAgICAgICAgLy8gLSBXaGVlbCAoaS5lLiB6b29tIGluL291dClcclxuICAgICAgICAgICAgLm9uKFwiem9vbVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBUaGUgXCJ6b29tXCIgZXZlbnQgcG9wdWxhdGVzIGQzLmV2ZW50IHdpdGggYW4gb2JqZWN0IHRoYXQgaGFzXHJcbiAgICAgICAgICAgICAgICAvLyBhIFwidHJhbnNmb3JtXCIgcHJvcGVydHkgKGFuIG9iamVjdCB3aXRoIHRocmVlIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgIC8vIG9mIHgsIHksIGFuZCBrKSwgd2hlcmUgeCBhbmQgeSBpcyBmb3IgdHJhbnNsYXRpb24gcHVycG9zZXMsXHJcbiAgICAgICAgICAgICAgICAvLyBhbmQgayBpcyB0aGUgc2NhbGluZyBmYWN0b3JcclxuICAgICAgICAgICAgICAgIHZhciB0cmFuc2Zvcm0gPSBkMy5ldmVudC50cmFuc2Zvcm07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFBhbm5pbmdDb250YWluZXIoKS5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZ2V0U3ZnKCkuY2FsbCh0aGlzLmdldFpvb21MaXN0ZW5lcigpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0QWxsb3dQYW4oKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdmcoKVxyXG4gICAgICAgICAgICAgICAgLm9uKFwibW91c2Vkb3duLnpvb21cIiwgbnVsbClcclxuICAgICAgICAgICAgICAgIC5vbihcInRvdWNoc3RhcnQuem9vbVwiLCBudWxsKVxyXG4gICAgICAgICAgICAgICAgLm9uKFwidG91Y2htb3ZlLnpvb21cIiwgbnVsbClcclxuICAgICAgICAgICAgICAgIC5vbihcInRvdWNoZW5kLnpvb21cIiwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmdldEFsbG93Wm9vbSgpID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFN2ZygpXHJcbiAgICAgICAgICAgICAgICAub24oXCJkYmxjbGljay56b29tXCIsIG51bGwpXHJcbiAgICAgICAgICAgICAgICAub24oXCJ3aGVlbC56b29tXCIsIG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVEaW1lbnNpb25zKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3BvcHVsYXRlVW5kZXJseWluZ0NoaWxkcmVuKHRoaXMuZ2V0Um9vdCgpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0Um9vdCgpLmNoaWxkcmVuKVxyXG4gICAgICAgICAgICB0aGlzLmdldFJvb3QoKS5jaGlsZHJlbi5mb3JFYWNoKHRoaXMuY29sbGFwc2VSZWN1cnNpdmVseSk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3Rpb24odGhpcy5nZXRSb290KCkpO1xyXG5cclxuICAgICAgICAvLyBDYWxsIHRoZSBmaXJzdCB1cGRhdGUsIHdoaWNoIHJlbmRlcnNcclxuICAgICAgICAvLyB0aGUgaW5pdGlhbCB0cmVlXHJcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5nZXRSb290KCkpO1xyXG5cclxuICAgICAgICAvLyBDZW50ZXJzIHRoZSByb290IG5vZGVcclxuICAgICAgICB0aGlzLmNlbnRlck5vZGUodGhpcy5nZXRSb290KCkpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4cGFuZHMgdGhlIGdpdmVuIG5vZGUgZGF0YSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbm9kZURhdGFJdGVtIFRoZSBEMyBub2RlIGRhdGEgaXRlbSB0byBleHBhbmQuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGV4cGFuZChub2RlRGF0YUl0ZW0pIHtcclxuICAgICAgICBub2RlRGF0YUl0ZW0uY2hpbGRyZW4gPSBub2RlRGF0YUl0ZW0uX2NoaWxkcmVuO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhwYW5kcyB0aGUgZ2l2ZW4gbm9kZSBkYXRhIGl0ZW0sXHJcbiAgICAgKiBhbmQgaXRzIGNoaWxkcmVuIGFuZCBkZXNjZW5kYW50cy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgRDMgbm9kZSBkYXRhIGl0ZW0gdG8gZXhwYW5kLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBleHBhbmRSZWN1cnNpdmVseShub2RlRGF0YUl0ZW0pIHtcclxuICAgICAgICB2YXIgcmVjID0gZnVuY3Rpb24gcmVjdXJzaXZlKGRpcmVjdE5vZGVEYXRhSXRlbSkge1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0Tm9kZURhdGFJdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3ROb2RlRGF0YUl0ZW0uY2hpbGRyZW4uZm9yRWFjaChyZWN1cnNpdmUpO1xyXG4gICAgICAgICAgICAgICAgZGlyZWN0Tm9kZURhdGFJdGVtLmNoaWxkcmVuID0gZGlyZWN0Tm9kZURhdGFJdGVtLl9jaGlsZHJlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVjKG5vZGVEYXRhSXRlbSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2xsYXBzZXMgdGhlIGdpdmVuIG5vZGUgZGF0YSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbm9kZURhdGFJdGVtIFRoZSBEMyBub2RlIGRhdGEgaXRlbSB0byBjb2xsYXBzZS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgY29sbGFwc2Uobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgbm9kZURhdGFJdGVtLmNoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbGxhcHNlcyB0aGUgZ2l2ZW4gbm9kZSBkYXRhIGl0ZW0sXHJcbiAgICAgKiBhbmQgaXRzIGNoaWxkcmVuIGFuZCBkZXNjZW5kYW50cy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgRDMgbm9kZSBkYXRhIGl0ZW0gdG8gY29sbGFwc2UuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGNvbGxhcHNlUmVjdXJzaXZlbHkobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgdmFyIHJlYyA9IGZ1bmN0aW9uIHJlY3Vyc2l2ZShkaXJlY3ROb2RlRGF0YUl0ZW0pIHtcclxuICAgICAgICAgICAgaWYgKGRpcmVjdE5vZGVEYXRhSXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgZGlyZWN0Tm9kZURhdGFJdGVtLmNoaWxkcmVuLmZvckVhY2gocmVjdXJzaXZlKTtcclxuICAgICAgICAgICAgICAgIGRpcmVjdE5vZGVEYXRhSXRlbS5jaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJlYyhub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFBvcHVsYXRlcyB0aGUgbm9kZSdzIGNoaWxkcmVuIHRvIGEgaGlkZGVuIHByb3BlcnR5LlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbm9kZURhdGFJdGVtIFRoZSBEMyBub2RlIGRhdGEgaXRlbSB0byBjb2xsYXBzZS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgX3BvcHVsYXRlVW5kZXJseWluZ0NoaWxkcmVuKG5vZGVEYXRhSXRlbSkge1xyXG4gICAgICAgIHZhciByZWMgPSBmdW5jdGlvbiByZWN1cnNpdmUoZGlyZWN0Tm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgICAgIGlmIChkaXJlY3ROb2RlRGF0YUl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGRpcmVjdE5vZGVEYXRhSXRlbS5fY2hpbGRyZW4gPSBkaXJlY3ROb2RlRGF0YUl0ZW0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICBkaXJlY3ROb2RlRGF0YUl0ZW0uX2NoaWxkcmVuLmZvckVhY2gocmVjdXJzaXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVjKG5vZGVEYXRhSXRlbSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgbm9kZSBzZWxlY3Rpb25zIGZvciBhIGdpdmVuIG5vZGUgYW5kIGl0J3MgY2hpbGRyZW4uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0gVGhlIEQzIG5vZGUgZGF0YSBpdGVtIHRvIHJlbW92ZSBzZWxlY3Rpb24gZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgcmVtb3ZlU2VsZWN0aW9uKG5vZGVEYXRhSXRlbSkge1xyXG4gICAgICAgIHZhciByZWMgPSBmdW5jdGlvbiByZWN1cnNpdmUoZGlyZWN0Tm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgICAgIGRpcmVjdE5vZGVEYXRhSXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0Tm9kZURhdGFJdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3ROb2RlRGF0YUl0ZW0uY2hpbGRyZW4uZm9yRWFjaChyZWN1cnNpdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZWMobm9kZURhdGFJdGVtKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENlbnRlciB0aGUgdmlldyB0byBhIEQzIHRyZWUgbm9kZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBub2RlRGF0YUl0ZW0gVGhlIEQzIG5vZGUgZGF0YSBpdGVtIHRvIGZvY3VzIG9uLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBjZW50ZXJOb2RlKG5vZGVEYXRhSXRlbSkge1xyXG4gICAgICAgIHZhciB0cmFuc2Zvcm0gPSBkMy56b29tVHJhbnNmb3JtKHRoaXMuZ2V0U3ZnKCkubm9kZSgpKTtcclxuICAgICAgICB2YXIgc2NhbGUgPSB0cmFuc2Zvcm0uaztcclxuXHJcbiAgICAgICAgdmFyIHgsIHksIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3JpZW50YXRpb24oKS50b0xvd2VyQ2FzZSgpID09PSAndG9wdG9ib3R0b20nKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgeCA9IC1ub2RlRGF0YUl0ZW0ueDA7XHJcbiAgICAgICAgICAgIHkgPSAtbm9kZURhdGFJdGVtLnkwO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGVYID0geCAqIHNjYWxlICsgdGhpcy5nZXRXaWR0aCgpIC8gMjtcclxuICAgICAgICAgICAgdHJhbnNsYXRlWSA9IHkgKiBzY2FsZSArIHRoaXMuZ2V0SGVpZ2h0KCkgLyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB4ID0gLW5vZGVEYXRhSXRlbS55MDtcclxuICAgICAgICAgICAgeSA9IC1ub2RlRGF0YUl0ZW0ueDA7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVggPSB4ICogc2NhbGUgKyB0aGlzLmdldFdpZHRoKCkgLyA0O1xyXG4gICAgICAgICAgICB0cmFuc2xhdGVZID0geSAqIHNjYWxlICsgdGhpcy5nZXRIZWlnaHQoKSAvIDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFN2ZygpLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgICAuZHVyYXRpb24odGhpcy5nZXREdXJhdGlvbigpKVxyXG4gICAgICAgICAgICAuY2FsbCh0aGlzLmdldFpvb21MaXN0ZW5lcigpLnRyYW5zZm9ybSwgZDMuem9vbUlkZW50aXR5LnRyYW5zbGF0ZSh0cmFuc2xhdGVYLCB0cmFuc2xhdGVZKS5zY2FsZShzY2FsZSkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJpZ2dlcnMgdGhlIG5vZGVDbGljayBldmVudCB3aGVuIGFcclxuICAgICAqIEQzIG5vZGUgaXMgY2xpY2tlZCBvbiwgYW5kIHByb2NlZWRzXHJcbiAgICAgKiB0byBmb2N1cy9leHBhbmQvY29sbGFwc2UgdGhlIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0gVGhlIEQzIG5vZGUgZGF0YSBpdGVtIHRoYXQgd2FzIGNsaWNrZWQuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBEMyBub2RlIGJlaW5nIGNsaWNrZWQgaW4gdGhlIGFycmF5IG9mIHNpYmxpbmdzLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3RbXX0gYXJyIEFycmF5IG9mIHNpYmxpbmdzIEQzIG5vZGUsIGluY2x1c2l2ZSBvZiB0aGUgY2xpY2tlZCBub2RlIGRhdGEgaXRlbSBpdHNlbGYuXHJcbiAgICAgKiBAZW1pdHMge25vZGVDbGlja30gRW1pdCBub2RlIGNsaWNrIGV2ZW50LlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgbWVhbmluZyBpdCBzdWNjZXNzZnVsbHkgZm9jdXNlZC9leHBhbmRlZC9jb2xsYXBzZWQgYSBub2RlLiBGYWxzZSBvdGhlcndpc2UuXHJcbiAgICAgKi9cclxuICAgIF9vbk5vZGVDbGljayhub2RlRGF0YUl0ZW0sIGluZGV4LCBhcnIpIHtcclxuICAgICAgICB2YXIgZXZlbnRUeXBlID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5nZXRBbGxvd0ZvY3VzKCkpXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9ICdmb2N1cyc7XHJcbiAgICAgICAgZWxzZSBpZiAobm9kZURhdGFJdGVtLmNoaWxkcmVuKVxyXG4gICAgICAgICAgICBldmVudFR5cGUgPSAnY29sbGFwc2UnO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gJ2V4cGFuZCc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGV2ZW50ID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBldmVudFR5cGUsXHJcbiAgICAgICAgICAgIGNvbnRpbnVlOiB0cnVlLFxyXG4gICAgICAgICAgICBub2RlRGF0YUl0ZW06IG5vZGVEYXRhSXRlbSxcclxuICAgICAgICAgICAgbm9kZURhdGFJdGVtSW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICBub2RlRGF0YUl0ZW1zOiBhcnJcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KCdub2RlQ2xpY2snLCBldmVudCk7XHJcbiAgICAgICAgaWYgKGV2ZW50LmNvbnRpbnVlID09PSBmYWxzZSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmdldEFsbG93Rm9jdXMoKSlcclxuICAgICAgICAgICAgdGhpcy5ub2RlRm9jdXMuY2FsbCh0aGlzLCBub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ub2RlVG9nZ2xlLmNhbGwodGhpcywgbm9kZURhdGFJdGVtKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBjaGlsZCBEMyB0cmVlIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJlbnROb2RlRGF0YUl0ZW0gVGhlIHBhcmVudCBEMyB0cmVlIG5vZGUgZGF0YSBpdGVtLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGFJdGVtIFRoZSBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgbmV3bHkgY3JlYXRlZCBEMyBub2RlO1xyXG4gICAgICovXHJcbiAgICBfY3JlYXRlTm9kZShwYXJlbnROb2RlRGF0YUl0ZW0sIGRhdGFJdGVtKSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgRDMgbm9kZSBvYmplY3QgZnJvbSByZXN1bHRpbmcgZGF0YSBpdGVtcyB1c2luZyBkMy5oaWVyYXJjaHkoKVxyXG4gICAgICAgIHZhciBuZXdOb2RlID0gZDMuaGllcmFyY2h5KGRhdGFJdGVtKTtcclxuXHJcbiAgICAgICAgLy8gTm93IGFkZCBtaXNzaW5nIHByb3BlcnRpZXMgdG8gTm9kZSBsaWtlIGNoaWxkLCBwYXJlbnQsIGRlcHRoXHJcbiAgICAgICAgbmV3Tm9kZS5kZXB0aCA9IHBhcmVudE5vZGVEYXRhSXRlbS5kZXB0aCArIDE7XHJcbiAgICAgICAgbmV3Tm9kZS5oZWlnaHQgPSBwYXJlbnROb2RlRGF0YUl0ZW0uaGVpZ2h0IC0gMTtcclxuICAgICAgICBuZXdOb2RlLnBhcmVudCA9IHBhcmVudE5vZGVEYXRhSXRlbTtcclxuICAgICAgICBuZXdOb2RlLmlkID0gdGhpcy5nZXRJZC5jYWxsKHRoaXMsIGRhdGFJdGVtKTtcclxuICAgICAgICByZXR1cm4gbmV3Tm9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW5kIGFkZHMgYSBjaGlsZCBEMyB0cmVlXHJcbiAgICAgKiBub2RlIHRvIGEgZ2l2ZW4gcGFyZW50IEQzIHRyZWUgbm9kZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmVudE5vZGVEYXRhSXRlbSBUaGUgcGFyZW50IEQzIHRyZWUgbm9kZSBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YUl0ZW0gVGhlIGRhdGEgaXRlbS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBuZXdseSBjcmVhdGVkIGFuZCBhZGRlZCBEMyBub2RlO1xyXG4gICAgICovXHJcbiAgICBfYWRkVW5kZXJseWluZ0NoaWxkTm9kZShwYXJlbnROb2RlRGF0YUl0ZW0sIGRhdGFJdGVtKSB7XHJcbiAgICAgICAgdmFyIG5ld05vZGUgPSB0aGlzLl9jcmVhdGVOb2RlKHBhcmVudE5vZGVEYXRhSXRlbSwgZGF0YUl0ZW0pO1xyXG4gICAgICAgIHBhcmVudE5vZGVEYXRhSXRlbS5fY2hpbGRyZW4ucHVzaChuZXdOb2RlKTtcclxuICAgICAgICByZXR1cm4gbmV3Tm9kZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzIHRoZSBsb2FkZWQgZGF0YSBmcm9tIEFKQVhcclxuICAgICAqIHJlc3VsdGluZyBmcm9tIGEgbm9kZSBleHBhbmQuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0gVGhlIEQzIG5vZGUgZGF0YSBpdGVtIGJlaW5nIGV4cGFuZGVkLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3RbXX0gcmVzdWx0IFRoZSBjaGlsZHJlbiBkYXRhIGl0ZW1zIHRvIHByb2Nlc3MuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIF9wcm9jZXNzTG9hZGVkRGF0YUZvck5vZGVGb2N1cyhub2RlRGF0YUl0ZW0sIHJlc3VsdCkge1xyXG4gICAgICAgIG5vZGVEYXRhSXRlbS5fY2hpbGRyZW4gPSBbXTtcclxuICAgICAgICByZXN1bHQuZm9yRWFjaCgoY3VycmVudEl0ZW0pID0+IHRoaXMuX2FkZFVuZGVybHlpbmdDaGlsZE5vZGUobm9kZURhdGFJdGVtLCBjdXJyZW50SXRlbSkpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1bGF0ZVVuZGVybHlpbmdDaGlsZHJlbihub2RlRGF0YUl0ZW0pO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVRyZWVXaXRoRm9jdXNPbk5vZGUobm9kZURhdGFJdGVtKTtcclxuXHJcbiAgICAgICAgdmFyIHdhc1NlbGVjdGVkID0gbm9kZURhdGFJdGVtLnNlbGVjdGVkO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0aW9uKHRoaXMuZ2V0Um9vdCgpKTtcclxuICAgICAgICBub2RlRGF0YUl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZShub2RlRGF0YUl0ZW0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5nZXRBbGxvd05vZGVDZW50ZXJpbmcoKSA9PT0gdHJ1ZSAmJiBcclxuICAgICAgICAgICAgKHdhc1NlbGVjdGVkID09PSBmYWxzZSB8fCB0eXBlb2Ygd2FzU2VsZWN0ZWQgPT09ICd1bmRlZmluZWQnKSlcclxuICAgICAgICAgICAgdGhpcy5jZW50ZXJOb2RlKG5vZGVEYXRhSXRlbSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb2N1c2VzIHRvIGEgbm9kZSwgZ2l2ZW4gYSBub2RlIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgbm9kZSBiZWluZyBmb2N1c2VkIG9uLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBub2RlRm9jdXMobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgaWYgKCFub2RlRGF0YUl0ZW0uY2hpbGRyZW4gJiYgIW5vZGVEYXRhSXRlbS5fY2hpbGRyZW5cclxuICAgICAgICAgICAgJiYgdGhpcy5sb2FkT25EZW1hbmRTZXR0aW5ncy5pc0VuYWJsZWQoKVxyXG4gICAgICAgICAgICAmJiB0aGlzLmxvYWRPbkRlbWFuZFNldHRpbmdzLmhhc0NoaWxkcmVuKG5vZGVEYXRhSXRlbS5kYXRhKSkge1xyXG4gICAgICAgICAgICB2YXIgcHJvY2Vzc0RhdGEgPSAocmVzdWx0KSA9PiB0aGlzLl9wcm9jZXNzTG9hZGVkRGF0YUZvck5vZGVGb2N1cyhub2RlRGF0YUl0ZW0sIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZE9uRGVtYW5kU2V0dGluZ3MubG9hZENoaWxkcmVuKG5vZGVEYXRhSXRlbS5kYXRhLCBwcm9jZXNzRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRyZWVXaXRoRm9jdXNPbk5vZGUobm9kZURhdGFJdGVtKTtcclxuXHJcbiAgICAgICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IG5vZGVEYXRhSXRlbS5zZWxlY3RlZDtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3Rpb24odGhpcy5nZXRSb290KCkpO1xyXG4gICAgICAgICAgICBub2RlRGF0YUl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy51cGRhdGUobm9kZURhdGFJdGVtKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEFsbG93Tm9kZUNlbnRlcmluZygpID09PSB0cnVlICYmIFxyXG4gICAgICAgICAgICAgICAgKHdhc1NlbGVjdGVkID09PSBmYWxzZSB8fCB0eXBlb2Ygd2FzU2VsZWN0ZWQgPT09ICd1bmRlZmluZWQnKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY2VudGVyTm9kZShub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3MgdGhlIGxvYWRlZCBkYXRhIGZyb20gQUpBWFxyXG4gICAgICogcmVzdWx0aW5nIGZyb20gYSBub2RlIHRvZ2dsZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgRDMgbm9kZSBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdFtdfSByZXN1bHQgQXJyYXkgb2Ygc2libGluZyBub2RlIGRhdGEgaXRlbXMsIGluY2x1c2l2ZSB0aGUgbm9kZSBiZWluZyB0b2dnbGVkLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBfcHJvY2Vzc0xvYWRlZERhdGFGb3JOb2RlVG9nZ2xlKG5vZGVEYXRhSXRlbSwgcmVzdWx0KSB7XHJcbiAgICAgICAgbm9kZURhdGFJdGVtLl9jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgIHJlc3VsdC5mb3JFYWNoKChjdXJyZW50SXRlbSkgPT4gdGhpcy5fYWRkVW5kZXJseWluZ0NoaWxkTm9kZShub2RlRGF0YUl0ZW0sIGN1cnJlbnRJdGVtKSk7XHJcblxyXG4gICAgICAgIHRoaXMuZXhwYW5kKG5vZGVEYXRhSXRlbSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlKG5vZGVEYXRhSXRlbSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0QWxsb3dOb2RlQ2VudGVyaW5nKCkgPT09IHRydWUpXHJcbiAgICAgICAgICAgIHRoaXMuY2VudGVyTm9kZShub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlcyB0aGUgY2hpbGRyZW4gdmlzaWJpbGl0eSBmb3IgYSBnaXZlbiBub2RlIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBub2RlRGF0YUl0ZW0gRDMgTm9kZSBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIG5vZGVUb2dnbGUobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgLy8gSWYgaXQgaGFzbid0IGJlZW4gbG9hZGVkLCBhbmQgaXQncyBzcGVjaWZpZWQgdG8gaGF2ZSBjaGlsZHJlbixcclxuICAgICAgICAvLyB0aGVuIHBlcmZvcm0gbG9hZC1vbi1kZW1hbmQgdG8gbG9hZCBuZXcgaXRlbXMgZnJvbSBzZXJ2ZXJcclxuICAgICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGQgbm9kZXNcclxuICAgICAgICBpZiAoIW5vZGVEYXRhSXRlbS5jaGlsZHJlbiAmJiAhbm9kZURhdGFJdGVtLl9jaGlsZHJlblxyXG4gICAgICAgICAgICAmJiB0aGlzLmxvYWRPbkRlbWFuZFNldHRpbmdzLmlzRW5hYmxlZCgpXHJcbiAgICAgICAgICAgICYmIHRoaXMubG9hZE9uRGVtYW5kU2V0dGluZ3MuaGFzQ2hpbGRyZW4obm9kZURhdGFJdGVtLmRhdGEpKSB7XHJcbiAgICAgICAgICAgIHZhciBwcm9jZXNzRGF0YSA9IChyZXN1bHQpID0+IHRoaXMuX3Byb2Nlc3NMb2FkZWREYXRhRm9yTm9kZVRvZ2dsZShub2RlRGF0YUl0ZW0sIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZE9uRGVtYW5kU2V0dGluZ3MubG9hZENoaWxkcmVuKG5vZGVEYXRhSXRlbS5kYXRhLCBwcm9jZXNzRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAobm9kZURhdGFJdGVtLmNoaWxkcmVuKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZShub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZChub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRBbGxvd05vZGVDZW50ZXJpbmcoKSA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY2VudGVyTm9kZShub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhpZGUgdGhlIHNpYmxpbmdzIG5vZGVzXHJcbiAgICAgKiBmb3IgYSBnaXZlbiBub2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbm9kZURhdGFJdGVtIFRoZSBEMyBub2RlIHRvIGhpZGUgc2libGluZ3MgZm9yLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBoaWRlU2libGluZ3Mobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBub2RlRGF0YUl0ZW0ucGFyZW50O1xyXG5cclxuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICB2YXIgbm9kZUlkID0gdGhpcy5nZXRJZChub2RlRGF0YUl0ZW0uZGF0YSk7XHJcbiAgICAgICAgICAgIHBhcmVudE5vZGUuY2hpbGRyZW4uZmlsdGVyKHggPT4gdGhpcy5nZXRJZCh4LmRhdGEpICE9IG5vZGVJZCkuZm9yRWFjaCh0aGlzLmNvbGxhcHNlUmVjdXJzaXZlbHkpO1xyXG4gICAgICAgICAgICBwYXJlbnROb2RlLmNoaWxkcmVuID0gW107XHJcbiAgICAgICAgICAgIHBhcmVudE5vZGUuY2hpbGRyZW4ucHVzaChub2RlRGF0YUl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHRyZWUgZGlhZ3JhbSBzbyBvbmx5IHRoZSByZWxldmFudFxyXG4gICAgICogZm9jdXNlZCBub2RlIGFuZCBkaXJlY3QgcGFyZW50IGhpZXJhcmNoaWVzIGFyZVxyXG4gICAgICogc2hvd24uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0gRDMgTm9kZSBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdHJlZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZVRyZWVXaXRoRm9jdXNPbk5vZGUobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgaWYgKCFub2RlRGF0YUl0ZW0uY2hpbGRyZW4gJiYgbm9kZURhdGFJdGVtLl9jaGlsZHJlbikgeyAvLyBJZiB0aGVyZSdzIG5vIGNoaWxkcmVuIG5vZGVzLCBidXQgdGhlcmUgYSBzb21lIGNoaWxkcmVuIGl0ZW1zIHRvIGV4cGFuZFxyXG4gICAgICAgICAgICB0aGlzLmhpZGVTaWJsaW5ncyhub2RlRGF0YUl0ZW0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5leHBhbmQobm9kZURhdGFJdGVtKTtcclxuICAgICAgICAgICAgLy8gQ29sbGFwc2UgdGhlIGN1cnJlbnQgZm9jdXNlZCBub2RlJ3MgY2hpbGRyZW4sIHNvIG9ubHkgZGlyZWN0IGNoaWxkcmVucyBhcmUgc2hvd25cclxuICAgICAgICAgICAgbm9kZURhdGFJdGVtLmNoaWxkcmVuLmZvckVhY2godGhpcy5jb2xsYXBzZVJlY3Vyc2l2ZWx5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobm9kZURhdGFJdGVtLmNoaWxkcmVuKSB7IC8vIElmIHRoZXJlIGFyZSByZW5kZXJlZCBjaGlsZHJlbiBub2Rlc1xyXG4gICAgICAgICAgICAvLyBDaGVja3MgaWYgaXRzIGNoaWxkcmVuIGhhcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW5cclxuICAgICAgICAgICAgdmFyIGhhc05lc3RlZENoaWxkcmVuID0gbm9kZURhdGFJdGVtLmNoaWxkcmVuLnNvbWUoKGN1cnJlbnRJdGVtLCBpbmRleCwgYXJyKSA9PiBjdXJyZW50SXRlbS5jaGlsZHJlbik7XHJcblxyXG4gICAgICAgICAgICB2YXIgaXNQcmV2aW91c2x5RXhwYW5kZWROb2RlID0gIWhhc05lc3RlZENoaWxkcmVuO1xyXG4gICAgICAgICAgICAvLyBJZiBpdCBpcyBhIHBhcmVudCBub2RlIHdpdGggY2hpbGRyZW4sIGFuZFxyXG4gICAgICAgICAgICAvLyBpcyBub3QgdGhlIHByZXZpb3VzIGV4cGFuZGVkIG5vZGUsXHJcbiAgICAgICAgICAgIC8vIHRoZW4gd2UnbGwgZm9jdXMgb24gaXQsIGV4cGFuZGluZyBpdFxyXG4gICAgICAgICAgICAvLyBhbmQgc2hvd2luZyBhbGwgb2YgaXRzIGNoaWxkcmVuXHJcbiAgICAgICAgICAgIGlmIChpc1ByZXZpb3VzbHlFeHBhbmRlZE5vZGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlUmVjdXJzaXZlbHkobm9kZURhdGFJdGVtKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kKG5vZGVEYXRhSXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSB0cmVlIG5vZGVzIGdpdmVuXHJcbiAgICAgKiBhIEQzIHRyZWUgbm9kZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgRDMgbm9kZSBkYXRhIGl0ZW0gdG8gdXBkYXRlLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3RbXX0gbm9kZXMgQXJyYXkgb2YgRDMgbm9kZSBkYXRhIGl0ZW1zLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBfdXBkYXRlTm9kZXMobm9kZURhdGFJdGVtLCBub2Rlcykge1xyXG4gICAgICAgIC8vIE5vcm1hbGl6ZSBmb3IgZml4ZWQtZGVwdGguXHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gWW91IGNhbiBpbmNyZWFzZSB0aGUgZGVwdGggbXVsdGlwbGljYXRpb24gdG8gZ2V0IG1vcmUgZGVwdGgsXHJcbiAgICAgICAgLy8gaS5lLiBpbmNyZWFzaW5nIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwYXJlbnQgbm9kZSBhbmQgY2hpbGQgbm9kZVxyXG4gICAgICAgIG5vZGVzLmZvckVhY2goKGRhdGEpID0+IGRhdGEueSA9IGRhdGEuZGVwdGggKiB0aGlzLmdldE5vZGVEZXB0aE11bHRpcGxpZXIoKSk7XHJcblxyXG4gICAgICAgIC8vICoqKioqKioqKioqKioqKioqKiBOb2RlcyBzZWN0aW9uICoqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICAvLyBVcGRhdGUgdGhlIG5vZGVzLi4uXHJcbiAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5nZXRQYW5uaW5nQ29udGFpbmVyKCkuc2VsZWN0QWxsKFwiZy5ub2RlXCIpXHJcbiAgICAgICAgICAgIC8vIFRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIGRhdGEoKSB0YWtlcyBpbiBhIFxyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiwgZGV0ZXJtaW5pbmcgdGhlIGtleSBvZiB0aGUgZGF0YVxyXG4gICAgICAgICAgICAvLyBpdGVtcywgd2hpY2ggaXMgdXNlZnVsIHRvIHJldHJpZXZlIGl0ZW1zLFxyXG4gICAgICAgICAgICAvLyBhbmQgZGF0YWJpbmQgdGhlbVxyXG4gICAgICAgICAgICAuZGF0YShub2RlcywgKGRhdGEpID0+IHRoaXMuZ2V0SWQuY2FsbCh0aGlzLCBkYXRhLmRhdGEpKTtcclxuXHJcbiAgICAgICAgLy8gRW50ZXIgYW55IG5ldyBub2RlcyBhdCB0aGUgcGFyZW50J3MgcHJldmlvdXMgcG9zaXRpb24uXHJcbiAgICAgICAgdmFyIG5vZGVFbnRlciA9IG5vZGVzLmVudGVyKCkuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAgICAgICAuY2xhc3NlZChcIm5vZGVcIiwgdHJ1ZSlcclxuICAgICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgKGRhdGEsIGluZGV4LCBhcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldE9yaWVudGF0aW9uKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RvcHRvYm90dG9tJylcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIgKyBub2RlRGF0YUl0ZW0ueDAgKyBcIixcIiArIG5vZGVEYXRhSXRlbS55MCArIFwiKVwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInRyYW5zbGF0ZShcIiArIG5vZGVEYXRhSXRlbS55MCArIFwiLFwiICsgbm9kZURhdGFJdGVtLngwICsgXCIpXCI7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5vbihcImNsaWNrXCIsIChkYXRhLCBpbmRleCwgYXJyKSA9PiB0aGlzLl9vbk5vZGVDbGljay5jYWxsKHRoaXMsIGRhdGEsIGluZGV4LCBhcnIpKTtcclxuXHJcbiAgICAgICAgdGhpcy5fbm9kZUVudGVyKG5vZGVFbnRlciwgbm9kZXMpO1xyXG5cclxuICAgICAgICAvLyBVUERBVEVcclxuICAgICAgICB2YXIgbm9kZVVwZGF0ZSA9IG5vZGVFbnRlci5tZXJnZShub2Rlcyk7XHJcbiAgICAgICAgdmFyIG5vZGVVcGRhdGVUcmFuc2l0aW9uID0gbm9kZVVwZGF0ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24odGhpcy5nZXREdXJhdGlvbigpKTtcclxuXHJcbiAgICAgICAgbm9kZVVwZGF0ZVxyXG4gICAgICAgICAgICAuY2xhc3NlZChcImNvbGxhcHNlZFwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmNoaWxkcmVuICYmIGRhdGEuX2NoaWxkcmVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FkT25EZW1hbmRTZXR0aW5ncy5pc0VuYWJsZWQoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5sb2FkT25EZW1hbmRTZXR0aW5ncy5oYXNDaGlsZHJlbihkYXRhLmRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5jaGlsZHJlbiAmJiAhZGF0YS5fY2hpbGRyZW4pIC8vIElmIGl0IGRvZXMgaGF2ZSBjaGlsZHJlbiB0byBsb2FkIHZpYSBBSkFYXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jbGFzc2VkKFwiZXhwYW5kZWRcIiwgKGRhdGEsIGluZGV4LCBhcnIpID0+IGRhdGEuY2hpbGRyZW4pXHJcbiAgICAgICAgICAgIC5jbGFzc2VkKFwiY2hpbGRsZXNzXCIsIChkYXRhLCBpbmRleCwgYXJyKSA9PiAhZGF0YS5jaGlsZHJlbiAmJiAhZGF0YS5fY2hpbGRyZW4pXHJcbiAgICAgICAgICAgIC5jbGFzc2VkKFwic2VsZWN0ZWRcIiwgKGRhdGEsIGluZGV4LCBhcnIpID0+IGRhdGEuc2VsZWN0ZWQpO1xyXG5cclxuICAgICAgICB0aGlzLl9ub2RlVXBkYXRlKG5vZGVVcGRhdGUsIG5vZGVVcGRhdGVUcmFuc2l0aW9uLCBub2Rlcyk7XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBhbnkgZXhpdGluZyBub2Rlc1xyXG4gICAgICAgIHZhciBub2RlRXhpdCA9IG5vZGVzLmV4aXQoKTtcclxuICAgICAgICB2YXIgbm9kZUV4aXRUcmFuc2l0aW9uID0gbm9kZUV4aXQudHJhbnNpdGlvbigpLmR1cmF0aW9uKHRoaXMuZ2V0RHVyYXRpb24oKSk7XHJcblxyXG4gICAgICAgIHRoaXMuX25vZGVFeGl0KG5vZGVFeGl0LCBub2RlRXhpdFRyYW5zaXRpb24sIG5vZGVzKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHRyZWUgbm9kZSBsaW5rcyBnaXZlblxyXG4gICAgICogYSBEMyB0cmVlIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0gVGhlIEQzIG5vZGUgZGF0YSBpdGVtLiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0W119IGxpbmtzIEFycmF5IG9mIEQzIGxpbmsgZGF0YSBpdGVtcy5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgX3VwZGF0ZUxpbmtzKG5vZGVEYXRhSXRlbSwgbGlua3MpIHtcclxuICAgICAgICB2YXIgbGlua1BhdGhHZW5lcmF0b3IgPSB0aGlzLl9nZXRMaW5rUGF0aEdlbmVyYXRvcigpO1xyXG5cclxuICAgICAgICAvLyBVcGRhdGUgdGhlIGxpbmtzLi4uXHJcbiAgICAgICAgdmFyIGxpbmsgPSB0aGlzLmdldFBhbm5pbmdDb250YWluZXIoKS5zZWxlY3RBbGwoXCJwYXRoLmxpbmtcIilcclxuICAgICAgICAgICAgLmRhdGEobGlua3MsIChkYXRhKSA9PiB0aGlzLmdldElkLmNhbGwodGhpcywgZGF0YS5kYXRhKSk7XHJcblxyXG4gICAgICAgIC8vIEVudGVyIGFueSBuZXcgbGlua3MgYXQgdGhlIHBhcmVudCdzIHByZXZpb3VzIHBvc2l0aW9uLlxyXG4gICAgICAgIHZhciBsaW5rRW50ZXIgPSBsaW5rLmVudGVyKCkuaW5zZXJ0KFwicGF0aFwiLCBcImdcIilcclxuICAgICAgICAgICAgLmNsYXNzZWQoXCJsaW5rXCIsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuX2xpbmtFbnRlcihub2RlRGF0YUl0ZW0sIGxpbmtFbnRlciwgbGluaywgbGlua1BhdGhHZW5lcmF0b3IpO1xyXG5cclxuICAgICAgICAvLyBVUERBVEVcclxuICAgICAgICB2YXIgbGlua1VwZGF0ZSA9IGxpbmtFbnRlci5tZXJnZShsaW5rKTtcclxuICAgICAgICB2YXIgbGlua1VwZGF0ZVRyYW5zaXRpb24gPSBsaW5rVXBkYXRlLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZHVyYXRpb24odGhpcy5nZXREdXJhdGlvbigpKTtcclxuXHJcbiAgICAgICAgLy8gVHJhbnNpdGlvbiBiYWNrIHRvIHRoZSBwYXJlbnQgZWxlbWVudCBwb3NpdGlvblxyXG4gICAgICAgIHRoaXMuX2xpbmtVcGRhdGUobm9kZURhdGFJdGVtLCBsaW5rVXBkYXRlLCBsaW5rVXBkYXRlVHJhbnNpdGlvbiwgbGluaywgbGlua1BhdGhHZW5lcmF0b3IpO1xyXG5cclxuICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXRpbmcgbGlua3NcclxuICAgICAgICB2YXIgbGlua0V4aXQgPSBsaW5rLmV4aXQoKTtcclxuICAgICAgICB2YXIgbGlua0V4aXRUcmFuc2l0aW9uID0gbGlua0V4aXQudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kdXJhdGlvbih0aGlzLmdldER1cmF0aW9uKCkpXHJcblxyXG4gICAgICAgIHRoaXMuX2xpbmtFeGl0KG5vZGVEYXRhSXRlbSwgbGlua0V4aXQsIGxpbmtFeGl0VHJhbnNpdGlvbiwgbGluaywgbGlua1BhdGhHZW5lcmF0b3IpO1xyXG5cclxuICAgICAgICAvLyBTdG9yZSB0aGUgb2xkIHBvc2l0aW9ucyBmb3IgdHJhbnNpdGlvbi5cclxuICAgICAgICB0aGlzLmdldFZpc2libGVOb2RlcygpLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgZGF0YS54MCA9IGRhdGEueDtcclxuICAgICAgICAgICAgZGF0YS55MCA9IGRhdGEueTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHRyZWUgZ2l2ZW4gYSBEMyB0cmVlIG5vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0gVGhlIEQzIG5vZGUgZGF0YSBpdGVtLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICB1cGRhdGUobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgdmFyIHRyZWVHZW5lcmF0b3IgPSB0aGlzLmdldFRyZWVHZW5lcmF0b3IoKTtcclxuICAgICAgICAvLyBBc3NpZ25zIHRoZSB4IGFuZCB5IHBvc2l0aW9uIGZvciB0aGUgbm9kZXNcclxuICAgICAgICB2YXIgdHJlZURhdGEgPSB0cmVlR2VuZXJhdG9yKHRoaXMuZ2V0Um9vdCgpKTtcclxuICAgICAgICB0aGlzLl92aXNpYmxlTm9kZXMgPSB0cmVlRGF0YS5kZXNjZW5kYW50cygpO1xyXG4gICAgICAgIHRoaXMuX25vZGVzID0gW3RoaXMuZ2V0Um9vdCgpLCAuLi5yZWN1cnNpdmVHZXQodGhpcy5nZXRSb290KCksIChub2RlKSA9PiBub2RlLl9jaGlsZHJlbildO1xyXG4gICAgICAgIHRoaXMuX2xpbmtzID0gdHJlZURhdGEuZGVzY2VuZGFudHMoKS5zbGljZSgxKTtcclxuXHJcbiAgICAgICAgdGhpcy5fdXBkYXRlTm9kZXMobm9kZURhdGFJdGVtLCB0aGlzLmdldFZpc2libGVOb2RlcygpKVxyXG4gICAgICAgICAgICAuX3VwZGF0ZUxpbmtzKG5vZGVEYXRhSXRlbSwgdGhpcy5nZXRMaW5rcygpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB1bmlxdWUgSUQgZm9yIGEgZ2l2ZW4gZGF0YSBpdGVtLlxyXG4gICAgICogQGNhbGxiYWNrIGdldElkQ2FsbEJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFJlcHJlc2VudHMgdGhlIHNpbmdsZSBkYXRhIGl0ZW0gdG8gZXh0cmFjdCB0aGUgSUQgZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHsqfSBUaGUgdW5pcXVlIElEIGZyb20gdGhlIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcGFyZW50IElEIGZvciBhIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqIEBjYWxsYmFjayBnZXRQYXJlbnRJZENhbGxCYWNrXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSBSZXByZXNlbnRzIHRoZSBzaW5nbGUgZGF0YSBpdGVtIHRvIGV4dHJhY3QgdGhlIHBhcmVudCBJRCBmcm9tLlxyXG4gICAgICogQHJldHVybnMgeyp9IFRoZSBwYXJlbnQgSUQgZnJvbSB0aGUgZ2l2ZW4gZGF0YSBpdGVtLlxyXG4gICAgICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBjaGlsZHJlbiBpdGVtcyBmb3IgYSBnaXZlblxyXG4gICAgICogZGF0YSBpdGVtLlxyXG4gICAgICogQGNhbGxiYWNrIGdldENoaWxkcmVuQ2FsbEJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFJlcHJlc2VudHMgdGhlIHNpbmdsZSBkYXRhIGl0ZW0gdG8gZXh0cmFjdCB0aGUgY2hpbGRyZW4gZGF0YSBpdGVtcyBmcm9tLlxyXG4gICAgICogQHJldHVybnMge29iamVjdFtdfSBUaGUgYXJyYXkgb2YgZGF0YSBpdGVtcyByZXByZXNlbnRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBnaXZlbiBkYXRhIGl0ZW0uXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5vZGUgY2xpY2sgZXZlbnQsIHRyaWdnZXJlZCB3aGVuIGFcclxuICAgICAqIHVzZXIgY2xpY2tzIG9uIGEgdHJlZSBub2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAdHlwZWRlZiB7b2JqZWN0fSBub2RlQ2xpY2tcclxuICAgICAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBldmVudCBPYmplY3QgY29udGFpbmluZyB2YXJpb3VzIGV2ZW50IHBhcmFtZXRlcnMuXHJcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gZXZlbnQudHlwZSBUaGUgdHlwZSBvZiB0aGUgb3BlcmF0aW9uIHRoZSBjbGljayB3aWxsIHRyaWdnZXIsIHdoZXRoZXIgaXQncyAnZm9jdXMnLCAnZXhwYW5kJywgb3IgJ2NvbGxhcHNlJy5cclxuICAgICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZXZlbnQuY29udGludWUgV2hldGhlciB0byBjb250aW51ZSB0aGUgbm9kZSBmb2N1c2luZy9leHBhbmRpbmcvY29sbGFwc2luZy5cclxuICAgICAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBldmVudC5ub2RlRGF0YUl0ZW0gTm9kZSBkYXRhIGl0ZW0gcmVwcmVzZW50aW5nIHRoZSBjbGlja2VkIG5vZGUuXHJcbiAgICAgKiBAcHJvcGVydHkge29iamVjdH0gZXZlbnQubm9kZURhdGFJdGVtLmRhdGEgVGhlIGRhdGEgaXRlbSBvZiB0aGUgY2xpY2tlZCBub2RlLlxyXG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGV2ZW50Lm5vZGVEYXRhSXRlbUluZGV4IEluZGV4IG9mIHRoZSBjbGlja2VkIGl0ZW0gaW4gdGhlIGFycmF5IG9mIHNpYmxpbmdzLlxyXG4gICAgICogQHByb3BlcnR5IHtvYmplY3RbXX0gZXZlbnQubm9kZURhdGFJdGVtcyBUaGUgYXJyYXkgb2Ygc2libGluZyByZW5kZXJlZCBTVkcgZWxlbWVudHMsIGluY2x1c2l2ZSBvZiB0aGUgbm9kZSBpdHNlbGYuXHJcbiAgICAgKi9cclxufVxyXG5cclxuLy8gRGVmaW5lIG9wdGlvbiBkZWZhdWx0cyB1c2luZyBhIGNsYXNzIHN0YXRpYyBwcm9wZXJ0eVxyXG5CYXNlVHJlZS5kZWZhdWx0cyA9IHtcclxuICAgIHRoZW1lOiAnZGVmYXVsdCcsXHJcbiAgICBvcmllbnRhdGlvbjogJ2xlZnRUb1JpZ2h0JywgLy8gdG9wVG9Cb3R0b20sIHJpZ2h0VG9MZWZ0LCBib3R0b21Ub1RvcFxyXG4gICAgYWxsb3dQYW46IHRydWUsXHJcbiAgICBhbGxvd1pvb206IHRydWUsXHJcbiAgICBhbGxvd0ZvY3VzOiB0cnVlLFxyXG4gICAgYWxsb3dOb2RlQ2VudGVyaW5nOiB0cnVlLFxyXG4gICAgbWluU2NhbGU6IDEsIC8vIE1pbmltdW0gem9vbSBzY2FsaW5nXHJcbiAgICBtYXhTY2FsZTogMiwgLy8gTWF4aW11bSB6b29tIHNjYWxpbmdcclxuICAgIC8vIFlvdSBjYW4gaW5jcmVhc2UgdGhlIGRlcHRoIG11bHRpcGxpY2F0aW9uIHRvIGdldCBtb3JlIGRlcHRoLFxyXG4gICAgLy8gaS5lLiBpbmNyZWFzaW5nIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwYXJlbnQgbm9kZSBhbmQgY2hpbGQgbm9kZVxyXG4gICAgbm9kZURlcHRoTXVsdGlwbGllcjogMzAwLFxyXG4gICAgaXNGbGF0RGF0YTogZmFsc2UsXHJcbiAgICBnZXRJZDogbnVsbCxcclxuICAgIGdldFBhcmVudElkOiBudWxsLFxyXG4gICAgZ2V0Q2hpbGRyZW46IG51bGwsXHJcbiAgICB3aWR0aFdpdGhvdXRNYXJnaW5zOiA5NjAsXHJcbiAgICBoZWlnaHRXaXRob3V0TWFyZ2luczogODAwLFxyXG4gICAgbWFyZ2luczoge1xyXG4gICAgICAgIHRvcDogNDAsXHJcbiAgICAgICAgcmlnaHQ6IDIwLFxyXG4gICAgICAgIGJvdHRvbTogNDAsXHJcbiAgICAgICAgbGVmdDogMTAwXHJcbiAgICB9LFxyXG4gICAgZHVyYXRpb246IDc1MCxcclxuICAgIGxvYWRPbkRlbWFuZFNldHRpbmdzOiB7XHJcbiAgICAgICAgLy8gRGVmYXVsdHMgYXJlIGRlZmluZWQgaW4gdGhlIGxvYWQtb24tZGVtYW5kIHNldHRpbmdzIHByb3RvdHlwZVxyXG4gICAgfSxcclxuICAgIG5vZGVTZXR0aW5nczoge1xyXG4gICAgICAgIC8vIERlZmF1bHRzIGFyZSBkZWZpbmVkIGluIHRoZSBub2RlIHNldHRpbmdzIHByb3RvdHlwZVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVRyZWU7IiwiaW1wb3J0IE5vZGVTZXR0aW5ncyBmcm9tICcuL05vZGVTZXR0aW5ncyc7XHJcblxyXG5jbGFzcyBCb3hlZE5vZGVTZXR0aW5ncyBleHRlbmRzIE5vZGVTZXR0aW5ncyB7XHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvd25lck9iamVjdCBUaGUgb3duZXIgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgVGhlIG9wdGlvbnMgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmJvZHlCb3hXaWR0aD0yMDBdIEJvZHkgYm94IHdpZHRoLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmJvZHlCb3hIZWlnaHQ9NzVdIEJvZHkgYm94IGhlaWdodC5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9ucy5ib2R5Qm94UGFkZGluZ10gQm9keSBib3ggcGFkZGluZyBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuYm9keUJveFBhZGRpbmcudG9wPTVdIEJvZHkgYm94IHBhZGRpbmcgdG9wLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmJvZHlCb3hQYWRkaW5nLnJpZ2h0PTEwXSBCb2R5IGJveCBwYWRkaW5nIHJpZ2h0LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmJvZHlCb3hQYWRkaW5nLmJvdHRvbT01XSBCb2R5IGJveCBwYWRkaW5nIGJvdHRvbS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5ib2R5Qm94UGFkZGluZy5sZWZ0PTEwXSBCb2R5IGJveCBwYWRkaW5nIGxlZnQuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMudGl0bGVCb3hXaWR0aF0gVGl0bGUgYm94IHdpZHRoLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpdGxlQm94SGVpZ2h0PTQwXSBUaXRsZSBib3ggaGVpZ2h0LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zLnRpdGxlQm94UGFkZGluZ10gVGl0bGUgYm94IHBhZGRpbmcgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpdGxlQm94UGFkZGluZy50b3A9Ml0gVGl0bGUgYm94IHBhZGRpbmcgdG9wLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpdGxlQm94UGFkZGluZy5yaWdodD01XSBUaXRsZSBib3ggcGFkZGluZyByaWdodC5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aXRsZUJveFBhZGRpbmcuYm90dG9tPTJdIFRpdGxlIGJveCBwYWRkaW5nIGJvdHRvbS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aXRsZUJveFBhZGRpbmcubGVmdD01XSBUaXRsZSBib3ggcGFkZGluZyBsZWZ0LlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihvd25lck9iamVjdCwgb3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG93bmVyT2JqZWN0LCBvcHRpb25zKTtcclxuXHJcbiAgICAgICAgdmFyIG1lcmdlZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIC4uLkJveGVkTm9kZVNldHRpbmdzLmRlZmF1bHRzLFxyXG4gICAgICAgICAgICAuLi5vcHRpb25zXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5fYm9keUJveFdpZHRoID0gbWVyZ2VkT3B0aW9ucy5ib2R5Qm94V2lkdGg7XHJcbiAgICAgICAgdGhpcy5fYm9keUJveEhlaWdodCA9IG1lcmdlZE9wdGlvbnMuYm9keUJveEhlaWdodDtcclxuICAgICAgICB0aGlzLl9ib2R5Qm94UGFkZGluZyA9IG1lcmdlZE9wdGlvbnMuYm9keUJveFBhZGRpbmc7XHJcbiAgICAgICAgdGhpcy5fdGl0bGVCb3hXaWR0aCA9IG1lcmdlZE9wdGlvbnMudGl0bGVCb3hXaWR0aDtcclxuICAgICAgICB0aGlzLl90aXRsZUJveEhlaWdodCA9IG1lcmdlZE9wdGlvbnMudGl0bGVCb3hIZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5fdGl0bGVCb3hQYWRkaW5nID0gbWVyZ2VkT3B0aW9ucy50aXRsZUJveFBhZGRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBib2R5IGJveCB3aWR0aCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVGhlIGJvZHkgYm94IHdpZHRoIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBnZXRCb2R5Qm94V2lkdGgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JvZHlCb3hXaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGJvZHkgYm94IHdpZHRoIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGggVGhlIGJvZHkgYm94IHdpZHRoIHZhbHVlLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG5vZGUgc2V0dGluZ3Mgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRCb2R5Qm94V2lkdGgod2lkdGgpIHtcclxuICAgICAgICB0aGlzLl9ib2R5Qm94V2lkdGggPSB3aWR0aDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGJvZHkgYm94IGhlaWdodCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVGhlIGJvZHkgYm94IGhlaWdodCB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgZ2V0Qm9keUJveEhlaWdodCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYm9keUJveEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGJvZHkgYm94IGhlaWdodCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCBUaGUgYm9keSBib3ggaGVpZ2h0IHZhbHVlLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG5vZGUgc2V0dGluZ3Mgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRCb2R5Qm94SGVpZ2h0KGhlaWdodCkge1xyXG4gICAgICAgIHRoaXMuX2JvZHlCb3hIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBib2R5IGJveCBwYWRkaW5nIHZhbHVlcy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5ld1BhZGRpbmcgVGhlIGJvZHkgYm94IHBhZGRpbmcgb2JqZWN0IHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld1BhZGRpbmcudG9wIFRoZSBib2R5IGJveCBwYWRkaW5nIHRvcCB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdQYWRkaW5nLnJpZ2h0IFRoZSBib2R5IGJveCBwYWRkaW5nIHJpZ2h0IHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld1BhZGRpbmcuYm90dG9tIFRoZSBib2R5IGJveCBwYWRkaW5nIGJvdHRvbSB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdQYWRkaW5nLmxlZnQgVGhlIGJvZHkgYm94IHBhZGRpbmcgbGVmdCB2YWx1ZS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBub2RlIHNldHRpbmdzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0Qm9keUJveFBhZGRpbmcobmV3UGFkZGluZykge1xyXG4gICAgICAgIHRoaXMuX2JvZHlCb3hQYWRkaW5nID0gbmV3UGFkZGluZztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGJvZHkgYm94IHBhZGRpbmcgdmFsdWVzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgYm9keSBib3ggcGFkZGluZyBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGdldEJvZHlCb3hQYWRkaW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib2R5Qm94UGFkZGluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHRpdGxlIGJveCB3aWR0aCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVGhlIHRpdGxlIGJveCB3aWR0aCB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgZ2V0VGl0bGVCb3hXaWR0aCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fdGl0bGVCb3hXaWR0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlQm94V2lkdGg7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRCb2R5Qm94V2lkdGgoKSAvIDI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSB0aXRsZSBib3ggd2lkdGggdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCBUaGUgdGl0bGUgYm94IHdpZHRoIHZhbHVlLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG5vZGUgc2V0dGluZ3Mgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRUaXRsZUJveFdpZHRoKHdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5fdGl0bGVCb3hXaWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdGl0bGUgYm94IGhlaWdodCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVGhlIHRpdGxlIGJveCBoZWlnaHQgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGdldFRpdGxlQm94SGVpZ2h0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZUJveEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHRpdGxlIGJveCBoZWlnaHQgdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgVGhlIHRpdGxlIGJveCBoZWlnaHQgdmFsdWUuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgbm9kZSBzZXR0aW5ncyBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldFRpdGxlQm94SGVpZ2h0KGhlaWdodCkge1xyXG4gICAgICAgIHRoaXMuX3RpdGxlQm94SGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdGl0bGUgYm94IHBhZGRpbmcgdmFsdWVzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdGl0bGUgYm94IHBhZGRpbmcgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBnZXRUaXRsZUJveFBhZGRpbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlQm94UGFkZGluZztcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSB0aXRsZSBib3ggcGFkZGluZyB2YWx1ZXMuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdQYWRkaW5nIFRoZSBib2R5IGJveCBwYWRkaW5nIG9iamVjdCB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdQYWRkaW5nLnRvcCBUaGUgYm9keSBib3ggcGFkZGluZyB0b3AgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3UGFkZGluZy5yaWdodCBUaGUgYm9keSBib3ggcGFkZGluZyByaWdodCB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdQYWRkaW5nLmJvdHRvbSBUaGUgYm9keSBib3ggcGFkZGluZyBib3R0b20gdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3UGFkZGluZy5sZWZ0IFRoZSBib2R5IGJveCBwYWRkaW5nIGxlZnQgdmFsdWUuXHJcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgbm9kZSBzZXR0aW5ncyBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHNldFRpdGxlQm94UGFkZGluZyhuZXdQYWRkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdGl0bGVCb3hQYWRkaW5nID0gbmV3UGFkZGluZztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxufVxyXG5cclxuQm94ZWROb2RlU2V0dGluZ3MuZGVmYXVsdHMgPSB7XHJcbiAgICBib2R5Qm94V2lkdGg6IDIwMCxcclxuICAgIGJvZHlCb3hIZWlnaHQ6IDc1LFxyXG4gICAgYm9keUJveFBhZGRpbmc6IHtcclxuICAgICAgICB0b3A6IDUsXHJcbiAgICAgICAgcmlnaHQ6IDEwLFxyXG4gICAgICAgIGJvdHRvbTogNSxcclxuICAgICAgICBsZWZ0OiAxMFxyXG4gICAgfSxcclxuICAgIHRpdGxlQm94V2lkdGg6IG51bGwsXHJcbiAgICB0aXRsZUJveEhlaWdodDogNDAsXHJcbiAgICB0aXRsZUJveFBhZGRpbmc6IHtcclxuICAgICAgICB0b3A6IDIsXHJcbiAgICAgICAgcmlnaHQ6IDUsXHJcbiAgICAgICAgYm90dG9tOiAyLFxyXG4gICAgICAgIGxlZnQ6IDVcclxuICAgIH0sXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEJveGVkTm9kZVNldHRpbmdzOyIsImltcG9ydCBkMyBmcm9tICcuL0N1c3RvbUQzJztcclxuaW1wb3J0IHtUZXh0Qm94IGFzIGQzUGx1c1RleHRCb3h9IGZyb20gJ2QzcGx1cy10ZXh0JztcclxuaW1wb3J0IEJhc2VUcmVlIGZyb20gJy4vQmFzZVRyZWUnO1xyXG5pbXBvcnQgQm94ZWROb2RlU2V0dGluZ3MgZnJvbSAnLi9Cb3hlZE5vZGVTZXR0aW5ncyc7XHJcblxyXG5jbGFzcyBCb3hlZFRyZWUgZXh0ZW5kcyBCYXNlVHJlZXtcclxuICAgIC8qKiBcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIFRoZSBvcHRpb25zIG9iamVjdC5cclxuICAgICAqIEBwYXJhbSB7Ym9keURpc3BsYXlUZXh0QWNjZXNzb3JDYWxsQmFja30gb3B0aW9ucy5nZXRCb2R5RGlzcGxheVRleHQgRGV0ZXJtaW5lcyBob3cgdG8gb2J0YWluIHRoZSBib2R5IHRleHQgdG8gZGlzcGxheSBmb3IgYSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBkYXRhIGl0ZW0uXHJcbiAgICAgKiBAcGFyYW0ge3RpdGxlRGlzcGxheVRleHRBY2Nlc3NvckNhbGxCYWNrfSBvcHRpb25zLmdldFRpdGxlRGlzcGxheVRleHQgRGV0ZXJtaW5lcyBob3cgdG8gb2J0YWluIHRoZSB0aXRsZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIGEgbm9kZSBjb3JyZXNwb25kaW5nIHRvIGEgZGF0YSBpdGVtLlxyXG4gICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgICAgICB2YXIgbWVyZ2VkT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLi4uQmFzZVRyZWUuZGVmYXVsdHMsXHJcbiAgICAgICAgICAgIC4uLkJveGVkVHJlZS5kZWZhdWx0cyxcclxuICAgICAgICAgICAgLi4ub3B0aW9uc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuX2dldEJvZHlEaXNwbGF5VGV4dCA9IG1lcmdlZE9wdGlvbnMuZ2V0Qm9keURpc3BsYXlUZXh0O1xyXG4gICAgICAgIHRoaXMuX2dldFRpdGxlRGlzcGxheVRleHQgPSBtZXJnZWRPcHRpb25zLmdldFRpdGxlRGlzcGxheVRleHQ7XHJcbiAgICAgICAgdGhpcy5ub2RlU2V0dGluZ3MgPSBuZXcgQm94ZWROb2RlU2V0dGluZ3ModGhpcywgbWVyZ2VkT3B0aW9ucy5ub2RlU2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgc3ZnLCBhbmQgc2V0IGl0cyBkaW1lbnNpb25zXHJcbiAgICAgICAgdGhpcy5nZXRTdmcoKS5jbGFzc2VkKCdib3hlZC10cmVlJywgdHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBfbm9kZUVudGVyKG5vZGVFbnRlciwgbm9kZXMpIHtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgLy8gRGVjbGFyZSBib3ggZGltZW5zaW9uc1xyXG4gICAgICAgIHZhciBub2RlQm9keUJveFdpZHRoID0gc2VsZi5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveFdpZHRoKCk7XHJcbiAgICAgICAgdmFyIG5vZGVCb2R5Qm94SGVpZ2h0ID0gc2VsZi5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveEhlaWdodCgpO1xyXG4gICAgICAgIHZhciBub2RlQm9keUJveFBhZGRpbmcgPSBzZWxmLm5vZGVTZXR0aW5ncy5nZXRCb2R5Qm94UGFkZGluZygpO1xyXG5cclxuICAgICAgICB2YXIgbm9kZVRpdGxlQm94V2lkdGggPSBzZWxmLm5vZGVTZXR0aW5ncy5nZXRUaXRsZUJveFdpZHRoKCk7XHJcbiAgICAgICAgdmFyIG5vZGVUaXRsZUJveEhlaWdodCA9IHNlbGYubm9kZVNldHRpbmdzLmdldFRpdGxlQm94SGVpZ2h0KCk7XHJcbiAgICAgICAgdmFyIG5vZGVUaXRsZUJveFBhZGRpbmcgPSBzZWxmLm5vZGVTZXR0aW5ncy5nZXRUaXRsZUJveFBhZGRpbmcoKTtcclxuXHJcbiAgICAgICAgLyogQWRkIEJvZHkgUmVjdGFuZ2xlIGFuZCBUZXh0IGZvciBOb2RlICovXHJcbiAgICAgICAgdmFyIGJvZHlHcm91cHMgPSBub2RlRW50ZXIuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAgICAgICAuY2xhc3NlZChcImJvZHktZ3JvdXBcIiwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIGJvZHlHcm91cHMuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAgICAgICAuY2xhc3NlZChcImJvZHktYm94XCIsIHRydWUpXHJcbiAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgMWUtNilcclxuICAgICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgMWUtNik7XHJcblxyXG4gICAgICAgIGJvZHlHcm91cHMuZWFjaChmdW5jdGlvbihkYXRhLCBpbmRleCwgYXJyKSB7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IGQzLnNlbGVjdChlbGVtZW50KTtcclxuICAgICAgICAgICAgdmFyIHNpbmdsZWRPdXREYXRhID0gW107XHJcbiAgICAgICAgICAgIHNpbmdsZWRPdXREYXRhLnB1c2goZGF0YSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgcmVjYWxjdWxhdGVkUGFkZGluZ1RvcCA9IG5vZGVCb2R5Qm94UGFkZGluZy50b3A7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLmdldFRpdGxlRGlzcGxheVRleHQuY2FsbChzZWxmLCBkYXRhKSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVkUGFkZGluZ1RvcCArPSBub2RlVGl0bGVCb3hIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBEM1BsdXMgVGV4dGJveCB3aXRoIHJlc2l6aW5nIGNhcGFiaWxpdHlcclxuICAgICAgICAgICAgdmFyIGQzUGx1c0JvZHlUZXh0Qm94ID0gbmV3IGQzUGx1c1RleHRCb3goKVxyXG4gICAgICAgICAgICAgICAgLnNlbGVjdChlbGVtZW50KSAvLyBTZXRzIHRoZSBEM1BsdXMgY29kZSB0byBhcHBlbmQgdG8gdGhlIHNwZWNpZmllZCBET00gZWxlbWVudC5cclxuICAgICAgICAgICAgICAgIC5kYXRhKHNpbmdsZWRPdXREYXRhKVxyXG4gICAgICAgICAgICAgICAgLnRleHQoKGRhdGEsIGluZGV4LCBhcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRCb2R5RGlzcGxheVRleHQuY2FsbChzZWxmLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAudGV4dEFuY2hvcihcIm1pZGRsZVwiKVxyXG4gICAgICAgICAgICAgICAgLnZlcnRpY2FsQWxpZ24oXCJtaWRkbGVcIilcclxuICAgICAgICAgICAgICAgIC5mb250U2l6ZSgxMykgLy8gaW4gcGl4ZWxzXHJcbiAgICAgICAgICAgICAgICAueChub2RlQm9keUJveFBhZGRpbmcubGVmdClcclxuICAgICAgICAgICAgICAgIC55KHJlY2FsY3VsYXRlZFBhZGRpbmdUb3AgLSBub2RlQm9keUJveEhlaWdodCAvIDIpXHJcbiAgICAgICAgICAgICAgICAud2lkdGgobm9kZUJvZHlCb3hXaWR0aCAtIG5vZGVCb2R5Qm94UGFkZGluZy5sZWZ0IC0gbm9kZUJvZHlCb3hQYWRkaW5nLnJpZ2h0KVxyXG4gICAgICAgICAgICAgICAgLmhlaWdodChub2RlQm9keUJveEhlaWdodCAtIHJlY2FsY3VsYXRlZFBhZGRpbmdUb3AgLSBub2RlQm9keUJveFBhZGRpbmcuYm90dG9tKVxyXG4gICAgICAgICAgICAgICAgLmVsbGlwc2lzKCh0ZXh0LCBsaW5lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGV4dCB3YXMgY3V0LW9mZiwgYWRkIHRvb2x0aXBcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYXBwZW5kKFwidGl0bGVcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoc2VsZi5nZXRCb2R5RGlzcGxheVRleHQoZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRleHQucmVwbGFjZSgvXFwufCwkL2csIFwiXCIpKSArIFwiLi4uXCIpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5yZW5kZXIoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogQWRkIFRpdGxlIFJlY3RhbmdsZSBhbmQgVGV4dCBmb3IgTm9kZSAqL1xyXG4gICAgICAgIHZhciB0aXRsZUdyb3VwcyA9IG5vZGVFbnRlci5hcHBlbmQoXCJnXCIpXHJcbiAgICAgICAgICAgIC5jbGFzc2VkKFwidGl0bGUtZ3JvdXBcIiwgdHJ1ZSlcclxuICAgICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAtbm9kZVRpdGxlQm94V2lkdGggLyAzICsgXCIsIFwiICsgKC1ub2RlVGl0bGVCb3hIZWlnaHQgLyAyIC0gbm9kZUJvZHlCb3hIZWlnaHQgLyAyKSArIFwiKVwiKTtcclxuXHJcbiAgICAgICAgdGl0bGVHcm91cHMuZWFjaChmdW5jdGlvbihkYXRhLCBpbmRleCwgYXJyKSB7XHJcbiAgICAgICAgICAgIGlmICghc2VsZi5nZXRUaXRsZURpc3BsYXlUZXh0LmNhbGwoc2VsZiwgZGF0YSkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IGQzLnNlbGVjdChlbGVtZW50KTtcclxuICAgICAgICAgICAgdmFyIHNpbmdsZWRPdXREYXRhID0gW107XHJcbiAgICAgICAgICAgIHNpbmdsZWRPdXREYXRhLnB1c2goZGF0YSk7XHJcblxyXG4gICAgICAgICAgICBzZWxlY3Rpb24uYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAgICAgICAgICAgLmNsYXNzZWQoXCJ0aXRsZS1ib3hcIiwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgbm9kZVRpdGxlQm94V2lkdGgpXHJcbiAgICAgICAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBub2RlVGl0bGVCb3hIZWlnaHQpO1xyXG5cclxuICAgICAgICAgICAgLy8gRDNQbHVzIFRleHRib3ggd2l0aCByZXNpemluZyBjYXBhYmlsaXR5XHJcbiAgICAgICAgICAgIHZhciBkM1BsdXNUaXRsZVRleHRCb3ggPSBuZXcgZDNQbHVzVGV4dEJveCgpXHJcbiAgICAgICAgICAgICAgICAuc2VsZWN0KGVsZW1lbnQpIC8vIFNldHMgdGhlIEQzUGx1cyBjb2RlIHRvIGFwcGVuZCB0byB0aGUgRE9NIGVsZW1lbnQuXHJcbiAgICAgICAgICAgICAgICAuZGF0YShzaW5nbGVkT3V0RGF0YSlcclxuICAgICAgICAgICAgICAgIC50ZXh0KChkYXRhLCBpbmRleCwgYXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VGl0bGVEaXNwbGF5VGV4dC5jYWxsKHNlbGYsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50ZXh0QW5jaG9yKFwibWlkZGxlXCIpXHJcbiAgICAgICAgICAgICAgICAudmVydGljYWxBbGlnbihcIm1pZGRsZVwiKVxyXG4gICAgICAgICAgICAgICAgLngobm9kZVRpdGxlQm94UGFkZGluZy5sZWZ0KVxyXG4gICAgICAgICAgICAgICAgLnkobm9kZVRpdGxlQm94UGFkZGluZy50b3ApXHJcbiAgICAgICAgICAgICAgICAuZm9udFdlaWdodCg3MDApXHJcbiAgICAgICAgICAgICAgICAuZm9udE1pbig2KVxyXG4gICAgICAgICAgICAgICAgLmZvbnRNYXgoMTYpXHJcbiAgICAgICAgICAgICAgICAuZm9udFJlc2l6ZSh0cnVlKSAvLyBSZXNpemVzIHRoZSB0ZXh0IHRvIGZpdCB0aGUgY29udGVudFxyXG4gICAgICAgICAgICAgICAgLndpZHRoKG5vZGVUaXRsZUJveFdpZHRoIC0gbm9kZVRpdGxlQm94UGFkZGluZy5sZWZ0IC0gbm9kZVRpdGxlQm94UGFkZGluZy5yaWdodClcclxuICAgICAgICAgICAgICAgIC5oZWlnaHQobm9kZVRpdGxlQm94SGVpZ2h0IC0gbm9kZVRpdGxlQm94UGFkZGluZy50b3AgLSBub2RlVGl0bGVCb3hQYWRkaW5nLmJvdHRvbSlcclxuICAgICAgICAgICAgICAgIC5yZW5kZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc2VsZjtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9ub2RlVXBkYXRlKG5vZGVVcGRhdGUsIG5vZGVVcGRhdGVUcmFuc2l0aW9uLCBub2Rlcykge1xyXG4gICAgICAgIC8vIFRyYW5zaXRpb24gdG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3IgdGhlIG5vZGVcclxuXHJcbiAgICAgICAgLy8gVHJhbnNsYXRpbmcgd2hpbGUgaW52ZXJ0aW5nIFgvWSB0b1xyXG4gICAgICAgIC8vIG1ha2UgdHJlZSBkaXJlY3Rpb24gZnJvbSBsZWZ0IHRvIHJpZ2h0LFxyXG4gICAgICAgIC8vIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgdG9wLXRvLWRvd24gdHJlZVxyXG4gICAgICAgIGlmICh0aGlzLmdldE9yaWVudGF0aW9uKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RvcHRvYm90dG9tJylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG5vZGVVcGRhdGVUcmFuc2l0aW9uLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgKGRhdGEsIGluZGV4LCBhcnIpID0+IFwidHJhbnNsYXRlKFwiICsgZGF0YS54ICsgXCIsXCIgKyBkYXRhLnkgKyBcIilcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG5vZGVVcGRhdGVUcmFuc2l0aW9uLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgKGRhdGEsIGluZGV4LCBhcnIpID0+IFwidHJhbnNsYXRlKFwiICsgZGF0YS55ICsgXCIsXCIgKyBkYXRhLnggKyBcIilcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbm9kZUJvZHlCb3hXaWR0aCA9IHRoaXMubm9kZVNldHRpbmdzLmdldEJvZHlCb3hXaWR0aCgpO1xyXG4gICAgICAgIHZhciBub2RlQm9keUJveEhlaWdodCA9IHRoaXMubm9kZVNldHRpbmdzLmdldEJvZHlCb3hIZWlnaHQoKTtcclxuXHJcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBub2RlIGF0dHJpYnV0ZXMgYW5kIHN0eWxlXHJcbiAgICAgICAgbm9kZVVwZGF0ZS5zZWxlY3QoXCIubm9kZSAuYm9keS1ncm91cCAuYm9keS1ib3hcIilcclxuICAgICAgICAgICAgLmF0dHIoXCJ5XCIsIC0obm9kZUJvZHlCb3hIZWlnaHQgLyAyKSlcclxuICAgICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBub2RlQm9keUJveFdpZHRoKVxyXG4gICAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBub2RlQm9keUJveEhlaWdodCk7XHJcblxyXG4gICAgICAgIG5vZGVVcGRhdGUuc2VsZWN0KFwiLmQzcGx1cy10ZXh0Qm94XCIpXHJcbiAgICAgICAgICAgIC5zdHlsZShcImZpbGwtb3BhY2l0eVwiLCAxKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9ub2RlRXhpdChub2RlRXhpdCwgbm9kZUV4aXRUcmFuc2l0aW9uLCBub2Rlcykge1xyXG4gICAgICAgIHZhciBub2RlQm9keUJveFdpZHRoID0gdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveFdpZHRoKCk7XHJcbiAgICAgICAgdmFyIG5vZGVCb2R5Qm94SGVpZ2h0ID0gdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveEhlaWdodCgpO1xyXG5cclxuICAgICAgICBub2RlRXhpdFRyYW5zaXRpb24uYXR0cihcInRyYW5zZm9ybVwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50ID0gZGF0YS5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQucGFyZW50ICYmICFoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC5wYXJlbnQuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudCA9IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRPcmllbnRhdGlvbigpLnRvTG93ZXJDYXNlKCkgPT09ICd0b3B0b2JvdHRvbScpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidHJhbnNsYXRlKFwiICsgKGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnggKyBub2RlQm9keUJveFdpZHRoIC8gMikgKyBcIixcIiArIChoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC55ICsgbm9kZUJvZHlCb3hIZWlnaHQpICsgXCIpXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNsYXRpbmcgd2hpbGUgaW52ZXJ0aW5nIFgvWSB0b1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1ha2UgdHJlZSBkaXJlY3Rpb24gZnJvbSBsZWZ0IHRvIHJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgdG9wLXRvLWRvd24gdHJlZVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInRyYW5zbGF0ZShcIiArIChoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC55ICsgbm9kZUJvZHlCb3hXaWR0aCkgKyBcIixcIiArIChoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC54ICsgbm9kZUJvZHlCb3hIZWlnaHQgLyAyKSArIFwiKVwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucmVtb3ZlKCk7XHJcblxyXG4gICAgICAgIC8vIE9uIGV4aXQgYW5pbWF0ZSBvdXRcclxuICAgICAgICBub2RlRXhpdFRyYW5zaXRpb24uc2VsZWN0KFwiLm5vZGUgLmJvZHktZ3JvdXAgcmVjdFwiKVxyXG4gICAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIDFlLTYpXHJcbiAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIDFlLTYpO1xyXG5cclxuICAgICAgICBub2RlRXhpdFRyYW5zaXRpb24uc2VsZWN0KFwiLm5vZGUgLmJvZHktZ3JvdXAgLmQzcGx1cy10ZXh0Qm94XCIpXHJcbiAgICAgICAgICAgIC5zdHlsZShcImZpbGwtb3BhY2l0eVwiLCAxZS02KVxyXG4gICAgICAgICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4gXCJ0cmFuc2xhdGUoMCxcIiArICgtbm9kZUJvZHlCb3hIZWlnaHQgLyAyKSArIFwiKVwiKVxyXG4gICAgICAgICAgICAuc2VsZWN0QWxsKFwidGV4dFwiKVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwiZm9udC1zaXplXCIsIDApXHJcbiAgICAgICAgICAgICAgICAuYXR0cihcInlcIiwgMClcclxuICAgICAgICAgICAgICAgIC5hdHRyKFwieFwiLCAwKTtcclxuXHJcbiAgICAgICAgbm9kZUV4aXRUcmFuc2l0aW9uLnNlbGVjdChcIi5ub2RlIC50aXRsZS1ncm91cFwiKVxyXG4gICAgICAgICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZSgwLCBcIiArICgtbm9kZUJvZHlCb3hIZWlnaHQgLyAyKSArIFwiKVwiKTtcclxuXHJcbiAgICAgICAgbm9kZUV4aXRUcmFuc2l0aW9uLnNlbGVjdChcIi5ub2RlIC50aXRsZS1ncm91cCByZWN0XCIpXHJcbiAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgMWUtNilcclxuICAgICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgMWUtNik7XHJcblxyXG4gICAgICAgIG5vZGVFeGl0VHJhbnNpdGlvbi5zZWxlY3QoXCIubm9kZSAudGl0bGUtZ3JvdXAgLmQzcGx1cy10ZXh0Qm94XCIpXHJcbiAgICAgICAgICAgIC5zdHlsZShcImZpbGwtb3BhY2l0eVwiLCAxZS02KVxyXG4gICAgICAgICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZSgwLDApXCIpXHJcbiAgICAgICAgICAgIC5zZWxlY3RBbGwoXCJ0ZXh0XCIpXHJcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJmb250LXNpemVcIiwgMClcclxuICAgICAgICAgICAgICAgIC5hdHRyKFwieVwiLCAwKVxyXG4gICAgICAgICAgICAgICAgLmF0dHIoXCJ4XCIsIDApO1xyXG5cclxuICAgICAgICAvLyBPbiBleGl0IHJlZHVjZSB0aGUgb3BhY2l0eSBvZiB0ZXh0IGxhYmVsc1xyXG4gICAgICAgIG5vZGVFeGl0VHJhbnNpdGlvbi5zZWxlY3QoXCIuZDNwbHVzLXRleHRCb3hcIilcclxuICAgICAgICAgICAgLnN0eWxlKFwiZmlsbC1vcGFjaXR5XCIsIDFlLTYpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgX2dldE5vZGVTaXplKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdldE9yaWVudGF0aW9uKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RvcHRvYm90dG9tJylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVTZXR0aW5ncy5nZXRCb2R5Qm94V2lkdGgoKSArIHRoaXMubm9kZVNldHRpbmdzLmdldEhvcml6b250YWxTcGFjaW5nKCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVTZXR0aW5ncy5nZXRCb2R5Qm94SGVpZ2h0KCkgKyB0aGlzLm5vZGVTZXR0aW5ncy5nZXRWZXJ0aWNhbFNwYWNpbmcoKVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveEhlaWdodCgpICsgdGhpcy5ub2RlU2V0dGluZ3MuZ2V0VmVydGljYWxTcGFjaW5nKCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVTZXR0aW5ncy5nZXRCb2R5Qm94V2lkdGgoKSArIHRoaXMubm9kZVNldHRpbmdzLmdldEhvcml6b250YWxTcGFjaW5nKClcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBfbGlua0VudGVyKHNvdXJjZSwgbGlua0VudGVyLCBsaW5rcywgbGlua1BhdGhHZW5lcmF0b3IpXHR7XHJcbiAgICAgICAgbGlua0VudGVyLmF0dHIoXCJkXCIsIChkYXRhLCBpbmRleCwgYXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBzb3VyY2VDb29yZGluYXRlID0ge1xyXG4gICAgICAgICAgICAgICAgeDogc291cmNlLngwLFxyXG4gICAgICAgICAgICAgICAgeTogc291cmNlLnkwXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNPYmplY3QgPSB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHNvdXJjZUNvb3JkaW5hdGUsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHNvdXJjZUNvb3JkaW5hdGVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuIGxpbmtQYXRoR2VuZXJhdG9yKGNvb3JkaW5hdGVzT2JqZWN0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9saW5rVXBkYXRlKHNvdXJjZSwgbGlua1VwZGF0ZSwgbGlua1VwZGF0ZVRyYW5zaXRpb24sIGxpbmtzLCBsaW5rUGF0aEdlbmVyYXRvcikge1xyXG4gICAgICAgIGxpbmtVcGRhdGVUcmFuc2l0aW9uLmF0dHIoXCJkXCIsIChkYXRhLCBpbmRleCwgYXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBzb3VyY2VDb29yZGluYXRlID0gZGF0YTtcclxuICAgICAgICAgICAgdmFyIHRhcmdldENvb3JkaW5hdGUgPSBkYXRhLnBhcmVudDtcclxuXHJcbiAgICAgICAgICAgIHZhciBjb29yZGluYXRlc09iamVjdCA9IHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlQ29vcmRpbmF0ZSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0Q29vcmRpbmF0ZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGxpbmtQYXRoR2VuZXJhdG9yKGNvb3JkaW5hdGVzT2JqZWN0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9saW5rRXhpdChzb3VyY2UsIGxpbmtFeGl0LCBsaW5rRXhpdFRyYW5zaXRpb24sIGxpbmtzLCBsaW5rUGF0aEdlbmVyYXRvcikge1xyXG4gICAgICAgIGxpbmtFeGl0VHJhbnNpdGlvbi5hdHRyKFwiZFwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4ge1xyXG4gICAgICAgICAgICB2YXIgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQgPSBkYXRhLnBhcmVudDtcclxuICAgICAgICAgICAgd2hpbGUgKGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudCAmJiAhaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQucGFyZW50LmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudCA9IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIHNvdXJjZUNvb3JkaW5hdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRPcmllbnRhdGlvbigpLnRvTG93ZXJDYXNlKCkgPT09ICd0b3B0b2JvdHRvbScpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHZhciBub2RlQm9keUJveEhlaWdodCA9IHRoaXMubm9kZVNldHRpbmdzLmdldEJvZHlCb3hIZWlnaHQoKTtcclxuICAgICAgICAgICAgICAgIHNvdXJjZUNvb3JkaW5hdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQueCxcclxuICAgICAgICAgICAgICAgICAgICB5OiBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC55ICsgbm9kZUJvZHlCb3hIZWlnaHRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbm9kZUJvZHlCb3hXaWR0aCA9IHRoaXMubm9kZVNldHRpbmdzLmdldEJvZHlCb3hXaWR0aCgpO1xyXG4gICAgICAgICAgICAgICAgc291cmNlQ29vcmRpbmF0ZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB4OiBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC54LFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnkgKyBub2RlQm9keUJveFdpZHRoXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgdGFyZ2V0Q29vcmRpbmF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIHg6IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LngsXHJcbiAgICAgICAgICAgICAgICB5OiBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC55XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNPYmplY3QgPSB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHNvdXJjZUNvb3JkaW5hdGUsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldENvb3JkaW5hdGVcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBsaW5rUGF0aEdlbmVyYXRvcihjb29yZGluYXRlc09iamVjdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBfZ2V0TGlua1BhdGhHZW5lcmF0b3IoKSB7XHJcbiAgICAgICAgLy8gRGVjbGFyZSBib3ggZGltZW5zaW9uc1xyXG4gICAgICAgIHZhciBub2RlQm9keUJveFdpZHRoID0gdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveFdpZHRoKCk7XHJcbiAgICAgICAgdmFyIG5vZGVCb2R5Qm94SGVpZ2h0ID0gdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveEhlaWdodCgpO1xyXG5cclxuICAgICAgICAvLyBXZSBzcGVjaWZ5IGFycm93IGZ1bmN0aW9ucyB0aGF0IHJldHVybnNcclxuICAgICAgICAvLyBhbiBhcnJheSBzcGVjaWZ5aW5nIGhvdyB0byBnZXQgdGhlXHJcbiAgICAgICAgLy8gdGhlIHgveSBjb3JkaW5hdGVzIGZyb20gdGhlIG9iamVjdCxcclxuICAgICAgICAvLyBpbiB0aGUgZm9ybWF0IG9mIFt4LCB5XSwgdGhlIGRlZmF1bHRcclxuICAgICAgICAvLyBmb3JtYXQgZm9yIHRoZSBsaW5rIGdlbmVyYXRvciB0b1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIHRoZSBwYXRoXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3JpZW50YXRpb24oKS50b0xvd2VyQ2FzZSgpID09PSAndG9wdG9ib3R0b20nKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIGQzLmxpbmtWZXJ0aWNhbCgpXHJcbiAgICAgICAgICAgICAgICAuc291cmNlKChkYXRhKSA9PiBbZGF0YS5zb3VyY2UueCArIG5vZGVCb2R5Qm94V2lkdGggLyAyLCBkYXRhLnNvdXJjZS55IC0gbm9kZUJvZHlCb3hIZWlnaHQgLyAyXSlcclxuICAgICAgICAgICAgICAgIC50YXJnZXQoKGRhdGEpID0+IFtkYXRhLnRhcmdldC54ICsgbm9kZUJvZHlCb3hXaWR0aCAvIDIsIGRhdGEudGFyZ2V0LnkgKyBub2RlQm9keUJveEhlaWdodCAvIDJdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIGQzLmxpbmtIb3Jpem9udGFsKClcclxuICAgICAgICAgICAgICAgIC8vIEludmVydHMgdGhlIFgvWSBjb29yZGluYXRlcyB0byBkcmF3IGxpbmtzIGZvciBhXHJcbiAgICAgICAgICAgICAgICAvLyB0cmVlIHN0YXJ0aW5nIGZyb20gbGVmdCB0byByaWdodCxcclxuICAgICAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgdG9wLXRvLWRvd24gdHJlZVxyXG4gICAgICAgICAgICAgICAgLnNvdXJjZSgoZGF0YSkgPT4gW2RhdGEuc291cmNlLnksIGRhdGEuc291cmNlLnhdKVxyXG4gICAgICAgICAgICAgICAgLnRhcmdldCgoZGF0YSkgPT4gW2RhdGEudGFyZ2V0LnkgKyBub2RlQm9keUJveFdpZHRoLCBkYXRhLnRhcmdldC54XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgdmFsaWRhdGVTZXR0aW5ncygpIHtcclxuICAgICAgICBzdXBlci52YWxpZGF0ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9nZXRCb2R5RGlzcGxheVRleHQpXHJcbiAgICAgICAgICAgIHRocm93IFwiTmVlZCB0byBkZWZpbmUgdGhlIGdldEJvZHlEaXNwbGF5VGV4dCBmdW5jdGlvbiBhcyBwYXJ0IG9mIHRoZSBvcHRpb25zXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBib2R5IGRpc3BsYXkgdGV4dCBhY2Nlc3NvcixcclxuICAgICAqIHVzZWQgdG8gZ2V0IHRoZSBib2R5IGRpc3BsYXkgdGV4dFxyXG4gICAgICogZm9yIHRoZSBub2Rlcy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtib2R5RGlzcGxheVRleHRBY2Nlc3NvckNhbGxCYWNrfSBuZXdCb2R5RGlzcGxheVRleHRBY2Nlc3NvciBcclxuICAgICAqL1xyXG4gICAgc2V0Qm9keURpc3BsYXlUZXh0QWNjZXNzb3IobmV3Qm9keURpc3BsYXlUZXh0QWNjZXNzb3IpIHtcclxuICAgICAgICB0aGlzLl9nZXRCb2R5RGlzcGxheVRleHQgPSBuZXdCb2R5RGlzcGxheVRleHRBY2Nlc3NvcjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGJvZHkgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgZGF0YSBpdGVtIHRvIGdldCB0aGUgYm9keSBkaXNwbGF5IHRleHQgZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBib2R5IGRpc3BsYXkgdGV4dCB0byByZW5kZXIgZm9yIHRoZSBub2RlLlxyXG4gICAgICovXHJcbiAgICBnZXRCb2R5RGlzcGxheVRleHQobm9kZURhdGFJdGVtKSB7XHJcbiAgICAgICAgLy8gTm90ZSB0aGF0IGRhdGEgaW4gdGhpcyBjb250ZXh0IHJlZmVycyB0byBEMyBUcmVlIGRhdGEsIG5vdCB0aGUgb3JpZ2luYWwgaXRlbSBkYXRhXHJcbiAgICAgICAgLy8gVG8gQWNjZXNzIHRoZSBvcmlnaW5hbCBpdGVtIGRhdGEsIHVzZSB0aGUgXCIuZGF0YVwiIHByb3BlcnR5XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEJvZHlEaXNwbGF5VGV4dChub2RlRGF0YUl0ZW0uZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSB0aXRsZSBkaXNwbGF5IHRleHQgYWNjZXNzb3IsXHJcbiAgICAgKiB1c2VkIHRvIGdldCB0aGUgdGl0bGUgZGlzcGxheSB0ZXh0XHJcbiAgICAgKiBmb3IgdGhlIG5vZGVzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3RpdGxlRGlzcGxheVRleHRBY2Nlc3NvckNhbGxCYWNrfSBuZXdUaXRsZURpc3BsYXlUZXh0QWNjZXNzb3IgXHJcbiAgICAgKi9cclxuICAgIHNldFRpdGxlRGlzcGxheVRleHRBY2Nlc3NvcihuZXdUaXRsZURpc3BsYXlUZXh0QWNjZXNzb3IpIHtcclxuICAgICAgICB0aGlzLl9nZXRUaXRsZURpc3BsYXlUZXh0ID0gbmV3VGl0bGVEaXNwbGF5VGV4dEFjY2Vzc29yO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdGl0bGUgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgRDMgbm9kZSBkYXRhIGl0ZW0gdG8gZ2V0IHRoZSB0aXRsZSBkaXNwbGF5IHRleHQgZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0aXRsZSBkaXNwbGF5IHRleHQgdG8gcmVuZGVyIGZvciB0aGUgbm9kZS5cclxuICAgICAqL1xyXG4gICAgZ2V0VGl0bGVEaXNwbGF5VGV4dChub2RlRGF0YUl0ZW0pIHtcclxuICAgICAgICAvLyBOb3RlIHRoYXQgZGF0YSBpbiB0aGlzIGNvbnRleHQgcmVmZXJzIHRvIEQzIFRyZWUgZGF0YSwgbm90IHRoZSBvcmlnaW5hbCBpdGVtIGRhdGFcclxuICAgICAgICAvLyBUbyBBY2Nlc3MgdGhlIG9yaWdpbmFsIGl0ZW0gZGF0YSwgdXNlIHRoZSBcIi5kYXRhXCIgcHJvcGVydHlcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGl0bGVEaXNwbGF5VGV4dChub2RlRGF0YUl0ZW0uZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBjZW50ZXJOb2RlKG5vZGVEYXRhSXRlbSkge1xyXG4gICAgICAgIHZhciBub2RlQm9keUJveFdpZHRoID0gdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveFdpZHRoKCk7XHJcbiAgICAgICAgdmFyIG5vZGVCb2R5Qm94SGVpZ2h0ID0gdGhpcy5ub2RlU2V0dGluZ3MuZ2V0Qm9keUJveEhlaWdodCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdldE9yaWVudGF0aW9uKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RvcHRvYm90dG9tJylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG5vZGVEYXRhSXRlbS54MCA9IG5vZGVEYXRhSXRlbS54MDtcclxuICAgICAgICAgICAgbm9kZURhdGFJdGVtLnkwID0gbm9kZURhdGFJdGVtLnkwICsgbm9kZUJvZHlCb3hIZWlnaHQgLyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBub2RlRGF0YUl0ZW0ueTAgPSBub2RlRGF0YUl0ZW0ueTAgKyBub2RlQm9keUJveFdpZHRoIC8gMjtcclxuICAgICAgICAgICAgbm9kZURhdGFJdGVtLngwID0gbm9kZURhdGFJdGVtLngwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3VwZXIuY2VudGVyTm9kZShub2RlRGF0YUl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0ZXJtaW5lcyBob3cgdG8gb2J0YWluIHRoZSBib2R5IHRleHRcclxuICAgICAqIHRvIGRpc3BsYXkgZm9yIGEgbm9kZSBjb3JyZXNwb25kaW5nXHJcbiAgICAgKiB0byBhIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQGNhbGxiYWNrIGJvZHlEaXNwbGF5VGV4dEFjY2Vzc29yQ2FsbEJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBkYXRhIGl0ZW0gdG8gZ2V0IHRoZSBib2R5IGRpc3BsYXkgdGV4dCBmcm9tLlxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGJvZHkgZGlzcGxheSB0ZXh0IHRvIHJlbmRlciBmb3IgdGhlIG5vZGUuXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZXMgaG93IHRvIG9idGFpbiB0aGUgdGl0bGUgdGV4dFxyXG4gICAgICogdG8gZGlzcGxheSBmb3IgYSBub2RlIGNvcnJlc3BvbmRpbmdcclxuICAgICAqIHRvIGEgZGF0YSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAY2FsbGJhY2sgdGl0bGVEaXNwbGF5VGV4dEFjY2Vzc29yQ2FsbEJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBkYXRhIGl0ZW0gdG8gZ2V0IHRoZSB0aXRsZSBkaXNwbGF5IHRleHQgZnJvbS5cclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0aXRsZSBkaXNwbGF5IHRleHQgdG8gcmVuZGVyIGZvciB0aGUgbm9kZS5cclxuICAgICAqL1xyXG59XHJcblxyXG5Cb3hlZFRyZWUuZGVmYXVsdHMgPSB7XHJcbiAgICBnZXRCb2R5RGlzcGxheVRleHQ6IG51bGwsXHJcbiAgICBnZXRUaXRsZURpc3BsYXlUZXh0OiAoZGF0YUl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQm94ZWRUcmVlOyIsImltcG9ydCBOb2RlU2V0dGluZ3MgZnJvbSAnLi9Ob2RlU2V0dGluZ3MnO1xyXG5cclxuY2xhc3MgQ2lyY2xlTm9kZVNldHRpbmdzIGV4dGVuZHMgTm9kZVNldHRpbmdzIHtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlTm9kZVNldHRpbmdzOyIsImltcG9ydCBkMyBmcm9tICcuL0N1c3RvbUQzJztcclxuaW1wb3J0IEJhc2VUcmVlIGZyb20gJy4vQmFzZVRyZWUnO1xyXG5pbXBvcnQgQ2lyY2xlTm9kZVNldHRpbmdzIGZyb20gJy4vQ2lyY2xlTm9kZVNldHRpbmdzJztcclxuXHJcbmNsYXNzIENpcmNsZVRyZWUgZXh0ZW5kcyBCYXNlVHJlZXtcclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSBUaGUgb3B0aW9ucyBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0ge2Rpc3BsYXlUZXh0QWNjZXNzb3JDYWxsQmFja30gW29wdGlvbnMuZ2V0RGlzcGxheVRleHRdIERldGVybWluZXMgaG93IHRvIG9idGFpbiB0aGUgdGV4dCB0byBkaXNwbGF5IGZvciBhIG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGRhdGEgaXRlbS5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHZhciBtZXJnZWRPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAuLi5CYXNlVHJlZS5kZWZhdWx0cyxcclxuICAgICAgICAgICAgLi4uQ2lyY2xlVHJlZS5kZWZhdWx0cyxcclxuICAgICAgICAgICAgLi4ub3B0aW9uc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuX2dldERpc3BsYXlUZXh0ID0gbWVyZ2VkT3B0aW9ucy5nZXREaXNwbGF5VGV4dDtcclxuICAgICAgICB0aGlzLm5vZGVTZXR0aW5ncyA9IG5ldyBDaXJjbGVOb2RlU2V0dGluZ3ModGhpcywgbWVyZ2VkT3B0aW9ucy5ub2RlU2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICAvLyBDcmVhdGUgdGhlIHN2ZywgYW5kIHNldCBpdHMgZGltZW5zaW9uc1xyXG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICB0aGlzLmdldFN2ZygpLmNsYXNzZWQoJ2NpcmNsZS10cmVlJywgdHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBfbm9kZUVudGVyKG5vZGVFbnRlciwgbm9kZXMpIHtcclxuICAgICAgICAvLyBBZGQgQ2lyY2xlIGZvciB0aGUgbm9kZXNcclxuICAgICAgICBub2RlRW50ZXIuYXBwZW5kKFwiY2lyY2xlXCIpXHJcbiAgICAgICAgICAgIC5hdHRyKFwiclwiLCAxZS02KTtcclxuXHJcbiAgICAgICAgLy8gQWRkIGxhYmVscyBmb3IgdGhlIG5vZGVzXHJcbiAgICAgICAgbm9kZUVudGVyLmFwcGVuZChcInRleHRcIilcclxuICAgICAgICAgICAgLnRleHQoKGRhdGEsIGluZGV4LCBhcnIpID0+IHRoaXMuZ2V0RGlzcGxheVRleHQuY2FsbCh0aGlzLCBkYXRhKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBfbm9kZVVwZGF0ZShub2RlVXBkYXRlLCBub2RlVXBkYXRlVHJhbnNpdGlvbiwgbm9kZXMpIHtcclxuICAgICAgICBub2RlVXBkYXRlLmNsYXNzZWQoJ21pZGRsZScsIChkYXRhLCBpbmRleCwgYXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBpc01pZGRsZUNoaWxkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnBhcmVudCAmJiBkYXRhLnBhcmVudC5jaGlsZHJlbi5sZW5ndGggJSAyICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2libGluZ3MgPSBkYXRhLnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIHZhciBpbmRleE9mU2libGluZ3MgPSBzaWJsaW5ncy5pbmRleE9mKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4T2ZTaWJsaW5ncyA9PT0gTWF0aC5mbG9vcihzaWJsaW5ncy5sZW5ndGggLyAyKSlcclxuICAgICAgICAgICAgICAgICAgICBpc01pZGRsZUNoaWxkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaXNNaWRkbGVDaGlsZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gVHJhbnNpdGlvbiB0byB0aGUgcHJvcGVyIHBvc2l0aW9uIGZvciB0aGUgbm9kZVxyXG5cclxuICAgICAgICAvLyBUcmFuc2xhdGluZyB3aGlsZSBpbnZlcnRpbmcgWC9ZIHRvXHJcbiAgICAgICAgLy8gbWFrZSB0cmVlIGRpcmVjdGlvbiBmcm9tIGxlZnQgdG8gcmlnaHQsXHJcbiAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCB0b3AtdG8tZG93biB0cmVlXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3JpZW50YXRpb24oKS50b0xvd2VyQ2FzZSgpID09PSAndG9wdG9ib3R0b20nKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbm9kZVVwZGF0ZVRyYW5zaXRpb24uYXR0cihcInRyYW5zZm9ybVwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4gXCJ0cmFuc2xhdGUoXCIgKyBkYXRhLnggKyBcIixcIiArIGRhdGEueSArIFwiKVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbm9kZVVwZGF0ZVRyYW5zaXRpb24uYXR0cihcInRyYW5zZm9ybVwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4gXCJ0cmFuc2xhdGUoXCIgKyBkYXRhLnkgKyBcIixcIiArIGRhdGEueCArIFwiKVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5vZGVVcGRhdGUuc2VsZWN0KFwidGV4dFwiKVxyXG4gICAgICAgICAgICAuc3R5bGUoXCJmaWxsLW9wYWNpdHlcIiwgMSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBfbm9kZUV4aXQobm9kZUV4aXQsIG5vZGVFeGl0VHJhbnNpdGlvbiwgbm9kZXMpIHtcclxuICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXRpbmcgbm9kZXNcclxuICAgICAgICBub2RlRXhpdFRyYW5zaXRpb24uYXR0cihcInRyYW5zZm9ybVwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4ge1xyXG4gICAgICAgICAgICB2YXIgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQgPSBkYXRhLnBhcmVudDtcclxuICAgICAgICAgICAgd2hpbGUgKGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudCAmJiAhaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQucGFyZW50LmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudCA9IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gVHJhbnNsYXRpbmcgd2hpbGUgaW52ZXJ0aW5nIFgvWSB0b1xyXG4gICAgICAgICAgICAvLyBtYWtlIHRyZWUgZGlyZWN0aW9uIGZyb20gbGVmdCB0byByaWdodCxcclxuICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCB0b3AtdG8tZG93biB0cmVlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldE9yaWVudGF0aW9uKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RvcHRvYm90dG9tJylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidHJhbnNsYXRlKFwiICsgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQueCArIFwiLFwiICsgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQueSArIFwiKVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidHJhbnNsYXRlKFwiICsgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQueSArIFwiLFwiICsgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQueCArIFwiKVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAucmVtb3ZlKCk7XHJcblxyXG4gICAgICAgIC8vIE9uIGV4aXQgcmVkdWNlIHRoZSBub2RlIGNpcmNsZXMgc2l6ZSB0byAwXHJcbiAgICAgICAgbm9kZUV4aXRUcmFuc2l0aW9uLnNlbGVjdChcImNpcmNsZVwiKVxyXG4gICAgICAgICAgICAuYXR0cihcInJcIiwgMWUtNik7XHJcblxyXG4gICAgICAgIC8vIE9uIGV4aXQgcmVkdWNlIHRoZSBvcGFjaXR5IG9mIHRleHQgbGFiZWxzXHJcbiAgICAgICAgbm9kZUV4aXRUcmFuc2l0aW9uLnNlbGVjdChcInRleHRcIilcclxuICAgICAgICAgICAgLnN0eWxlKFwiZmlsbC1vcGFjaXR5XCIsIDFlLTYpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgX2dldE5vZGVTaXplKCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHRoaXMubm9kZVNldHRpbmdzLmdldFZlcnRpY2FsU3BhY2luZygpLFxyXG4gICAgICAgICAgICB0aGlzLm5vZGVTZXR0aW5ncy5nZXRIb3Jpem9udGFsU3BhY2luZygpXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9saW5rRW50ZXIoc291cmNlLCBsaW5rRW50ZXIsIGxpbmtzLCBsaW5rUGF0aEdlbmVyYXRvcilcdHtcclxuICAgICAgICBsaW5rRW50ZXIuYXR0cihcImRcIiwgKGRhdGEsIGluZGV4LCBhcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHNvdXJjZUNvb3JkaW5hdGUgPSB7XHJcbiAgICAgICAgICAgICAgICB4OiBzb3VyY2UueDAsXHJcbiAgICAgICAgICAgICAgICB5OiBzb3VyY2UueTBcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHZhciBjb29yZGluYXRlc09iamVjdCA9IHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlQ29vcmRpbmF0ZSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogc291cmNlQ29vcmRpbmF0ZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGxpbmtQYXRoR2VuZXJhdG9yKGNvb3JkaW5hdGVzT2JqZWN0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9saW5rVXBkYXRlKHNvdXJjZSwgbGlua1VwZGF0ZSwgbGlua1VwZGF0ZVRyYW5zaXRpb24sIGxpbmtzLCBsaW5rUGF0aEdlbmVyYXRvcikge1xyXG4gICAgICAgIGxpbmtVcGRhdGVUcmFuc2l0aW9uLmF0dHIoXCJkXCIsIChkYXRhLCBpbmRleCwgYXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBzb3VyY2VDb29yZGluYXRlID0gZGF0YTtcclxuICAgICAgICAgICAgdmFyIHRhcmdldENvb3JkaW5hdGUgPSBkYXRhLnBhcmVudDtcclxuXHJcbiAgICAgICAgICAgIHZhciBjb29yZGluYXRlc09iamVjdCA9IHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlQ29vcmRpbmF0ZSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0Q29vcmRpbmF0ZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGxpbmtQYXRoR2VuZXJhdG9yKGNvb3JkaW5hdGVzT2JqZWN0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIF9saW5rRXhpdChzb3VyY2UsIGxpbmtFeGl0LCBsaW5rRXhpdFRyYW5zaXRpb24sIGxpbmtzLCBsaW5rUGF0aEdlbmVyYXRvcikge1xyXG4gICAgICAgIGxpbmtFeGl0VHJhbnNpdGlvbi5hdHRyKFwiZFwiLCAoZGF0YSwgaW5kZXgsIGFycikgPT4ge1xyXG4gICAgICAgICAgICB2YXIgaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQgPSBkYXRhLnBhcmVudDtcclxuICAgICAgICAgICAgd2hpbGUgKGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudCAmJiAhaGlnaGVzdENvbGxhcHNpbmdQYXJlbnQucGFyZW50LmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudCA9IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgc291cmNlQ29vcmRpbmF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIHg6IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LngsXHJcbiAgICAgICAgICAgICAgICB5OiBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC55XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgdGFyZ2V0Q29vcmRpbmF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIHg6IGhpZ2hlc3RDb2xsYXBzaW5nUGFyZW50LngsXHJcbiAgICAgICAgICAgICAgICB5OiBoaWdoZXN0Q29sbGFwc2luZ1BhcmVudC55XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNPYmplY3QgPSB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHNvdXJjZUNvb3JkaW5hdGUsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldENvb3JkaW5hdGVcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBsaW5rUGF0aEdlbmVyYXRvcihjb29yZGluYXRlc09iamVjdCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgX2dldExpbmtQYXRoR2VuZXJhdG9yKCkge1xyXG4gICAgICAgIC8vIFdlIHNwZWNpZnkgYXJyb3cgZnVuY3Rpb25zIHRoYXQgcmV0dXJuc1xyXG4gICAgICAgIC8vIGFuIGFycmF5IHNwZWNpZnlpbmcgaG93IHRvIGdldCB0aGVcclxuICAgICAgICAvLyB0aGUgeC95IGNvcmRpbmF0ZXMgZnJvbSB0aGUgb2JqZWN0LFxyXG4gICAgICAgIC8vIGluIHRoZSBmb3JtYXQgb2YgW3gsIHldLCB0aGUgZGVmYXVsdFxyXG4gICAgICAgIC8vIGZvcm1hdCBmb3IgdGhlIGxpbmsgZ2VuZXJhdG9yIHRvXHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIHBhdGhcclxuICAgICAgICBpZiAodGhpcy5nZXRPcmllbnRhdGlvbigpLnRvTG93ZXJDYXNlKCkgPT09ICd0b3B0b2JvdHRvbScpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm4gZDMubGlua1ZlcnRpY2FsKClcclxuICAgICAgICAgICAgICAgIC5zb3VyY2UoKGRhdGEpID0+IFtkYXRhLnNvdXJjZS54LCBkYXRhLnNvdXJjZS55XSlcclxuICAgICAgICAgICAgICAgIC50YXJnZXQoKGRhdGEpID0+IFtkYXRhLnRhcmdldC54LCBkYXRhLnRhcmdldC55XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJldHVybiBkMy5saW5rSG9yaXpvbnRhbCgpXHJcbiAgICAgICAgICAgICAgICAvLyBJbnZlcnRzIHRoZSBYL1kgY29vcmRpbmF0ZXMgdG8gZHJhdyBsaW5rcyBmb3IgYVxyXG4gICAgICAgICAgICAgICAgLy8gdHJlZSBzdGFydGluZyBmcm9tIGxlZnQgdG8gcmlnaHQsXHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSB0eXBpY2FsIHRvcC10by1kb3duIHRyZWVcclxuICAgICAgICAgICAgICAgIC5zb3VyY2UoKGRhdGEpID0+IFtkYXRhLnNvdXJjZS55LCBkYXRhLnNvdXJjZS54XSlcclxuICAgICAgICAgICAgICAgIC50YXJnZXQoKGRhdGEpID0+IFtkYXRhLnRhcmdldC55LCBkYXRhLnRhcmdldC54XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgdmFsaWRhdGVTZXR0aW5ncygpIHtcclxuICAgICAgICBzdXBlci52YWxpZGF0ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdldERpc3BsYXlUZXh0KVxyXG4gICAgICAgICAgICB0aHJvdyBcIk5lZWQgdG8gZGVmaW5lIHRoZSBnZXREaXNwbGF5VGV4dCBmdW5jdGlvbiBhcyBwYXJ0IG9mIHRoZSBvcHRpb25zXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBkaXNwbGF5IHRleHQgYWNjZXNzb3IsXHJcbiAgICAgKiB1c2VkIHRvIGdldCB0aGUgZGlzcGxheSB0ZXh0XHJcbiAgICAgKiBmb3IgdGhlIG5vZGVzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2Rpc3BsYXlUZXh0QWNjZXNzb3JDYWxsQmFja30gbmV3RGlzcGxheVRleHRBY2Nlc3NvciBcclxuICAgICAqL1xyXG4gICAgc2V0RGlzcGxheVRleHRBY2Nlc3NvcihuZXdEaXNwbGF5VGV4dEFjY2Vzc29yKSB7XHJcbiAgICAgICAgdGhpcy5fZ2V0RGlzcGxheVRleHQgPSBuZXdEaXNwbGF5VGV4dEFjY2Vzc29yO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBUaGUgZGF0YSBpdGVtIHRvIGdldCB0aGUgZGlzcGxheSB0ZXh0IGZyb20uXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZGlzcGxheSB0ZXh0IHRvIHJlbmRlciBmb3IgdGhlIG5vZGUuXHJcbiAgICAgKi9cclxuICAgIGdldERpc3BsYXlUZXh0KG5vZGVEYXRhSXRlbSkge1xyXG4gICAgICAgIC8vIE5vdGUgdGhhdCBkYXRhIGluIHRoaXMgY29udGV4dCByZWZlcnMgdG8gRDMgVHJlZSBkYXRhLCBub3QgdGhlIG9yaWdpbmFsIGl0ZW0gZGF0YVxyXG4gICAgICAgIC8vIFRvIEFjY2VzcyB0aGUgb3JpZ2luYWwgaXRlbSBkYXRhLCB1c2UgdGhlIFwiLmRhdGFcIiBwcm9wZXJ0eVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXREaXNwbGF5VGV4dChub2RlRGF0YUl0ZW0uZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIGhvdyB0byBvYnRhaW4gdGhlIHRleHRcclxuICAgICAqIHRvIGRpc3BsYXkgZm9yIGEgbm9kZSBjb3JyZXNwb25kaW5nXHJcbiAgICAgKiB0byBhIGRhdGEgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQGNhbGxiYWNrIGRpc3BsYXlUZXh0QWNjZXNzb3JDYWxsQmFja1xyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIGRhdGEgaXRlbSB0byBnZXQgdGhlIGRpc3BsYXkgdGV4dCBmcm9tLlxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGRpc3BsYXkgdGV4dCB0byByZW5kZXIgZm9yIHRoZSBub2RlLlxyXG4gICAgICovXHJcbn1cclxuXHJcbkNpcmNsZVRyZWUuZGVmYXVsdHMgPSB7XHJcbiAgICBnZXREaXNwbGF5VGV4dDogKG5vZGVEYXRhSXRlbSkgPT4gbnVsbFxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVUcmVlOyIsIi8qKlxyXG4gKiBXZSBvbmx5IGltcG9ydCB0aGUgbmVjZXNzYXJ5IG1vZHVsZXNcclxuICogZnJvbSBEMywgdG8ga2VlcCByZXN1bHRpbmcgYnVuZGRlZFxyXG4gKiBKUyBmaWxlcyBtaW5pbWFsIGluIHNpemUuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgc2VsZWN0LCBzZWxlY3RBbGwsIGV2ZW50IH0gZnJvbSAnZDMtc2VsZWN0aW9uJ1xyXG5pbXBvcnQgKiBhcyBoaWVyYXJjaHkgZnJvbSAnZDMtaGllcmFyY2h5J1xyXG5pbXBvcnQgKiBhcyB6b29tIGZyb20gJ2QzLXpvb20nXHJcbmltcG9ydCB7IGxpbmtIb3Jpem9udGFsLCBsaW5rVmVydGljYWwgfSBmcm9tICdkMy1zaGFwZSdcclxuXHJcbi8vIGNyZWF0ZSBhIE9iamVjdCB3aXRoIG9ubHkgdGhlIHN1YnNldCBvZiBmdW5jdGlvbnMvc3VibW9kdWxlcy9wbHVnaW5zIHRoYXQgd2UgbmVlZFxyXG52YXIgZDMgPSB7XHJcbiAgc2VsZWN0LFxyXG4gIHNlbGVjdEFsbCxcclxuICAvLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsaXZlIGJpbmRpbmdzLCByZWZlciB0bzpcclxuICAvLyAgIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwMDEyMDE2L2ltcG9ydGluZy1kMy1ldmVudC1pbnRvLWEtY3VzdG9tLWJ1aWxkLXVzaW5nLXJvbGx1cFxyXG4gIGdldCBldmVudCgpIHsgcmV0dXJuIGV2ZW50OyB9LFxyXG4gIGxpbmtIb3Jpem9udGFsLFxyXG4gIGxpbmtWZXJ0aWNhbCxcclxuICAuLi5oaWVyYXJjaHksXHJcbiAgLi4uem9vbSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGQzOyIsImNsYXNzIExvYWRPbkRlbWFuZFNldHRpbmdzIHtcclxuICAgIC8qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3duZXJPYmplY3QgVGhlIG93bmVyIG9iamVjdC5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIFRoZSBvcHRpb25zIG9iamVjdC5cclxuICAgICAqIEBwYXJhbSB7aGFzQ2hpbGRyZW5DYWxsQmFja30gb3B0aW9ucy5oYXNDaGlsZHJlbiBTZXRzIHRoZSBoYXNDaGlsZHJlbiBjYWxsYmFjayBmdW5jdGlvbiwgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIG5vZGUgb3IgZGF0YSBpdGVtIGhhcyBjaGlsZHJlbiBvciBub3QuXHJcbiAgICAgKiBAcGFyYW0ge2xvYWRDaGlsZHJlbkNhbGxCYWNrfSBvcHRpb25zLmxvYWRDaGlsZHJlbiB0aGUgbG9hZENoaWxkcmVuIGNhbGxiYWNrIGZ1bmN0aW9uLCB1c2VkIHRvIGxvYWQgY2hpbGRyZW4gZGF0YSBpdGVtcyBmb3IgYSBub2RlLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihvd25lck9iamVjdCwgb3B0aW9ucykge1xyXG4gICAgICAgIC8vIERlZmluZSBvcHRpb24gZGVmYXVsdHNcclxuICAgICAgICB2YXIgbWVyZ2VkT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLi4uTG9hZE9uRGVtYW5kU2V0dGluZ3MuZGVmYXVsdHMsXHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9vd25lck9iamVjdCA9IG93bmVyT2JqZWN0O1xyXG4gICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gbWVyZ2VkT3B0aW9ucy5oYXNDaGlsZHJlbjtcclxuICAgICAgICB0aGlzLl9sb2FkQ2hpbGRyZW4gPSBtZXJnZWRPcHRpb25zLmxvYWRDaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG93bmVyIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG93bmVyIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgYmFjaygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0ZXMgd2hldGhlciB0aGUgcHJvdmlkZWRcclxuICAgICAqIHNldHRpbmdzIGFyZSBjb3JyZWN0IG9yIG5vdC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIHRyZWUgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICB2YWxpZGF0ZVNldHRpbmdzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbiAmJiB0aGlzLmxvYWRDaGlsZHJlbilcclxuICAgICAgICAgICAgdGhyb3cgXCJXaXRoIGxvYWQgb24gZGVtYW5kIGVuYWJsZWQsIHlvdSBuZWVkIHRvIGRlZmluZSBoYXNDaGlsZHJlbiBhcyBwYXJ0IG9mIHRoZSBvcHRpb25zXCI7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRDaGlsZHJlbiAmJiB0aGlzLmhhc0NoaWxkcmVuKVxyXG4gICAgICAgICAgICB0aHJvdyBcIldpdGggbG9hZCBvbiBkZW1hbmQgZW5hYmxlZCwgeW91IG5lZWQgdG8gZGVmaW5lIGxvYWRDaGlsZHJlbiBhcyBwYXJ0IG9mIHRoZSBvcHRpb25zXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2FkIHRoZSBjaGlsZHJlbiBmb3IgYSBnaXZlbiBkYXRhIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBkYXRhIGl0ZW0sIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIGxvYWQgdGhlIGNoaWxkcmVuIG9mIHRoZSBkYXRhIGl0ZW0gdmlhIEFKQVguXHJcbiAgICAgKiBAcGFyYW0geyp9IHByb2Nlc3NEYXRhIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHByb2Nlc3MgdGhlIGNoaWxkcmVuIGRhdGEgaXRlbXMuXHJcbiAgICAgKiBAcmV0dXJucyB7Kn1cclxuICAgICAqL1xyXG4gICAgbG9hZENoaWxkcmVuKGRhdGEsIHByb2Nlc3NEYXRhKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZENoaWxkcmVuLmNhbGwodGhpcy5fb3duZXJPYmplY3QsIGRhdGEsIHByb2Nlc3NEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlclxyXG4gICAgICogdGhlIHBhc3NlZCBkYXRhIGl0ZW0gaGFzIGNoaWxkcmVuLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YUl0ZW0gVGhlIGRhdGEgaXRlbSB0byBjaGVjayBpZiBpdCBoYXMgY2hpbGRyZW4gb3Igbm90LlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGRhdGEgaXRlbSBoYXMgY2hpbGRyZW4gb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBoYXNDaGlsZHJlbihkYXRhSXRlbSl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuLmNhbGwodGhpcy5fb3duZXJPYmplY3QsIGRhdGFJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGxvYWRDaGlsZHJlbiBjYWxsYmFjayBmdW5jdGlvbixcclxuICAgICAqIHVzZWQgdG8gbG9hZCBjaGlsZHJlbiBkYXRhIGl0ZW1zIGZvclxyXG4gICAgICogYSBub2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2xvYWRDaGlsZHJlbkNhbGxCYWNrfSBuZXdMb2FkQ2hpbGRyZW5NZXRob2RcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0TG9hZENoaWxkcmVuTWV0aG9kKG5ld0xvYWRDaGlsZHJlbk1ldGhvZCl7XHJcbiAgICAgICAgdGhpcy5fbG9hZENoaWxkcmVuID0gbmV3TG9hZENoaWxkcmVuTWV0aG9kO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgaGFzQ2hpbGRyZW4gY2FsbGJhY2sgZnVuY3Rpb24sXHJcbiAgICAgKiB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgbm9kZVxyXG4gICAgICogb3IgZGF0YSBpdGVtIGhhcyBjaGlsZHJlbiBvciBub3QuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7aGFzQ2hpbGRyZW5DYWxsQmFja30gbmV3SGFzQ2hpbGRyZW5NZXRob2RcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB0cmVlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0SGFzQ2hpbGRyZW5NZXRob2QobmV3SGFzQ2hpbGRyZW5NZXRob2Qpe1xyXG4gICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gbmV3SGFzQ2hpbGRyZW5NZXRob2Q7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXJcclxuICAgICAqIGxvYWQtb24tZGVtYW5kIGlzIGVuYWJsZWQgb3Igbm90LlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBsb2FkLW9uLWRlbWFuZCBpcyBlbmFibGVkIG9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgaXNFbmFibGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNDaGlsZHJlbiB8fCB0aGlzLl9sb2FkQ2hpbGRyZW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBub2RlIGRhdGEgaXRlbVxyXG4gICAgICogaGFzIGNoaWxkcmVuIG9yIG5vdC5cclxuICAgICAqIFxyXG4gICAgICogQGNhbGxiYWNrIGhhc0NoaWxkcmVuQ2FsbEJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhSXRlbSBDYW4gYmUgdXNlZCB0byB0byBsb2FkIHRoZSBjaGlsZHJlbnMgZnJvbSB0aGUgc2VydmVyIHZpYSBBSkFYLlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIG5vZGUgb3IgZGF0YSBpdGVtIGhhcyBjaGlsZHJlbiB0byBsb2FkIHZpYSBBSkFYLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvYWQgdGhlIGNoaWxkcmVuIGl0ZW1zIGZvciBhIGdpdmVuXHJcbiAgICAgKiBub2RlIGRhdGEgaXRlbS5cclxuICAgICAqIEBjYWxsYmFjayBsb2FkQ2hpbGRyZW5DYWxsQmFja1xyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5vZGVEYXRhSXRlbSBOb2RlIGRhdGEgaXRlbSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdG8gbG9hZCB0aGUgY2hpbGRyZW5zIGZyb20gdGhlIHNlcnZlciB2aWEgQUpBWC5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBub2RlRGF0YUl0ZW0uZGF0YSBUaGUgZGF0YSBpdGVtLCB3aGljaCBjYW4gYmUgdXNlZCB0byB0byBsb2FkIHRoZSBjaGlsZHJlbnMgZnJvbSB0aGUgc2VydmVyIHZpYSBBSkFYLlxyXG4gICAgICogQHBhcmFtIHtjaGlsZHJlbkRhdGFQcm9jZXNzb3JDYWxsQmFja30gcHJvY2Vzc0RhdGEgRGF0YSBwcm9jZXNzb3IgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggeW91IHNob3VsZCB1c2UgdG8gY2FsbCwgcGFzc2luZyBpbiB0aGUgY2hpbGRyZW4gZGF0YSB0aGF0J3MgYmVlbiBsb2FkZWQgdmlhIEFKQVguXHJcbiAgICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gICAgICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGNoaWxkcmVuIGl0ZW1zLlxyXG4gICAgICogQGNhbGxiYWNrIGNoaWxkcmVuRGF0YVByb2Nlc3NvckNhbGxCYWNrXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlbkRhdGFJdGVtcyBUaGUgYXJyYXkgb2YgY2hpbGRyZW4gZGF0YSBmb3IgdGhlIG5vZGUgYmVpbmcgcHJvY2Vzc2VkLlxyXG4gICAgICogQHJldHVybnMge3VuZGVmaW5lZH1cclxuICAgICAqL1xyXG59XHJcblxyXG5Mb2FkT25EZW1hbmRTZXR0aW5ncy5kZWZhdWx0cyA9IHtcclxuICAgIC8vIFRha2VzIGluIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgcGFyYW1ldGVyOlxyXG4gICAgLy8gLSBUaGUgbm9kZSBhbmQgZGF0YSBpdGVtIHdoaWNoIGNhbiBiZSB1c2VkXHJcbiAgICAvLyAgIHRvIGxvYWQgdGhlIGNoaWxkcmVucyBmcm9tIHNlcnZlclxyXG4gICAgLy8gUmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICBoYXNDaGlsZHJlbjogbnVsbCxcclxuICAgIC8vIFRha2VzIGluIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHR3byBwYXJhbWV0ZXJzOlxyXG4gICAgLy8gLSBUaGUgbm9kZSBhbmQgZGF0YSBpdGVtIHdoaWNoIGNhbiBiZSB1c2VkXHJcbiAgICAvLyAgIHRvIGxvYWQgdGhlIGNoaWxkcmVucyBmcm9tIHNlcnZlclxyXG4gICAgLy8gLSB0aGUgZGF0YSBwcm9jZXNzb3IgZnVuY3Rpb24sIHdoaWNoXHJcbiAgICAvLyAgIHlvdSBzaG91bGQgY2FsbCwgcGFzc2luZyBpbiB0aGVcclxuICAgIC8vICAgY2hpbGRyZW4gZGF0YSB5b3UgbG9hZGVkIHdpdGhcclxuICAgIC8vICAgeW91ciBzZXJ2ZXIgQUpBWCByZXF1ZXN0XHJcbiAgICBsb2FkQ2hpbGRyZW46IG51bGwsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IExvYWRPbkRlbWFuZFNldHRpbmdzOyIsImNsYXNzIE5vZGVTZXR0aW5ncyB7XHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvd25lck9iamVjdCBUaGUgb3duZXIgb2JqZWN0XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIG5vZGUgc2V0dGluZ3MuXHJcbiAgICAgKiBAcGFyYW0geygnbm9kZVNpemUnfCdzaXplJyl9IFtvcHRpb25zLnNpemluZ01vZGU9c2l6ZV0gVGhlIHNpemluZyBtb2RlLiBTaG91bGQgYmUgZWl0aGVyICdub2RlU2l6ZScgdG8gYXV0b21hdGljYWxseSBzaXplIHRoZSBTVkcgYmFzZWQgb24gdGhlIG5vZGVzLCBvciAnc2l6ZScgdG8gdXNlIHRoZSBjb25maWd1cmVkIHdpZHRoIGFuZCBoZWlnaHQuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuaG9yaXpvbnRhbFNwYWNpbmc9MjVdIFRoZSBob3Jpem9udGFsIHNwYWNpbmcgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMudmVydGljYWxTcGFjaW5nPTI1XSBUaGUgdmVydGljYWwgc3BhY2luZyB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3Iob3duZXJPYmplY3QsIG9wdGlvbnMpIHtcclxuICAgICAgICB2YXIgbWVyZ2VkT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLi4uTm9kZVNldHRpbmdzLmRlZmF1bHRzLFxyXG4gICAgICAgICAgICAuLi5vcHRpb25zXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5fb3duZXJPYmplY3QgPSBvd25lck9iamVjdDtcclxuICAgICAgICB0aGlzLl9zaXppbmdNb2RlID0gbWVyZ2VkT3B0aW9ucy5zaXppbmdNb2RlO1xyXG4gICAgICAgIHRoaXMuX2hvcml6b250YWxTcGFjaW5nID0gbWVyZ2VkT3B0aW9ucy5ob3Jpem9udGFsU3BhY2luZztcclxuICAgICAgICB0aGlzLl92ZXJ0aWNhbFNwYWNpbmcgPSBtZXJnZWRPcHRpb25zLnZlcnRpY2FsU3BhY2luZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG93bmVyIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG93bmVyIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgYmFjaygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBob3Jpem9udGFsIHNwYWNpbmcgdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBob3Jpem9udGFsIHNwYWNpbmcgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGdldEhvcml6b250YWxTcGFjaW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsU3BhY2luZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGhvcml6b250YWwgc3BhY2luZyB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld0hvcml6b250YWxTcGFjaW5nIFRoZSBuZXcgaG9yaXpvbnRhbCBzcGFjaW5nIHZhbHVlLlxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gVGhlIG5vZGUgc2V0dGluZ3Mgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRIb3Jpem9udGFsU3BhY2luZyhuZXdIb3Jpem9udGFsU3BhY2luZykge1xyXG4gICAgICAgIHRoaXMuX2hvcml6b250YWxTcGFjaW5nID0gbmV3SG9yaXpvbnRhbFNwYWNpbmc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2ZXJ0aWNhbCBzcGFjaW5nIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgdmVydGljYWwgc3BhY2luZyB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgZ2V0VmVydGljYWxTcGFjaW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbFNwYWNpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSB2ZXJ0aWNhbCBzcGFjaW5nIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3VmVydGljYWxTcGFjaW5nIFRoZSBuZXcgdmVydGljYWwgc3BhY2luZyB2YWx1ZS5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBub2RlIHNldHRpbmdzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0VmVydGljYWxTcGFjaW5nKG5ld1ZlcnRpY2FsU3BhY2luZykge1xyXG4gICAgICAgIHRoaXMuX3ZlcnRpY2FsU3BhY2luZyA9IG5ld1ZlcnRpY2FsU3BhY2luZztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHNpemluZyBtb2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29uZmlndXJlZCBub2RlIHNpemluZyBtb2RlLlxyXG4gICAgICovXHJcbiAgICBnZXRTaXppbmdNb2RlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaXppbmdNb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgc2l6aW5nIG1vZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7KCdub2RlU2l6ZSd8J3NpemUnKX0gbmV3U2l6aW5nTW9kZSBUaGUgc2l6aW5nIG1vZGUuIFNob3VsZCBiZSBlaXRoZXIgJ25vZGVTaXplJyB0byBhdXRvbWF0aWNhbGx5IHNpemUgdGhlIFNWRyBiYXNlZCBvbiB0aGUgbm9kZXMsIG9yICdzaXplJyB0byB1c2UgdGhlIGNvbmZpZ3VyZWQgd2lkdGggYW5kIGhlaWdodC5cclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBub2RlIHNldHRpbmdzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc2V0U2l6aW5nTW9kZShuZXdTaXppbmdNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5fc2l6aW5nTW9kZSA9IG5ld1NpemluZ01vZGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcbn1cclxuXHJcbk5vZGVTZXR0aW5ncy5kZWZhdWx0cyA9IHtcclxuICAgIHNpemluZ01vZGU6IFwic2l6ZVwiLCAvLyBzZXQgdG8gJ25vZGVTaXplJyBmb3IgdGhlIHRyZWUgc2l6ZSB0byBhdXRvbWF0aWNhbGx5IGJlIGJhc2VkIG9uIHRoZSBub2RlIGRpbWVuc2lvbnMgaXRzZWxmLlxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDI1LFxyXG4gICAgdmVydGljYWxTcGFjaW5nOiAyNVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOb2RlU2V0dGluZ3M7Il0sInNvdXJjZVJvb3QiOiIifQ==